]> git.ipfire.org Git - people/mlorenz/ipfire-2.x.git/blobdiff - lfs/gcc
Merge branch 'master' into next
[people/mlorenz/ipfire-2.x.git] / lfs / gcc
diff --git a/lfs/gcc b/lfs/gcc
index 9d836d4368d08006f599b420bd89027cdcfabee1..f04e2df8c071efc3fd1df6ac4a06673ec928e70f 100644 (file)
--- a/lfs/gcc
+++ b/lfs/gcc
@@ -41,6 +41,14 @@ CFLAGS    := $(patsubst -mfloat-abi=%,,$(CFLAGS))
 CFLAGS    := $(filter-out -fexceptions,$(CFLAGS))
 CXXFLAGS  := $(CFLAGS)
 
+ifeq "$(BUILD_ARCH)" "armv7hl"
+       FULL_BOOTSTRAP = 1
+endif
+
+ifeq "$(BUILD_ARCH)" "armv5tel"
+       FULL_BOOTSTRAP = 1
+endif
+
 # Normal build or /tools build.
 #
 ifeq "$(ROOT)" ""
@@ -73,6 +81,7 @@ ifeq "$(PASS)" "1"
        --disable-libatomic \
        --disable-libmudflap \
        --disable-libssp \
+       --disable-libmpx \
        --disable-libgomp \
        --disable-libquadmath \
        --disable-libstdc++-v3 \
@@ -96,21 +105,21 @@ ifeq "$(PASS)" "2"
        AR="$(CROSSTARGET)-ar" \
        RANLIB="$(CROSSTARGET)-ranlib"
   EXTRA_CONFIG = \
-       --host=$(BUILDTARGET) \
        --build=$(BUILDTARGET) \
-       --target=$(BUILDTARGET) \
        --prefix=/tools \
        --with-local-prefix=/tools \
        --with-native-system-header-dir=/tools/include \
-       --enable-clocale=gnu \
-       --enable-shared \
-       --enable-threads=posix \
-       --enable-__cxa_atexit \
        --enable-languages=c,c++ \
        --disable-libstdcxx-pch \
-       --enable-bootstrap
+       --disable-libgomp
   EXTRA_MAKE = 
   EXTRA_INSTALL = 
+
+  ifeq "$(FULL_BOOTSTRAP)" "1"
+       EXTRA_CONFIG += --enable-bootstrap
+  else
+       EXTRA_CONFIG += --disable-bootstrap
+  endif
 else
   # PASS=L # libstdc++-v3
   TARGET = $(DIR_INFO)/$(THISAPP)-libstdc++
@@ -133,24 +142,25 @@ endif
 endif
 endif
 
-ifeq "$(MACHINE)" "armv5tel"
+ifeq "$(BUILD_ARCH)" "armv7hl"
+       EXTRA_CONFIG += \
+               --with-float=hard
+endif
+
+ifeq "$(BUILD_ARCH)" "armv5tel"
        EXTRA_CONFIG += \
                --with-float=soft \
                --disable-sjlj-exceptions
 endif
 
-ifeq "$(MACHINE)" "i586"
+ifeq "$(BUILD_ARCH)" "i586"
        EXTRA_CONFIG += \
                --with-arch=i586 \
                --with-tune=generic
 endif
 
-ifeq "$(MACHINE)" "x86_64"
-       EXTRA_CONFIG += \
-               --disable-multilib
-endif
-
 EXTRA_CONFIG += \
+       --disable-multilib \
        --with-bugurl=http://bugtracker.ipfire.org \
        --disable-libunwind-exceptions \
        --enable-gnu-unique-object
@@ -207,7 +217,12 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        @mkdir $(DIR_SRC)/gcc-build
 
-ifneq "$(ROOT)" ""
+       cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in
+       cd $(DIR_APP) && sed -i gcc/Makefile.in \
+               -e 's@\./fixinc\.sh@-c true@' \
+               -e 's/^T_CFLAGS =$$/& -fomit-frame-pointer/'
+
+ifeq "$(TOOLCHAIN)" "1"
        # Build gmp and mpfr internally in toolchain.
        cd $(DIR_APP) && tar xfa $(DIR_DL)/gmp-$(GMP_VER).tar.bz2
        cd $(DIR_APP) && mv -v gmp-$(GMP_VER) gmp
@@ -216,23 +231,11 @@ ifneq "$(ROOT)" ""
        cd $(DIR_APP) && tar xfa $(DIR_DL)/mpc-$(MPC_VER).tar.gz
        cd $(DIR_APP) && mv -v mpc-$(MPC_VER) mpc
 
-ifeq    "$(PASS)" "1"
-       for file in $$(find $(DIR_APP)/gcc/config -name linux64.h -o -name linux.h \
-                       -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h -o -name aarch64-linux.h); do \
-               echo "Processing $${file}..."; \
-               sed -i $${file} \
-                       -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
-                       -e 's@/usr@/tools@g'; \
-               echo '#undef STANDARD_STARTFILE_PREFIX_1' >> $${file}; \
-               echo '#undef STANDARD_STARTFILE_PREFIX_2' >> $${file}; \
-               echo '#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"' >> $${file}; \
-               echo '#define STANDARD_STARTFILE_PREFIX_2 ""' >> $${file}; \
-       done
-endif
-
-ifeq    "$(PASS)" "2"
+ifeq "$(PASS)" "2"
        cd $(DIR_APP) && cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
                        `dirname $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name)`/include-fixed/limits.h
+endif
+
        for file in $$(find $(DIR_APP)/gcc/config -name linux64.h -o -name linux.h \
                        -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h -o -name aarch64-linux.h); do \
                echo "Processing $${file}..."; \
@@ -245,14 +248,8 @@ ifeq    "$(PASS)" "2"
                echo '#define STANDARD_STARTFILE_PREFIX_2 ""' >> $${file}; \
        done
 endif
-endif
-
-       cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in
-       cd $(DIR_APP) && sed -i gcc/Makefile.in \
-               -e 's@\./fixinc\.sh@-c true@' \
-               -e 's/^T_CFLAGS =$$/& -fomit-frame-pointer/'
 
-ifeq    "$(PASS)" "L"
+ifeq "$(PASS)" "L"
        # libstdc++ pass
        cd $(DIR_SRC)/gcc-build && \
                $(EXTRA_ENV) \
@@ -261,8 +258,6 @@ ifeq    "$(PASS)" "L"
        cd $(DIR_SRC)/gcc-build && make $(EXTRA_MAKE)
        cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install
 
-       # Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70936
-       sed -e "s/^#include_next/#include/" -i /tools/$(CROSSTARGET)/include/c++/$(VER)/cstdlib
 else
        # The actual build.
        cd $(DIR_SRC)/gcc-build && \
@@ -273,19 +268,28 @@ else
        cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install
 endif
 
-ifeq "$(ROOT)" ""
-       ln -svf ../usr/bin/cpp /lib
-       ln -svf gcc /usr/bin/cc
-       # remove gdb python files from libdir
-       rm -rf /usr/lib/*-gdb.py
-else
-ifeq    "$(PASS)" "1"
+ifeq "$(TOOLCHAIN)" "1"
+ ifeq "$(PASS)" "1"
        ln -svf libgcc.a $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/')
-else
+ endif
+
+ ifeq "$(PASS)" "2"
        ln -svf gcc /tools/bin/cc
        # remove gdb python files from libdir
        rm -rf /tools/lib/*-gdb.py
+ endif
+
+ ifeq "$(PASS)" "L"
+       # Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70936
+       sed -e "s/^#include_next/#include/" -i /tools/$(CROSSTARGET)/include/c++/$(VER)/cstdlib
+ endif
+
+else # NON-TOOLCHAIN
+       ln -svf ../usr/bin/cpp /lib
+       ln -svf gcc /usr/bin/cc
+       # remove gdb python files from libdir
+       rm -rf /usr/lib/*-gdb.py
 endif
-endif
+
        @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build
        @$(POSTBUILD)