2002-04-26 13:45:55 +02:00
#############################################################
#
# uClibc (the C library)
#
#############################################################
2004-09-03 02:49:43 +02:00
2009-12-14 12:10:12 +01:00
i f e q ( $( BR 2_TOOLCHAIN_BUILDROOT ) , y )
2005-02-15 23:48:08 +01:00
2007-05-12 20:39:28 +02:00
# specifying UCLIBC_CONFIG_FILE on the command-line overrides the .config
# setting.
i f n d e f U C L I B C _ C O N F I G _ F I L E
2009-07-30 17:35:26 +02:00
UCLIBC_CONFIG_FILE = $( call qstrip,$( BR2_UCLIBC_CONFIG) )
2007-05-12 20:39:28 +02:00
e n d i f
2009-12-14 12:09:17 +01:00
UCLIBC_VERSION := $( call qstrip,$( BR2_UCLIBC_VERSION_STRING) )
2009-03-03 21:23:10 +01:00
2004-10-09 03:06:03 +02:00
i f e q ( $( BR 2_UCLIBC_VERSION_SNAPSHOT ) , y )
2003-02-12 10:26:13 +01:00
UCLIBC_SITE := http://www.uclibc.org/downloads/snapshots
2010-07-28 09:11:37 +02:00
UCLIBC_DIR := $( TOOLCHAIN_DIR) /uClibc
2009-12-14 11:47:55 +01:00
e l s e
2003-02-12 14:57:46 +01:00
UCLIBC_SITE := http://www.uclibc.org/downloads
2010-07-28 09:11:37 +02:00
UCLIBC_DIR := $( TOOLCHAIN_DIR) /uClibc-$( UCLIBC_VERSION)
2009-03-03 21:23:10 +01:00
e n d i f
2007-07-31 16:59:58 +02:00
UCLIBC_PATCH_DIR := toolchain/uClibc/
2009-12-14 12:09:17 +01:00
UCLIBC_SOURCE := uClibc-$( UCLIBC_VERSION) .tar.bz2
2007-01-28 13:11:37 +01:00
2006-11-17 16:43:51 +01:00
UCLIBC_CAT := $( BZCAT)
2002-04-26 13:45:55 +02:00
2007-08-12 14:37:51 +02:00
UCLIBC_TARGET_ARCH := $( shell $( SHELL) -c " echo $( ARCH) | sed \
-e 's/-.*//' \
2004-09-09 12:50:57 +02:00
-e 's/i.86/i386/' \
2003-11-05 02:10:48 +01:00
-e 's/sparc.*/sparc/' \
-e 's/arm.*/arm/g' \
-e 's/m68k.*/m68k/' \
-e 's/ppc/powerpc/g' \
-e 's/v850.*/v850/g' \
2004-12-11 10:56:58 +01:00
-e 's/sh[234].*/sh/' \
2003-11-05 02:10:48 +01:00
-e 's/mips.*/mips/' \
-e 's/cris.*/cris/' \
2007-02-02 14:50:23 +01:00
" )
2007-06-20 13:26:36 +02:00
2012-09-04 06:09:53 +02:00
UCLIBC_TARGET_ENDIAN := $( call qstrip,$( BR2_ENDIAN) )
2005-12-08 00:14:34 +01:00
i f e q ( $( UCLIBC_TARGET_ENDIAN ) , L I T T L E )
UCLIBC_NOT_TARGET_ENDIAN := BIG
e l s e
UCLIBC_NOT_TARGET_ENDIAN := LITTLE
e n d i f
2003-11-05 02:10:48 +01:00
2012-09-04 05:49:43 +02:00
UCLIBC_ARM_TYPE := CONFIG_$( call qstrip,$( BR2_UCLIBC_ARM_TYPE) )
2012-09-04 05:49:44 +02:00
UCLIBC_SPARC_TYPE := CONFIG_SPARC_$( call qstrip,$( BR2_UCLIBC_SPARC_TYPE) )
2007-08-14 09:07:13 +02:00
Add support to generate locale data
In order to use locale support on a Linux system, you need locale data
to be present:
* on a (e)glibc based system, this data is typically in the
/usr/lib/locale/locale-archive file, which can be created and
extended using the localedef program
* on an uClibc based system, the set of supported locales is defined
at build time by an uClibc configuration option.
This patch implements generating locale data for the following cases:
* Internal toolchain
* External toolchain based on (e)glibc. uClibc external toolchains
are not supported, because with uClibc, the set of supported
locales is defined at build time. CodeSourcery and Linaro
toolchains have been tested, Crosstool-NG toolchains are believed
to work properly as well.
* Toolchains built using the Crosstool-NG backend, but only (e)glibc
toolchains.
This feature was runtime tested with internal uClibc toolchain,
CodeSourcery ARM toolchain and Linaro ARM toolchain, thanks to a
simple C program that shows the data and a gettext translated message.
Note that this option differs from the "purge locales" option, which
is responsible for removing translation files and other locale stuff
installed by packages. At some point in the future, we may want to
clarify the respective roles of those options.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-05-08 06:39:22 +02:00
i f e q ( $( GENERATE_LOCALE ) , )
# We need at least one locale
UCLIBC_LOCALES = en_US
e l s e
# Strip out the encoding part of locale names, if any
UCLIBC_LOCALES = $( foreach locale,$( GENERATE_LOCALE) ,\
$( firstword $( subst .,$( space) ,$( locale) ) ) )
e n d i f
2002-04-26 13:45:55 +02:00
$(DL_DIR)/$(UCLIBC_SOURCE) :
2012-03-16 14:42:53 +01:00
$( call DOWNLOAD,$( UCLIBC_SITE) /$( UCLIBC_SOURCE) )
2006-12-15 15:40:55 +01:00
2008-07-04 10:39:35 +02:00
uclibc-unpacked : $( UCLIBC_DIR ) /.unpacked
2010-04-10 23:37:18 +02:00
$(UCLIBC_DIR)/.unpacked : $( DL_DIR ) /$( UCLIBC_SOURCE )
2009-09-23 01:30:00 +02:00
mkdir -p $( TOOLCHAIN_DIR)
2007-06-20 13:26:36 +02:00
rm -rf $( UCLIBC_DIR)
2009-09-23 01:30:00 +02:00
$( UCLIBC_CAT) $( DL_DIR) /$( UCLIBC_SOURCE) | tar -C $( TOOLCHAIN_DIR) $( TAR_OPTIONS) -
2008-07-04 10:39:35 +02:00
touch $@
uclibc-patched : $( UCLIBC_DIR ) /.patched
$(UCLIBC_DIR)/.patched : $( UCLIBC_DIR ) /.unpacked
2007-05-10 04:37:44 +02:00
i f n e q ( $( BR 2_UCLIBC_VERSION_SNAPSHOT ) , y )
2011-08-31 23:35:04 +02:00
support/scripts/apply-patches.sh $( UCLIBC_DIR) $( UCLIBC_PATCH_DIR) \
2009-12-14 12:09:17 +01:00
uClibc-$( UCLIBC_VERSION) -\* .patch \
uClibc-$( UCLIBC_VERSION) -\* .patch.$( ARCH)
2007-06-13 20:13:51 +02:00
e l s e
2011-08-31 23:35:04 +02:00
support/scripts/apply-patches.sh $( UCLIBC_DIR) $( UCLIBC_PATCH_DIR) \
2008-04-24 11:03:12 +02:00
uClibc.\* .patch uClibc.\* .patch.$( ARCH)
2006-12-15 14:39:26 +01:00
e n d i f
2007-06-20 13:26:36 +02:00
touch $@
2002-04-26 13:45:55 +02:00
2008-07-04 10:39:35 +02:00
2006-12-13 12:51:42 +01:00
# Some targets may wish to provide their own UCLIBC_CONFIG_FILE...
2008-07-04 10:39:35 +02:00
$(UCLIBC_DIR)/.oldconfig : $( UCLIBC_DIR ) /.patched $( UCLIBC_CONFIG_FILE )
2007-08-14 09:07:13 +02:00
cp -f $( UCLIBC_CONFIG_FILE) $( UCLIBC_DIR) /.oldconfig
2005-12-08 00:14:34 +01:00
$( SED) 's,^CROSS_COMPILER_PREFIX=.*,CROSS_COMPILER_PREFIX="$(TARGET_CROSS)",g' \
-e 's,# TARGET_$(UCLIBC_TARGET_ARCH) is not set,TARGET_$(UCLIBC_TARGET_ARCH)=y,g' \
2007-09-29 21:17:39 +02:00
-e 's,^TARGET_ARCH=".*",TARGET_ARCH=\"$(UCLIBC_TARGET_ARCH)\",g' \
2005-12-08 00:14:34 +01:00
-e 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE=\"$(LINUX_HEADERS_DIR)\",g' \
2006-12-12 08:10:54 +01:00
-e 's,^KERNEL_HEADERS=.*,KERNEL_HEADERS=\"$(LINUX_HEADERS_DIR)/include\",g' \
2005-12-08 00:14:34 +01:00
-e 's,^RUNTIME_PREFIX=.*,RUNTIME_PREFIX=\"/\",g' \
-e 's,^DEVEL_PREFIX=.*,DEVEL_PREFIX=\"/usr/\",g' \
-e 's,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX=\"/lib\",g' \
2007-08-14 09:07:13 +02:00
$( UCLIBC_DIR) /.oldconfig
2006-02-09 20:13:57 +01:00
i f e q ( $( UCLIBC_TARGET_ARCH ) , a r m )
2008-04-17 15:25:47 +02:00
( /bin/echo "# CONFIG_GENERIC_ARM is not set" ; \
/bin/echo "# CONFIG_ARM610 is not set" ; \
/bin/echo "# CONFIG_ARM710 is not set" ; \
/bin/echo "# CONFIG_ARM7TDMI is not set" ; \
/bin/echo "# CONFIG_ARM720T is not set" ; \
/bin/echo "# CONFIG_ARM920T is not set" ; \
/bin/echo "# CONFIG_ARM922T is not set" ; \
/bin/echo "# CONFIG_ARM926T is not set" ; \
/bin/echo "# CONFIG_ARM10T is not set" ; \
/bin/echo "# CONFIG_ARM1136JF_S is not set" ; \
/bin/echo "# CONFIG_ARM1176JZ_S is not set" ; \
/bin/echo "# CONFIG_ARM1176JZF_S is not set" ; \
/bin/echo "# CONFIG_ARM_SA110 is not set" ; \
/bin/echo "# CONFIG_ARM_SA1100 is not set" ; \
/bin/echo "# CONFIG_ARM_XSCALE is not set" ; \
/bin/echo "# CONFIG_ARM_IWMMXT is not set" ; \
) >> $( UCLIBC_DIR) /.oldconfig
2007-01-30 18:45:30 +01:00
$( SED) 's/^\(CONFIG_[^_]*[_]*ARM[^=]*\)=.*/# \1 is not set/g' \
2007-08-14 09:07:13 +02:00
$( UCLIBC_DIR) /.oldconfig
2007-09-16 00:04:49 +02:00
$( SED) 's/^.*$(UCLIBC_ARM_TYPE).*/$(UCLIBC_ARM_TYPE)=y/g' $( UCLIBC_DIR) /.oldconfig
2007-09-27 23:51:21 +02:00
$( SED) '/CONFIG_ARM_.ABI/d' $( UCLIBC_DIR) /.oldconfig
2007-09-29 23:22:23 +02:00
i f e q ( $( BR 2_ARM_EABI ) , y )
2007-08-14 09:07:13 +02:00
/bin/echo "# CONFIG_ARM_OABI is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "CONFIG_ARM_EABI=y" >> $( UCLIBC_DIR) /.oldconfig
2007-01-16 10:35:11 +01:00
e n d i f
2007-09-29 23:22:23 +02:00
i f e q ( $( BR 2_ARM_OABI ) , y )
2007-08-14 09:07:13 +02:00
/bin/echo "CONFIG_ARM_OABI=y" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_ARM_EABI is not set" >> $( UCLIBC_DIR) /.oldconfig
2007-08-12 14:37:51 +02:00
e n d i f
2006-01-19 14:29:23 +01:00
e n d i f
2007-09-29 21:17:39 +02:00
i f e q ( $( UCLIBC_TARGET_ARCH ) , m i p s )
$( SED) '/CONFIG_MIPS_[NO].._ABI/d' $( UCLIBC_DIR) /.oldconfig
2007-09-30 14:42:59 +02:00
$( SED) '/CONFIG_MIPS_ISA_.*/d' $( UCLIBC_DIR) /.oldconfig
2007-09-29 21:17:39 +02:00
( /bin/echo "# CONFIG_MIPS_O32_ABI is not set" ; \
/bin/echo "# CONFIG_MIPS_N32_ABI is not set" ; \
/bin/echo "# CONFIG_MIPS_N64_ABI is not set" ; \
2007-09-30 14:42:59 +02:00
/bin/echo "# CONFIG_MIPS_ISA_1 is not set" ; \
/bin/echo "# CONFIG_MIPS_ISA_2 is not set" ; \
/bin/echo "# CONFIG_MIPS_ISA_3 is not set" ; \
/bin/echo "# CONFIG_MIPS_ISA_4 is not set" ; \
/bin/echo "# CONFIG_MIPS_ISA_MIPS32 is not set" ; \
2009-01-12 15:11:40 +01:00
/bin/echo "# CONFIG_MIPS_ISA_MIPS32R2 is not set" ; \
2007-09-30 14:42:59 +02:00
/bin/echo "# CONFIG_MIPS_ISA_MIPS64 is not set" ; \
2007-09-29 21:17:39 +02:00
) >> $( UCLIBC_DIR) /.oldconfig
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 06:09:54 +02:00
i f e q ( $( BR 2_MIPS_OABI 32) , y )
2007-09-29 21:17:39 +02:00
$( SED) 's/.*\(CONFIG_MIPS_O32_ABI\).*/\1=y/' $( UCLIBC_DIR) /.oldconfig
e n d i f
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 06:09:54 +02:00
i f e q ( $( BR 2_MIPS_NABI 32) , y )
2007-09-29 21:17:39 +02:00
$( SED) 's/.*\(CONFIG_MIPS_N32_ABI\).*/\1=y/' $( UCLIBC_DIR) /.oldconfig
e n d i f
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 06:09:54 +02:00
i f e q ( $( BR 2_MIPS_NABI 64) , y )
2007-09-29 21:17:39 +02:00
$( SED) 's/.*\(CONFIG_MIPS_N64_ABI\).*/\1=y/' $( UCLIBC_DIR) /.oldconfig
e n d i f
2007-09-30 14:42:59 +02:00
i f e q ( $( BR 2_mips_ 1) , y )
$( SED) 's/.*\(CONFIG_MIPS_ISA_1\).*/\1=y/' $( UCLIBC_DIR) /.oldconfig
e n d i f
i f e q ( $( BR 2_mips_ 2) , y )
$( SED) 's/.*\(CONFIG_MIPS_ISA_2\).*/\1=y/' $( UCLIBC_DIR) /.oldconfig
e n d i f
i f e q ( $( BR 2_mips_ 3) , y )
$( SED) 's/.*\(CONFIG_MIPS_ISA_3\).*/\1=y/' $( UCLIBC_DIR) /.oldconfig
e n d i f
i f e q ( $( BR 2_mips_ 4) , y )
$( SED) 's/.*\(CONFIG_MIPS_ISA_4\).*/\1=y/' $( UCLIBC_DIR) /.oldconfig
e n d i f
i f e q ( $( BR 2_mips_ 32) , y )
2009-01-12 15:11:40 +01:00
$( SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32\)[^R].*/\1=y/' $( UCLIBC_DIR) /.oldconfig
2007-09-30 14:42:59 +02:00
e n d i f
i f e q ( $( BR 2_mips_ 32r 2) , y )
2009-01-12 15:11:40 +01:00
$( SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32R2\).*/\1=y/' $( UCLIBC_DIR) /.oldconfig
2007-09-30 14:42:59 +02:00
e n d i f
i f e q ( $( BR 2_mips_ 64) , y )
$( SED) 's/.*\(CONFIG_MIPS_ISA_MIPS64\).*/\1=y/' $( UCLIBC_DIR) /.oldconfig
e n d i f
2007-09-29 21:17:39 +02:00
e n d i f
2007-08-26 22:55:02 +02:00
i f e q ( $( UCLIBC_TARGET_ARCH ) , s h )
/bin/echo "# CONFIG_SH2A is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_SH2 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_SH3 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_SH4 is not set" >> $( UCLIBC_DIR) /.oldconfig
2011-05-09 15:12:53 +02:00
i f e q ( $( BR 2_sh 2a ) , y )
2007-08-26 22:55:02 +02:00
$( SED) 's,# CONFIG_SH2A is not set,CONFIG_SH2A=y,g' $( UCLIBC_DIR) /.oldconfig
/bin/echo "# UCLIBC_FORMAT_FDPIC_ELF is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# UCLIBC_FORMAT_FLAT is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# UCLIBC_FORMAT_FLAT_SEP_DATA is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# UCLIBC_FORMAT_SHARED_FLAT is not set" >> $( UCLIBC_DIR) /.oldconfig
e n d i f
2011-05-09 15:12:53 +02:00
i f e q ( $( BR 2_sh 2) , y )
2007-08-26 22:55:02 +02:00
$( SED) 's,# CONFIG_SH2 is not set,CONFIG_SH2=y,g' $( UCLIBC_DIR) /.oldconfig
/bin/echo "# UCLIBC_FORMAT_FDPIC_ELF is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# UCLIBC_FORMAT_FLAT is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# UCLIBC_FORMAT_FLAT_SEP_DATA is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# UCLIBC_FORMAT_SHARED_FLAT is not set" >> $( UCLIBC_DIR) /.oldconfig
e n d i f
i f e q ( $( BR 2_sh 3eb ) , y )
$( SED) 's,# CONFIG_SH3 is not set,CONFIG_SH3=y,g' $( UCLIBC_DIR) /.oldconfig
e n d i f
i f e q ( $( BR 2_sh 3) , y )
$( SED) 's,# CONFIG_SH3 is not set,CONFIG_SH3=y,g' $( UCLIBC_DIR) /.oldconfig
e n d i f
i f e q ( $( BR 2_sh 4eb ) , y )
$( SED) 's,# CONFIG_SH4 is not set,CONFIG_SH4=y,g' $( UCLIBC_DIR) /.oldconfig
e n d i f
i f e q ( $( BR 2_sh 4) , y )
$( SED) 's,# CONFIG_SH4 is not set,CONFIG_SH4=y,g' $( UCLIBC_DIR) /.oldconfig
e n d i f
e n d i f
2007-09-16 00:04:49 +02:00
i f e q ( $( UCLIBC_TARGET_ARCH ) , s p a r c )
$( SED) 's/^\(CONFIG_[^_]*[_]*SPARC[^=]*\)=.*/# \1 is not set/g' \
$( UCLIBC_DIR) /.oldconfig
for i in V7 V8 V9 V9B; do echo " # CONFIG_SPARC_ $$ i is not set " ; done \
>> $( UCLIBC_DIR) /.oldconfig
2009-01-12 16:01:28 +01:00
$( SED) 's/^.*$(UCLIBC_SPARC_TYPE)[^B].*/$(UCLIBC_SPARC_TYPE)=y/g' $( UCLIBC_DIR) /.oldconfig
2007-09-16 00:04:49 +02:00
e n d i f
2008-05-31 09:27:58 +02:00
i f e q ( $( UCLIBC_TARGET_ARCH ) , p o w e r p c )
2012-01-05 20:31:43 +01:00
i f e q ( $( BR 2_powerpc_ 8540) $( BR 2_powerpc_ 8548) $( BR 2_powerpc_e 500mc ) , y )
2008-05-31 09:27:58 +02:00
/bin/echo "# CONFIG_CLASSIC is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "CONFIG_E500=y" >> $( UCLIBC_DIR) /.oldconfig
e l s e
/bin/echo "CONFIG_CLASSIC=y" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_E500 is not set" >> $( UCLIBC_DIR) /.oldconfig
e n d i f
e n d i f
2009-12-14 11:47:55 +01:00
i f e q ( $( UCLIBC_TARGET_ARCH ) , a v r 3 2 )
/bin/echo "LINKRELAX=y" >> $( UCLIBC_DIR) /.oldconfig
e n d i f
2007-02-02 14:50:23 +01:00
i f n e q ( $( UCLIBC_TARGET_ENDIAN ) , )
# The above doesn't work for me, so redo
$( SED) 's/.*\(ARCH_$(UCLIBC_NOT_TARGET_ENDIAN)_ENDIAN\).*/# \1 is not set/g' \
-e 's/.*\(ARCH_WANTS_$(UCLIBC_NOT_TARGET_ENDIAN)_ENDIAN\).*/# \1 is not set/g' \
-e 's/.*\(ARCH_$(UCLIBC_TARGET_ENDIAN)_ENDIAN\).*/\1=y/g' \
-e 's/.*\(ARCH_WANTS_$(UCLIBC_TARGET_ENDIAN)_ENDIAN\).*/\1=y/g' \
2007-08-14 09:07:13 +02:00
$( UCLIBC_DIR) /.oldconfig
2007-02-02 14:50:23 +01:00
e n d i f
2004-10-09 03:06:03 +02:00
i f e q ( $( BR 2_LARGEFILE ) , y )
2007-08-14 09:07:13 +02:00
$( SED) 's,.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=y,g' $( UCLIBC_DIR) /.oldconfig
2003-11-17 02:31:38 +01:00
e l s e
2007-08-14 09:07:13 +02:00
$( SED) 's,.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=n,g' $( UCLIBC_DIR) /.oldconfig
$( SED) '/.*UCLIBC_HAS_FOPEN_LARGEFILE_MODE.*/d' $( UCLIBC_DIR) /.oldconfig
echo "# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set" >> $( UCLIBC_DIR) /.oldconfig
2003-11-17 02:31:38 +01:00
e n d i f
2007-06-26 18:34:45 +02:00
i f e q ( $( BR 2_INET_IPV 6) , y )
2007-08-14 09:07:13 +02:00
$( SED) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=y,g' $( UCLIBC_DIR) /.oldconfig
2007-07-29 19:47:27 +02:00
e l s e
2007-08-14 09:07:13 +02:00
$( SED) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=n,g' $( UCLIBC_DIR) /.oldconfig
2007-07-29 19:47:27 +02:00
e n d i f
2007-06-26 18:34:45 +02:00
i f e q ( $( BR 2_INET_RPC ) , y )
2007-06-26 18:58:11 +02:00
$( SED) 's,^.*UCLIBC_HAS_RPC.*,UCLIBC_HAS_RPC=y,g' \
-e 's,^.*UCLIBC_HAS_FULL_RPC.*,UCLIBC_HAS_FULL_RPC=y,g' \
-e 's,^.*UCLIBC_HAS_REENTRANT_RPC.*,UCLIBC_HAS_REENTRANT_RPC=y,g' \
2007-08-14 09:07:13 +02:00
$( UCLIBC_DIR) /.oldconfig
2007-06-26 18:34:45 +02:00
e l s e
2007-06-26 18:58:11 +02:00
$( SED) 's,^.*UCLIBC_HAS_RPC.*,UCLIBC_HAS_RPC=n,g' \
-e 's,^.*UCLIBC_HAS_FULL_RPC.*,UCLIBC_HAS_FULL_RPC=n,g' \
-e 's,^.*UCLIBC_HAS_REENTRANT_RPC.*,UCLIBC_HAS_REENTRANT_RPC=n,g' \
2007-08-14 09:07:13 +02:00
$( UCLIBC_DIR) /.oldconfig
2007-06-26 18:34:45 +02:00
e n d i f
2004-10-10 03:12:46 +02:00
i f e q ( $( BR 2_SOFT_FLOAT ) , y )
2007-01-28 13:11:37 +01:00
$( SED) 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=n,g' \
2007-02-20 12:06:00 +01:00
-e 's,^[^_]*HAS_FPU.*,HAS_FPU=n,g' \
2007-01-28 13:11:37 +01:00
-e 's,.*UCLIBC_HAS_FLOATS.*,UCLIBC_HAS_FLOATS=y,g' \
-e 's,.*DO_C99_MATH.*,DO_C99_MATH=y,g' \
2007-08-14 09:07:13 +02:00
$( UCLIBC_DIR) /.oldconfig
#$(SED) 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=n\nHAS_FPU=n\nUCLIBC_HAS_FLOATS=y\nUCLIBC_HAS_SOFT_FLOAT=y,g' $(UCLIBC_DIR)/.oldconfig
2006-09-25 16:28:54 +02:00
e l s e
2007-06-20 13:26:36 +02:00
$( SED) '/UCLIBC_HAS_FLOATS/d' \
-e 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=y\nHAS_FPU=y\nUCLIBC_HAS_FLOATS=y\n,g' \
2007-08-14 09:07:13 +02:00
$( UCLIBC_DIR) /.oldconfig
2009-04-22 09:27:22 +02:00
e n d i f
2010-12-13 17:27:42 +01:00
i f e q ( $( BR 2_TOOLCHAIN_BUILDROOT_USE_SSP ) , y )
2009-04-22 09:27:22 +02:00
$( SED) 's,^.*UCLIBC_HAS_SSP[^_].*,UCLIBC_HAS_SSP=y,g' $( UCLIBC_DIR) /.oldconfig
e l s e
$( SED) 's,^.*UCLIBC_HAS_SSP[^_].*,UCLIBC_HAS_SSP=n,g' $( UCLIBC_DIR) /.oldconfig
2005-07-30 01:28:31 +02:00
e n d i f
2007-08-14 09:07:13 +02:00
$( SED) '/UCLIBC_HAS_THREADS/d' $( UCLIBC_DIR) /.oldconfig
$( SED) '/LINUXTHREADS/d' $( UCLIBC_DIR) /.oldconfig
$( SED) '/LINUXTHREADS_OLD/d' $( UCLIBC_DIR) /.oldconfig
$( SED) '/PTHREADS_DEBUG_SUPPORT/d' $( UCLIBC_DIR) /.oldconfig
$( SED) '/UCLIBC_HAS_THREADS_NATIVE/d' $( UCLIBC_DIR) /.oldconfig
2007-02-09 18:53:55 +01:00
i f e q ( $( BR 2_PTHREADS_NONE ) , y )
2007-08-14 09:07:13 +02:00
echo "# UCLIBC_HAS_THREADS is not set" >> $( UCLIBC_DIR) /.oldconfig
2007-02-09 18:53:55 +01:00
e l s e
2007-08-14 09:07:13 +02:00
echo "UCLIBC_HAS_THREADS=y" >> $( UCLIBC_DIR) /.oldconfig
2005-12-08 00:14:34 +01:00
e n d i f
i f e q ( $( BR 2_PTHREADS ) , y )
2007-08-14 09:07:13 +02:00
echo "LINUXTHREADS=y" >> $( UCLIBC_DIR) /.oldconfig
2010-04-05 10:47:54 +02:00
echo "LINUXTHREADS_NEW=y" >> $( UCLIBC_DIR) /.oldconfig
2007-02-09 18:53:55 +01:00
e l s e
2007-08-14 09:07:13 +02:00
echo "# LINUXTHREADS is not set" >> $( UCLIBC_DIR) /.oldconfig
2010-04-05 10:47:54 +02:00
echo "# LINUXTHREADS_NEW is not set" >> $( UCLIBC_DIR) /.oldconfig
2005-12-08 00:14:34 +01:00
e n d i f
i f e q ( $( BR 2_PTHREADS_OLD ) , y )
2007-08-14 09:07:13 +02:00
echo "LINUXTHREADS_OLD=y" >> $( UCLIBC_DIR) /.oldconfig
2007-02-09 18:53:55 +01:00
e l s e
2007-08-14 09:07:13 +02:00
echo "# LINUXTHREADS_OLD is not set" >> $( UCLIBC_DIR) /.oldconfig
2005-12-08 00:14:34 +01:00
e n d i f
2005-07-30 01:28:31 +02:00
i f e q ( $( BR 2_PTHREADS_NATIVE ) , y )
2007-08-14 09:07:13 +02:00
echo "UCLIBC_HAS_THREADS_NATIVE=y" >> $( UCLIBC_DIR) /.oldconfig
2007-02-09 18:53:55 +01:00
e l s e
2007-08-14 09:07:13 +02:00
echo "# UCLIBC_HAS_THREADS_NATIVE is not set" >> $( UCLIBC_DIR) /.oldconfig
2007-02-09 18:53:55 +01:00
e n d i f
i f e q ( $( BR 2_PTHREAD_DEBUG ) , y )
2007-08-14 09:07:13 +02:00
echo "PTHREADS_DEBUG_SUPPORT=y" >> $( UCLIBC_DIR) /.oldconfig
2007-02-09 18:53:55 +01:00
e l s e
2007-08-14 09:07:13 +02:00
echo "# PTHREADS_DEBUG_SUPPORT is not set" >> $( UCLIBC_DIR) /.oldconfig
2006-10-17 18:57:02 +02:00
e n d i f
i f e q ( $( BR 2_ENABLE_LOCALE ) , y )
Add support to generate locale data
In order to use locale support on a Linux system, you need locale data
to be present:
* on a (e)glibc based system, this data is typically in the
/usr/lib/locale/locale-archive file, which can be created and
extended using the localedef program
* on an uClibc based system, the set of supported locales is defined
at build time by an uClibc configuration option.
This patch implements generating locale data for the following cases:
* Internal toolchain
* External toolchain based on (e)glibc. uClibc external toolchains
are not supported, because with uClibc, the set of supported
locales is defined at build time. CodeSourcery and Linaro
toolchains have been tested, Crosstool-NG toolchains are believed
to work properly as well.
* Toolchains built using the Crosstool-NG backend, but only (e)glibc
toolchains.
This feature was runtime tested with internal uClibc toolchain,
CodeSourcery ARM toolchain and Linaro ARM toolchain, thanks to a
simple C program that shows the data and a gettext translated message.
Note that this option differs from the "purge locales" option, which
is responsible for removing translation files and other locale stuff
installed by packages. At some point in the future, we may want to
clarify the respective roles of those options.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2012-05-08 06:39:22 +02:00
$( SED) 's,^.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=y\n# UCLIBC_BUILD_ALL_LOCALE is not set\nUCLIBC_BUILD_MINIMAL_LOCALE=y\nUCLIBC_BUILD_MINIMAL_LOCALES="$(UCLIBC_LOCALES)"\nUCLIBC_PREGENERATED_LOCALE_DATA=n\nUCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA=n\nUCLIBC_HAS_XLOCALE=y\nUCLIBC_HAS_GLIBC_DIGIT_GROUPING=n\n,g' $( UCLIBC_DIR) /.oldconfig
2007-08-14 09:07:13 +02:00
e l s e
$( SED) 's,^.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=n,g' $( UCLIBC_DIR) /.oldconfig
e n d i f
i f e q ( $( BR 2_USE_WCHAR ) , y )
$( SED) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $( UCLIBC_DIR) /.oldconfig
2006-10-17 18:57:02 +02:00
e l s e
2007-08-14 09:07:13 +02:00
$( SED) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=n,g' $( UCLIBC_DIR) /.oldconfig
2006-12-13 12:51:42 +01:00
e n d i f
i f e q ( "$(KERNEL_ARCH)" , "i386" )
2007-08-14 09:07:13 +02:00
/bin/echo "# CONFIG_GENERIC_386 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_386 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_486 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_586 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_586MMX is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_686 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_PENTIUMII is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_PENTIUMIII is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_PENTIUM4 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_K6 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_K7 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_ELAN is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_CRUSOE is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_WINCHIPC6 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_WINCHIP2 is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_CYRIXIII is not set" >> $( UCLIBC_DIR) /.oldconfig
/bin/echo "# CONFIG_NEHEMIAH is not set" >> $( UCLIBC_DIR) /.oldconfig
2006-12-13 12:51:42 +01:00
i f e q ( $( BR 2_x 86_i 386) , y )
2007-08-14 09:07:13 +02:00
$( SED) 's,# CONFIG_386 is not set,CONFIG_386=y,g' $( UCLIBC_DIR) /.oldconfig
2006-12-13 12:51:42 +01:00
e n d i f
i f e q ( $( BR 2_x 86_i 486) , y )
2007-08-14 09:07:13 +02:00
$( SED) 's,# CONFIG_486 is not set,CONFIG_486=y,g' $( UCLIBC_DIR) /.oldconfig
2006-12-13 12:51:42 +01:00
e n d i f
i f e q ( $( BR 2_x 86_i 586) , y )
2007-08-14 09:07:13 +02:00
$( SED) 's,# CONFIG_586 is not set,CONFIG_586=y,g' $( UCLIBC_DIR) /.oldconfig
2008-08-04 21:07:05 +02:00
e n d i f
2008-03-29 17:23:16 +01:00
i f e q ( $( BR 2_x 86_pentium_mmx ) , y )
$( SED) 's,# CONFIG_586MMX is not set,CONFIG_586MMX=y,g' $( UCLIBC_DIR) /.oldconfig
2008-08-04 21:07:05 +02:00
e n d i f
2008-03-29 18:34:23 +01:00
i f e q ( $( BR 2_x 86_i 686) , y )
$( SED) 's,# CONFIG_686 is not set,CONFIG_686=y,g' $( UCLIBC_DIR) /.oldconfig
e n d i f
i f e q ( $( BR 2_x 86_pentiumpro ) , y )
$( SED) 's,# CONFIG_686 is not set,CONFIG_686=y,g' $( UCLIBC_DIR) /.oldconfig
2008-08-04 21:07:05 +02:00
e n d i f
2008-03-29 17:23:16 +01:00
i f e q ( $( BR 2_x 86_pentium 2) , y )
$( SED) 's,# CONFIG_PENTIUMII is not set,CONFIG_PENTIUMII=y,g' $( UCLIBC_DIR) /.oldconfig
2008-08-04 21:07:05 +02:00
e n d i f
2008-03-29 17:23:16 +01:00
i f e q ( $( BR 2_x 86_pentium 3) , y )
$( SED) 's,# CONFIG_PENTIUMIII is not set,CONFIG_PENTIUMIII=y,g' $( UCLIBC_DIR) /.oldconfig
2008-08-04 21:07:05 +02:00
e n d i f
2008-03-29 17:23:16 +01:00
i f e q ( $( BR 2_x 86_pentium 4) , y )
$( SED) 's,# CONFIG_PENTIUM4 is not set,CONFIG_PENTIUM4=y,g' $( UCLIBC_DIR) /.oldconfig
2008-08-04 21:07:05 +02:00
e n d i f
2008-03-29 17:23:16 +01:00
i f e q ( $( BR 2_x 86_pentium_m ) , y )
$( SED) 's,# CONFIG_PENTIUM4 is not set,CONFIG_PENTIUM4=y,g' $( UCLIBC_DIR) /.oldconfig
2008-08-04 21:07:05 +02:00
e n d i f
2008-03-29 17:23:16 +01:00
i f e q ( $( BR 2_x 86_nocona ) , y )
$( SED) 's,# CONFIG_PENTIUM4 is not set,CONFIG_PENTIUM4=y,g' $( UCLIBC_DIR) /.oldconfig
2008-08-04 21:07:05 +02:00
e n d i f
2008-03-29 17:23:16 +01:00
i f e q ( $( BR 2_x 86_core 2) , y )
$( SED) 's,# CONFIG_PENTIUM4 is not set,CONFIG_PENTIUM4=y,g' $( UCLIBC_DIR) /.oldconfig
2008-08-04 21:07:05 +02:00
e n d i f
2004-01-15 12:01:37 +01:00
e n d i f
2007-08-14 09:07:13 +02:00
2007-08-22 14:35:41 +02:00
$(UCLIBC_DIR)/.config : $( UCLIBC_DIR ) /.oldconfig
2007-08-14 09:07:13 +02:00
cp -f $( UCLIBC_DIR) /.oldconfig $( UCLIBC_DIR) /.config
2009-09-23 01:30:00 +02:00
mkdir -p $( TOOLCHAIN_DIR) /uClibc_dev/usr/include
mkdir -p $( TOOLCHAIN_DIR) /uClibc_dev/usr/lib
mkdir -p $( TOOLCHAIN_DIR) /uClibc_dev/lib
2006-12-12 08:10:54 +01:00
$( MAKE1) -C $( UCLIBC_DIR) \
2009-09-03 20:47:12 +02:00
ARCH = " $( UCLIBC_TARGET_ARCH) " \
2009-09-23 01:30:00 +02:00
PREFIX = $( TOOLCHAIN_DIR) /uClibc_dev/ \
2006-12-12 08:10:54 +01:00
DEVEL_PREFIX = /usr/ \
2009-09-23 01:30:00 +02:00
RUNTIME_PREFIX = $( TOOLCHAIN_DIR) /uClibc_dev/ \
2011-12-03 14:53:43 +01:00
CROSS_COMPILE = " $( TARGET_CROSS) " \
2012-01-05 20:31:43 +01:00
UCLIB_EXTRA_CFLAGS = " $( TARGET_ABI) " \
2006-12-12 08:10:54 +01:00
HOSTCC = " $( HOSTCC) " \
oldconfig
2007-07-29 19:47:27 +02:00
touch $@
2006-12-02 19:30:42 +01:00
2011-02-25 13:18:45 +01:00
i f e q ( $( BR 2_CCACHE ) , y )
# we'll need ccache for the host built before make oldconfig
# if configured, otherwise uclibc-menuconfig will fail.
# Use order-only dependency as host-ccache is a virtual target
$(UCLIBC_DIR)/.config : | host -ccache
e n d i f
2007-08-29 20:05:46 +02:00
$(UCLIBC_DIR)/.configured : $( LINUX_HEADERS_DIR ) /.configured $( UCLIBC_DIR ) /.config
2010-04-05 10:47:54 +02:00
$( MAKE1) -C $( UCLIBC_DIR) \
2009-09-03 20:47:12 +02:00
ARCH = " $( UCLIBC_TARGET_ARCH) " \
2009-09-23 01:30:00 +02:00
PREFIX = $( TOOLCHAIN_DIR) /uClibc_dev/ \
2004-05-04 13:55:08 +02:00
DEVEL_PREFIX = /usr/ \
2009-09-23 01:30:00 +02:00
RUNTIME_PREFIX = $( TOOLCHAIN_DIR) /uClibc_dev/ \
2011-12-03 14:53:43 +01:00
CROSS_COMPILE = " $( TARGET_CROSS) " \
2012-01-05 20:31:43 +01:00
UCLIB_EXTRA_CFLAGS = " $( TARGET_ABI) " \
2008-10-20 20:55:26 +02:00
HOSTCC = " $( HOSTCC) " headers \
2010-07-28 09:11:37 +02:00
lib/crt1.o lib/crti.o lib/crtn.o \
2010-07-29 17:02:29 +02:00
install_headers
2007-08-28 23:42:44 +02:00
# Install the kernel headers to the first stage gcc include dir
# if necessary
2009-09-23 01:30:00 +02:00
if [ ! -f $( TOOLCHAIN_DIR) /uClibc_dev/usr/include/linux/version.h ] ; then \
2007-08-28 23:42:44 +02:00
cp -pLR $( LINUX_HEADERS_DIR) /include/* \
2009-09-23 01:30:00 +02:00
$( TOOLCHAIN_DIR) /uClibc_dev/usr/include/; \
2007-06-20 13:26:36 +02:00
fi
2010-07-28 09:11:37 +02:00
$( TARGET_CROSS) gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $( TOOLCHAIN_DIR) /uClibc_dev/usr/lib/libc.so
$( TARGET_CROSS) gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $( TOOLCHAIN_DIR) /uClibc_dev/usr/lib/libm.so
cp -pLR $( UCLIBC_DIR) /lib/crt[ 1in] .o $( TOOLCHAIN_DIR) /uClibc_dev/usr/lib/
2007-06-20 13:26:36 +02:00
touch $@
2002-11-12 22:31:16 +01:00
2010-07-28 09:11:37 +02:00
$(UCLIBC_DIR)/lib/libc.a : $( UCLIBC_DIR ) /.configured $( gcc_intermediate ) $( LIBFLOAT_TARGET )
2004-12-11 14:01:10 +01:00
$( MAKE1) -C $( UCLIBC_DIR) \
2009-09-03 20:47:12 +02:00
ARCH = " $( UCLIBC_TARGET_ARCH) " \
2004-01-14 11:03:44 +01:00
PREFIX = \
2004-09-03 02:49:43 +02:00
DEVEL_PREFIX = / \
2004-01-14 11:03:44 +01:00
RUNTIME_PREFIX = / \
2011-12-03 14:53:43 +01:00
CROSS_COMPILE = " $( TARGET_CROSS) " \
2012-01-05 20:31:43 +01:00
UCLIB_EXTRA_CFLAGS = " $( TARGET_ABI) " \
2004-02-27 20:24:22 +01:00
HOSTCC = " $( HOSTCC) " \
2004-01-14 11:03:44 +01:00
all
2007-06-20 13:26:36 +02:00
touch -c $@
2004-01-14 11:03:44 +01:00
2010-09-30 23:09:39 +02:00
uclibc-menuconfig : dirs $( UCLIBC_DIR ) /.config
2006-12-02 19:30:42 +01:00
$( MAKE1) -C $( UCLIBC_DIR) \
2009-09-03 20:47:12 +02:00
ARCH = " $( UCLIBC_TARGET_ARCH) " \
2009-09-23 01:30:00 +02:00
PREFIX = $( TOOLCHAIN_DIR) /uClibc_dev/ \
2006-12-02 19:30:42 +01:00
DEVEL_PREFIX = /usr/ \
2009-09-23 01:30:00 +02:00
RUNTIME_PREFIX = $( TOOLCHAIN_DIR) /uClibc_dev/ \
2011-12-03 14:53:43 +01:00
CROSS_COMPILE = " $( TARGET_CROSS) " \
2012-01-05 20:31:43 +01:00
UCLIB_EXTRA_CFLAGS = " $( TARGET_ABI) " \
2006-12-02 19:30:42 +01:00
HOSTCC = " $( HOSTCC) " \
menuconfig && \
2007-06-20 13:26:36 +02:00
touch -c $( UCLIBC_DIR) /.config
2006-12-02 19:30:42 +01:00
2007-06-20 13:26:36 +02:00
$(STAGING_DIR)/usr/lib/libc.a : $( UCLIBC_DIR ) /lib /libc .a
$( MAKE1) -C $( UCLIBC_DIR) \
2009-09-03 20:47:12 +02:00
ARCH = " $( UCLIBC_TARGET_ARCH) " \
2007-06-20 13:26:36 +02:00
PREFIX = $( STAGING_DIR) \
DEVEL_PREFIX = /usr/ \
RUNTIME_PREFIX = / \
2011-12-03 14:53:43 +01:00
CROSS_COMPILE = " $( TARGET_CROSS) " \
2012-01-05 20:31:43 +01:00
UCLIB_EXTRA_CFLAGS = " $( TARGET_ABI) " \
2007-06-20 13:26:36 +02:00
install_runtime install_dev
2006-12-12 08:10:54 +01:00
# Install the kernel headers to the staging dir if necessary
2007-08-22 11:56:41 +02:00
if [ ! -f $( STAGING_DIR) /usr/include/linux/version.h ] ; then \
2007-08-28 23:42:44 +02:00
cp -pLR $( LINUX_HEADERS_DIR) /include/* \
$( STAGING_DIR) /usr/include/; \
2007-06-20 13:26:36 +02:00
fi
2007-08-22 14:35:41 +02:00
# Build the host utils. Need to add an install target...
2004-12-11 14:01:10 +01:00
$( MAKE1) -C $( UCLIBC_DIR) /utils \
2010-12-28 20:10:28 +01:00
PREFIX = $( HOST_DIR) \
2004-02-27 20:24:22 +01:00
HOSTCC = " $( HOSTCC) " \
2004-10-15 10:26:30 +02:00
hostutils
2007-11-15 11:16:55 +01:00
if [ -f $( UCLIBC_DIR) /utils/ldd.host ] ; then \
2010-12-28 20:10:28 +01:00
install -D $( UCLIBC_DIR) /utils/ldd.host $( HOST_DIR) /usr/bin/ldd; \
2012-06-08 03:52:16 +02:00
ln -sf ldd $( HOST_DIR) /usr/bin/$( GNU_TARGET_NAME) -ldd; \
2007-11-15 11:16:55 +01:00
fi
if [ -f $( UCLIBC_DIR) /utils/ldconfig.host ] ; then \
2010-12-28 20:10:28 +01:00
install -D $( UCLIBC_DIR) /utils/ldconfig.host $( HOST_DIR) /usr/bin/ldconfig; \
ln -sf ldconfig $( HOST_DIR) /usr/bin/$( GNU_TARGET_NAME) -ldconfig; \
2007-11-15 11:16:55 +01:00
fi
2007-06-20 13:26:36 +02:00
touch -c $@
2002-07-03 12:44:59 +02:00
2003-09-14 13:38:35 +02:00
i f n e q ( $( TARGET_DIR ) , )
2007-06-20 13:26:36 +02:00
$(TARGET_DIR)/lib/libc.so.0 : $( STAGING_DIR ) /usr /lib /libc .a
2004-12-11 14:01:10 +01:00
$( MAKE1) -C $( UCLIBC_DIR) \
2009-09-03 20:47:12 +02:00
ARCH = " $( UCLIBC_TARGET_ARCH) " \
2004-01-14 11:03:44 +01:00
PREFIX = $( TARGET_DIR) \
DEVEL_PREFIX = /usr/ \
RUNTIME_PREFIX = / \
2011-12-03 14:53:43 +01:00
CROSS_COMPILE = " $( TARGET_CROSS) " \
2012-01-05 20:31:43 +01:00
UCLIB_EXTRA_CFLAGS = " $( TARGET_ABI) " \
2004-01-14 11:03:44 +01:00
install_runtime
2007-06-20 13:26:36 +02:00
touch -c $@
2002-04-26 13:45:55 +02:00
2007-09-22 23:38:15 +02:00
$(TARGET_DIR)/usr/bin/ldd : $( cross_compiler )
2007-07-05 07:13:20 +02:00
$( MAKE1) -C $( UCLIBC_DIR) CC = $( TARGET_CROSS) gcc \
CPP = $( TARGET_CROSS) cpp LD = $( TARGET_CROSS) ld \
2009-09-03 20:47:12 +02:00
ARCH = " $( UCLIBC_TARGET_ARCH) " \
2003-11-07 06:45:07 +01:00
PREFIX = $( TARGET_DIR) utils install_utils
2007-06-20 13:26:36 +02:00
touch -c $@
2003-09-14 13:38:35 +02:00
2010-04-05 13:44:21 +02:00
i f n e q ( $( BR 2_PREFER_STATIC_LIB ) , y )
2004-10-15 10:26:30 +02:00
UCLIBC_TARGETS = $( TARGET_DIR) /lib/libc.so.0
2010-04-05 13:44:21 +02:00
e n d i f
2008-10-07 09:20:32 +02:00
i f e q ( $( BR 2_UCLIBC_INSTALL_TEST_SUITE ) , y )
UCLIBC_TARGETS += uclibc-test
e n d i f
2003-09-14 13:38:35 +02:00
e n d i f
2002-04-26 13:45:55 +02:00
2010-07-28 09:11:37 +02:00
uclibc : $( gcc_intermediate ) $( STAGING_DIR ) /usr /lib /libc .a $( UCLIBC_TARGETS )
2007-08-01 14:11:44 +02:00
uclibc-source : $( DL_DIR ) /$( UCLIBC_SOURCE )
2007-07-29 19:47:27 +02:00
2007-09-28 18:18:16 +02:00
uclibc-unpacked : $( UCLIBC_DIR ) /.unpacked
uclibc-config : $( UCLIBC_DIR ) /.config
2007-08-14 09:07:13 +02:00
2007-09-28 18:18:16 +02:00
uclibc-oldconfig : $( UCLIBC_DIR ) /.oldconfig
2007-07-29 19:47:27 +02:00
2011-10-14 16:56:58 +02:00
uclibc-update-config : uclibc -config
2007-09-27 02:18:52 +02:00
cp -f $( UCLIBC_DIR) /.config $( UCLIBC_CONFIG_FILE)
2010-07-28 09:11:37 +02:00
uclibc-configured : gcc_initial kernel -headers $( UCLIBC_DIR ) /.configured
2003-11-12 10:31:12 +01:00
uclibc-configured-source : uclibc -source
2008-10-07 09:20:32 +02:00
uclibc-clean : uclibc -test -clean
2009-09-03 20:47:12 +02:00
-$( MAKE1) -C $( UCLIBC_DIR) ARCH = " $( UCLIBC_TARGET_ARCH) " clean
2002-11-12 22:31:16 +01:00
rm -f $( UCLIBC_DIR) /.config
2002-04-26 13:45:55 +02:00
2008-10-07 09:20:32 +02:00
uclibc-dirclean : uclibc -test -dirclean
2002-04-26 13:45:55 +02:00
rm -rf $( UCLIBC_DIR)
2002-07-03 12:44:59 +02:00
2009-11-17 17:37:11 +01:00
uclibc-target-utils : $( TARGET_DIR ) /usr /bin /ldd
2003-09-14 13:38:35 +02:00
2007-09-17 14:49:46 +02:00
uclibc-target-utils-source : $( DL_DIR ) /$( UCLIBC_SOURCE )
2008-10-07 09:20:32 +02:00
$(UCLIBC_DIR)/test/unistd/errno :
$( MAKE) -C $( UCLIBC_DIR) /test \
2008-10-07 09:32:40 +02:00
ARCH_CFLAGS = -I$( STAGING_DIR) /usr/include \
2008-10-07 09:20:32 +02:00
UCLIBC_ONLY = 1 TEST_INSTALLED_UCLIBC = 1 compile
$(TARGET_DIR)/root/uClibc/test/unistd/errno : $( UCLIBC_DIR ) /test /unistd /errno
mkdir -p $( TARGET_DIR) /root/uClibc
cp -rdpf $( UCLIBC_DIR) /test $( TARGET_DIR) /root/uClibc
$( INSTALL) $( UCLIBC_DIR) /Rules.mak $( TARGET_DIR) /root/uClibc
$( INSTALL) $( UCLIBC_DIR) /.config $( TARGET_DIR) /root/uClibc
2010-07-28 09:11:37 +02:00
uclibc-test : $( STAGING_DIR ) /usr /lib /libc .a $( TARGET_DIR ) /root /uClibc /test /unistd /errno
2008-10-07 09:20:32 +02:00
uclibc-test-source : uclibc -source
uclibc-test-clean :
-$( MAKE) -C $( UCLIBC_DIR) /test clean
rm -rf $( TARGET_DIR) /root/uClibc
uclibc-test-dirclean :
rm -rf $( TARGET_DIR) /root/uClibc
2003-09-14 13:38:35 +02:00
#############################################################
#
# uClibc for the target just needs its header files
# and whatnot installed.
#
#############################################################
2007-06-20 13:26:36 +02:00
$(TARGET_DIR)/usr/lib/libc.a : $( STAGING_DIR ) /usr /lib /libc .a
2004-12-11 14:01:10 +01:00
$( MAKE1) -C $( UCLIBC_DIR) \
2009-09-03 20:47:12 +02:00
ARCH = " $( UCLIBC_TARGET_ARCH) " \
2004-01-14 11:03:44 +01:00
PREFIX = $( TARGET_DIR) \
DEVEL_PREFIX = /usr/ \
RUNTIME_PREFIX = / \
install_dev
2006-12-13 12:51:42 +01:00
# Install the kernel headers to the target dir if necessary
2007-08-28 23:42:44 +02:00
if [ ! -f $( TARGET_DIR) /usr/include/linux/version.h ] ; then \
cp -pLR $( LINUX_HEADERS_DIR) /include/* \
$( TARGET_DIR) /usr/include/; \
2007-06-20 13:26:36 +02:00
fi
touch -c $@
2003-09-14 13:38:35 +02:00
2007-09-22 23:38:15 +02:00
uclibc_target : cross_compiler uclibc $( TARGET_DIR ) /usr /lib /libc .a $( TARGET_DIR ) /usr /bin /ldd
2004-10-15 16:39:40 +02:00
2008-10-07 09:20:32 +02:00
uclibc_target-clean : uclibc -test -clean
2007-02-06 19:35:37 +01:00
rm -rf $( TARGET_DIR) /usr/include \
$( TARGET_DIR) /usr/lib/libc.a $( TARGET_DIR) /usr/bin/ldd
2003-09-14 13:38:35 +02:00
2008-10-07 09:20:32 +02:00
uclibc_target-dirclean : uclibc -test -dirclean
2007-01-21 13:58:51 +01:00
rm -rf $( TARGET_DIR) /usr/include
2003-09-14 13:38:35 +02:00
2007-02-06 19:19:38 +01:00
e n d i f