[Buildroot] [PATCH] boost: New package added. Version 1.47
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Fri Sep 23 10:06:34 UTC 2011
Hello Allan,
Thanks for contributing this package!
Le Fri, 23 Sep 2011 10:50:51 +0200,
"Allan W. Nielsen" <a at awn.dk> a écrit :
> @@ -0,0 +1,102 @@
> +config BR2_PACKAGE_BOOST
> + bool "boost"
> + select BR2_PACKAGE_BZIP2
> + select BR2_PACKAGE_ZLIB
Should be just a tab.
> +config BR2_PACKAGE_BOOST_ICU
> + depends on BR2_PACKAGE_BOOST
> + bool "boost-icu"
Presumably you need to select BR2_PACKAGE_ICU here.
> +config BR2_PACKAGE_BOOST_PYTHON
> + depends on BR2_PACKAGE_BOOST
> + bool "boost-python"
Don't you need to have Python as a dependency to build this ?
> +BOOST_VERSION = 1.47.0
> +BOOST_FILE_VERSION=$(shell echo $(BOOST_VERSION) | sed -e s/\\\./_/g)
BOOST_FILE_VERSION=$(subst .,_,$(BOOST_VERSION))
> +BOOST_SOURCE = boost_$(BOOST_FILE_VERSION).tar.bz2
> +BOOST_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/boost
> +
> +TARGET_CC_VERSION = $(shell $(TARGET_CC) --version | head -n 1 | perl -pe "s/^.+?([\d\.]+)[^ ]+$$/\1/g" )
I'd prefer to rely on make/shell only rather than using Perl here.
> +ifneq ($(BR2_PACKAGE_BOOST_IOSTREAMS),y)
> +BOOST_WITHOUT_FLAGS+=iostreams
> +endif
Note that you can also write:
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_IOSTREAMS),iostreams)
> +ifeq ($(BR2_ENABLE_DEBUG),y)
> +BOOST_VARIANT=debug
> +else
> +BOOST_VARIANT=release
> +endif
and
BOOST_VARIANT = $(if $(BR2_ENABLE_DEBUG),debug,release)
> +BOOST_WITHOUT_FLAGS_COMMASEPERATED = $(shell echo $(BOOST_WITHOUT_FLAGS) | tr ' ' ',')
Maybe this can be done with a make $(subst ...) call.
> +define BOOST_CONFIGURE_CMDS
> + (cd $(@D) && ./bootstrap.sh $(BOOST_FLAGS))
> + echo "#!/bin/sh" > $(@D)/gcc-wrap
> + echo "$(TARGET_CXX) \$$@" >> $(@D)/gcc-wrap
> + chmod +x $(@D)/gcc-wrap
> + echo "using gcc : $(TARGET_CC_VERSION) : \"$(@D)/gcc-wrap\" : <cxxflags>\"$(TARGET_CXXFLAGS)\" <linkflags>\"$(TARGET_LDFLAGS)\" ;" > $(@D)/user-config.jam
> + echo "" >> $(@D)/user-config.jam
> +endef
Could you expand a bit on why a gcc wrapper is needed here ? A comment
above the CONFIGURE_CMDS about this would be great.
> +define BOOST_INSTALL_TARGET_CMDS
> + (cd $(@D) && ./b2 -q -d+2 \
> + --user-config=$(@D)/user-config.jam \
> + toolset=gcc \
> + variant=$(BOOST_VARIANT) \
> + link=$(BOOST_LINK) \
> + threading=$(BOOST_MULTI) \
> + runtime-link=$(BOOST_LINK) \
> + --prefix=$(TARGET_DIR)/usr \
> + --layout=system install )
> +
> + (cd $(@D) && ./bjam -d+2 \
> + --user-config=$(@D)/user-config.jam \
> + toolset=gcc \
> + variant=$(BOOST_VARIANT) \
> + link=$(BOOST_LINK) \
> + threading=$(BOOST_MULTI) \
> + runtime-link=$(BOOST_LINK) \
> + --prefix=$(STAGING_DIR)/usr \
> + --layout=system install)
This install to staging, so it should be in BOOST_INSTALL_STAGING_CMDS,
and you should set BOOST_INSTALL_STAGING=YES at the top of your package.
> +define BOOST_REMOVE_HDRS
> + rm -rf $(TARGET_DIR)/usr/include/boost
> +endef
Not needed, everything in $(TARGET_DIR)/usr/include is removed.
> +define BOOST_STRIP
> + find $(TARGET_DIR)/usr/lib -name "libboost*" -type f -exec $(STRIPCMD) {} \;
> +endef
Not needed, all binaries are automatically stripped.
Regards,
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
More information about the buildroot
mailing list