linux下编译交叉工具链的工具源码

源代码在线查看: crosstool-0.38-nptl-schaefer.patch

软件大小: 2973 K
上传用户: liuhong22008
关键词: linux 下编译 源码
下载地址: 免注册下载 普通下载 VIP

相关代码

				Message-ID: 				Date: Sun, 07 Aug 2005 11:39:35 +0200				From: Peter Schaefer 				To:  crossgcc@sources.redhat.com				Subject: Re: crosstool-0.38, ppc860, NPTL and gcc4.0.1				References:  				In-Reply-To: 								Hello list,								again replying to myself (*sigh*)... I was able to compile				the toolchain for ppc860, NPTL and gcc4.0.1-libc-2.3.5				with the following patch to crosstool-0.38.								It's basically the NPTL-patch rediffed against 0.38 with an				added patch for libiberty path issues in patches/gcc-4.0.1.								In addition see the if-condition in line 864 of the patch, here				i added configuration & build of libcpp.								Beware: I haven't tested the toolchain yet!								Best regards,								 Peter								diff -urN crosstool-0.38.orig/crosstool.sh crosstool-0.38/crosstool.sh				--- crosstool-0.38.orig/crosstool.sh	2005-07-21 19:58:19.000000000 +0200				+++ crosstool-0.38/crosstool.sh	2005-08-07 11:34:34.551302360 +0200				@@ -70,23 +70,28 @@				 test -z "$BUILD" && abort "bug: BUILD not set?!"				 				 if test -z "${GLIBC_ADDON_OPTIONS}"; then				-   echo "GLIBC_ADDON_OPTIONS not set, so guessing addons from GLIBCTHREADS_FILENAME and GLIBCCRYPT_FILENAME"				-   # this is lame, need to fix this for nptl later?				-   # (nptl is an addon, but it's shipped in the main tarball)				+   echo "GLIBC_ADDON_OPTIONS not set"				    GLIBC_ADDON_OPTIONS="="				-   case "${GLIBCTHREADS_FILENAME}" in				-     *linuxthreads*) GLIBC_ADDON_OPTIONS="${GLIBC_ADDON_OPTIONS}linuxthreads," ;;				-   esac				+   if test '!' -z ${GLIBC_ADDON_LINUXTHREADS}; then				+       GLIBC_ADDON_OPTIONS="${GLIBC_ADDON_OPTIONS}linuxthreads,"				+   elif test '!' -z ${GLIBC_ADDON_NPTL}; then				+       GLIBC_ADDON_OPTIONS="${GLIBC_ADDON_OPTIONS}nptl,"				+   fi				    # crypt is only an addon for glibc-2.1.x				    test -z "${GLIBCCRYPT_FILENAME}"   || GLIBC_ADDON_OPTIONS="${GLIBC_ADDON_OPTIONS}crypt,"				 fi				 				+if test '!' -z "${GLIBC_ADDON_NPTL}"; then				+    GLIBC_EXTRA_CONFIG="--with-tls --with-__thread ${GLIBC_EXTRA_CONFIG}"				+    GLIBC_MIN_KERNEL=2.6.4				+else				+    GLIBC_EXTRA_CONFIG="--without-tls --without-__thread ${GLIBC_EXTRA_CONFIG}"				+    GLIBC_MIN_KERNEL=2.4.3				+fi				+				 # One is forbidden				 test -z "${LD_LIBRARY_PATH}" || abort  "glibc refuses to build if LD_LIBRARY_PATH is set.  Please unset it before running this script."				 				-# And one is derived.				-GLIBCTHREADS_FILENAME=`echo $GLIBC_DIR | sed 's/glibc-/glibc-linuxthreads-/'`				-				 # Check for a few prerequisites that have tripped people up.				 awk '/x/' < /dev/null  || abort "You need awk to build a toolchain."				 test -z "${CFLAGS}"    || abort "Don't set CFLAGS, it screws up the build"				@@ -442,13 +447,47 @@				     # http://sourceware.org/ml/crossgcc/2005-05/msg00168.html				     cp misc/syscall-list.h $HEADERDIR/bits/syscall.h				 				+    if test '!' -z "${GLIBC_ADDON_NPTL}"; then 				+        # To build gcc with thread support requires real pthread headers. These				+        # will have to manually be copied from under the tree of the desired				+        # target pthread implementation.				+        cp ${GLIBC_DIR}/nptl/sysdeps/pthread/pthread.h $HEADERDIR/pthread.h				+        pthreadtypes_h=nptl/sysdeps/unix/sysv/linux/${ARCH}/bits/pthreadtypes.h				+				+        # On s390, powerpc and sparc we also require bits/wordsize.h.				+        case $TARGET in				+        sparc* | s390* | powerpc* )				+            case $TARGET in				+            sparc64* )   wordsize_h=sysdeps/sparc/sparc64/bits/wordsize.h				+			 pthreadtypes_h=nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h				+			 ;;				+            sparc* )     wordsize_h=sysdeps/sparc/sparc32/bits/wordsize.h 				+			 pthreadtypes_h=nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h				+			 ;;				+            s390x* )     wordsize_h=sysdeps/s390/s390x/bits/wordsize.h 				+			 ;;				+            s390* )      wordsize_h=sysdeps/s390/s390/bits/wordsize.h 				+			 ;;				+            powerpc64* ) wordsize_h=sysdeps/powerpc/powerpc64/bits/wordsize.h				+			 pthreadtypes_h=nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h				+			 ;;				+            powerpc* )   wordsize_h=sysdeps/powerpc/powerpc32/bits/wordsize.h				+			 pthreadtypes_h=nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h				+			 ;;				+            esac				+            test ! -f $HEADERDIR/bits/wordsize.h && cp ${GLIBC_DIR}/${wordsize_h} $HEADERDIR/bits/wordsize.h				+            cp ${GLIBC_DIR}/${pthreadtypes_h} $HEADERDIR/bits/pthreadtypes.h				+	    ;;				+	esac				+    fi # GLIBC_ADDONS_NPTL				+				     cd ..				 fi				 				 #---------------------------------------------------------				-echo "Build gcc-core (just enough to build glibc)"				+echo "Build gcc-core w/o shared libgcc (just enough to build glibc starfiles)"				 				-mkdir -p build-gcc-core; cd build-gcc-core				+mkdir -p build-gcc-core-static; cd build-gcc-core-static				 				 echo Copy headers to install area of bootstrap gcc, so it can build libgcc2				 mkdir -p $CORE_PREFIX/$TARGET/include				@@ -480,8 +519,124 @@				 				 logresult gcc-core $CORE_PREFIX/bin/${TARGET}-gcc${EXEEXT}				 				+# Following extra steps required for building an NPTL enabled glibc.				+if test '!' -z "${GLIBC_ADDON_NPTL}"; then				+    #---------------------------------------------------------				+    echo "Build glibc startfiles (required for shared libgcc)"				+				+    mkdir -p build-glibc-startfiles; cd build-glibc-startfiles				+				+    # sh4 really needs to set configparms as of gcc-3.4/glibc-2.3.2				+    # note: this is awkward, doesn't work well if you need more than one line in configparms				+    echo ${GLIBC_CONFIGPARMS} > configparms				+				+    echo "libc_cv_forced_unwind=yes" > config.cache				+    echo "libc_cv_c_cleanup=yes" >> config.cache				+    # this here is moot, currently you cannot build nptl for sparc64				+    case ${TARGET} in				+        sparc64* ) echo "libc_cv_sparc64_tls=yes" >> config.cache ;;				+    esac				+				+    if test '!' -f Makefile; then				+        # Configure with --prefix the way we want it on the target...				+        # There are a whole lot of settings here.  You'll probably want				+        # to read up on what they all mean, and customize a bit.				+        # e.g. I picked --enable-kernel=2.4.3 here just because it's the kernel Bill 				+        # used in his example gcc2.95.3 script.  That means some backwards compatibility 				+        # stuff is turned on in glibc that you may not need if you're using a newer kernel.				+        # Compare these options with the ones used when installing the glibc headers above - they're different.				+        # Adding "--without-gd" option to avoid error "memusagestat.c:36:16: gd.h: No such file or directory" 				+        # See also http://sources.redhat.com/ml/libc-alpha/2000-07/msg00024.html. 				+        # Set BUILD_CC, or you won't be able to build datafiles				+        # Set --build, else glibc-2.3.2 will think you're not cross-compiling, and try to run the test programs				+				+        BUILD_CC=gcc CFLAGS="$TARGET_CFLAGS" CC="${TARGET}-gcc $GLIBC_EXTRA_CC_ARGS" \				+        AR=${TARGET}-ar RANLIB=${TARGET}-ranlib \				+            ${GLIBC_DIR}/configure --prefix=/usr \				+	    --build=$BUILD --host=$TARGET \				+            ${GLIBC_EXTRA_CONFIG} \				+            --enable-kernel=${GLIBC_MIN_KERNEL} \				+            --without-cvs --disable-profile --disable-debug --without-gd \				+            $SHARED_MODE \				+            --enable-add-ons${GLIBC_ADDON_OPTIONS} --with-headers=$HEADERDIR \				+            --cache-file=config.cache				+    fi				+				+    #TODO: should check whether slibdir has been set in configparms to */lib64				+    #      and copy the startfiles into the appropriate libdir.				+    make csu/subdir_lib				+    				+    test -z "${USE_SYSROOT}" &&				+    cp -fp csu/crt[1in].o ${SYSROOT}/lib/ ||				+    cp -fp csu/crt[1in].o ${SYSROOT}/usr/lib/ 				+				+    cd ..				+				+    #---------------------------------------------------------				+    echo "Build gcc-core w shared libgcc"				+				+    mkdir -p build-gcc-core-shared; cd build-gcc-core-shared				+				+    # Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532)				+				+    if test '!' -f Makefile; then				+        ${GCC_DIR}/configure $CANADIAN_BUILD --target=$TARGET --host=$GCC_HOST --prefix=$PREFIX \				+	    --with-local-prefix=${SYSROOT} \				+	    --disable-multilib \				+            ${GCC_EXTRA_CONFIG} \				+	    ${GCC_SYSROOT_ARG_CORE} \				+	    --disable-nls \				+	    --enable-symvers=gnu \				+	    --enable-__cxa_atexit \				+            --enable-languages=c \				+            --enable-shared				+    fi				+				+    # HACK: we need to override SHLIB_LC from gcc/config/t-slibgcc-elf-ver or				+    #       gcc/config/t-libunwind so -lc is removed from the link for 				+    #       libgcc_s.so, as we do not have a target -lc yet.				+    #       This is not as ugly as it appears to be ;-) All symbols get resolved				+    #       during the glibc build, and we provide a proper libgcc_s.so for the				+    #       cross toolchain during the final gcc build.				+    #				+    #       As we cannot modify the source tree, nor override SHLIB_LC itself				+    #       during configure or make, we have to edit the resultant 				+    #       gcc/libgcc.mk itself to remove -lc from the link.				+    #       This causes us to have to jump through some hoops...				+    #				+    #       To produce libgcc.mk to edit we firstly require libiberty.a,				+    #       so we configure then build it.				+    #       Next we have to configure gcc, create libgcc.mk then edit it...				+    #       So much easier if we just edit the source tree, but hey...				+    if test '!' -f ${GCC_DIR}/gcc/BASE-VER; then				+	make configure-libiberty				+	make -C libiberty libiberty.a				+	make configure-gcc				+	make configure-libcpp				+	make all-libcpp				+    else				+	make configure-gcc				+	make configure-libcpp				+	make configure-build-libiberty				+	make all-libcpp				+	make all-build-libiberty				+    fi				+    make -C gcc libgcc.mk				+				+    if test '!' -f gcc/libgcc.mk-ORIG ; then cp -p gcc/libgcc.mk gcc/libgcc.mk-ORIG; fi				+    sed 's@-lc@@g' < gcc/libgcc.mk-ORIG > gcc/libgcc.mk				+				+    test "$CANADIAN_BUILD" = "" || make $PARALLELMFLAGS all-build-libiberty || true				+    make $PARALLELMFLAGS all-gcc 				+    make install-gcc				+				+    cd ..				+				+    test -x ${PREFIX}/bin/${TARGET}-gcc || abort Build failed during gcc-core 				+				+fi # GLIBC_ADDON_NPTL				 #---------------------------------------------------------				-echo Build glibc and linuxthreads				+echo Build glibc				 				 mkdir -p build-glibc; cd build-glibc				 				@@ -489,6 +644,16 @@				 # note: this is awkward, doesn't work well if you need more than one line in configparms				 echo ${GLIBC_CONFIGPARMS} > configparms				 				+if test '!' -z "${GLIBC_ADDON_NPTL}"; then				+    # Following configure tests fail while cross-compiling				+    echo "libc_cv_forced_unwind=yes" > config.cache				+    echo "libc_cv_c_cleanup=yes" >> config.cache				+    # The following is moot, currently you cannot build nptl for sparc64				+    case ${TARGET} in				+        sparc64* ) echo "libc_cv_sparc64_tls=yes" >> config.cache ;;				+    esac				+fi # GLIBC_ADDON_NPTL				+				 if test '!' -f Makefile; then				     # Configure with --prefix the way we want it on the target...				     # There are a whole lot of settings here.  You'll probably want				@@ -507,11 +672,11 @@				         ${GLIBC_DIR}/configure --prefix=/usr \				         --build=$BUILD --host=$TARGET \				         ${GLIBC_EXTRA_CONFIG} \				-        --enable-kernel=2.4.3 \				+        --enable-kernel=${GLIBC_MIN_KERNEL} \				         --without-cvs --disable-profile --disable-debug --without-gd \				-        --without-tls --without-__thread \				         $SHARED_MODE \				-        --enable-add-ons${GLIBC_ADDON_OPTIONS} --with-headers=$HEADERDIR				+        --enable-add-ons${GLIBC_ADDON_OPTIONS} --with-headers=$HEADERDIR \				+	--cache-file=config.cache				 fi				 				 if grep -l '^install-lib-all:' ${GLIBC_DIR}/Makerules > /dev/null; then				diff -urN crosstool-0.38.orig/patches/gcc-4.0.1/libiberty.patch crosstool-0.38/patches/gcc-4.0.1/libiberty.patch				--- crosstool-0.38.orig/patches/gcc-4.0.1/libiberty.patch	1970-01-01 01:00:00.000000000 +0100				+++ crosstool-0.38/patches/gcc-4.0.1/libiberty.patch	2005-08-05 22:16:02.000000000 +0200				@@ -0,0 +1,11 @@				+--- gcc-4.0.1.orig/gcc/Makefile.in	2005-04-04 21:45:13.000000000 +0200				++++ gcc-4.0.1/gcc/Makefile.in	2005-08-05 22:12:56.544994408 +0200				+@@ -757,7 +757,7 @@				+ 				+ # Build and host support libraries.				+ LIBIBERTY = ../libiberty/libiberty.a				+-BUILD_LIBIBERTY = ../$(build_subdir)/libiberty/libiberty.a				++BUILD_LIBIBERTY = ../libiberty/libiberty.a				+ 				+ # Dependencies on the intl and portability libraries.				+ LIBDEPS= $(CPPLIB) $(LIBIBERTY) $(LIBINTL_DEP) $(LIBICONV_DEP)											

相关资源