1.1 --- a/config/libc/uClibc.in Sat Jul 03 00:17:54 2010 +0200
1.2 +++ b/config/libc/uClibc.in Sat Jul 03 01:15:28 2010 +0200
1.3 @@ -45,15 +45,22 @@
1.4 prompt "0.9.28.3 (OBSOLETE)"
1.5 depends on OBSOLETE
1.6
1.7 +# As of today (20100702) we can be pretty sure that every
1.8 +# snapshots made since a month ago are post -0.9.30.
1.9 +
1.10 config LIBC_V_snapshot
1.11 bool
1.12 prompt "latest snapshot (EXPERIMENTAL)"
1.13 depends on EXPERIMENTAL
1.14 + select LIBC_SUPPORT_NPTL
1.15 + select LIBC_UCLIBC_0_9_30_or_later
1.16
1.17 config LIBC_V_specific_date
1.18 bool
1.19 prompt "<specific date> (EXPERIMENTAL)"
1.20 depends on EXPERIMENTAL
1.21 + select LIBC_SUPPORT_NPTL
1.22 + select LIBC_UCLIBC_0_9_30_or_later
1.23
1.24 endchoice
1.25
2.1 --- a/config/libc/uClibc.in.2 Sat Jul 03 00:17:54 2010 +0200
2.2 +++ b/config/libc/uClibc.in.2 Sat Jul 03 01:15:28 2010 +0200
2.3 @@ -28,9 +28,11 @@
2.4
2.5 endchoice
2.6
2.7 +endif # THREADS_LINUXTHREADS
2.8 +
2.9 config LIBC_UCLIBC_LNXTHRD
2.10 string
2.11 + default "" if THREADS_NONE
2.12 + default "" if THREADS_NPTL
2.13 default "old" if LIBC_UCLIBC_LNXTHRD_OLD
2.14 default "new" if LIBC_UCLIBC_LNXTHRD_NEW
2.15 -
2.16 -endif # THREADS_LINUXTHREADS
3.1 --- a/scripts/build/libc/uClibc.sh Sat Jul 03 00:17:54 2010 +0200
3.2 +++ b/scripts/build/libc/uClibc.sh Sat Jul 03 01:15:28 2010 +0200
3.3 @@ -70,6 +70,7 @@
3.4 # This functions installs uClibc's headers
3.5 do_libc_headers() {
3.6 local install_rule
3.7 + local cross
3.8
3.9 CT_DoStep INFO "Installing C library headers"
3.10
3.11 @@ -86,11 +87,23 @@
3.12 # compiler tools to use. Setting it to the empty string forces
3.13 # use of the native build host tools, which we need at this
3.14 # stage, as we don't have target tools yet.
3.15 + # BUT! With NPTL, we need a cross-compiler (and we have it)
3.16 + if [ "${CT_THREADS}" = "nptl" ]; then
3.17 + cross="${CT_TARGET}-"
3.18 + fi
3.19 +
3.20 CT_DoLog EXTRA "Applying configuration"
3.21 - CT_DoYes "" |CT_DoExecLog ALL make CROSS= PREFIX="${CT_SYSROOT_DIR}/" oldconfig
3.22 + CT_DoYes "" |CT_DoExecLog ALL \
3.23 + make CROSS="${cross}" \
3.24 + PREFIX="${CT_SYSROOT_DIR}/" \
3.25 + oldconfig
3.26
3.27 CT_DoLog EXTRA "Building headers"
3.28 - CT_DoExecLog ALL make ${CT_LIBC_UCLIBC_VERBOSITY} CROSS= PREFIX="${CT_SYSROOT_DIR}/" headers
3.29 + CT_DoExecLog ALL \
3.30 + make ${CT_LIBC_UCLIBC_VERBOSITY} \
3.31 + CROSS="${cross}" \
3.32 + PREFIX="${CT_SYSROOT_DIR}/" \
3.33 + headers
3.34
3.35 if [ "${CT_LIBC_UCLIBC_0_9_30_or_later}" = "y" ]; then
3.36 install_rule=install_headers
3.37 @@ -99,7 +112,40 @@
3.38 fi
3.39
3.40 CT_DoLog EXTRA "Installing headers"
3.41 - CT_DoExecLog ALL make ${CT_LIBC_UCLIBC_VERBOSITY} CROSS= PREFIX="${CT_SYSROOT_DIR}/" "${install_rule}"
3.42 + CT_DoExecLog ALL \
3.43 + make ${CT_LIBC_UCLIBC_VERBOSITY} \
3.44 + CROSS="${cross}" \
3.45 + PREFIX="${CT_SYSROOT_DIR}/" \
3.46 + ${install_rule}
3.47 +
3.48 + if [ "${CT_THREADS}" = "nptl" ]; then
3.49 + CT_DoLog EXTRA "Building start files"
3.50 + CT_DoExecLog ALL \
3.51 + make ${CT_LIBC_UCLIBC_PARALLEL:+${PARALLELMFLAGS}} \
3.52 + CROSS="${cross}" \
3.53 + PREFIX="${CT_SYSROOT_DIR}/" \
3.54 + STRIPTOOL=true \
3.55 + ${CT_LIBC_UCLIBC_VERBOSITY} \
3.56 + lib/crt1.o lib/crti.o lib/crtn.o
3.57 +
3.58 + # From: http://git.openembedded.org/cgit.cgi/openembedded/commit/?id=ad5668a7ac7e0436db92e55caaf3fdf782b6ba3b
3.59 + # libm.so is needed for ppc, as libgcc is linked against libm.so
3.60 + # No problem to create it for other archs.
3.61 + CT_DoLog EXTRA "Building dummy shared libs"
3.62 + CT_DoExecLog ALL "${cross}gcc" -nostdlib \
3.63 + -nostartfiles \
3.64 + -shared \
3.65 + -x c /dev/null \
3.66 + -o libdummy.so
3.67 +
3.68 + CT_DoLog EXTRA "Installing start files"
3.69 + CT_DoExecLog ALL install -m 0644 lib/crt1.o lib/crti.o lib/crtn.o \
3.70 + "${CT_SYSROOT_DIR}/usr/lib"
3.71 +
3.72 + CT_DoLog EXTRA "Installing dummy shared libs"
3.73 + CT_DoExecLog ALL install -m 0755 libdummy.so "${CT_SYSROOT_DIR}/usr/lib/libc.so"
3.74 + CT_DoExecLog ALL install -m 0755 libdummy.so "${CT_SYSROOT_DIR}/usr/lib/libm.so"
3.75 + fi # CT_THREADS == nptl
3.76
3.77 CT_EndStep
3.78 }
3.79 @@ -140,6 +186,13 @@
3.80 # /Old/ versions can not build in //
3.81 CT_DoLog EXTRA "Building C library"
3.82 CT_DoExecLog ALL \
3.83 + make -j1 \
3.84 + CROSS=${CT_TARGET}- \
3.85 + PREFIX="${CT_SYSROOT_DIR}/" \
3.86 + STRIPTOOL=true \
3.87 + ${CT_LIBC_UCLIBC_VERBOSITY} \
3.88 + pregen
3.89 + CT_DoExecLog ALL \
3.90 make ${CT_LIBC_UCLIBC_PARALLEL:+${PARALLELMFLAGS}} \
3.91 CROSS=${CT_TARGET}- \
3.92 PREFIX="${CT_SYSROOT_DIR}/" \
3.93 @@ -344,13 +397,14 @@
3.94
3.95 # Push the threading model
3.96 # Note: we take into account all of the .28, .29, .30 and .31
3.97 - # versions, here.
3.98 + # versions, here. Even snapshots with NPTL.
3.99 case "${CT_THREADS}:${CT_LIBC_UCLIBC_LNXTHRD}" in
3.100 - none:*)
3.101 + none:)
3.102 cat <<-ENDSED
3.103 s/^UCLIBC_HAS_THREADS=y/# UCLIBC_HAS_THREADS is not set/
3.104 s/^LINUXTHREADS_OLD=y/# LINUXTHREADS_OLD is not set/
3.105 s/^LINUXTHREADS_NEW=y/# LINUXTHREADS_NEW is not set/
3.106 + s/^UCLIBC_HAS_THREADS_NATIVE=y/# UCLIBC_HAS_THREADS_NATIVE is not set/
3.107 ENDSED
3.108 ;;
3.109 linuxthreads:old)
3.110 @@ -358,6 +412,7 @@
3.111 s/^# UCLIBC_HAS_THREADS is not set/UCLIBC_HAS_THREADS=y/
3.112 s/^# LINUXTHREADS_OLD is not set/LINUXTHREADS_OLD=y/
3.113 s/^LINUXTHREADS_NEW=y/# LINUXTHREADS_NEW is not set/
3.114 + s/^UCLIBC_HAS_THREADS_NATIVE=y/# UCLIBC_HAS_THREADS_NATIVE is not set/
3.115 ENDSED
3.116 ;;
3.117 linuxthreads:new)
3.118 @@ -365,8 +420,21 @@
3.119 s/^# UCLIBC_HAS_THREADS is not set/UCLIBC_HAS_THREADS=y/
3.120 s/^LINUXTHREADS_OLD=y/# LINUXTHREADS_OLD is not set/
3.121 s/^# LINUXTHREADS_NEW is not set/LINUXTHREADS_NEW=y/
3.122 + s/^UCLIBC_HAS_THREADS_NATIVE=y/# UCLIBC_HAS_THREADS_NATIVE is not set/
3.123 ENDSED
3.124 ;;
3.125 + nptl:)
3.126 + cat <<-ENDSED
3.127 + s/^HAS_NO_THREADS=y/# HAS_NO_THREADS is not set/
3.128 + s/^UCLIBC_HAS_THREADS=y/# UCLIBC_HAS_THREADS is not set/
3.129 + s/^LINUXTHREADS_OLD=y/# LINUXTHREADS_OLD is not set/
3.130 + s/^LINUXTHREADS_NEW=y/# LINUXTHREADS_NEW is not set/
3.131 + s/^# UCLIBC_HAS_THREADS_NATIVE is not set/UCLIBC_HAS_THREADS_NATIVE=y/
3.132 + ENDSED
3.133 + ;;
3.134 + *)
3.135 + CT_Abort "Incorrect thread settings: CT_THREADS='${CT_THREAD}' CT_LIBC_UCLIBC_LNXTHRD='${CT_LIBC_UCLIBC_LNXTHRD}'"
3.136 + ;;
3.137 esac
3.138
3.139 # Always build the libpthread_db