[Buildroot] [PATCH v2 2/2] mongoose: optionally provide shared library
Peter Korsgaard
jacmet at uclibc.org
Mon May 26 12:14:47 UTC 2014
>>>>> "Davide" == Davide Viti <zinosat at tiscali.it> writes:
Hi,
> From: Davide Viti <d.viti at infosolution.it>
> Signed-off-by: Davide Viti <zinosat at tiscali.it>
> ---
> Changes v1 -> v2:
> - rebase
> - add dot at the end of help messages
> Original patch content:
> mongoose package can provide a webserver and, optionally, a shared
> library: this is what Centos, among other distros, is doing.
> It's now possible to include in the build both the mongoose executable
> and libmongoose.so
> Not too sure how should be handled the situation where mongoose is
> select and neither the webserver nor libmongoose.so are not selected
> I'd also appreciate some feedback on the shared library compilation
> flags
Most of this should go above the '---' line so it becomes part of the
commit description.
Why a shared library and not a static one? If upstream doesn't
officially support shared libraries (and versioning of it), then I think
it makes more sense to build a static library instead, especially for
something like this you most likely are not going to use from a lot of
different applications in your rootfs.
> regards,
> Davide
> package/mongoose/Config.in | 14 ++++++++++++++
> package/mongoose/mongoose.mk | 32 +++++++++++++++++++++++++++++---
> 2 files changed, 43 insertions(+), 3 deletions(-)
> diff --git a/package/mongoose/Config.in b/package/mongoose/Config.in
> index 2526112..2b93ab8 100644
> --- a/package/mongoose/Config.in
> +++ b/package/mongoose/Config.in
> @@ -8,6 +8,20 @@ config BR2_PACKAGE_MONGOOSE
> https://github.com/valenok/mongoose
> +if BR2_PACKAGE_MONGOOSE
> +
> +config BR2_PACKAGE_MONGOOSE_INSTALL_WEBSERVER
> + bool "Install standalone webserver"
> + help
> + Install mongoose webserver.
> +
> +config BR2_PACKAGE_MONGOOSE_INSTALL_SHARED_LIBRARY
> + bool "Install shared library"
> + help
> + Install shared library.
> +
Are these options really needed? The webserver is tiny and the library
only requires a single .c file to be built, so I think we should just
unconditionally build/install both. If you really want to save the ~50k
from your rootfs you can always remove it in your post build script.
> +endif
> +
> comment "mongoose needs a toolchain w/ threads, largefile"
> depends on BR2_USE_MMU
> depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_LARGEFILE
> diff --git a/package/mongoose/mongoose.mk b/package/mongoose/mongoose.mk
> index a7164bb..3628c0c 100644
> --- a/package/mongoose/mongoose.mk
> +++ b/package/mongoose/mongoose.mk
> @@ -8,6 +8,7 @@ MONGOOSE_VERSION = 5.3
> MONGOOSE_SITE = $(call github,cesanta,mongoose,$(MONGOOSE_VERSION))
> MONGOOSE_LICENSE = GPLv2
> MONGOOSE_LICENSE_FILES = LICENSE
> +MONGOOSE_INSTALL_STAGING = YES
> MONGOOSE_CFLAGS = $(TARGET_CFLAGS) $(TARGET_LDFLAGS)
> @@ -17,15 +18,40 @@ MONGOOSE_DEPENDENCIES += openssl
> MONGOOSE_CFLAGS += -DNS_ENABLE_SSL -lssl -lcrypto -lz
> endif
> +ifeq ($(BR2_PACKAGE_MONGOOSE_INSTALL_SHARED_LIBRARY),y)
> +define MONGOOSE_INSTALL_SHARED_LIBRARY_CMDS
> + $(INSTALL) -D -m 755 $(@D)/libmongoose.so $(TARGET_DIR)/usr/lib
> +endef
> +
> +define MONGOOSE_INSTALL_STAGING_SHARED_LIBRARY_CMDS
> + $(INSTALL) -D -m 755 $(@D)/libmongoose.so $(STAGING_DIR)/usr/lib
> + $(INSTALL) -D -m 644 $(@D)/mongoose.h $(STAGING_DIR)/usr/include
> +endef
> +
> +endif
> +
> +ifeq ($(BR2_PACKAGE_MONGOOSE_INSTALL_WEBSERVER),y)
> +define MONGOOSE_INSTALL_WEBSERVER_CMDS
> + $(INSTALL) -D -m 755 $(@D)/mongoose $(TARGET_DIR)/usr/sbin
> + $(INSTALL) -D -m 755 package/mongoose/S85mongoose \
> + $(TARGET_DIR)/etc/init.d
> +endef
> +endif
> +
> define MONGOOSE_BUILD_CMDS
> $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D)/examples \
> COPT="$(MONGOOSE_CFLAGS)"
> + $(TARGET_CC) $(@D)/mongoose.c -shared -fpic \
> + -o $(@D)/libmongoose.so -pthread -ldl
It should also use MONGOOSE_CFLAGS to ensure it gets built with openssl
support if present like the example server.
Care to send an opdated patch fixing these issues?
--
Bye, Peter Korsgaard
More information about the buildroot
mailing list