Update the toolchain build, per the latest in the standalone
authorEric Andersen <andersen@codepoet.org>
Wed, 1 Jan 2003 17:36:39 +0000 (17:36 -0000)
committerEric Andersen <andersen@codepoet.org>
Wed, 1 Jan 2003 17:36:39 +0000 (17:36 -0000)
toolchain builders
 -Erik

make/linux.mk
make/uclibc.mk
make/uclibc_toolchain.mk
make/user-mode-linux.mk

index 88a574aed5fee1f6b1118071e84754ffd3f918aa..849619e8f433570c2cf416f5c5ff8ac1eef1b1ec 100644 (file)
 #   sources/kernel-patches/031-lowlatency-fixes-5.bz2
 #   sources/kernel-patches/099-shutup.bz2
 #
-# these patched will all be applied by the patch-kernel.sh
+# these patches will all be applied by the patch-kernel.sh
 # script (which will also abort the build if it finds rejects)
 #  -Erik
 #
 #############################################################
 ifneq ($(filter $(TARGETS),linux),)
 
-LINUX_DIR=$(BUILD_DIR)/linux-2.4.20
-LINUX_FORMAT=bzImage
-#LINUX_FORMAT=zImage.prep
-LINUX_BINLOC=arch/$(ARCH)/boot/$(LINUX_FORMAT)
-#LINUX_BINLOC=arch/ppc/boot/images/$(LINUX_FORMAT)
-LINUX_KERNEL=$(BUILD_DIR)/buildroot-kernel
-LINUX_SOURCE=linux-2.4.20.tar.bz2
+LINUX_VERSION=2.4.20
+LINUX_DIR=$(BUILD_DIR)/linux-$(LINUX_VERSION)
+#LINUX_FORMAT=bzImage
+LINUX_FORMAT=zImage
+#LINUX_BINLOC=arch/$(ARCH)/boot/$(LINUX_FORMAT)
+LINUX_BINLOC=arch/ppc/boot/images/zImage.prep
+LINUX_SOURCE=linux-$(LINUX_VERSION).tar.bz2
 LINUX_SITE=http://ftp.us.kernel.org/pub/linux/kernel/v2.4
 LINUX_KCONFIG=$(SOURCE_DIR)/linux.config
-LINUX_VERSION=$(shell grep -s UTS_RELEASE $(LINUX_DIR)/include/linux/version.h | cut -f 2 -d \" ||  echo \"2.4.20\" )
+LINUX_KERNEL=$(BUILD_DIR)/buildroot-kernel
 
 $(DL_DIR)/$(LINUX_SOURCE):
         $(WGET) -P $(DL_DIR) $(LINUX_SITE)/$(LINUX_SOURCE)
 
-$(LINUX_DIR)/.dist: $(DL_DIR)/$(LINUX_SOURCE)
+$(LINUX_DIR)/.unpacked: $(DL_DIR)/$(LINUX_SOURCE)
        rm -rf $(LINUX_DIR)
        bzcat $(DL_DIR)/$(LINUX_SOURCE) | tar -C $(BUILD_DIR) -xvf -
        mkdir -p $(SOURCE_DIR)/kernel-patches
        $(SOURCE_DIR)/patch-kernel.sh $(LINUX_DIR) $(SOURCE_DIR)/kernel-patches
-       touch $(LINUX_DIR)/.dist
+       -(cd $(BUILD_DIR); ln -sf $(LINUX_DIR) linux)
+       touch $(LINUX_DIR)/.unpacked
 
 $(LINUX_KCONFIG):
        @if [ ! -f "$(LINUX_KCONFIG)" ] ; then \
@@ -50,7 +51,7 @@ $(LINUX_KCONFIG):
                sleep 5; \
        fi;
 
-$(LINUX_DIR)/.configured:  $(LINUX_DIR)/.dist  $(LINUX_KCONFIG)
+$(LINUX_DIR)/.configured:  $(LINUX_DIR)/.unpacked  $(LINUX_KCONFIG)
        #perl -i -p -e "s,^CROSS_COMPILE.*,\
        #       CROSS_COMPILE=$(STAGING_DIR)/bin/$(ARCH)-uclibc-,g;" \
        #       $(LINUX_DIR)/Makefile
@@ -90,13 +91,4 @@ linuxclean: clean
 linux-dirclean:
        rm -rf $(LINUX_DIR)
 
-#############################################################
-#
-# Setup the kernel headers, but don't compile anything for the target yet,
-# since we still need to build a cross-compiler to do that little task for
-# us...  Try to work around this little chicken-and-egg problem..
-#
-#############################################################
-linux_headers: $(LINUX_DIR)/.configured
-
 endif
index 753363b7b4c3ed46cece8912f33d2c581956b72e..99ecbbec6e3d973d976036b4cc9864616d7d456c 100644 (file)
@@ -53,6 +53,9 @@ ifeq ($(LINUX_DIR),)
 LINUX_DIR:=$(BUILD_DIR)/linux
 endif
 
+linux_headers: $(LINUX_DIR)/.configured
+
+
 $(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.unpacked
        perl -i -p -e 's,^CROSS=.*,TARGET_ARCH=$(ARCH)\nCC=$(HOSTCC),g' $(UCLIBC_DIR)/Rules.mak
        cp $(SOURCE_DIR)/uClibc.config $(UCLIBC_DIR)/.config
@@ -84,7 +87,7 @@ $(TARGET_DIR)/lib/libc.so.0: $(STAGING_DIR)/bin/$(ARCH)-uclibc-gcc
 $(TARGET_DIR)/usr/bin/ldd: $(TARGET_DIR)/lib/libc.so.0
        $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(TARGET_DIR) install_target_utils
 
-uclibc: $(LINUX_KERNEL) $(STAGING_DIR)/lib/libc.a $(TARGET_DIR)/lib/libc.so.0 $(TARGET_DIR)/usr/bin/ldd
+uclibc: linux_headers $(STAGING_DIR)/lib/libc.a $(TARGET_DIR)/lib/libc.so.0 $(TARGET_DIR)/usr/bin/ldd
 
 uclibc-clean:
        rm -f $(TARGET_DIR)/lib/libc.so.0
index dccd7369f812c4da785f076eb42aea25831932e1..279a099e5c565f9a96c1bab767993f1bc5847a36 100644 (file)
@@ -177,10 +177,39 @@ $(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked
        $(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) gcc-*.patch
        touch $(GCC_DIR)/.patched
 
+$(GCC_DIR)/.gcc_build_hacks: $(GCC_DIR)/.patched
+       #
+       # Hack things to use the correct shared lib loader
+       #
+       (cd $(GCC_DIR); set -e; export LIST=`grep -lr -- "-dynamic-linker.*\.so[\.0-9]*" *`;\
+               if [ -n "$$LIST" ] ; then \
+               perl -i -p -e "s,-dynamic-linker.*\.so[\.0-9]*},\
+                   -dynamic-linker /lib/ld-uClibc.so.0},;" $$LIST; fi);
+       #
+       # Prevent system glibc start files from leaking in uninvited...
+       #
+       perl -i -p -e "s,standard_startfile_prefix_1 = \".*,standard_startfile_prefix_1=\
+               \"$(STAGING_DIR)/lib/\";,;" $(GCC_DIR)/gcc/gcc.c;
+       perl -i -p -e "s,standard_startfile_prefix_2 = \".*,standard_startfile_prefix_2=\
+               \"$(STAGING_DIR)/usr/lib/\";,;" $(GCC_DIR)/gcc/gcc.c;
+       #
+       # Prevent system glibc include files from leaking in uninvited...
+       #
+       perl -i -p -e "s,^NATIVE_SYSTEM_HEADER_DIR.*,\
+               NATIVE_SYSTEM_HEADER_DIR=$(STAGING_DIR)/usr/include,;" $(GCC_DIR)/gcc/Makefile.in;
+       perl -i -p -e "s,^CROSS_SYSTEM_HEADER_DIR.*,\
+               CROSS_SYSTEM_HEADER_DIR=$(STAGING_DIR)/usr/include,;" $(GCC_DIR)/gcc/Makefile.in;
+       #
+       # Prevent gcc from using the unwind-dw2-fde-glibc code
+       #
+       perl -i -p -e "s,^#ifndef inhibit_libc,#define inhibit_libc\n\
+               #ifndef inhibit_libc,g;" $(GCC_DIR)/gcc/unwind-dw2-fde-glibc.c;
+       touch $(GCC_DIR)/.gcc_build_hacks
+
 # The --without-headers option stopped working with gcc 3.0 and has never been
 # # fixed, so we need to actually have working C library header files prior to
 # # the step or libgcc will not build...
-$(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.patched
+$(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.gcc_build_hacks
        mkdir -p $(GCC_BUILD_DIR1)
        (cd $(GCC_BUILD_DIR1); PATH=$(STAGING_DIR)/bin:$$PATH AR=$(ARCH)-uclibc-ar \
                RANLIB=$(ARCH)-uclibc-ranlib CC=$(HOSTCC) $(GCC_DIR)/configure \
@@ -190,10 +219,11 @@ $(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.patched
                --datadir=$(STAGING_DIR)/share --includedir=$(STAGING_DIR)/include \
                --libdir=$(STAGING_DIR)/lib --localstatedir=$(STAGING_DIR)/var \
                --mandir=$(STAGING_DIR)/man --infodir=$(STAGING_DIR)/info \
+               --with-local-prefix=$(STAGING_DIR)/usr/local \
+               --oldincludedir=$(STAGING_DIR)/usr/include \
                --enable-target-optspace --disable-nls --with-gnu-ld \
                --disable-shared --enable-languages=c --disable-__cxa_atexit \
                --program-prefix=$(ARCH)-uclibc-);
-       -perl -i -p -e "s,ac_cv_prog_cc_cross=no,ac_cv_prog_cc_cross=yes,g;" $(GCC_BUILD_DIR1)/config.cache
        touch $(GCC_BUILD_DIR1)/.configured
 
 $(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured
@@ -237,7 +267,7 @@ $(UCLIBC_DIR)/.unpacked: $(BUILD_DIR)/.setup $(DL_DIR)/$(UCLIBC_SOURCE)
        bzcat $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(BUILD_DIR) -xvf -
        touch $(UCLIBC_DIR)/.unpacked
 
-$(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.unpacked linux_headers
+$(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.unpacked $(BUILD_DIR)/linux/.configured
        perl -i -p -e 's,^CROSS=.*,TARGET_ARCH=$(ARCH)\nCROSS=$(TARGET_CROSS),g' \
                $(UCLIBC_DIR)/Rules.mak
        cp $(SOURCE_DIR)/uClibc.config $(UCLIBC_DIR)/.config
@@ -299,21 +329,7 @@ uclibc-dirclean:
 #
 #############################################################
 GCC_BUILD_DIR2:=$(BUILD_DIR)/gcc-final
-$(GCC_DIR)/.ldso_hacks: $(GCC_DIR)/.patched
-       #
-       # Hack things to use the correct shared lib loader
-       #
-       (cd $(GCC_DIR); set -e; export LIST=`grep -lr -- "-dynamic-linker.*\.so[\.0-9]*" *`;\
-               if [ -n "$$LIST" ] ; then \
-               perl -i -p -e "s,-dynamic-linker.*\.so[\.0-9]*},\
-                   -dynamic-linker /lib/ld-uClibc.so.0},;" $$LIST; fi);
-       #
-       # Prevent glibc start files from ever leaking in uninvited...
-       #
-       perl -i -p -e "s,standard_startfile_prefix_1 = \".*,standard_startfile_prefix_1=\
-               \"$(STAGING_DIR)/lib/\";,;" $(GCC_DIR)/gcc/gcc.c;
-       perl -i -p -e "s,standard_startfile_prefix_2 = \".*,standard_startfile_prefix_2=\
-               \"$(STAGING_DIR)/usr/lib/\";,;" $(GCC_DIR)/gcc/gcc.c;
+$(GCC_DIR)/.g++_build_hacks: $(GCC_DIR)/.patched
        #
        # Hack up the soname for libstdc++
        # 
@@ -334,14 +350,9 @@ $(GCC_DIR)/.ldso_hacks: $(GCC_DIR)/.patched
                $(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/bits/
        cp $(GCC_DIR)/libstdc++-v3/config/os/generic/bits/ctype_noninline.h \
                $(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/bits/
-       #
-       # Prevent gcc from using the unwind-dw2-fde-glibc code
-       #
-       perl -i -p -e "s,^#ifndef inhibit_libc,#define inhibit_libc\n\
-               #ifndef inhibit_libc,g;" $(GCC_DIR)/gcc/unwind-dw2-fde-glibc.c;
-       touch $(GCC_DIR)/.ldso_hacks
+       touch $(GCC_DIR)/.g++_build_hacks
 
-$(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.ldso_hacks
+$(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.g++_build_hacks
        mkdir -p $(GCC_BUILD_DIR2)
        (cd $(GCC_BUILD_DIR2); PATH=$(STAGING_DIR)/bin:$$PATH AR=$(ARCH)-uclibc-ar \
                RANLIB=$(ARCH)-uclibc-ranlib CC=$(HOSTCC) $(GCC_DIR)/configure \
@@ -351,10 +362,11 @@ $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.ldso_hacks
                --datadir=$(STAGING_DIR)/share --includedir=$(STAGING_DIR)/include \
                --libdir=$(STAGING_DIR)/lib --localstatedir=$(STAGING_DIR)/var \
                --mandir=$(STAGING_DIR)/man --infodir=$(STAGING_DIR)/info \
+               --with-local-prefix=$(STAGING_DIR)/usr/local \
+               --oldincludedir=$(STAGING_DIR)/usr/include \
                --enable-target-optspace --disable-nls --with-gnu-ld \
                --disable-shared --enable-languages=$(TARGET_LANGUAGES) --disable-__cxa_atexit \
                --program-prefix=$(ARCH)-uclibc-);
-       perl -i -p -e "s,ac_cv_prog_cc_cross=no,ac_cv_prog_cc_cross=yes,g;" $(GCC_BUILD_DIR2)/config.cache
        touch $(GCC_BUILD_DIR2)/.configured
 
 $(GCC_BUILD_DIR2)/.compiled: $(GCC_BUILD_DIR2)/.configured
index 09dd66f06e9fecc45b9d570e177a3e6fb998b971..ecdbd775c80d1acfcf1fb80094ec28b7c785a4b0 100644 (file)
@@ -5,67 +5,59 @@
 #############################################################
 ifneq ($(filter $(TARGETS),user-mode-linux),)
 
+LINUX_VERSION=2.4.19
+LINUX_DIR=$(BUILD_DIR)/linux-$(LINUX_VERSION)
+LINUX_SOURCE=linux-$(LINUX_VERSION).tar.bz2
+LINUX_SITE=http://ftp.us.kernel.org/pub/linux/kernel/v2.4
+LINUX_PATCH_1:=uml-patch-$(LINUX_VERSION)-5.bz2
+LINUX_PATCH_1_SITE:=http://telia.dl.sourceforge.net/sourceforge/user-mode-linux
+LINUX_KCONFIG=$(SOURCE_DIR)/linux-uml.config
 LINUX_KERNEL=$(BASE_DIR)/UMlinux
-UMLINUX_DIR=$(BUILD_DIR)/linux-2.4.19
-LINUX_DIR=$(UMLINUX_DIR)
-UMLINUX_SOURCE=linux-2.4.19.tar.bz2
-UMLINUX_SITE=http://ftp.us.kernel.org/pub/linux/kernel/v2.4
-UMLINUX_PATCH_1:=uml-patch-2.4.19-5.bz2
-UMLINUX_PATCH_1_SITE:=http://telia.dl.sourceforge.net/sourceforge/user-mode-linux
-UMLINUX_KCONFIG=$(SOURCE_DIR)/linux-uml.config
 
-$(DL_DIR)/$(UMLINUX_SOURCE):
-       $(WGET) -P $(DL_DIR) $(UMLINUX_SITE)/$(UMLINUX_SOURCE)
+$(DL_DIR)/$(LINUX_SOURCE):
+       $(WGET) -P $(DL_DIR) $(LINUX_SITE)/$(LINUX_SOURCE)
 
-$(DL_DIR)/$(UMLINUX_PATCH_1):
-       $(WGET) -P $(DL_DIR) $(UMLINUX_PATCH_1_SITE)/$(UMLINUX_PATCH_1)
+$(DL_DIR)/$(LINUX_PATCH_1):
+       $(WGET) -P $(DL_DIR) $(LINUX_PATCH_1_SITE)/$(LINUX_PATCH_1)
 
-user-mode-linux-source: $(DL_DIR)/$(UMLINUX_SOURCE) $(DL_DIR)/$(UMLINUX_PATCH_1)
+user-mode-linux-source: $(DL_DIR)/$(LINUX_SOURCE) $(DL_DIR)/$(LINUX_PATCH_1)
 
-$(UMLINUX_DIR)/.unpacked: $(DL_DIR)/$(UMLINUX_SOURCE) $(DL_DIR)/$(UMLINUX_PATCH_1)
-       bzcat $(DL_DIR)/$(UMLINUX_SOURCE) | tar -C $(BUILD_DIR) -xvf -
-       touch $(UMLINUX_DIR)/.unpacked
+$(LINUX_DIR)/.unpacked: $(DL_DIR)/$(LINUX_SOURCE) $(DL_DIR)/$(LINUX_PATCH_1)
+       bzcat $(DL_DIR)/$(LINUX_SOURCE) | tar -C $(BUILD_DIR) -xvf -
+       -(cd $(BUILD_DIR); ln -sf $(LINUX_DIR) linux)
+       touch $(LINUX_DIR)/.unpacked
 
-$(UMLINUX_DIR)/.patched: $(UMLINUX_DIR)/.unpacked
-       bzcat $(DL_DIR)/$(UMLINUX_PATCH_1) | patch -d $(UMLINUX_DIR) -p1
-       touch $(UMLINUX_DIR)/.patched
+$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
+       bzcat $(DL_DIR)/$(LINUX_PATCH_1) | patch -d $(LINUX_DIR) -p1
+       touch $(LINUX_DIR)/.patched
 
-$(UMLINUX_DIR)/.set_arch: $(UMLINUX_DIR)/.patched
-       perl -i -p -e "s/^ARCH :=.*/ARCH:=um/g;" $(UMLINUX_DIR)/Makefile
-       touch $(UMLINUX_DIR)/.set_arch
+$(LINUX_DIR)/.set_arch: $(LINUX_DIR)/.patched
+       perl -i -p -e "s/^ARCH :=.*/ARCH:=um/g;" $(LINUX_DIR)/Makefile
+       touch $(LINUX_DIR)/.set_arch
 
-$(UMLINUX_DIR)/.configured:  $(UMLINUX_DIR)/.set_arch  $(UMLINUX_KCONFIG)
-       cp $(UMLINUX_KCONFIG) $(UMLINUX_DIR)/.config
-       make -C $(UMLINUX_DIR) oldconfig include/linux/version.h
-       touch $(UMLINUX_DIR)/.configured
+$(LINUX_DIR)/.configured:  $(LINUX_DIR)/.set_arch  $(LINUX_KCONFIG)
+       cp $(LINUX_KCONFIG) $(LINUX_DIR)/.config
+       make -C $(LINUX_DIR) oldconfig include/linux/version.h
+       touch $(LINUX_DIR)/.configured
 
-$(UMLINUX_DIR)/.depend_done:  $(UMLINUX_DIR)/.configured
-       make -C $(UMLINUX_DIR) dep
-       touch $(UMLINUX_DIR)/.depend_done
+$(LINUX_DIR)/.depend_done:  $(LINUX_DIR)/.configured
+       make -C $(LINUX_DIR) dep
+       touch $(LINUX_DIR)/.depend_done
 
-$(UMLINUX_DIR)/linux: $(UMLINUX_DIR)/.depend_done
-       make -C $(UMLINUX_DIR) linux
+$(LINUX_DIR)/linux: $(LINUX_DIR)/.depend_done
+       make -C $(LINUX_DIR) linux
 
-$(LINUX_KERNEL): $(UMLINUX_DIR)/linux
-       cp -fa $(UMLINUX_DIR)/linux $(LINUX_KERNEL)
+$(LINUX_KERNEL): $(LINUX_DIR)/linux
+       cp -fa $(LINUX_DIR)/linux $(LINUX_KERNEL)
 
 user-mode-linux: $(LINUX_KERNEL)
 
 # Renamed so it is not cleaned by default on a make clean
 user-mode-linux_clean: clean
        rm -f $(LINUX_KERNEL)
-       -make -C $(UMLINUX_DIR) clean
+       -make -C $(LINUX_DIR) clean
 
 user-mode-linux-dirclean:
-       rm -rf $(UMLINUX_DIR)
-
-#############################################################
-#
-# Setup the kernel headers, but don't compile anything for the target yet,
-# since we still need to build a cross-compiler to do that little task for
-# us...  Try to work around this little chicken-and-egg problem..
-#
-#############################################################
-linux_headers: $(UMLINUX_DIR)/.configured
+       rm -rf $(LINUX_DIR)
 
 endif