Commit Graph

39 Commits

Author SHA1 Message Date
Yann E. MORIN"
9d53aa6475 libc/glibc: add multilib-cacpable backend
For mutlilib, the C library must be built once for each variants.
Special care must be taken to put the resulting libraries in
the proper places.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-11-23 00:11:36 +01:00
Yann E. MORIN"
a5006075b7 libc/glibc: fix code formatting
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-11-22 00:51:37 +01:00
Yann E. MORIN"
cfb908d2ee libc/glib: pass installation subdir to backend
When building a multilib variant, install in a separate directory, to
avoid clutering the default or any other variant.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-11-22 00:16:37 +01:00
Yann E. MORIN"
170091aa2a libc/glibc: set the endian option according to extra CFLAGS
When building a multilib, some extra CFLAGS can override the
default config option. This is the case for the endianness
selection.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-11-22 00:11:51 +01:00
Yann E. MORIN"
a2e7a536e0 libc/glibc: set the float option according to extra CFLAGS
When building a multilib, some extra CFLAGS can override the
default config option. This is the case for the floating point
selection.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-11-21 23:56:53 +01:00
Yann E. MORIN"
2d5dc881e3 libc/glibc: add extra CFLAGS when building the C library
When building multilib, we need extra CFLAGS that tell the compiler
to use non-default settings (eg. big/little endian, hard/soft float,
-march/cpu/tune flags, and so on...).

We have to pass these flags to the build.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-11-21 23:33:08 +01:00
Yann E. MORIN"
d6f8cd9b0a libc/glibc: no default mode for backend
The caller SHALL explicitly ask for a nmode, and not rely on a default mode.
That's what actually happens, so we can get rid of the default.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-12-13 11:51:07 +01:00
Yann E. MORIN"
06daaa7cc4 libc/glibc: document the glibc backend arguments
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-11-21 23:35:21 +01:00
Yann E. MORIN"
7637254dfe libc/glibc: create build dir using libc_mode
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-11-21 23:26:18 +01:00
Yann E. MORIN"
74d555b2c3 scripts: add support for building manuals
Add support for building the HTML and PDF manuals for the major
components.  Implement for binutils, GCC, GDB, and GLIBC.

Always build all manuals and install a subset.  Be explicit about the
subset to reduce the clutter and to avoid getting copies of common
manuals like bfd from all of the sourceware based components.  Downside of
being explicit is that you need to update it when a new component
comes along.

Build the manuals as part of the last GCC build, namely 'cc' for glibc
based ones and cc_core_pass_2 for baremetal.

An example of the output is at:
 http://people.linaro.org/~michaelh/incoming/crosstool-NG/

Signed-off-by: Michael Hope <michael.hope@linaro.org>
[yann.morin.1998@anciens.enib.fr: depends on ! remove docs; gold manual install]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-11-16 10:06:21 +13:00
Yann E. MORIN"
4fc56b1d14 arch: add softfp support
Some architectures support a mixed hard/soft floating point, where
the compiler emits hardware floating point instructions, but passes
the operands in core (aka integer) registers.

For example, ARM supports this mode (to come in the next changeset).

Add support for softfp cross compilers to the GCC and GLIBC
configuration. Needed for Ubuntu and other distros that are softfp.

Signed-off-by: Michael Hope <michael.hope@linaro.org>
[yann.morin.1998@anciens.enib.fr: split the original patch]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-10-19 15:27:32 +13:00
Yann E. MORIN"
28e54116c3 scripts: introduce float type as a string
With the upcoming softfp support, the case..esac test would become
a bit convoluted if it were to test three different booleans.

Introduce a new blind string config option that defaults to the
selected floating point type used.

Signed-off-by: Michael Hope <michael.hope@linaro.org>
[yann.morin.1998@anciens.enib.fr: split the original patch]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-10-19 15:27:32 +13:00
Yann E. MORIN"
315b15109f libc/glibc: run ./configure in CONFIG_SHELL
Tremendously helps when running on at least Ubuntu, with dash as
the system shell (ie. /bin/sh points to dash).

Reported by a few people, of which:
  leming, ccct and ccole on IRC

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-10-11 22:21:48 +02:00
Yann E. MORIN"
85a85d3cc7 libc/glibc: add log messages for glibc addons dirs and symlinks
Signed-off-by: "Esben Haabendal" <esben.haabendal@prevas.dk>
[yann.morin.1998@anciens.enib.fr: fix linewrap-carnage]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-10-07 15:23:47 +02:00
Benoît THÉBAUDEAU"
5938837633 libc: remove unneeded glibc/eglibc common functions
do_libc_locales_extract() and do_libc_locales() in glibc-eglibc.sh-common have
been overridden for both glibc and eglibc, so they can now be removed, which
this patch does.

Signed-off-by: "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
2011-07-29 15:30:58 +02:00
Benoît THÉBAUDEAU"
d44205998b libc: create an infrastructure to build and install the libc locales
This patch adds a common glibc/eglibc infrastructure to build and install the
libc locales.

Signed-off-by: "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
2011-07-29 13:25:57 +02:00
Benoît THÉBAUDEAU"
2ea05ecaa7 scripts/libc: do not build add-ons by default
Currently, no --enable-add-ons option is passed to libc configure when
"$(do_libc_add_ons_list ,)" is empty, which makes configure automatically search
for present add-ons. In that case, all present add-ons are built, although
no add-on was selected by the user in the config. Moreover, this can make the
configure fail if some non-standard add-ons like eglibc-localedef are present.

This behavior also leads to an inconsistency from a user point of view between
the following cases:
 - LIBC_ADDONS_LIST="", LIBC_GLIBC_USE_PORTS=n and THREADS="none" in the config,
   which makes "$(do_libc_add_ons_list ,)" return "", so all present add-ons
   are built.
 - LIBC_ADDONS_LIST="", LIBC_GLIBC_USE_PORTS=n and THREADS!="none" in the
   config, which makes "$(do_libc_add_ons_list ,)" return the add-on supporting
   the chosen threading implementation, e.g. "nptl", so only this add-on is
   built.

This patch disables the building of all add-ons in that case.

It is still possible to build all present add-ons by adding --enable-add-ons to
LIBC_GLIBC_EXTRA_CONFIG_ARRAY.

Signed-off-by: "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
2011-07-28 22:09:31 +02:00
Yann E. MORIN"
96ab98a14b libc/glibc: fix passing args with spaces when calling backend
Spaces in arguments to the glibc backend were not handled.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-07-09 19:40:24 +02:00
Bryan Hundven
6940a6c0eb glibc: Refactor startfiles/headers into do_libc_backend()
Refactor the contents of 'do_libc_start_files()' and 'do_libc()' into a
parameterized 'do_libc_backend()'. 'do_libc_start_files()' and 'do_libc()'
call 'do_libc_backend()' with either 'libc_mode=startfiles' or
'libc_mode=final' (respectively) so that the startfiles/headers and
the final libc builds are configured and built with the same options.

One example of where this is needed is when building a mips toolchain.
Previously, if you were building an n32 toolchain, you wouldn't have
noticed an issue, because if '-mabi' is not in CFLAGS, n32 is the
default:

http://sourceware.org/git/?p=glibc-ports.git;a=blob;f=sysdeps/mips/preconfigure;hb=HEAD

But when trying to build an o32 or n64 toolchain the build would
have failed. This is because (e)glibc expects "-mabi={o32,n32,n64}" to be
in CFLAGS, but was not previously provided in 'do_libc_start_files()'.
The build failure would happen in the shared-core gcc when it tries to
configure an n64 or o32 gcc with an n32 libc.

A simpler solution would have been to just add TARGET_CFLAGS to configure
in 'do_libc_start_files()', but this way makes configure and make
consistent for both steps.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2011-06-26 03:26:54 -07:00
Benoît THÉBAUDEAU"
d147fbb201 kconfig: prepend CT-NG's version tag to PKGVERSION
"crosstool-NG-${CT_VERSION}" is currently the default for TOOLCHAIN_PKGVERSION,
and this options is passed as is to --with-pkgversion.

This patch prepends "crosstool-NG ${CT_VERSION}" to TOOLCHAIN_PKGVERSION before
passing it to --with-pkgversion.

Signed-off-by: "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
2011-06-03 17:21:56 +02:00
Yann E. MORIN"
93b0db91b4 glibc: properly handle internal addons
Some addons are bundled with glibc/eglibc, so we should not try to
download and extract them.

This is done as thus:
 - at download time:
   - if the add-on download fails, keep going;
 - at extract time:
   - if the addon is present in the source tree, ignore it;
   - if the addon is missing in the source tree:
     - if the archive is present, extract it;
     - if the archive is missing, bail out.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-05-30 23:05:28 +02:00
Benoît THÉBAUDEAU"
d558bb995d eglibc: use the PKGVERSION and BUGURL options
This patch makes eglibc benefit from the TOOLCHAIN_PKGVERSION and
TOOLCHAIN_BUGURL options.

Signed-off-by: "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
2011-05-31 20:55:30 +02:00
Yann E. MORIN"
8f32ebcc88 libc/glibc: commonalise extraction btw glibc and eglibc
glibc and eglibc have a very similar extraction process, so it
makes sense to commonalise it.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-05-29 19:24:41 +02:00
Yann E. MORIN"
c4bb88466e config: rename variables that are arrays
Make it explicit that a variable is an array bu the name of the variable.
It will be used later when .config gets munged to allow both multiple
arguments and arguments with spaces at the same time to be passed from the
configuration down to the build scripts.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-05-18 23:00:46 +02:00
Yann E. MORIN"
b00e501d7c scripts: interpret *_EXTRA_CONFIG config variables arrays
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-05-15 18:51:40 +02:00
Yann E. MORIN"
f033ade4f8 libc/glibc-common: log even more
Also log variable assignement for single commands.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-03-20 01:15:34 +01:00
Yann E. MORIN"
ae126c295b libc/glibc: fix dubious construct when installing headers
This is dubious because if the copy fails, then we'll miss the error.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-02-21 19:27:28 +01:00
Yann E. MORIN"
43e89c8ddd libc/glibc: only install start files for NPTL
Building the start files requires a shared-capable compiler, which we do
not have when the threading implementation is LinuxThreads.

So, only build the start files when the threading implementations is NPTL.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-02-21 19:20:19 +01:00
Yann E. MORIN"
b93e67f07c libc/glibc: add fortify option
By default, recent versions of glibc and eglibc will build some
functions that take format strings (eg. printf, syslog...) with
run-time checks against some format string attacks. This is
called a fortified build.

Unfortunately, this fails somehow while building the instrumented
version of syslog, with some kind of circular dependency...

Disable fortified builds by default, and hide the enabling option
behind EXPERIMENTAL for daring users...

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-02-21 23:39:46 +01:00
Yann E. MORIN"
1838bb1f15 libc/glibc: add option to force unwind
We make it an option, as not all combinations of architectures
vs. compiler vs. glibc/eglibc exhibit the issue. Mostly visible
on old glibc versions, it seems...

This is a missing part from the glibc/eglibc merger... :-/

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-31 19:52:18 +01:00
Yann E. MORIN"
94be1f470c config: add an option to name the sysroot directory
Depending on local policies, some users have expressed a need to
have the sysroot be named differently than the hard-coded name.

Add an option for that.
Default to 'sysroot' to match the existing literature.

While at it, replace 'sys-root' with 'sysroot' everywhere we
reference the sysroot.

Reported-by: Alexey Kuznetsov <Alexey.KUZNETSOV@youtransactor.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-25 20:31:16 +01:00
Yann E. MORIN"
15a1cc2491 libc: remove now unneeded do_libc_headers
do_libc_headers is now a noop, and is no longer used, so remove that step.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-22 22:36:20 +01:00
Yann E. MORIN"
0b773f5823 libc/glibc-eglibc: misc janitorial cleanups.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-20 00:27:36 +01:00
Yann E. MORIN"
129bf2fa66 libc/glibc: add glibc specifics to the shared code, and use it
Final step at sharing code between glibc and eglibc.
Fall, wall of shame, fall!... :-)

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-22 22:35:58 +01:00
Yann E. MORIN"
b343b0216b libc/glibc: commonalise assembling the list of addons
glibc and eglibc each have two very similar ways of building this list.
This can, and should definitetly, be shared.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-22 22:35:18 +01:00
Yann E. MORIN"
a150a97e44 libc/glibc: commonalise setting of the minimum supported kernel version
It will be possible to use that also with eglibc, so this hunk belongs to
the common code.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-22 22:35:02 +01:00
Yann E. MORIN"
b560936e09 libc/glibc: use the common start_files procedure
Use the common procedure, shared between glibc and eglibc. This requires
that glibc-specific bits be included in the shared procedure.

But still build the full libc with the glibc-specific procedure. This will
be commonalised in a future commit.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-22 22:37:25 +01:00
Yann E. MORIN"
b43ff236bb libc/eglibc: cleanup common code for sharing with glibc
Some stuff is eglibc-specific, so needs to be conditonal.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-17 23:04:57 +01:00
Yann E. MORIN"
cc0894e731 libc/eglibc: move generic code to a common file
The build procedure for eglibc is generic enough to
be shared between glibc and eglibc. This includes:
 - headers install (empty!)
 - start files build
 - complete libc build
 - libc finish (empty!)
 - add-ons list

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-17 23:04:37 +01:00