summaryrefslogtreecommitdiffstats
path: root/toolchain/toolchain-external/ext-toolchain-wrapper.c
Commit message (Collapse)AuthorAgeFilesLines
* toolchain-external: do not use BR2_GCC_TARGET_TUNE anymoreThomas Petazzoni2014-11-071-9/+3
| | | | | | | | Since the BR2_GCC_TARGET_TUNE value is always empty now, there is no longer a point in using it in the external toolchain logic. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* ext-toolchain-wrapper: fix typoBaruch Siach2014-04-101-1/+1
| | | | | | Signed-off-by: Baruch Siach <baruch@tkos.co.il> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain/wrapper: rename BR_DEBUG_WRAPPERYann E. MORIN2014-03-051-1/+1
| | | | | | | | | | | The user-facing variables should be prefixed with BR2_, not BR_. Also quote the variable in the manual. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain/external: fix wrapper by not passing conflicting flagsYann E. MORIN2014-01-091-10/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In our wrapper, we forcibly add the -march=, -mcpu= and-mtune= flags to the actual compiler, this in an attempt to always generate correct and optimised code for the target. But in some cases, the caller knows better than we do, and passes its own set, or subset of those flags. In this case, some may conflict with the ones we pass. The most prominent offender being the Linux kernel. For example, on the ARM Raspberry Pi, the Linux kernel will set the -march=armv6 flag and no -mcpu= flag, but we pass -mcpu=arm1176jzf-s, which conflicts: drivers/scsi/scsi_trace.c:1:0: warning: switch -mcpu=arm1176jzf-s conflicts with -march=armv6 switch (and so for all the files the kernel compiles, pretty messy) (note: arm1176jzf-s is not an armv6, it is an armv6zk. Yeah...) To avoid this situation, we scan our commandline for any occurence of the possibly conflicting flags. If none is found, then we add our owns. If any is found, then we don't add any of our owns. The idea behind this is that we trust the caller to know better than we do what it is doing. Since the biggest, and sole so far, offender is the Linux kernel, then this is a rather safe bet. 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> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* ext-toolchain: MIPS: Select correct endianness for the targetMarkos Chandras2013-10-301-0/+6
| | | | | | | | | | | | | | Previously, an external-toolchain on a mipsel/mips64el target didn't select the appriopriate endianness but it asked the user to set the correct CFLAGS on his/her own. We fix this by appending "-EL" to the toolchain wrapper options if the user has selected a mipsel/mips64el target. [Thomas: remove unneeded test on BR2_ENDIAN, since mipsel and mips64el are always little-endian, and add the corresponding big endian case.] Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-wrapper: minor code style fixupPeter Korsgaard2013-09-231-1/+1
| | | | | | Missed from 60cb290475c (add option to print one argument per line). Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain/wrapper: add option to print one argument per lineYann E. MORIN2013-09-221-8/+17
| | | | | | | | | | | | | | | | | | | | | | | | | In case there are many arguments passed to the tools, the command line can get very long, and difficult to parse visually. For example, the Linux kernel passes a lot of arguments to gcc (at least 45, which gives 53 with our hard-coded args). Looking at such a command line is daunting. So, add the possibility to print each argument on its own line. Also, enclose all args between single quotes, so the command line can be safely copy-pasted without special chars (spaces, $) being inrerpreted by the shell. Add blurb about toolchain-wrapper to documentation at the same time. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com> Acked-by: Luca Ceresoli <luca@lucaceresoli.net> Tested-by: Luca Ceresoli <luca@lucaceresoli.net> Acked-by: Samuel Martin <s.martin49@gmail.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* ext-toolchain-wrapper: fix uboot/linux with hardfpSpenser Gilliland2013-07-211-4/+25
| | | | | | | | | | | | | | The linux kernel and uboot specify -msoft-float in order to prevent floating point code from being generated. This causes a conflict when -mfloat-abi=hard or -mfloat-abi options are specified in the wrapper. This patch removes the -mfloat-abi option from the options generated by the wrapper only when -msoft-float, -mhard-float or -mfloat-abi are specified by the user. [Peter: fix !BR_FLOAT_ABI case, simplify] Signed-off-by: Spenser Gilliland <spenser@gillilanding.com> Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/Spenser Gilliland2013-07-211-1/+1
| | | | | | Signed-off-by: Spenser Gilliland <spenser@gillilanding.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain: instrument external toolchain wrapperYann E. MORIN2013-07-191-0/+9
| | | | | | | | | | If BR_DEBUG_WRAPPER is set in the envirnment, dump the actual command being exec()uted, to ease debugging issues with the wrapper. [Peter: adjust code style and output format to be cut'n'paste compatible] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* arch/arm: add support for Thumb2Thomas Petazzoni2013-07-161-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | Until now, we were using the default ARM instruction set, as used by the toolchain: the 32 bits ARM instruction set for the internal backend, and for external toolchain, whatever default was chosen when the toolchain was generated. This commit adds support for the Thumb2 instruction set. To do so, it: * provides a menuconfig choice between ARM and Thumb2. The choice is only shown when Thumb2 is supported, i.e on ARMv7-A CPUs. * passes the --with-mode={arm,thumb} option when building gcc in the internal backend. This tells the compiler which type of instructions it should generate. * passes the m{arm,thumb} option in the external toolchain wrapper. ARM and Thumb2 code can freely be mixed together, so the fact that the C library has been built either ARM or Thumb2 and that the rest of the code is built Thumb2 or ARM is not a problem. [Peter: fix empty BR2_GCC_TARGET_MODE check] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain: remove the old BR2_VFP_FLOAT optionThomas Petazzoni2013-07-161-3/+0
| | | | | | | | | | Now that we have a much better way of selecting between the various VFP versions and capabilities, the BR2_VFP_FLOAT version no longer makes sense. This commit gets rid of it, and adds the appropriate Config.in.legacy code. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* arch: introduce BR2_GCC_TARGET_{FPU, FLOAT_ABI}Thomas Petazzoni2013-07-161-0/+6
| | | | | | | | | | | | | | | | Buildroot already has the BR2_GCC_TARGET_{TUNE,ARCH,ABI,CPU} hidden kconfig strings that allow per-architecture Config.in files to feed the appropriate values of --with-{tune,arch,abi-cpu} when building gcc, or the appropriate flags for the external toolchain wrapper. This commit has two additional options: BR2_GCC_TARGET_{FPU,FLOAT_ABI}, that allows to define the --with-{fpu,float} gcc configure options for the internal backend, or the -m{fpu,float-abi} options for the flags of the external toolchain wrapper. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* ext-toolchain-wrapper: fix paths if executable was resolved by PATHPatrick Ziegler2013-05-311-2/+15
| | | | | | | | | | | | | | If ext-toolchain-wrapper or any symbolic link to it was resolved by PATH, the wrapper takes the working directory to calculate the relative paths. Now '/proc/self/exe' is used to resolve the absolute path to the toolchain directory if the wrapper was called neither with a relative nor an absolute path. [Peter: fix off-by-one, swap value == var checks around] Signed-off-by: Patrick Ziegler <patrick.ziegler@fh-kl.de> Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* arch: toolchain: Introduce binary formats BINFMT_*.Sonic Zhang2013-05-051-0/+3
| | | | | | | | | Just introduce the symbol and options in arch generic Config.in. Append FLAT format link flags to external toolchain wrapper. Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* Make external toolchain relocatableArnout Vandecappelle2013-02-051-17/+47
| | | | | | | | | | | | | | | | | | | | | | The external toolchain wrapper sets sysroot etc. to an absolute path. By changing this to a relative path, it is possible to move the host directory to a different location and still have a working build system. This only works for a downloaded external toolchain. For a pre-installed external toolchain, it is possible to move the host directory to a different location, but not the external toolchain directory (it does work if the external toolchain directory lies within the host directory). For an internal or crosstool-ng toolchain, there is no wrapper so updating the sysroot path should be done in a different way. See http://lists.busybox.net/pipermail/buildroot/2012-February/050371.html for information about others things to do to make the host directory relocatable. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Acked-by: Samuel Martin <s.martin49@gmail.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* ext-toolchain: Automatically set -m64 if the architecture is x86_64Arnout Vandecappelle (Essensium/Mind)2012-03-151-0/+3
| | | | | | | | | | | Without the -m64, choosing the x86_64 architecture with a Sourcery external toolchain will result in a 32-bit rootfs. Also simplified the help text to reflect this change. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* Expand external toolchain wrapper to custom flagsThomas Petazzoni2012-03-011-0/+3
| | | | | | | | | | The BR2_TARGET_OPTIMIZATION flags were not used by the external toolchain wrapper, which broke the multilib selection logic of multilib external toolchains. It also simplifies the compilation of external programs since all flags are properly passed automatically by the toolchain wrapper. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain: Add the possibility to have a mcpu option with wrapperStany MARCEL2011-11-021-0/+3
| | | | | | | | | Permit to define the mcpu of the external toolchain wrapper, based on BR2_GCC_TARGET_CPU. Signed-off-by: Stany MARCEL <stanypub@gmail.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* ext-toolchain-wrapper.c: Handle an arbitrary amount of argumentsDaniel Nyström2011-06-221-11/+20
| | | | | | | | | | | | | | Even though MAXARGS 1000 seems large, it wasn't enough for at least QtWebKit package. This new version does not have any predefined limits. Closes #3907 Many thanks to Thomas for tracing the source of the build error. [Peter: Return rather than abort()] Signed-off-by: Daniel Nyström <daniel.nystrom@timeterminal.se> Reported-by: Thomas Björk <thomas.bjork@home.se> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* Add toolchain wrapper for external toolchainsPeter Korsgaard2011-05-051-0/+75
Add a simple toolchain wrapper for external toolchains, which forces the correct sysroot/march/mtune/floating point options needed to use it with buildroot. With this in place the external toolchain behaves similar to the internal ones, and the special handling can be removed. This also means that the toolchain is usable outside buildroot without having to pass any special compiler flags. Also adjust the downloadable external toolchain support to install under HOST_DIR so it can be used after the temporary build files are removed. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
OpenPOWER on IntegriCloud