summaryrefslogtreecommitdiff
path: root/package/Makefile.in
AgeCommit message (Collapse)Author
2017-02-01core infra: make sure apply-patches is called with correct tarThomas De Schampheleire
Buildroot has a mechanism to detect a too-old or missing tar program on the host machine, and builds a custom host-tar if needed. An example situation is a RHEL5 host machine, where tar is knowingly too old. The apply-patches script also employs tar, in case the patches come as an archive. However, tar is called as 'tar' without any absolute path, and the environment does not point in any way to the possibly custom tar. As a result, the too-old-tar is called. A particular problem is the flag '-a' which is missing on e.g. RHEL5. Previously, this problem went unnoticed: tar would fail, but apply-patches did not notice it, and the overall return code of the script was 'success'. However, commit d5ae67b4 added 'set -e' to the script, causing any error to halt execution of the script with an error. Fix the problem by adding the Buildroot-built host tools to the PATH when calling apply-patches. Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-12-06Makefile: move SED definition into the main MakefileThomas Petazzoni
Since commit f71a621d91ec27f175fc84012962f88b1107305f, we are using the SED variable in the main Makefile. However, this variable is only defined in package/Makefile.in, which gets included only when a configuration is defined. This means that, if you do: $ make menuconfig savedefconfig without a configuration defined, it fails with: /bin/bash: /BR2_DEFCONFIG=/d: No such file or directory Makefile:898: recipe for target 'savedefconfig' failed make[1]: *** [savedefconfig] Error 127 This issue affects users of the "buildroot-submodule" project, which does menuconfig+savedefconfig automatically. They worked around this issue in commit https://github.com/Openwide-Ingenierie/buildroot-submodule/commit/d12676b608a58529c6b551aa176464166a200428, but really "make menuconfig savedefconfig" should work out of the box. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-12-02core: add waf-package infraYann E. MORIN
This new waf-package infrastructure simplifies writing waf-based packages. It can be used by our six current such packages, plus a later-incoming one by Romain. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Romain Naour <romain.naour@openwide.fr> Reviewed-by: Romain Naour <romain.naour@gmail.com> Tested-by: Romain Naour <romain.naour@gmail.com> [Thomas: - rename <pkg>_BUNDLED_WAF to <pkg>_NEEDS_EXTERNAL_WAF, which involves inverting the meaning of the boolean. - always add the host-python dependency - add a default value for <pkg>_NEEDS_EXTERNAL_WAF (defaults to NO) - remove the unneeded <pkg>_MAKE related definitions.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-11-09Use already qstripped BR2_TOOLCHAIN_EXTERNAL_PREFIX everywhereArnout Vandecappelle
The BR2_TOOLCHAIN_EXTERNAL_PREFIX variable is already qstripped and stored in the TOOLCHAIN_EXTERNAL_PREFIX variable in toolchain-external.mk, so use this variable everywhere. This will be useful for a later patch that makes the derivation of TOOLCHAIN_EXTERNAL_PREFIX a little more complex. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Romain Naour <romain.naour@gmail.com> [Arnout: split off into separate patch] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-10-16core: introduce per br2-external NAMEYann E. MORIN
This unique NAME is used to construct a per br2-external tree variable, BR2_EXTERNAL_$(NAME)_PATH, which contains the path to the br2-external tree. This variable is available both from Kconfig (set in the Kconfig snippet) and from the .mk files. Also, display the NAME and its path as a comment in the menuconfig. This will ultimately allow us to support multiple br2-external trees at once, with that NAME (and thus BR2_EXTERNAL_$(NAME)) uniquely defining which br2-external tree is being used. The obvious outcome is that BR2_EXTERNAL should now no longer be used to refer to the files in the br2-external tree; that location is now known from the BR2_EXTERNAL_$(NAME)_PATH variable instead. This means we no longer need to expose, and must stop from from exposing BR2_EXTERNAL as a Kconfig variable. Finally, this also fixes a latent bug in the pkg-generic infra, where we would so far always refer to BR2_EXTERNAL (even if not set) to filter the names of packages (to decide whether they are a bootloader, a toolchain or a simple package). Note: since the variables in the Makefile and in Kconfig are named the same, the one we computed early on in the Makefile will be overridden by the one in .config when we have it. Thus, even though they are set to the same raw value, the one from .config is quoted and, being included later in the Makefile, will take precedence, so we just re-include the generated Makefile fragment a third time before includeing the br2-external's Makefiles. That's unfortunate, but there is no easy way around that as we do want the two variables to be named the same in Makefile and Kconfig (and we can't ask the user to un-quote that variable himself either), hence this little dirty triple-inclusion trick. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-10-14package/Makefile.in: synchronize pkg-config settings between ↵Peter Korsgaard
HOST_{CONFIGURE_OPTS, MAKE_ENV} The pkg-config settings in HOST_CONFIGURE_OPTS and HOST_MAKE_ENV have diverged over time, so they now use different _LIBDIR and _ALLOW_SYSTEM_{CFLAGS,LIBS} settings. Conceptually _CONFIGURE_OPTS should be a superset of _MAKE_ENV, so move the definitions around and define _CONFIGURE_OPTS in terms of _MAKE_ENV instead of repeating the individual settings. Do this both for the target and host variant for consistency. Signed-off-by: Peter Korsgaard <peter@korsgaard.com> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-09-19package/Makefile.in: remove unused STRIP_STRIP_ALL variableThomas Petazzoni
This variable has been unused for a long time, so we can get rid of its definition. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-09-19linux: use INSTALL_MOD_STRIP=1 to strip modulesAlexey Brodkin
We used to do a special handling of Linux kernel modules when stripping target binaries because there's some special precious data in modules that we must keep for them to properly operate. This is for example true for stack unwinding data etc. It turned out there're cases when our existing "strip --strip-unneeded" doesn't work well. For example this removes .debug_frame section used by Linux on ARC for stack unwinding, refer to [1] and [2] for more details. Now Linux kernel may strip modules as a part of "modules_install" target if INSTALL_MOD_STRIP=1 is passed in command line. And so we'll do allowing kernel decide how to strip modules in the best way. Still note as of today Linux kernel strips modules uniformly for all arches with "strip" command, so this commit alone doesn't solve mentioned problem but it opens a possibility to add later a patch to the kernel which will strip modules for ARC differently - and that's our plan for mainline kernel. [1] https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/issues/86 [2] http://lists.busybox.net/pipermail/buildroot/2016-September/172161.html Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Daniel Mentz <danielmentz@google.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-07-30Revert "package/Makefile.in should grab HOST_DIR headers using -isystem ↵Thomas Petazzoni
instead of -I." This reverts commit 6f8162cf8c1abef7e0a4771fe0d6b26a28f5c2b6. This is causing too many problems that are not easy to solve. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-07-25package/Makefile.in should grab HOST_DIR headers using -isystem instead of -I.David Raeman
HOST_CFLAGS includes a search path for HOST_DIR/usr/include using -I. When HOST_CFLAGS is used by a package, these flags are passed to the compiler ahead of flags passed by the package's internal make system. If a package has a header file with the same name as a header file in HOST_DIR, this causes the toolchain to prefer the file from the system include directory because its -I appears first on the command line. Conflicts should prefer the file provided by the package. This can be accomplished by using -isystem, which is more appropriate then -I for system-level include paths. Real-world example: libfdt might be installed in HOST_DIR to install a patched version of QEMU that does not bundle libfdt. Meanwhile, the u-boot package provides its own copy of libfdt.h that is modified from upstream. If libfdt is also installed into HOST_DIR, then host-uboot-tools fails to build because it grabs the libfdt.h from the HOST_DIR area instead of using the patched version from its own source tree. This patch corrects this issue. This assumes the -isystem flag is supported by the host compiler, which is the case since gcc 3.0 at least. Signed-off-by: David Raeman <draeman@bbn.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-07-01package/Makefile.in: set variables for legacy f77 checksSamuel Martin
For fortran detection, some projects check for fortran availability using the FC/FCFLAGS variables, and others for the legacy F77/FFLAGS ones. So, make sure the legacy fortran F77 and FFLAGS variables are set in TARGET_CONFIGURE_OPTS. Signed-off-by: Samuel Martin <s.martin49@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-07-01package/Makefile.in: set TARGET_FCFLAGS variablesBenjamin Kamath
TARGET_FCFLAGS is already added to TARGET_CONFIGURE_OPTS, but was not defined so far. This change fixes this. Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Benjamin Kamath <bkamath@spaceflight.com> Signed-off-by: Samuel Martin <s.martin49@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-06-10build: cleanup remaining references to BR2_STRIP_sstripJulien Floret
sstrip option has been removed in commit 106f5b8c5093 ("build: remove deprecated sstrip option"). Signed-off-by: Julien Floret <julien.floret@6wind.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-05-24Config.in: add -Og optionMartin Kelly
-Og (introduced in GCC 4.8) lets you optimize for debugging experience, which can be useful for when you want optimized code that is nonetheless debuggable. Signed-off-by: Martin Kelly <martin@surround.io> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-04-08package/Makefile.in: adjust LDFLAGS for elf2fltThomas Petazzoni
So far, our LDFLAGS for the BR2_BINFMT_FLAT case were only used on Blackfin. However, passing -elf2flt in LDFLAGS is wrong. Indeed, LDFLAGS are not linker flags, but flags passed to the compiler when linking. If you pass -elf2flt to the compiler when linking, it is understood as "-e lf2flt", i.e "the entry point is named lf2flt", which isn't exactly the intention. We in fact need to pass -Wl,-elf2flt in LDFLAGS as well, so that the compiler passes -elf2flt down to the linker. For some reason, this option does not cause an issue with the Blackfin toolchain, but it does with either a Buildroot toolchain for Cortex-M or an OSELAS toolchain for Cortex-M. We have verified that passing -Wl,-elf2flt continues to work with the Blackfin toolchain. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-02-01package/Makefile.in: fix typoPeter Korsgaard
Commit dc95d50fe3ee (correct gettext handling for musl) introduced a last minute typo, fix that. Thanks to Thomas Petazzoni for noticing. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-02-01package/Makefile.in: correct gettext handling for muslPeter Korsgaard
Based on a patch by Bernd Kuhls. The AM_GNU_GETTEXT autotools macro misdetects musl gettext support as it checks for internal glibc symbols. Work around it by forcing libc gettext support when musl is used for the supported gettext api levels. As this is a generic issue for any package using AM_GNU_GETTEXT, add it to the global TARGET_CONFIGURE_ARGS instead of for each affected package. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-12-27toolchain: granular choice for stack protectorSteven Noonan
Currently, we only support two levels of stach-smashing protection: - entirely disabled, - protect _all_ functions with -fstack-protector-all. -fstack-protector-all tends to be far too aggressive and impacts performance too much to be worth on a real product. Add a choice that allows us to select between different levels of stack-smashing protection: - none - basic (NEW) - strong (NEW) - all The differences are documented in the GCC online documentation: https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Optimize-Options.html Signed-off-by: Steven Noonan <steven@uplinklabs.net> [yann.morin.1998@free.fr: - rebase - add legacy handling - SSP-strong depends on gcc >= 4.9 - slightly simple ifeq-block in package/Makefile.in - keep the comment in the choice; add a comment shen strong is not available - drop the defaults (only keep the legacy) - update commit log ] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> [Thomas: - only show the choice if the toolchain has SSP support - add details for the BR2_SSP_ALL option that it has a significant performance impact.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-12-01Merge branch 'next'Peter Korsgaard
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-11-22package/Makefile.in: remove HOSTCC_VERSIONArnout Vandecappelle
HOSTCC_VERSION is no longer used since gcc switched to the package infrastructure in e236fe481. It was in fact no longer needed since we dropped support for gcc 4.3. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-11-18core/pkg-infrastructures: remove LD_LIBRARY_PATH from the environmentBen Boeckel
If system tools are selected, the host's lib/ directory may shadow libraries from the system which are configured differently and do not have all of the symbols required by the system tool. Since buildroot now uses rpath everywhere, LD_LIBRARY_PATH should not be necessary anyways. Signed-off-by: Ben Boeckel <mathstuf@gmail.com> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-10-29package/Makefile.in: remove BR2_TARGET_OPTIMIZATION from TARGET_CFLAGSArnout Vandecappelle
Since the toolchain is always wrapped and the wrapper already passes BR2_TARGET_OPTIMIZATION (through BR_ADDITIONAL_CFLAGS), there is no longer any need to pass it in TARGET_CFLAGS as well. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-10-04xtensa: switch from text-section-literals to auto-litpoolsMax Filippov
Now that both binutils and gcc support auto-litpools use that option instead of text-section-literals to be able to compile huge functions. Fixes: http://autobuild.buildroot.net/results/dd384fe0ef02a4205bea66a4a16ca2062afe53b4/ http://autobuild.buildroot.net/results/87dd357a4b883ea3cd75546b3d63c4c28245beee/ http://autobuild.buildroot.net/results/b5bca00dec1ecb118c7fb9c10dee74c94809c831/ and many others. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-10-04Makefile.in: remove now-unused TARGET_CC/CXX_NOCCACHEArnout Vandecappelle
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-10-04infra: move ccache handling to the toolchain wrapperArnout Vandecappelle
Since we always have a toolchain wrapper now, we can move the ccache call to the toolchain wrapper. The hostcc ccache handling obviously stays. The global addition of ccache to TARGET_CC/CXX is removed, but many individual packages and infras still add it. This means we have a chain like this: ccache -> toolchain-wrapper -> ccache -> gcc However, this is fairly harmless: for cache misses, the inner ccache just adds overhead and for cache hits, the inner ccache is never called. Later patches will remove these redundant ccache calls. As a side effect, perl now supports ccache as well. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Cc: Danomi Manchego <danomimanchego123@gmail.com> Cc: Károly Kasza <kaszak@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-07-12package-infra: add helper to build kernel modulesYann E. MORIN
The Linux kernel offers a nice and easy-to-use infra to build out-of-tree kernel modules. Currently, we have quite a few packages that build kernel modules, and most duplicate (or rewrite) the same code over-and-over again. Introduce a new infrastructure that provides helpers to build kernel modules, so packages do not have to duplicate/rewrite that. The infrastructure, unlike any other package infra, is not standalone. It needs another package infra to be used. This is so that packages that provide both userland and kernel modules can be built easily. So, this infra only defines post-build and post-install hooks, that will build the kernel modules after the rest of the package. We need to override PWD, because some packages will use it to find their own includes (and other helper files). PWD is inherited from the environment, so it gets whatever value it had when make was launched, which happens to be Buildroot's own top source tree. So, we just force PWD to the proper value, rather than cd-ing first. Also, no host version is provided, since it does not make sense to build kernel modules for the host. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Baruch Siach <baruch@tkos.co.il> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-07-04packages: fix and improve support for top-level parallel makeFabio Porcedda
The boost and jack2 packages fail to build when PARALLEL_JOBS is empty so instead of using an empty PARALLEL_JOBS don't use it in the MAKE variable when top-level parallel make is being used. To simplify the use of top-level parallel make, check the MAKEFLAGS variable to know automatically if the -j option is being used, also use the "=" operator instead of the ":=" operator because the MAKEFLAGS variable can be checked only in a "recursively expanded variable". The "override" keyword must be used in order to change the automatic variable "MAKE". When the top-parallel make is being used the sub-make are called without specifying the "-j" option in order to let GNU make share the job slots specified in the top make. This is done because GNU make is able to share the job slots available between each instance of make so if you want to increase the number of jobs you just need to increase the <jobs> value in the top make -j<jobs> command. If we specify the -j<jobs> option in each instance of make, it is less efficient, e.g. in a processor with 8 cores we specify -j9 in each instance: the number of processes goes up to 81 because each sub-make can execute 9 processes. The excessive number of processes is not a good thing because in my tests even -j16 is slower than -j9. Instead if we don't specify the -j<jobs> option in the sub-make, the top make share the job slots automatically between each instance, so the number of process in this examples goes up to 9 that is faster than using up to 81 processes. e.g. when the -j3 option is specified only in the top make: possible state n. 1: process 1 - <packagea>-build process 2 - <packagea>-build process 3 - <packagea>-build possible state n. 2: process 1 - <packagea>-extract process 2 - <packageb>-configure process 3 - <packagec>-build possible state n. 3: process 1 - <packagea>-build make -j1 process 2 - <packageb>-build make -j1 process 3 - <packagec>-build make -j1 Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-06-05Remove --{enable, disable}-debug configure flags.Johan Oudinet
Adding this flag when BR2_ENABLE_DEBUG is activated make several packages to produce binaries that do not work as expected (e.g., dhcp, lame, nano). Moreover, the help message of BR2_ENABLE_DEBUG does not say it is adding this flag. It is supposed to build packages with debugging symbols enabled. So, let it do that only. * package/Makefile.in: Do not add --{enable,disable}-debug flags. * package/pkg-autotools.mk: Remove ENABLE_DEBUG as it is not set anymore. Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-04-22package infra: drop non-IPv6 supportGustavo Zacarias
Now that IPv6 is mandatory remove support for non-IPv6 tweaks/variables in the package infra. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-04-09Makefile: delete HOSTFC and FC_FOR_BUILDMasahiro Yamada
This definition of HOSTFC is completely wrong. "$(HOSTLD)" should be "$(HOSTFC)". Also, "echo" always succeeds, so "which g77 || type -p g77 || echo gfortran" is never run. Anyway, HOSTFC is most likely set to "/use/bin/ld" and nobody has complained about it before me, so I guess it is not used at all. At least grepping HOSTFC, FC_FOR_BUILD did not hit any packages. Drop HOSTFC and FC_FOR_BUILD. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-04-08Fix typos in comment blocksMasahiro Yamada
[Thomas: fix issues noticed by Arnout: - Rewrap the linux/Config.in paragraph - Revert the "is a toolchain dependency" -> "has a toolchain dependency" change from pkg-generic.mk, as the original was correct.] Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-04-01package infra: drop non-lfs supportGustavo Zacarias
Now that largefile is mandatory remove support for non-lfs tweaks/variables in the package infra and the gcc build. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-02-07br2-external: make it available to post-{build, image} scriptsYann E. MORIN
Currently, BR2_EXTERNAL is not always exported to sub-processes that we spawn, like post-build or post-image scripts. This all depends on how the user passes BR2_EXTERNAL; consider the following: - make BR2_EXTERNAL=/path/to/br2-ext - BR2_EXTERNAL=/path/to/br2-ext make In the first case, it is just a make variable, not an environment variable, and thus not exported, while in the second case it is an environment variable and gets exported to all sub-processes make may spawn. Explicitly export it using EXTRA_ENV. Reported-by: Julian Scheel <julian@jusst.de> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Julian Scheel <julian@jusst.de> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-02-03package/pkg-rebar: new infrastructureJohan Oudinet
Ease the development of packages that use the erlang rebar tool as their build system. Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com> [yann.morin.1998@free.fr: split the patch into semantically separated patches; large rewrites of the rest] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> [Thomas, with help from Yann and Arnout: - Fix the comment about the symlink used to make sure rebar does not download dependencies. The comment was not up-to-date with where the symlink is actually created. - Make <pkg>_USE_BUNDLED_REBAR and <pkg>_USE_AUTOCONF be inherited by host packages from their corresponding target package. - Make sure host dependencies are inherited from the corresponding target packages dependencies. This requires copying some logic from inner-autotools-package and inner-generic-package, just like inner-autotools-package duplicates some logic from inner-generic-package. - Fix host variant of $(2)_BUILD_CMDS indentation, use double quotes instead of simple quotes. So that it matches the target $(2)_BUILD_CMDS, and what we do elsewhere in Buildroot.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-12-30package: indentation cleanupJerzy Grzegorek
Signed-off-by: Jerzy Grzegorek <jerzy.grzegorek@trzebnica.net> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-12-12Turn the static lib option into a choice with more optionsThomas Petazzoni
This commit turns the single static option into a choice, which offers various possibilities: 1. Build and use static libraries only; 2. Build both shared and static libraries, but use shared libraries; 3. Build and use shared libraries only. On most platforms, (2) is currently the default, and kept as the default in this commit. Of course, on certain platforms (Blackfin, m68k), only option (1) will be available. In addition to the introduction of the Config.in options, this commit also: * Removes the 'select BR2_STATIC_LIBS' from 'BR2_BINFMT_FLAT', since with the use of a choice, we are guaranteed that BR2_STATIC_LIBS will be selected when the binary format is BR2_BINFMT_FLAT, since BR2_STATIC_LIBS will be the only possible solution in the choice. * Changes package/Makefile.in to use the proper --{enable,disable}-{shared,static} options for autotools packages. [Thomas: remove useless empty newline right after 'choice'. Noticed by Yann E. Morin.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2014-12-11Rename BR2_PREFER_STATIC_LIB to BR2_STATIC_LIBSThomas Petazzoni
Since a while, the semantic of BR2_PREFER_STATIC_LIB has been changed from "prefer static libraries when possible" to "use only static libraries". The former semantic didn't make much sense, since the user had absolutely no control/idea of which package would use static libraries, and which packages would not. Therefore, for quite some time, we have been starting to enforce that BR2_PREFER_STATIC_LIB should really build everything with static libraries. As a consequence, this patch renames BR2_PREFER_STATIC_LIB to BR2_STATIC_LIBS, and adjust the Config.in option accordingly. This also helps preparing the addition of other options to select shared, shared+static or just static. Note that we have verified that this commit can be reproduced by simply doing a global rename of BR2_PREFER_STATIC_LIB to BR2_STATIC_LIBS plus adding BR2_PREFER_STATIC_LIB to Config.in.legacy. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2014-12-11Add option for paranoid unsafe path checkingThomas Petazzoni
This commit adds a Config.in option to the "Build options" submenu to enable paranoid checking of unsafe paths. This mechanism is added as an option so that when we'll enable it in the autobuilders, people trying to reproduce the build failures will be able to do so by just downloading the configuration file. If instead we were leaving this feature as an environment variable, everyone would have to remember to pass this environment variable to reproduce build issues. And certain build issues triggered by paranoid unsafe patch checking may not be visible in the build output, for example when they happen during the execution of configure scripts. Since this option is fairly advanced, a new submenu inside "Build options" is created, for Advanced options. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Reviewed-by: Romain Naour <romain.naour@openwide.fr> Tested-by: Romain Naour <romain.naour@openwide.fr>
2014-11-30infra: do not append an empty LD_LIBRARY_PATHYann E. MORIN
When we set LD_LIBRARY_PATH when building our host tools, we append any pre-existing value to our custom path: LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:$(LD_LIBRARY_PATH)" But then if LD_LIBRARY_PATH was previously empty, we end up with an LD_LIBRARY_PATH that ends with a colon. Also, when we check that an existing LD_LIBRARY_PATH does not contain CWD, we previously did not look for a zero-length prefix. Since 'man ld.so' says of LD_LIBRARY_PATH: A colon-separated list of directories in which to search for ELF libraries at execution-time. Similar to the PATH environment variable. And POSIX states about PATH: A zero-length prefix is a legacy feature that indicates the current working directory. And bash also recognises a zero-length prefix to search in CWD: A zero-length (null) directory name in the value of PATH indicates the current directory. We may thus end up on a system where a zero-length prefix in LD_LIBRARY_PATH is interpreted as CWD. Do not append the previous LD_LIBRARY_PATH if it was empty, and check for a zero-length prefix when checking dependencies. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <jacmet@uclibc.org> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-11-02unzip: Use the "-q" option to silence unzipping of source filesFabio Porcedda
Add and use the "UNZIP" variable instead of calling directly unzip because the variable contains the "-q" option to silence "unzip" so it doesn't show the list of files extracted just like when tar files are being unpacked. Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-10-26package: indentation cleanupJerzy Grzegorek
Signed-off-by: Jerzy Grzegorek <jerzy.grzegorek@trzebnica.net> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-10-25apply-patches.sh: don't print anything when "make -s" is usedFabio Porcedda
The make "-s" option is used to enable the "Silent operation" so if that option is used don't print anything as far as there isn't any error. Add the "-s" option to "apply-patches.sh" to enable silent operation. [Peter: use the existing QUIET variable] Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-10-25apply-patches.sh: Use the "APPLY_PATCHES" variable to call the scriptFabio Porcedda
To easy up adding optional parameters when calling the "apply-patches.sh" add and use the "APPLY_PATCHES" variable to execute the script. Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-10-23intltool: fix build issuesFrancois Perrad
This commit fixes various build failures caused by the host-perl series. Currently, the variables PERL and PERL5LIB are available only during the configure step of host-intltool, but they are also needed when running host-intltool, in all packages that depend on host-intltool. Without them, host-intltool cannot work as it doesn't find the libxml-parser-perl module installed in $(HOST_DIR)/usr/lib/perl. This commit therefore makes the PERL and PERL5LIB variables global, so that all packages can access them. Signed-off-by: Francois Perrad <francois.perrad@gadz.org> Reviewed-by: Bernd Kuhls <bernd.kuhls@t-online.de> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-10-19infra: Move --enable/--disable-debug to package/Makefile.inBernd Kuhls
A lot of packages ignored BR2_ENABLE_DEBUG. This patch simplifies the handling of this option by adding the corresponding configure option to the global Makefile for target packages. For host packages --disable-debug is added to the global Makefile. Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-10-17pkg-perl: refactor with host-perlFrancois Perrad
Signed-off-by: Francois Perrad <francois.perrad@gadz.org> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-10-12package/Makefile.in: Fix dependency for selecting uclinux as TARGET_OSAxel Lin
Current setting only allows blackfin to select uclinux as TARGET_OS. However, some noMMU ARM platforms that using FLAT binary format also need to select uclinux as TARGET_OS. Fix the dependency. Signed-off-by: Axel Lin <axel.lin@ingics.com> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-08-16Makefile: unconditionally include pkg-utils.mkThomas De Schampheleire
Currently, pkg-utils.mk (included via package/Makefile.in) is only included when a configuration file already exists. This means that none of the utilities it defines are available without .config. In particular: - the MESSAGE macro, causing pretty build output. Since some make targets can be run even without .config, like 'make manual', not having this pretty printing is odd. - pkgname, pkgdir: in a subsequent patch, these functions will be used for the generation of the manual, and since this should work also without .config, we need these functions to be available. This patch moves the include of pkg-utils.mk from package/Makefile.in to Makefile, outside of the check for .config. This is a quick fix. The full solution involves to minimize the amount of Makefile code that is guarded by a check on .config. This approach will be taken in the 2014.11 release cycle. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Reviewed-by: Samuel Martin <s.martin49@gmail.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-08-04infra: introduce a kconfig-package infrastructureThomas De Schampheleire
There are several packages that have a configuration file managed by kconfig: uclibc, busybox, linux and barebox. All these packages need some make targets to handle the kconfig specificities: creating a configuration (menuconfig, ...) and saving it back (update-config, ...) These targets should be the same for each of these packages, but unfortunately they are not. Especially with respect to saving back the configuration to the original config file, there are many differences. A previous set of patches fixed these targets for the uclibc package. This patch extracts these targets into a common kconfig-package infrastructure, with the goals of: - aligning the behavior of all kconfig-based packages - removing code duplication In order to use this infrastructure, a package should at a minimum specify FOO_KCONFIG_FILE and eval the kconfig-package macro. The supported configuration editors can be set with FOO_KCONFIG_EDITORS and defaults to menuconfig only. Additionally, a package can specify FOO_KCONFIG_OPT for extra options to pass to the invocation of the kconfig editors, and FOO_KCONFIG_FIXUP_CMDS for a list of shell commands used to fixup the .config file after a configuration has been created/edited. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> [yann.morin.1998@free.fr: add missing 4th argument when calling to inner-kconfig-package (namely, 'target'] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-08-03toolchain: Add config option for atomic intrinsicsAnton Kolesov
GCC has several builtin functions that implement atomic operations. Those functions are architecture specific and may not be implemented by the specific toolchain. In case of GCC for ARC those functions rely on LLOCK/SCOND instructions which are optional in ARC CPU's. If ARC CPU doesn't support those instructions but software tries to use them, then application will be aborted with Illegal instruction exception. To avoid confusion user should first specify that their CPU supports atomic extension, which will allow selection of packages that use builtin atomic functions. Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>