Commit Graph

290 Commits

Author SHA1 Message Date
Thomas Petazzoni
87bb439942 package/Makefile.in: fix incorrect comment
The TARGET_{CC,CXX,LD,...} variables no longer contain any --sysroot
option, since we're now using a toolchain wrapper for external
toolchains.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-09-15 22:48:28 +02:00
Gustavo Zacarias
71701eb6d7 nommu/flat: build packages with the correct FLAGS
When building for nommu flat targets the CFLAGS/CXXFLAGS/LDFLAGS must be
adjusted accordingly.
For gcc this means passing along -Wl,-elf2flt to signal the linker.
For ld this means -elf2flt.

Also correct the error in STACKSIZE settings from commit 9edf482d which
is setting gcc flags as ld flags and will surely fail (no package uses
it at the moment so it was never seen).

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-09-13 00:12:15 +02:00
Thomas Petazzoni
796621c56a package/Makefile.in: fix ABI name for EABIhf targets
The current code to set ABI on ARM does the following:

ifeq ($(BR2_arm)$(BR2_armeb),y)
... set ABI without 'hf' suffix ...
else ifeq ($(BR2_ARM_EABIHF),y)
... set ABI with 'hf' suffix ...
endif

But since $(BR2_arm)$(BR2_armeb) will always be 'y' in the cases where
BR2_ARM_EABIHF is 'y', it means that the 'else' part of the condition
will never be used.

Fix this by appending 'hf' to the ABI variable when BR2_ARM_EABIHF is
selected.

[Peter: put EABIhf handling under arm/armeb conditional for consistency]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-08-27 22:46:11 +02:00
Gustavo Zacarias
b32f186cfd blackfin: set GNU_TARGET_NAME accordingly
Blackfin for FDPIC targets uses *-linux-*, however for FLAT targets it
needs *-uclinux-* in order for gcc to build properly.

[Thomas: use a TARGET_OS variable instead of redefining
GNU_TARGET_NAME completely]
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2013-07-27 16:11:41 +02:00
Gustavo Zacarias
808cc0a5e1 toolchain/buildroot: properly handle SSP
The current SSP handling is incomplete.

First we need to build uClibc with SSP support for a complete
"experience".

Second, it doesn't hurt to add -fstack-protector-all to the
CFLAGS/CXXFLAGS since most users would expect buildroot to do this
rather than adding the flags themselves.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2013-07-27 13:16:50 +02:00
Thomas Petazzoni
5f959a1c61 arch: improve ARM floating point support and add support for EABIhf
This commit introduces the support for the EABIhf ABI, next to the
existing support we have for EABI and OABI (even though OABI support
is deprecated). EABIhf allows to improve performance of floating point
workload by using floating point registers to transfer floating point
arguments when calling functions, instead of using integer registers
to do, as is done in the 'softfp' floating point model of EABI.

In addition to this, this commit introduces a list of options for the
floating point support:
 * Software floating point
 * VFP
 * VFPv3
 * VFPv3-D16
 * VFPv4
 * VFPv4-D16

and it introduces some logic to make sure the options are only visible
when it makes sense, depending on the ARM core being selected. This is
however made complicated by the fact that certain VFP capabilities are
mandatory on some cores, but optional on some other cores. The kconfig
logic tries to achieve the following goals:

 * Hide options that are definitely not possible.

 * Use safe default values (i.e for Cortex-A5 and A7, the presence of
   the VFPv4 unit is optional, so we default on software floating
   point on these cores)..

 * Show the available possibilities, even if some of them are not
   necessarily working on a particular core (again, for the Cortex-A5
   and A7 cores, there is no way of knowing whether the particular
   variant used by the user has VFPv4 or not, so we select software
   floating point by default, but still show VFP/VFPv3/VFPv4 options).

It is worth noting that this commit doesn't add support for all
possible -mfpu= values on ARM. We haven't added support for fpa, fpe2,
fpe3, maverick (those four are only used on very old ARM cores), for
vfpv3-fp16, vfpv3-d16-fp16, vfpv3xd, vfpv3xd-fp16, neon-fp16,
vfpv4-sp-d16. They can be added quite easily if needed thanks to the
new organization of the Config.in options.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-07-16 14:42:12 +02:00
Yann E. MORIN
b6a9829ebe pkg-infra: dump all ARM OABI references when setting ABI
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-07-14 22:17:26 +02:00
Thomas Petazzoni
381616e77a Introduce BR2_TOOLCHAIN_USES_{UCLIBC, GLIBC}
Currently, when we need to do a conditional on the type of C library
used, we need to take into account the three toolchain backends. As we
are going to add eglibc support to the Buildroot toolchain backend, it
would become even uglier, so this patch introduces two new hidden
options: BR2_TOOLCHAIN_USES_UCLIBC and BR2_TOOLCHAIN_USES_GLIBC, that
exist regardless of the toolchain backend. The entire Buildroot code
base is converted to use those options.

Note that we have intentionally created only one option
(BR2_TOOLCHAIN_USES_GLIBC) for both glibc and eglibc, since they are
essentially the same, as far as Buildroot is concerned.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-07-04 09:08:42 +02:00
Alexandre Belloni
95442bb324 Normalize separator size to 80 in remaining makefiles
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-06-20 17:32:07 +02:00
Yann E. MORIN
df8d52fb02 package-infra: limit the number of // jobs
The current code spawns as many jobs as up to twice the number of CPUs.

On small-class machines like laptops, with a limitted amount of memory,
but still a few CPUs (real or hyperthreads), the HDD becomes a bottleneck,
and it becomes almost impossible to do anythiong else while there is a
build in progress.

Limit the number of jobs to the number of CPUs plus one.

Even on fast machines with fast HDDs, this settings keeps the machine
fully busy (for those packages that can build in parallel, of course).

For example, building qemu or the linux kernel kept my hyperthreaded
hexa Core i7 with 18GiB of RAM, busy at 99% (I never ever managed to
get 100% even with more jobs, not even 200); while on my hyperthreaded
dual Core i5 with only 4GiB and a slow HDD, I still topped at 100% CPU,
while still able to do some work involving the HDD.

If the number of processors is not available, assume one.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Nathan Lynch <ntl@pobox.com>
Reviewed-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: Nathan Lynch <ntl@pobox.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-05-11 22:49:59 +02:00
Sonic Zhang
9edf482d6b package: Introduce package-specific BINFMT_FLAT options.
Add new option <PKG>_FLAT_STACKSIZE. The document needs to be updated.

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>
2013-05-05 22:55:50 +02:00
Sonic Zhang
57c0543291 arch: toolchain: Introduce binary format FLAT types.
Just introduce the symbol and options in arch generic Config.in.
Add FLAT types specific compiling flags into package makefile.

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>
2013-05-05 22:54:37 +02:00
Arnout Vandecappelle
befb9a3ee0 Make external toolchain relocatable
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>
2013-02-05 15:06:31 +01:00
ANDY KENNEDY
0a4bd19f4a Pass --static rather than -static in LDFLAGS when BR2_PREFER_STATIC_LIB
The following changes LDFLAGS from -static to --static if building
with BR2_PREFER_STATIC_LIB so that various components actually build
statically.

Libtool interpret -static as linking statically with libraries that will not
be installed to the libdir; you have to pass it -all-static to force static
linking.  Or, pass --static, which libtool passes on blindly to gcc.  gcc
and (GNU) ld both interpret --static the same as -static (although this
isn't documented).

Signed-off-by: Andy Kennedy <andy.kennedy@adtran.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-01-14 20:40:26 +01:00
Arnout Vandecappelle
489970e047 pkg-infra: pass --disable-doc if documentation is not enabled
Many configure scripts support an option like --disable-doc, --disable-docs
or --disable-documentation.  Pass all of these to configure.

In addition, not all Xorg packages accept the --disable-xxx. Instead they
look for xmlto and/or fop and build documentation if they exist.  For host
packages, this may lead to build errors because /usr/bin/xmlto uses libxml2
and we set LD_LIBRARY_PATH to point to $(HOST_DIR)/lib, which may contain
a libxml2 as well.  So it's essential to disable xmlto for host packages.

Also some whitespace cleanup.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-12-12 17:11:15 +01:00
Chris Zankel
f7ccd30afb xtensa: add -mlongcalls to CFLAGS for xtensa
The longcalls option allows calls across a greater range of addresses.

This option may degrade both code size and performance, but
the linker can generally optimize away the unnecessary overhead
when a call ends up within range

Signed-off-by: Chris Zankel <chris@zankel.net>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-12-10 22:25:45 +01:00
Richard Braun
6ae7886f84 Makefile: fix thread libraries stripping
Strip libthread_db the same as any other library, but strip libpthread
with --strip-debug. See the relevant mailing list discussion [1] for
additional details.

[1] http://lists.busybox.net/pipermail/buildroot/2012-October/060126.html

Signed-off-by: Richard Braun <rbraun@sceen.net>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-11-30 13:59:40 -08:00
Arnout Vandecappelle (Essensium/Mind)
cc1cd3b267 legacy: move old GENTARGETS macros to Makefile.legacy
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-11-30 12:06:56 -08:00
Maxime Ripard
a32fa707e5 TARGET_CONFIGURE_OPTS: pass READELF
Give the path to the realdelf binary for the target, similar to how we
do for the other tools.

[Peter: reworded]
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-11-07 23:35:39 +01:00
Gustavo Zacarias
fbb872a0c1 package infra: remove empty TARGET_CPPFLAGS def
It's unneeded, just fills the next match (LARGEFILE) with a leading
space. Fixes
http://autobuild.buildroot.net/results/ad5772d19036a0c5564228ac7aba953d35a3cf85/build-end.log
since SCons can't handle leading whitespace in LDFLAGS gracefully.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-10-13 22:24:14 +02:00
Peter Korsgaard
6357223722 package/Makefile.in: whitespace fixup after CPPFLAGS addition
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-10-11 09:01:10 +02:00
Samuel Martin
bdac1ad29a Makefile.in: add CPPFLAGS support
Signed-off-by: Samuel Martin <s.martin49@gmail.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-10-10 23:50:26 +02:00
Arnout Vandecappelle
11017f081f pkg-infra: make sure cross compiling is enabled when host == target
When compiling for the same architecture and libc as the host,
GNU_TARGET_NAME and GNU_HOST_NAME are equal.  configure scripts use
these to detect cross-compilation, and will decide that we're doing
native compilation.  This may trigger running of executables,
which fail because of missing libraries in the host environment.

To solve this, set the vendor part in GNU_TARGET_NAME to buildroot.

This problem exists for instance in xserver_xorg-server on x86_64.

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>
2012-10-04 22:49:58 +02:00
Arnout Vandecappelle
5e0d702b7c pkg-infra: warn about use of deprecated GENTARGETS
With the replacement of GENTARGETS by package-generic, there is a risk
that local packages don't work anymore without any indication of what
is wrong.  Therefore, generate an error message if the GENTARGETS,
AUTOTARGETS or CMAKETARGETS macro is still used.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-09-05 22:54:20 +02:00
Gustavo Zacarias
2bb39acb6a mips64: remove toolchain kludge
-mno-abicalls is an old kludge for some (probably) old issue.
Remove it since it's actually harmful, static busybox doesn't build with
it for a modern-ish toolchain (defaults as of this commit, uClibc
0.9.33.2 + gcc 4.5.4).

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-09-04 22:04:00 +02:00
Thomas Petazzoni
8e55f03a54 Clarify MIPS ABIs support
Practically speaking, MIPS has three useful ABIs:

 * o32 is for 32-bits CPUs, or 64-bit CPUs running only a 32-bit subset
   of the instruction set.
 * n32 is for 64-bits CPUs only. It has 32-bits pointers and long
   integers.
 * n64 is for 64-bits CPUs only. It has 64-bits pointers and long
   integers.

See http://www.linux-mips.org/wiki/MIPS_ABI_History and
http://www.linux-mips.org/wiki/WhatsWrongWithO32N32N64 for more
details.

So, this commit reworks the Buildroot MIPS support by:

 * Add separate mips64/mips64el top-level architectures.

 * Renaming the n32 ABI option to BR2_MIPS_NABI32, for consistency
   with BR2_MIPS_OABI32.

 * Renaming the n64 ABI option to BR2_MIPS_NABI64, for consistency
   with BR2_MIPS_OABI32.

 * Make the n32 and n64 ABI selections select the BR2_ARCH_IS_64,
   since those ABIs are valid on 64-bits CPUs only.

 * Removing the o64 ABI, which is practicaly never used.

 * Removing the "none" ABI, which really doesn't make sense.

 * Introduce the mips64 and mips64el architecture names when a 64-bits
   MIPS ABI is choosen. This will fix build issue like
   http://autobuild.buildroot.org/results/9b8c5ea86c953a89e85e7b67e9221de41773f652/build-end.log
   where gmp was confused by the fact of having a 32 bits architecture
   (detected by the mips- architecture part of the tuple) but 64 bits
   integer size when compiling.

 * Adjust the uclibc.mk logic to support the new mips64/mips64el
   architecture names, and take into account the renaming of the ABI
   options.

This has been build tested by generating Buildroot toolchains and
compiling a few packages for MIPS o32, MIPS n32 and MIPS n64.

This work is originally based on prior work done by Gustavo Zacarias.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-09-04 22:03:55 +02:00
Arnout Vandecappelle (Essensium/Mind)
2359e1223f Clean up naming of old GENTARGETS infrastructure
With the renaming of XXXTARGETS to xxx-package, the names of the
pkg-xxx.mk files is inconsistent, as well as some internal names in
the documentation.  These inconsistencies are cleaned up here.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

 ...kages-autotargets.txt => adding-packages-autotools.txt} |    4 ++--
 ...packages-cmaketargets.txt => adding-packages-cmake.txt} |    4 ++--
 docs/manual/adding-packages-directory.txt                  |   12 ++++++------
 ...packages-gentargets.txt => adding-packages-generic.txt} |    4 ++--
 docs/manual/adding-packages.txt                            |    6 +++---
 package/Makefile.in                                        |    6 +++---
 package/{pkg-autotargets.mk => pkg-autotools.mk}           |    0
 package/{pkg-cmaketargets.mk => pkg-cmake.mk}              |    0
 package/{pkg-gentargets.mk => pkg-generic.mk}              |    0
 9 files changed, 18 insertions(+), 18 deletions(-)
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2012-07-17 20:24:03 +02:00
Arnout Vandecappelle (Essensium/Mind)
7ea1e92bdd Remove -fPIC on x86_64
The -fPIC breaks the purgatory of kexec (= the code that passes command-line
arguments to the kernel): kexec doesn't know how to handle the GOT and PLT
relocation entries.

There is also no reason at all to pass -fPIC.  Shared libraries that require
it will add it to their local Makefiles, and normal executables have no
business with -fPIC (plus it adds overhead...).

The -fPIC was added by Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
in commit 8027784c.  That commit adds sysroot parameters to CFLAGS.
There is no explanation why -fPIC is also added for x86_64.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2012-07-13 21:51:55 +02:00
Peter Korsgaard
eb421a8433 package/Makefile.in: link statically when BR2_PREFER_STATIC_LIB
Instead of explicitly adding it for each package.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-06-29 16:40:04 +02:00
Nathan Lynch
5016aa02fb automatically set PARALLEL_JOBS when BR2_JLEVEL is 0
When BR2_JLEVEL is 0, set PARALLEL_JOBS to double the number of CPUs
detected.  This allows one to more or less fully utilize the host
system without manually tuning the configuration.

Also make 0 the default value for BR2_JLEVEL.

Signed-off-by: Nathan Lynch <ntl@pobox.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-06-24 11:11:07 +02:00
Nathan Lynch
a72aed3a74 introduce PARALLEL_JOBS build system variable
BR2_JLEVEL currently is expanded directly in $(MAKE), and used in
invocations of other build software (e.g. ct-ng).  However, we are
going to allow "0" to be a meaningful value for BR2_JLEVEL, which
won't work for these uses.  Given that it is not permissible to modify
BR2_-prefixed variables in Makefiles, we need an intermediate
variable.

Define PARALLEL_JOBS to $(BR2_JLEVEL), and use the former in MAKE's
definition.  Uses of BR2_JLEVEL throughout the rest of the tree to be
adjusted similarly in follow-up patches.

Signed-off-by: Nathan Lynch <ntl@pobox.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-06-24 11:09:21 +02:00
Richard Braun
b7b640d812 Remove REAL_GNU_TARGET_NAME
Instead of providing two variables, make GNU_TARGET_NAME give the real
target name, and remove REAL_GNU_TARGET_NAME altogether.

Signed-off-by: Richard Braun <rbraun@sceen.net>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-06-23 15:14:51 +02:00
Thomas Petazzoni
ce1acfb5ea toolchain: remove toolchain/Makefile.in and toolchain/gcc/Makefile.in
Re-integrate in gcc-uclibc-4.x.mk things from
toolchain/gcc/Makefile.in that were completely gcc-specific. There was
no reason to pull that when building with other backends than the
internal one.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-04-25 09:00:51 +02:00
Thomas Petazzoni
4fd0853156 package: remove unused STRIP_DISCARD_ALL variable
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-04-25 00:03:35 +02:00
Peter Korsgaard
2a10c9d0a2 package/Makefile.in: pass --enable-ipv6 to autotargets configure when enabled
Some packages don't automatically enable IPv6 support if not configured
with --disable-ipv6, or use AC_TRY_RUN which doesn't work when cross
compiling (like curl), so explicitly configure with --enable-ipv6.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-04-24 22:32:55 +02:00
Thomas Petazzoni
6e6b99a571 Split Makefile.package.in in pkg-download.mk, pkg-utils.mk and pkg-gentargets.mk
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-04-19 16:07:15 +02:00
Thomas Petazzoni
e834da05b0 Rename Makefile.cmake.in to pkg-cmaketargets.mk
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-04-19 16:06:38 +02:00
Thomas Petazzoni
6ff4c584c8 Rename Makefile.autotools.in to pkg-autotargets.mk
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-04-19 16:05:53 +02:00
Sven Neumann
feba8b1382 package: set PKG_CONFIG_SYSROOT_DIR in HOST_MAKE_ENV
A host package that uses AUTORECONF (such as host-libglib2)
may end up running './config.status --recheck'. This will
call the configure script with the environment variables
set in HOST_MAKE_ENV. If PKG_CONFIG_SYSROOT_DIR is missing
this will cause the hardcoded sysroot dir take effect leading
to wrong paths.

See commit 22acade2ec which works around this problem by
fiddling with the generated .pc file. This commit becomes
obsolete with this fix.

Signed-off-by: Sven Neumann <s.neumann@raumfeld.com>
Cc: Daniel Mack <zonque@gmail.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-04-15 23:08:48 +02:00
Gustavo Zacarias
5a6087d62e toolchain: add powerpc SPE ABI support
Add the ability for buildroot to build an SPE ABI enabled toolchain.

This is mandatory for e500v1/v2 cores since they don't support classic
FPU mode as the e500mc does.

Useful for Freescale's PowerQUICC III and single/dual-core QorIQ
line of processors.

The new TARGET_ABI variable is used rather than TARGET_CFLAGS for
uclibc's UCLIBC_EXTRA_CFLAGS to avoid breakish CFLAGS leaking in, a
good example being -mthumb for ARM.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-01-07 20:46:11 +01:00
Baruch Siach
ec8eda419a toolchain: add user defined target LDFLAGS options
Allow the user to specify additional options for the target LDFLAGS.

I use this to pass the -te500v2 option to the linker, when using the
CodeSourcery toolchain for PowerPC. This chooses the correct CRT for e500 hard
float. Otherwise I get errors like

undefined reference to `_save32gpr_31'
undefined reference to `_rest32gpr_31_x'

at final link time.

[Peter: fixup, use qstrip]
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-25 08:31:15 +02:00
Thomas Petazzoni
009d8fceab package/autotools: add --{enable,disable}-{shared,static} automatically
For target packages, depending on BR2_PREFER_STATIC_LIB, add the
correct combination of --{enable,disable}-{shared,static} flags to
./configure calls.

  * When BR2_PREFER_STATIC_LIB is enabled, we pass --enable-static
  --disable-shared.

  * When BR2_PREFER_STATIC_LIB is disabled, we pass --enable-static
  --enable-shared. We enable static libraries since they can still be
  useful to statically link applications against some libraries
  (sometimes it is useful for size reasons). Static libraries are
  anyway only installed in the STAGING_DIR, so it doesn't increase in
  any way the size of the TARGET_DIR.

For host packages, always pass --enable-shared and --disable-static.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-06-12 21:59:34 +02:00
Peter Korsgaard
125e2558b2 Get rid of unneeded CFLAGS
Now that we use a wrapper for external toolchains (and internal ones
default to the correct setting), we no longer need to explicitly pass
sysroot/march/mtune/mabi/floating point mode in TARGET_CFLAGS.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-05-05 23:39:03 +02:00
Peter Korsgaard
85dc57f6fd Add toolchain wrapper for external toolchains
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>
2011-05-05 23:38:58 +02:00
Peter Korsgaard
6246704008 package/Makefile.in: ensure libtool doesn't search host dirs for libraries
Commit 7e3e8ec040 (CFLAGS/LDFLAGS: don't add -I / -L args for STAGING_DIR)
exposed a lingering libtool problem.

Unless instructed otherwise (using -L) libtool will search its built in
system path for libraries, and use those instead if found. The default
search path is '/usr/lib, /lib, /usr/local/lib', which is no good for
cross compilation.

Fix it by setting the system search path to the empty string, effectively
disabling this feature.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-05-03 15:23:40 +02:00
Peter Korsgaard
7e3e8ec040 package/Makefile.in: CFLAGS/LDFLAGS: don't add -I / -L args for STAGING_DIR
Now that we use sysroot for all toolchains, the explicit -I / -L arguments
in CFLAGS / LDFLAGS aren't needed anymore (And having them makes the build
quite noisy for certain packages as STAGING_DIR/include normally doesn't
exist).

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-04-29 15:40:58 +02:00
Sonic Zhang
5d6ff452ad external toolchain: Only prefix path if specified
Only prefix the external toolchain calls with its absolute path if
BR2_TOOLCHAIN_EXTERNAL_PATH is set, otherwise just assume it will
be available in the path.

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>
2011-03-28 10:00:37 +02:00
Peter Korsgaard
6a86dd9c8e pkg-config: add usr/share/pkgconfig to search path as well
A few packages (like xlib_xtrans) install their .pc files here, and
upstream pkg-config defaults to searching both /usr/lib/pkgconfig and
/usr/share/pkgconfig, so add it as well.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-03-27 21:20:04 +02:00
Peter Korsgaard
50bda85e88 pkg-config: add --with-sysroot option for compiled in default sysroot setting
Similar to the --with-pc-path option. It works just like the existing
PKG_CONFIG_SYSROOT_DIR environment variable, but compiled in.
The environment variable overrides this default setting if set.

This way we don't need to pass PKG_CONFIG_SYSROOT_DIR in the environment
when building for the target, and it is easier to reuse pkg-config outside
BR (E.G. for the SDK) without having to setup special environment
variables.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-01-30 00:37:53 +01:00
Bjørn Forsman
bc1acec143 Add CMAKETARGETS infrastructure for CMake packages
The CMAKETARGETS infrastructure makes adding CMake-based packages to
Buildroot easy. It uses the same set of variables as the autotools
infrastructure, except for autoreconf and libtool stuff which is not
needed. Usage: just call CMAKETARGETS instead of AUTOTARGETS.

Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-01-26 23:22:32 +01:00
Bjørn Forsman
73144a6e02 Makefile: generate CMake toolchain-file in $(O)
A CMake toolchain-file makes it easy to develop CMake-based packages
outside of Buildroot. Just give the toolchain-file to CMake via the
-DCMAKE_TOOLCHAIN_FILE=... option.

Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-01-26 23:22:32 +01:00
Peter Korsgaard
d97db71d10 Use 'sysroot' rather than 'sys-root' for the sysroot/staging_dir
As pointed out on the list, using sysroot rather than sys-root is less
confusing, as this is how it is referred to in the GCC manual.

So rather than changing BR, patch ct-ng to use sysroot instead.
The next ct-ng release will use 'sysroot' as well by default.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-01-26 14:49:00 +01:00
Peter Korsgaard
58d107ec3f crosstool-ng: install toolchain into HOST_DIR like the internal toolchain
Simplifies code and helps us when we add SDK support in the future.
With this we no longer need to copy headers/libraries to STAGING_DIR either.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-01-25 16:08:50 +01:00
Peter Korsgaard
f826046578 package/Makefile.in: Fix LIBC calculation for internal ct-ng toolchains
Use uclibc for internal ct-ng toolchains configured with uClibc as well.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-01-25 16:01:25 +01:00
Peter Korsgaard
8f61b236c9 Use sys-root rather than sysroot for the sysroot/staging_dir
The name of the sysroot directory is arbitrary, but as ct-ng uses sys-root,
let's use that as well for consistency.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-01-25 15:58:04 +01:00
Gustavo Zacarias
009407e6be binutils: make it a proper package
* Convert binutils to a proper autotargets package

* Add version 2.21 and drop version 2.17

* Hook up packaged binutils for target gcc

* Build tools are on HOST_DIR now so change it

* Move cross/host gcc to HOST_DIR

* Drop kludge from commit 3c77bab2ee
  This is fixed in the next commit "gcc: install copies of libgcc,
  libstdc++ and libgcj to the sysroot" - tested for arm & x86_64
  targets.

* TARGET_CROSS now pointed to HOST_DIR too

[Peter: Config.in tweaks]
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-01-02 22:55:16 +01:00
Gustavo Zacarias
74058758e4 package: drop sparc64 bits
Remove VIS optimization, it's for sparc64 and it's gone.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-12-29 23:13:03 +01:00
Gustavo Zacarias
87b81bb56f toolchain: move sysroot to host dir
* Drop the BR2_STAGING_DIR option
* Hardcode STAGING_DIR to $(HOST_DIR)/usr/TUPLE/sysroot

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-12-28 22:38:47 +01:00
Gustavo Zacarias
f78b344ea8 sstrip: make it a proper package
* Convert sstrip to a proper gentargets package
* Use openwrt svn version, it's basically the same one we used
* Change the hooks from old toolchain/sstrip to new package/sstrip
* Drop the old toolchain/sstrip directory
* sstrip for the target is now in Package -> Development

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-12-28 20:43:58 +01:00
Thomas Petazzoni
6b578c8d73 toolchain: rework C++ options
Instead of having BR2_GCC_CROSS_CXX and BR2_INSTALL_LIBSTDCPP, with
BR2_GCC_CROSS_CXX not being visible (and therefore being useless),
let's just keep BR2_INSTALL_LIBSTDCPP to enable C++ in the toolchain
and install C++ libraries on the target.

We also take that opportunity to make BR2_INSTALL_LIBSTDCPP an hidden
option, which is selected by an option in Buildroot toolchain support
or an option in External toolchain support, just as we did for other
toolchain features.

Some work definitely remains to be done :

 - The name BR2_INSTALL_LIBSTDCPP is ugly, but we keep it for the
   moment in order to avoid changing all packages.

 - We should clarify the other language-related options (Fortran,
   Java, Objective-C, etc.).

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-12-13 22:04:35 +01:00
Thomas Petazzoni
6c492d5e7b toolchain: add support for external toolchain profiles and download
Instead of letting the user define all the details of his external
toolchain, we define a set of profiles for well-known external
toolchains (CodeSourcery ones only at the moment, can easily be
extended with other toolchains).

Once a profile has been choosen, the user is offered the choice of
either letting Buildroot download and install the external toolchain,
or (as before) to tell Buildroot where the toolchain is installed on
the system.

We of course provide a "custom profile", through which the user can
configure Buildroot to use a custom external toolchain for which no
profile is available.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-12-13 21:56:49 +01:00
Thomas Petazzoni
17b66affdf ccache: rework ccache management
* ccache is now a normal package (both for the host and the target).

 * ccache option is now part of the "Build options" menu. It will
   automatically build ccache for the host before building anything,
   and will use it to cache builds for both host compilations and
   target compilations.

 * bump ccache to 3.1.3

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-12-08 17:51:49 +01:00
Gustavo Zacarias
0dc940cdee Makefile: introduce KSTRIPCMD to strip kernel modules
When sstrip is selected it tries to strip kernel modules too.
Unfortunately this fails with a "unrecognized program segment header
size" error thus interrupting the build process.

We introduce a new $(KSTRIPCMD) strip command for this, being a regular
strip when sstrip is selected and an empty stub when not stripping.

At the same time get rid of the REMOVE_SECTION_* variables, as they are
only used once.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-11-30 16:28:41 +01:00
Marcelo Roberto Jimenez
1fbd9ef813 package/Makefile.in: Add OBJDUMP=$(TARGET_OBJDUMP) to TARGET_CONFIGURE_OPTS
Closes #2857

The OBJDUMP was missing from TARGET_CONFIGURE_OPTS, this patch adds it
to the proper place in package/Makefile.in.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-11-27 22:36:28 +01:00
Peter Korsgaard
3be4968343 Optimize (-O2) host binaries by default
Default HOST_CFLAGS to -O2, so host tools (like the cross compiler) are
built with optimization by default.

Based on a patch by Will Newton <will.newton@gmail.com>.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-10-29 21:00:26 +02:00
Mike Frysinger
d2f7323f78 toolchain: do not require full path
If the toolchain can be found via $PATH, then requiring the full path to
it is unnecessary.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2010-10-16 16:46:44 -04:00
Yann E. MORIN
10c1eec2c3 toolchain: add new toolchain backend: crosstool-NG
[Peter: indent Config.in, shuffle make targets around]
Signed-off-by: Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-10-01 16:40:40 +02:00
Peter Korsgaard
d0c3d1cf43 sed: get rid of host-sed variant
And all the infrastructure surrounding it. A broken sed implementation
is quite rare nowadays, as seen by the fact that the current host-sed
support has been broken for a while, so just get rid of it.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-09-30 23:09:39 +02:00
Thomas Petazzoni
ece1f4225c Fix computation of REAL_GNU_TARGET_NAME
The current computation of REAL_GNU_TARGET_NAME is incorrect for
non-ARM glibc platforms because it generates something such as
mipsel-unknown-linux- as the REAL_GNU_TARGET_NAME.

So we correct this by :

 * Adding "gnu" in the suffix when glibc is used, so that in the
   previous case we will have mipsel-unknown-linux-gnu

 * Improving the ARM_EABI code to correctly append "eabi" when glibc
   is selected, so that we have arm-unknown-linux-gnueabi, and to
   append "gnueabi" when uclibc is selected, so that we have
   arm-unknown-linux-uclibcgnueabi. The little trick here is that LIBC
   and ABI aren't completely orthogonal on ARM.

This fixes problems such as :

checking host system type... Invalid configuration
`mipsel-unknown-linux-': machine `mipsel-unknown-linux' not recognized

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-29 16:04:38 +02:00
Thomas Petazzoni
ef2c11e51a Remove unused X11_PREFIX option
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-28 00:30:26 +02:00
Peter Korsgaard
e49e2feda4 Makefile: fix ldconfig selection for internal toolchains
Commit ed0d45fdd (Choose host/target ldconfig based on availability)
added a runtime check for a cross-ldconfig being available.
Unfortunately this checks runs too early (at package/Makefile.in parsing
time), so it always fails when using an internal toolchain as ldconfig
isn't built yet.

Fix it by moving the check to the only place it is used (target-finalize).

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-07-26 23:57:01 +02:00
Malte Starostik
ed0d45fdd4 Choose host/target ldconfig based on availability
Decide whether to use the host or target ldconfig based on an
availability check instead of internal/external toolchain selection.  An
external toolchain may very well provide an ldconfig while the host's
one may fail.
External toolchain generated by Gentoo crossdev:

$ LC_ALL=C i686-pc-linux-uclibc-ldconfig -r output/target/; echo $?
i686-pc-linux-uclibc-ldconfig: skipping /usr/lib: No such file or directory
0

vs. the host (x86_64-pc-linux-gnu) version:

$ LC_ALL=C /sbin/ldconfig -r output/target/; echo $?
/sbin/ldconfig: Can't open configuration file
output/target/etc/ld.so.conf: No such file or directory
/sbin/ldconfig: Can't open cache file /var/cache/ldconfig/aux-cache
: No such file or directory
1

Signed-off-by: Malte Starostik <m-starostik@versanet.de>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-07-18 22:46:06 +02:00
Thomas Petazzoni
e721a7c07e Merge TARGET_CONFIGURE_ENV into TARGET_CONFIGURE_OPTS
TARGET_CONFIGURE_ENV defines CFLAGS, LDFLAGS, CXXFLAGS and FCFLAGS,
separatly from all other variables that are part of
TARGET_CONFIGURE_OPTS. This is useless and not consistent with the
HOST_CONFIGURE_ variables, therefore we merge TARGET_CONFIGURE_ENV
into TARGET_CONFIGURE_OPTS and fix the few users of
TARGET_CONFIGURE_ENV.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-07 08:14:41 +02:00
Thomas Petazzoni
0ab16a01bb Remove $(TOOLCHAIN_DIR)/bin and $(STAGING_DIR)/{usr/bin,bin} from the PATH
These shouldn't be needed. Even when the cross-compiler is in
$(STAGING_DIR)/usr/bin, we anyway use an absolute path for TARGET_CC,
TARGET_LD and al.

Not having $(STAGING_DIR)/{usr/bin,bin} in the PATH will avoid having
Buildroot trying to run target binaries.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-07 08:14:41 +02:00
Thomas Petazzoni
359090e693 Remove *_FOR_TARGET variables from TARGET_CONFIGURE_OPTS
Those variables are not standard.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-07 08:14:40 +02:00
Thomas Petazzoni
efb1d8d3f4 Cleanup TARGET_CONFIGURE_OPTS
The definition of CC, LD, GCC, CPP, CXX and FC shouldn't contain the
CFLAGS/LDFLAGS/CXXFLAGS, those should be passed through the
appropriate variables.

However, the --sysroot option is a particular case here: it needs to
be part of the CC/LD/GCC/etc. definitions otherwise libtool strips it
from the CFLAGS/LDFLAGS.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-07 08:14:40 +02:00
Thomas Petazzoni
dc67c7f4dc Rework sysroot option handling
The external toolchain and internal toolchain cases both need to use
the --sysroot option, and they have almost identical
LDFLAGS/CFLAGS/CXXFLAGS definition, so we can factorize these
definitions.

Moreover, the --isysroot option is implied by --sysroot so there's no
need to specify both.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-07 08:14:40 +02:00
Thomas Petazzoni
b07030a708 Separate flags from commands in HOST_CONFIGURE_OPTS
Just as we did for LD/LDFLAGS, pass CFLAGS and CXXFLAGS in their own
variables.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-07 08:14:40 +02:00
Thomas Petazzoni
8e8103bfb5 Remove unneeded variables in HOST_CONFIGURE_OPTS
When building packages for the host, the *_FOR_BUILD and *_FOR_TARGET
variables are not needed.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-07 08:14:39 +02:00
Thomas Petazzoni
4fdecac9d6 Solve the host tools relying on host libraries problem
We build host tools installed in $(HOST_DIR)/usr/bin, and some of them
rely on host libraries in $(HOST_DIR)/usr/lib. So when these host
tools are executed, they need to find the host libraries, which are
not installed in a default location.

In c1b6242fdc we tried to use
LD_LIBRARY_PATH when building target packages to solve this
problem. Unfortunately, LD_LIBRARY_PATH is not only used to find
libraries at run-time, but also at compile time. So it leads the build
of some packages, such as icu, to fail.

Therefore, in 0d1830b07d, we reverted
the LD_LIBRARY_PATH idea.

The other option to solve this problem was to hardcode a RPATH value
in the host binaries that would reference the location of host
libraries. We added this -Wl,-rpath option to HOST_CFLAGS in
6b939d40f6. Unfortunately, this caused
problems when building binutils, as reported in bug 1789 so this
change was reverted in e1a7d916e9.

Then, we tried to use -Wl,-rpath in HOST_LDFLAGS, but it was causing
problems with fakeroot not recognizing 'ld' as the GNU linker, since
the -Wl,-rpath cannot be understood by 'ld' directly, only by 'gcc'.

This commit is a new attempt at using HOST_LDFLAGS, but in this case
we modified the definition of HOST_LD to *not* contain
HOST_LDFLAGS. LDFLAGS are being set separatly. It solved the fakeroot
issue and was tested against nearly 300 packages of Buildroot.

For more details on this story, see
 http://lists.busybox.net/pipermail/buildroot/2010-June/035580.html
 http://lists.busybox.net/pipermail/buildroot/2010-June/035581.html
 http://lists.busybox.net/pipermail/buildroot/2010-June/035586.html
 http://lists.busybox.net/pipermail/buildroot/2010-June/035609.html
 https://bugs.busybox.net/show_bug.cgi?id=1789

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-07 08:14:39 +02:00
Thomas Petazzoni
07d15f907b ext-toolchain: Fix ARCH_SYSROOT detection
For the detection of the ARCH_SYSROOT_DIR (which contains the C
library variant specific to the compiler flags), we used to pass only
the -march argument instead of the full TARGET_CFLAGS. This was done
because TARGET_CFLAGS contains --sysroot, and we don't want to tell
here the compiler which sysroot to use, because we're specifically
asking the compiler where the *normal* arch sysroot directory is.

Unfortunately, there are some multilib variants that aren't decided
only based on -march, but also on -msoft-float or other compiler
flags. Therefore, we take the opposite approach: pass the full
TARGET_CFLAGS, from which we have stripped the --sysroot option.

For example, this allows a PowerPC CodeSourcery toolchain, on which
we're using the soft-float multilib variant, to work properly as an
external toolchain.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-07-06 07:55:59 +02:00
Peter Korsgaard
5fd095b374 toolchain: remove gcc 4.1.2 and non-sysroot support
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-06-15 23:16:55 +02:00
Peter Korsgaard
e1a7d916e9 Revert "Add -rpath option for host package compilation"
Closes #1789

This reverts commit 6b939d40f6.

The problem this commit tries to fix is valid, but the fix unfortunately
seems to cause worse problems on certain distributions/setups, so revert
for now.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-05-30 10:42:17 +02:00
Peter Korsgaard
0d6068ae01 Merge branch 'misc-fixes2' of git://git.busybox.net/~tpetazzoni/git/buildroot 2010-05-08 00:09:11 +02:00
Thomas Petazzoni
5e1fbd2c33 Fix the computation of REAL_GNU_TARGET_NAME
When the selected C library is glibc, the C library shouldn't be
mentionned in REAL_GNU_TARGET_NAME. In other words:

 arm-unknown-linux-uclibcgnueabi must be used for uClibc
 arm-unknown-linux-gnueabi must be used for glibc

This fixes the build of GDB on the target, as reported by Quotient
Remainder <quotientvremainder@gmail.com>.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-05-06 23:08:37 +02:00
Thomas Petazzoni
2eb4b09529 Add staging libraries directories to -L in external case
In order to solve issues of libtool trying to link target components
against host libraries, it seems that specifying -L$(STAGING_DIR)/lib
and -L$(STAGING_DIR)/usr/lib works.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-05-06 20:18:41 +02:00
Thomas Petazzoni
6b939d40f6 Add -rpath option for host package compilation
In c1b6242fdc, we added
$(HOST_DIR)/usr/lib to LD_LIBRARY_PATH when building target packages,
because the build of target packages sometimes require host tools
installed in $(HOST_DIR)/usr/bin which themselves require host
libaries installed in $(HOST_DIR)/usr/lib.

Unfortunately, this solution didn't work, as libtool then tried to
link target binaries against host libraries. So $(HOST_DIR)/usr/lib
got removed from LD_LIBRARY_PATH in
0d1830b07d.

However, this meant that we went back to the previous situation, in
which host tools used during compilation of target components might
require host libraries. An example :

make[2]: Entering directory `/home/test/buildroot/output.ctng-arm-eglibc-2010-05-04-12-41-00/build/xfont_font-adobe-100dpi-1.0.1'
/home/test/buildroot/output.ctng-arm-eglibc-2010-05-04-12-41-00/host/usr/bin/mkfontdir /home/test/buildroot/output.ctng-arm-eglibc-2010-05-04-12-41-00/target/usr/share/fonts/X11/100dpi
/home/test/buildroot/output.ctng-arm-eglibc-2010-05-04-12-41-00/host/usr/bin/mkfontscale: error while loading shared libraries: libfontenc.so.1: cannot open shared object file: No such file or directory

Therefore, we try another solution: make sure that host binaries are
linked with an -rpath option, so that $(HOST_DIR)/usr/lib doesn't need
to be in LD_LIBRARY_PATH for them to find their libraries.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-05-06 20:17:38 +02:00
Lionel Landwerlin
0d1830b07d package: Add $(HOST_DIR)/usr/lib to LD_LIBRARY_PATH for host but not target
Some packages like icu requires to be compiled against the host system
first to be able to compile against the target. This is due to the
usage of self generated binaries by the package to build itself. When
the generated tools also depends on generated libraries it is required
to add the path to these libraries in the library path
(LD_LIBRARY_PATH) especially for the configure step.

Adding $(HOST_DIR)/usr/lib to LD_LIBRARY_PATH for target compilation
might break the link step by mixing host libraries and target
binaries.

Signed-off-by: Lionel Landwerlin <llandwerlin@gmail.com>
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-05-03 13:37:11 +02:00
Thomas Petazzoni
65e80a0b0b Remove BR2_GNU_TARGET_SUFFIX and compute GNU_TARGET_NAME
Instead of asking the user about the GNU target suffix, just compute
it automatically from the other configuration options.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-05-03 00:00:08 +02:00
Thomas Petazzoni
d70a3800b2 Get rid of the code computing ROOTFS_SUFFIX
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-05-03 00:00:07 +02:00
Thomas Petazzoni
bf75987424 Get rid of KERNEL_CROSS
In both internal and external toolchain cases, KERNEL_CROSS was
defined to *exactly* the same value as TARGET_CROSS. It isn't modified
anywhere, and is just used by kernel compilation and pcmcia
compilation.

Therefore, get rid of KERNEL_CROSS and use TARGET_CROSS instead.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-05-03 00:00:06 +02:00
Thomas Petazzoni
4c5bf461cd Commonalize the definition of TOOLCHAIN_DIR
The definition of TOOLCHAIN_DIR is the same regardless of whether
external or internal toolchains are used. Moreover, move its
definition together with all the other *_DIR definitions.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-05-03 00:00:05 +02:00
Thomas Petazzoni
7b7a4be0e1 external toolchains: take into account architecture variant
Until now, many TARGET_CFLAGS where missing when using an external
toolchain, due to how package/Makefile.in was written. Now, a lot more
definitions are common between the Buildroot toolchain case and the
external toolchain case.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-04-17 02:09:38 +02:00
Thomas Petazzoni
04ba0089a6 Get rid of the OPTIMIZE_FOR_CPU variable
This variable, together with the FIXME comment, has been added has
part of Eric Andersen's « Major buildroot facelift, step one » commit
that occured in October 2004.

Since then, no real usage has been made of OPTIMIZE_FOR_CPU, and the
initial intention has probably been lost in the memories of the
implementors.

Therefore, get rid of the variable, and just use $(ARCH) at the two
locations the variable was used.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-04-11 21:10:35 +02:00
Thomas Petazzoni
ce3bd8da2a Get rid of now unused HOST_ARCH computation code
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-04-11 21:10:34 +02:00
Thomas Petazzoni
60281cbfe4 Guess build system and remove BR2_GNU_BUILD_SUFFIX
Instead of having a configuration option BR2_GNU_BUILD_SUFFIX, let's
use config.guess to guess the build system type.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-04-11 21:10:33 +02:00
Thomas Petazzoni
325bfd1cba Remove IMAGE and related configuration options
Now, we just hardcode the image filenames to be rootfs.$(FSTYPE), in
the $(BINARIES_DIR).

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-04-09 11:04:35 +02:00
Yann E. MORIN
26b44b2b02 toolchain: prepare for more than two alternatives
Lay down the path to add more than two toolchain kinds:
- check the type of toolchain as:
    ifeq (toolchain_buildroot,y)
        blabla buildroot-specific
    else ifeq (toolchain_external,y)
        blabla external-specific
    endif

- prefer using positive checks, a-la:
    ifeq (foo,y)
  instead of:
    ifneq (bar,y)
  (where foo and bar are mutually exclusive)

- have the toolchain_buildroot case always appear first

- gettext is handled differently, because we want to add an option
  only if not using the buildroot toolchain, hence we use ifneq.

Signed-off-by: Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
Acked-By: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-03-31 10:53:12 +02:00
Thomas Petazzoni
405a7ecaa1 package infrastructure: add PERLLIB
Now that we build Perl modules in $(HOST_DIR), PERLLIB must be defined
to $(HOST_DIR)/usr/lib/perl.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-02-23 20:34:19 +01:00
Thomas Petazzoni
c1b6242fdc package infrastructure: add LD_LIBRARY_PATH
During the compilation of target or host packages, host tools might be
used, and in turn, they might use host libraries installed in
$(HOST_DIR)/usr/lib. Therefore, we pass a LD_LIBRARY_PATH variable
when building packages.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-02-23 20:33:26 +01:00