1.1 --- a/scripts/build/libc/uClibc.sh Sat Jul 03 00:17:54 2010 +0200
1.2 +++ b/scripts/build/libc/uClibc.sh Sat Jul 03 01:15:28 2010 +0200
1.3 @@ -70,6 +70,7 @@
1.4 # This functions installs uClibc's headers
1.5 do_libc_headers() {
1.6 local install_rule
1.7 + local cross
1.8
1.9 CT_DoStep INFO "Installing C library headers"
1.10
1.11 @@ -86,11 +87,23 @@
1.12 # compiler tools to use. Setting it to the empty string forces
1.13 # use of the native build host tools, which we need at this
1.14 # stage, as we don't have target tools yet.
1.15 + # BUT! With NPTL, we need a cross-compiler (and we have it)
1.16 + if [ "${CT_THREADS}" = "nptl" ]; then
1.17 + cross="${CT_TARGET}-"
1.18 + fi
1.19 +
1.20 CT_DoLog EXTRA "Applying configuration"
1.21 - CT_DoYes "" |CT_DoExecLog ALL make CROSS= PREFIX="${CT_SYSROOT_DIR}/" oldconfig
1.22 + CT_DoYes "" |CT_DoExecLog ALL \
1.23 + make CROSS="${cross}" \
1.24 + PREFIX="${CT_SYSROOT_DIR}/" \
1.25 + oldconfig
1.26
1.27 CT_DoLog EXTRA "Building headers"
1.28 - CT_DoExecLog ALL make ${CT_LIBC_UCLIBC_VERBOSITY} CROSS= PREFIX="${CT_SYSROOT_DIR}/" headers
1.29 + CT_DoExecLog ALL \
1.30 + make ${CT_LIBC_UCLIBC_VERBOSITY} \
1.31 + CROSS="${cross}" \
1.32 + PREFIX="${CT_SYSROOT_DIR}/" \
1.33 + headers
1.34
1.35 if [ "${CT_LIBC_UCLIBC_0_9_30_or_later}" = "y" ]; then
1.36 install_rule=install_headers
1.37 @@ -99,7 +112,40 @@
1.38 fi
1.39
1.40 CT_DoLog EXTRA "Installing headers"
1.41 - CT_DoExecLog ALL make ${CT_LIBC_UCLIBC_VERBOSITY} CROSS= PREFIX="${CT_SYSROOT_DIR}/" "${install_rule}"
1.42 + CT_DoExecLog ALL \
1.43 + make ${CT_LIBC_UCLIBC_VERBOSITY} \
1.44 + CROSS="${cross}" \
1.45 + PREFIX="${CT_SYSROOT_DIR}/" \
1.46 + ${install_rule}
1.47 +
1.48 + if [ "${CT_THREADS}" = "nptl" ]; then
1.49 + CT_DoLog EXTRA "Building start files"
1.50 + CT_DoExecLog ALL \
1.51 + make ${CT_LIBC_UCLIBC_PARALLEL:+${PARALLELMFLAGS}} \
1.52 + CROSS="${cross}" \
1.53 + PREFIX="${CT_SYSROOT_DIR}/" \
1.54 + STRIPTOOL=true \
1.55 + ${CT_LIBC_UCLIBC_VERBOSITY} \
1.56 + lib/crt1.o lib/crti.o lib/crtn.o
1.57 +
1.58 + # From: http://git.openembedded.org/cgit.cgi/openembedded/commit/?id=ad5668a7ac7e0436db92e55caaf3fdf782b6ba3b
1.59 + # libm.so is needed for ppc, as libgcc is linked against libm.so
1.60 + # No problem to create it for other archs.
1.61 + CT_DoLog EXTRA "Building dummy shared libs"
1.62 + CT_DoExecLog ALL "${cross}gcc" -nostdlib \
1.63 + -nostartfiles \
1.64 + -shared \
1.65 + -x c /dev/null \
1.66 + -o libdummy.so
1.67 +
1.68 + CT_DoLog EXTRA "Installing start files"
1.69 + CT_DoExecLog ALL install -m 0644 lib/crt1.o lib/crti.o lib/crtn.o \
1.70 + "${CT_SYSROOT_DIR}/usr/lib"
1.71 +
1.72 + CT_DoLog EXTRA "Installing dummy shared libs"
1.73 + CT_DoExecLog ALL install -m 0755 libdummy.so "${CT_SYSROOT_DIR}/usr/lib/libc.so"
1.74 + CT_DoExecLog ALL install -m 0755 libdummy.so "${CT_SYSROOT_DIR}/usr/lib/libm.so"
1.75 + fi # CT_THREADS == nptl
1.76
1.77 CT_EndStep
1.78 }
1.79 @@ -140,6 +186,13 @@
1.80 # /Old/ versions can not build in //
1.81 CT_DoLog EXTRA "Building C library"
1.82 CT_DoExecLog ALL \
1.83 + make -j1 \
1.84 + CROSS=${CT_TARGET}- \
1.85 + PREFIX="${CT_SYSROOT_DIR}/" \
1.86 + STRIPTOOL=true \
1.87 + ${CT_LIBC_UCLIBC_VERBOSITY} \
1.88 + pregen
1.89 + CT_DoExecLog ALL \
1.90 make ${CT_LIBC_UCLIBC_PARALLEL:+${PARALLELMFLAGS}} \
1.91 CROSS=${CT_TARGET}- \
1.92 PREFIX="${CT_SYSROOT_DIR}/" \
1.93 @@ -344,13 +397,14 @@
1.94
1.95 # Push the threading model
1.96 # Note: we take into account all of the .28, .29, .30 and .31
1.97 - # versions, here.
1.98 + # versions, here. Even snapshots with NPTL.
1.99 case "${CT_THREADS}:${CT_LIBC_UCLIBC_LNXTHRD}" in
1.100 - none:*)
1.101 + none:)
1.102 cat <<-ENDSED
1.103 s/^UCLIBC_HAS_THREADS=y/# UCLIBC_HAS_THREADS is not set/
1.104 s/^LINUXTHREADS_OLD=y/# LINUXTHREADS_OLD is not set/
1.105 s/^LINUXTHREADS_NEW=y/# LINUXTHREADS_NEW is not set/
1.106 + s/^UCLIBC_HAS_THREADS_NATIVE=y/# UCLIBC_HAS_THREADS_NATIVE is not set/
1.107 ENDSED
1.108 ;;
1.109 linuxthreads:old)
1.110 @@ -358,6 +412,7 @@
1.111 s/^# UCLIBC_HAS_THREADS is not set/UCLIBC_HAS_THREADS=y/
1.112 s/^# LINUXTHREADS_OLD is not set/LINUXTHREADS_OLD=y/
1.113 s/^LINUXTHREADS_NEW=y/# LINUXTHREADS_NEW is not set/
1.114 + s/^UCLIBC_HAS_THREADS_NATIVE=y/# UCLIBC_HAS_THREADS_NATIVE is not set/
1.115 ENDSED
1.116 ;;
1.117 linuxthreads:new)
1.118 @@ -365,8 +420,21 @@
1.119 s/^# UCLIBC_HAS_THREADS is not set/UCLIBC_HAS_THREADS=y/
1.120 s/^LINUXTHREADS_OLD=y/# LINUXTHREADS_OLD is not set/
1.121 s/^# LINUXTHREADS_NEW is not set/LINUXTHREADS_NEW=y/
1.122 + s/^UCLIBC_HAS_THREADS_NATIVE=y/# UCLIBC_HAS_THREADS_NATIVE is not set/
1.123 ENDSED
1.124 ;;
1.125 + nptl:)
1.126 + cat <<-ENDSED
1.127 + s/^HAS_NO_THREADS=y/# HAS_NO_THREADS is not set/
1.128 + s/^UCLIBC_HAS_THREADS=y/# UCLIBC_HAS_THREADS is not set/
1.129 + s/^LINUXTHREADS_OLD=y/# LINUXTHREADS_OLD is not set/
1.130 + s/^LINUXTHREADS_NEW=y/# LINUXTHREADS_NEW is not set/
1.131 + s/^# UCLIBC_HAS_THREADS_NATIVE is not set/UCLIBC_HAS_THREADS_NATIVE=y/
1.132 + ENDSED
1.133 + ;;
1.134 + *)
1.135 + CT_Abort "Incorrect thread settings: CT_THREADS='${CT_THREAD}' CT_LIBC_UCLIBC_LNXTHRD='${CT_LIBC_UCLIBC_LNXTHRD}'"
1.136 + ;;
1.137 esac
1.138
1.139 # Always build the libpthread_db