From: Michael Tremer Date: Wed, 11 Jun 2008 09:23:38 +0000 (+0200) Subject: Merge branch 'ssp' X-Git-Tag: v3.0-alpha1~978 X-Git-Url: http://git.ipfire.org/?p=ipfire-3.x.git;a=commitdiff_plain;h=13770435e755ec2dc6e105461c88c4f784fc56f7 Merge branch 'ssp' Conflicts: .config-default lfs/adjust-toolchain lfs/bash lfs/binutils lfs/coreutils lfs/file lfs/gcc lfs/gettext lfs/glibc lfs/gzip lfs/libtool lfs/readline lfs/strip lfs/zlib make.sh tools/make-include --- 13770435e755ec2dc6e105461c88c4f784fc56f7 diff --cc .config-default index c878b3c47,c8b6395dd..3e585f033 --- a/.config-default +++ b/.config-default @@@ -41,21 -70,17 +70,21 @@@ #NICE=10 +############################################################################### +# Parallelism # ############################################################################### -# Jobs # -############################################################################### -# If you have got more than one processor you can advice the gcc to run more # +# If you have got more than one processor you can advice make to run more # # than one job a time. You also may want to adjust this when using distcc. # -# Default is count of cpus twice + 1. # +# Default is count of cpus twice + 1. (-jN) # +# Possible options: # +# -j [N] : N is the number of the parallel jobs. # +# -l N : Specify the max. load avg. for the system. # +# Read more: http://www.gnu.org/software/automake/manual/make/Parallel.html # ############################################################################### -#PARALLELISM=3 +#PARALLELISMFLAGS=-j3 - ############################################################################### + ############################################################################### # Distcc Hosts # ############################################################################### # Distcc lets you run some instances of gcc on other dedicated machines. # diff --cc lfs/adjust-toolchain index 438aef4e6,9409e1a82..0c9e4d72f --- a/lfs/adjust-toolchain +++ b/lfs/adjust-toolchain @@@ -71,10 -63,11 +63,10 @@@ ifeq "$(STAGE)" "base ln -sfv $(TOOLS_DIR)/bin/ld $(TOOLS_DIR)/$$(gcc -dumpmachine)/bin/ld gcc -dumpspecs | sed \ + -e "/^\*link:$$/{n;s,$$, -L/usr/lib,}" \ -e 's@$(TOOLS_DIR)$(LINKER)@$(LINKER)@g' \ - -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \ - -e '/\*cpp:/{n;s@$$@ -isystem /usr/include@}' > \ - `dirname $$(gcc --print-libgcc-file-name)`/specs + -e '/^\*cpp:$$/{n;s,$$, -isystem /usr/include,}' \ + > $$(dirname $$(gcc --print-libgcc-file-name))/myspecs - endif - + @$(POSTBUILD) diff --cc lfs/bash index ee1797061,aa5e18fa6..edf47ee40 --- a/lfs/bash +++ b/lfs/bash @@@ -37,7 -37,8 +37,8 @@@ TARGET = $(DIR_INFO)/$(STAGE_ORDER) # Top-level Rules ############################################################################### - objects = $(DL_FILE) $(THISAPP)-fixes-8.patch $(PKG_NAME)-doc-$(VER).tar.gz -objects = $(DL_FILE) $(THISAPP)-fixes-7.patch $(PKG_NAME)-doc-$(VER).tar.gz \ ++objects = $(DL_FILE) $(THISAPP)-fixes-8.patch $(PKG_NAME)-doc-$(VER).tar.gz \ + $(THISAPP)-arc4random-1.patch install : $(TARGET) @@@ -74,9 -74,11 +75,10 @@@ ifeq "$(STAGE)" "base cd $(DIR_APP) && tar -xvf $(DIR_DL)/$(PKG_NAME)-doc-$(VER).tar.gz cd $(DIR_APP) && sed -i "s|htmldir = @htmldir@|htmldir = /usr/share/doc/$(THISAPP)|" \ Makefile.in - cd $(DIR_APP) && patch -Np1 < $(DIR_PATCHES)/$(THISAPP)-fixes-7.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_PATCHES)/$(THISAPP)-arc4random-1.patch cd $(DIR_APP) && ./configure --prefix=/usr --bindir=/bin \ --without-bash-malloc --with-installed-readline - cd $(DIR_APP) && make -j $(PARALLELISM) + cd $(DIR_APP) && make $(PARALLELISMFLAGS) cd $(DIR_APP) && make install endif diff --cc lfs/binutils index 914b2b4ca,8ad8f753c..8f669bf7a --- a/lfs/binutils +++ b/lfs/binutils @@@ -46,8 -46,8 +46,10 @@@ endi ############################################################################### objects = $(DL_FILE) $(THISAPP)-configure-1.patch \ + $(THISAPP)-uClibc-1.patch \ - $(THISAPP)-ld_makefile.patch ++ $(THISAPP)-ld_makefile.patch \ + $(THISAPP)-pt_pax-1.patch \ + $(THISAPP)-lazy-1.patch install : $(TARGET) @@@ -67,102 -67,57 +69,86 @@@ $(TARGET) cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-configure-1.patch ifeq "$(STAGE)" "toolchain" - ifeq "$(firstword $(MAKEFILE_LIST))" "$(PKG_NAME)" - # - # Normal build - # - ifeq "$(PASS)" "1" - ifeq "$(MACHINE)" "$(MACHINE_REAL)" - cd $(DIR_SRC)/binutils-build && CC="gcc -B/usr/bin/" ../$(THISAPP)/configure \ - --prefix=$(TOOLS_DIR) \ - --disable-nls \ - --disable-werror - cd $(DIR_SRC)/binutils-build && make $(PARALLELISMFLAGS) - cd $(DIR_SRC)/binutils-build && make install - cd $(DIR_SRC)/binutils-build && make -C ld clean - cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=$(TOOLS_DIR)/lib - cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new $(TOOLS_DIR)/bin - else - # - # Cross build - # - cd $(DIR_SRC)/binutils-build && ../$(THISAPP)/configure \ - --prefix=$(TOOLS_DIR) \ - --build=${IFS_HOST} \ - --host=${IFS_TARGET} \ - --target=${IFS_TARGET} \ - --disable-nls \ - --enable-shared \ - --disable-multilib - cd $(DIR_SRC)/binutils-build && make configure-host + cd $(DIR_SRC)/binutils-build && \ + ../$(THISAPP)/configure \ + --target=$(IFS_TARGET) \ + --prefix=$(TOOLS_DIR) \ + --disable-nls \ + --disable-werror - cd $(DIR_SRC)/binutils-build && make -j $(PARALLELISM) + cd $(DIR_SRC)/binutils-build && make $(PARALLELISMFLAGS) cd $(DIR_SRC)/binutils-build && make install - endif + + cd $(TOOLS_DIR)/$(IFS_TARGET)/bin; \ + if [ "$(IFS_TARGET)" == "$$($(DIR_APP)/config.guess)" ]; then \ + for t in $$(ls -1); do \ + ln -sfv $${t} $(TOOLS_DIR)/bin/$(IFS_TARGET)-$${t}; \ + done; \ + fi endif ifeq "$(PASS)" "2" - cd $(DIR_SRC)/binutils-build && ../$(THISAPP)/configure \ - --prefix=$(TOOLS_DIR) \ - --disable-nls \ - --with-lib-path=$(TOOLS_DIR)/lib + cd $(DIR_SRC)/binutils-build && \ + CC="$(IFS_TARGET)-gcc -B$(TOOLS_DIR)/lib/" \ + AR=$(IFS_TARGET)-ar \ + RANLIB=$(IFS_TARGET)-ranlib \ + ../$(THISAPP)/configure \ + --prefix=$(TOOLS_DIR) \ + --disable-nls \ + --with-lib-path=$(TOOLS_DIR)/lib - cd $(DIR_SRC)/binutils-build && make -j $(PARALLELISM) + cd $(DIR_SRC)/binutils-build && make $(PARALLELISMFLAGS) cd $(DIR_SRC)/binutils-build && make install - + cd $(DIR_SRC)/binutils-build && make -C ld clean cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new $(TOOLS_DIR)/bin endif + endif - else - # - # Cross build - # - - cd $(DIR_SRC)/binutils-build && AR=ar AS=as ../$(THISAPP)/configure \ - --prefix=$(CTOOLS_DIR) \ - --host=${IFS_HOST} \ - --target=${IFS_TARGET} \ - --with-lib-path=$(TOOLS_DIR)/lib \ - --disable-nls \ - --enable-shared \ - --disable-multilib - cd $(DIR_SRC)/binutils-build && make configure-host - cd $(DIR_SRC)/binutils-build && make $(PARALLELISMFLAGS) - cd $(DIR_SRC)/binutils-build && make install - - -mkdir -p $(TOOLS_DIR)/include - cp -fv $(DIR_APP)/include/libiberty.h $(TOOLS_DIR)/include + ifeq "$(STAGE)" "base" + ifeq "$(PAX)" "1" + cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-pt_pax-1.patch + endif + cd $(DIR_SRC)/binutils-build && \ + CC="gcc -specs=$$(dirname $$(gcc --print-libgcc-file-name))/myspecs -B/usr/lib/ -B/usr/bin/" \ + ../$(THISAPP)/configure \ + --prefix=/usr \ + --enable-shared \ + --disable-werror - cd $(DIR_SRC)/binutils-build && make tooldir=/usr -j $(PARALLELISM) ++ cd $(DIR_SRC)/binutils-build && make tooldir=/usr $(PARALLELISMFLAGS) + cd $(DIR_SRC)/binutils-build && make tooldir=/usr install + + cp -fv ../$(THISAPP)/include/libiberty.h /usr/include endif +endif + +ifeq "$(STAGE)" "base" + cd $(DIR_SRC)/binutils-build && ../$(THISAPP)/configure --prefix=/usr \ + --enable-shared + cd $(DIR_SRC)/binutils-build && make tooldir=/usr $(PARALLELISMFLAGS) + cd $(DIR_SRC)/binutils-build && make tooldir=/usr install + + cp -fv ../$(THISAPP)/include/libiberty.h /usr/include +endif + +ifeq "$(STAGE)" "installer" + cd $(DIR_SRC)/binutils-build && ../$(THISAPP)/configure \ + --target=$(UCLIBC_TARGET) \ + --prefix=$(UCLIBC_DIR) \ + --with-sysroot=$(UCLIBC_SYSROOT_DIR) \ + --disable-multilib \ + --disable-werror \ + --disable-nls + cd $(DIR_SRC)/binutils-build && make $(PARALLELISMFLAGS) + cd $(DIR_SRC)/binutils-build && make install + + for t in ar as ld strip; do \ + ln -sfv $(UCLIBC_DIR)/bin/$(UCLIBC_TARGET)-$${t} \ + $(UCLIBC_CC_CORE_STATIC_DIR)/$(UCLIBC_TARGET)/bin/$${t}; \ + ln -sfv $(UCLIBC_DIR)/bin/$(UCLIBC_TARGET)-$${t} \ + $(UCLIBC_CC_CORE_STATIC_DIR)/bin/$(UCLIBC_TARGET)-$${t}; \ + done +endif @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build @$(POSTBUILD) diff --cc lfs/bison index ef9a7a0e5,c9df2810f..0d63945f5 --- a/lfs/bison +++ b/lfs/bison @@@ -50,12 -50,26 +50,26 @@@ $(objects) # Installation Details ############################################################################### -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) +$(TARGET) : @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + + ifeq "$(STAGE)" "toolchain" + cd $(DIR_APP) && ./configure --prefix=$(TOOLS_DIR) + cd $(DIR_APP) && make -j $(PARALLELISM) + cd $(DIR_APP) && make install + endif + + ifeq "$(STAGE)" "base" cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && echo '#define YYENABLE_NLS 1' >> config.h - cd $(DIR_APP) && make -j $(PARALLELISM) + cd $(DIR_APP) && make $(PARALLELISMFLAGS) cd $(DIR_APP) && make install + cd $(DIR_APP)/lib/ && \ + gcc -shared -Wl,-soname,liby.so.2.3 -o liby.so.2.3 -fPIC main.o yyerror.o + rm -fv /usr/lib/liby.a + cd $(DIR_APP)/lib/ && install -v liby.so.2.3 /usr/lib/liby.so.2.3 + ln -vsf liby.so.2.3 /usr/lib/liby.so + endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --cc lfs/ccache index 61461b487,6dd17c14d..5de649d35 --- a/lfs/ccache +++ b/lfs/ccache @@@ -58,19 -56,12 +58,20 @@@ ifeq "$(STAGE)" "toolchain @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -p0 < $(DIR_PATCHES)/$(THISAPP).patch cd $(DIR_APP) && CFLAGS="-O2 -static" ./configure --prefix=$(PREFIX) - cd $(DIR_APP) && make -j $(PARALLELISM) + cd $(DIR_APP) && make $(PARALLELISMFLAGS) cd $(DIR_APP) && make install - ln -sf ccache $(PREFIX)/bin/gcc - ln -sf ccache $(PREFIX)/bin/g++ - ln -sf ccache $(PREFIX)/bin/cc + for i in gcc g++ cc; do \ + ln -sf ccache $(PREFIX)/bin/$${i}; \ + ln -sf ccache $(PREFIX)/bin/$(IFS_TARGET)-$${i}; \ + done $(PREFIX)/bin/ccache -z @rm -rf $(DIR_APP) +endif + +ifeq "$(STAGE)" "installer" + ln -sf ccache $(PREFIX)/bin/$(UCLIBC_TARGET)-gcc + ln -sf ccache $(PREFIX)/bin/$(UCLIBC_TARGET)-g++ + ln -sf ccache $(PREFIX)/bin/$(UCLIBC_TARGET)-cc +endif + @$(POSTBUILD) diff --cc lfs/diffutils index e120c5c07,c259b80e2..3c9c93c14 --- a/lfs/diffutils +++ b/lfs/diffutils @@@ -62,9 -62,10 +62,10 @@@ endi ifeq "$(STAGE)" "base" cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-i18n-1.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-hardened_tmp-1.patch cd $(DIR_APP) && touch man/diff.1 cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make -j $(PARALLELISM) + cd $(DIR_APP) && make $(PARALLELISMFLAGS) cd $(DIR_APP) && make install endif diff --cc lfs/file index 95b92cdeb,0be34ce31..64ebe3a77 --- a/lfs/file +++ b/lfs/file @@@ -50,11 -50,11 +50,11 @@@ $(objects) # Installation Details ############################################################################### -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) +$(TARGET) : @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && ./configure --prefix=/usr --disable-static - cd $(DIR_APP) && make -j $(PARALLELISM) + cd $(DIR_APP) && make $(PARALLELISMFLAGS) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) @$(POSTBUILD) diff --cc lfs/flex index efee938c4,fe8b82149..c63da577d --- a/lfs/flex +++ b/lfs/flex @@@ -53,15 -53,25 +53,25 @@@ $(objects) # Installation Details ############################################################################### -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) +$(TARGET) : @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + + ifeq "$(STAGE)" "toolchain" + cd $(DIR_APP) && ./configure --prefix=$(TOOLS_DIR) + cd $(DIR_APP) && make -j $(PARALLELISM) + cd $(DIR_APP) && make install + endif + + ifeq "$(STAGE)" "base" cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make -j $(PARALLELISM) + cd $(DIR_APP) && make $(PARALLELISMFLAGS) cd $(DIR_APP) && make install ln -sfv libfl.a /usr/lib/libl.a - echo "#!/bin/sh" > /usr/bin/lex + echo "#!/bin/sh" > /usr/bin/lex echo "exec /usr/bin/flex -l \"$$@\"" >> /usr/bin/lex chmod 755 /usr/bin/lex + endif + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --cc lfs/gcc index 4b51f475e,64e290635..8c7442dae --- a/lfs/gcc +++ b/lfs/gcc @@@ -52,9 -48,10 +52,13 @@@ endi ############################################################################### objects = $(DL_FILE) \ + $(THISAPP)-cross_search_paths-1.patch \ + $(THISAPP)-specs-1.patch \ - $(THISAPP)-uClibc-1.patch ++ $(THISAPP)-uClibc-1.patch \ + $(THISAPP)-fstack_protector-1.patch \ + $(THISAPP)-strncat_chk-1.patch \ + $(THISAPP)-fortify_source-2.patch \ + $(THISAPP)-fpie-2.patch install : $(TARGET) @@@ -71,59 -68,32 +75,32 @@@ $(TARGET) @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -mkdir -v $(DIR_SRC)/gcc-build - + ifeq "$(STAGE)" "toolchain" - ifeq "$(firstword $(MAKEFILE_LIST))" "$(PKG_NAME)" - # - # Normal build - # - ifeq "$(PASS)" "1" - ifeq "$(MACHINE)" "$(MACHINE_REAL)" - cd $(DIR_SRC)/gcc-build && CC="gcc -B/usr/bin/" ../$(THISAPP)/configure \ - --prefix=$(TOOLS_DIR) \ - --with-local-prefix=$(TOOLS_DIR) \ - --disable-nls \ - --enable-shared \ - --enable-languages=c + ifeq "$(PIE)" "1" + ## Enable -fPIC by default + cd $(DIR_APP) && sed 's/^\(#define CC1_SPEC.*\)\("\)$$/\1 %{fno-pic|fpic|fPIC:;:-fPIC}\2/' \ + -i gcc/config/i386/linux.h + endif + cd $(DIR_SRC)/gcc-build && \ + ../$(THISAPP)/configure \ + --target=$(IFS_TARGET) \ + --prefix=$(TOOLS_DIR) \ + --enable-languages=c \ + --disable-shared \ + --disable-threads \ + --disable-multilib \ + --disable-libmudflap \ + --disable-libssp \ + --disable-libgomp \ + --disable-nls \ + --disable-werror - cd $(DIR_SRC)/gcc-build && make -j $(PARALLELISM) + cd $(DIR_SRC)/gcc-build && make $(PARALLELISMFLAGS) cd $(DIR_SRC)/gcc-build && make install - ln -vs gcc $(TOOLS_DIR)/bin/cc - else - # - # Cross build - # - cd $(DIR_APP) && sed -e "s,/tools,$(TOOLS_DIR),g" \ - < $(DIR_PATCHES)/$(THISAPP)-specs-1.patch | patch -Np1 - - cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-cross_search_paths-1.patch - - cd $(DIR_APP) && cp -v gcc/cppdefault.c{,.orig} - cd $(DIR_APP) && sed -e '/#define STANDARD_INCLUDE_DIR/s@"/usr/include"@0@g' \ - gcc/cppdefault.c.orig > gcc/cppdefault.c - - cd $(DIR_APP) && cp -v gcc/Makefile.in{,.orig} - cd $(DIR_APP) && sed -e 's@\(^NATIVE_SYSTEM_HEADER_DIR =\).*@\1 $(TOOLS_DIR)/include@g' \ - gcc/Makefile.in.orig > gcc/Makefile.in - - cd $(DIR_SRC)/gcc-build && ../$(THISAPP)/configure \ - --prefix=$(TOOLS_DIR) \ - --build=${IFS_HOST} \ - --host=${IFS_TARGET} \ - --target=${IFS_TARGET} \ - --with-local-prefix=$(TOOLS_DIR) \ - --enable-long-long \ - --enable-c99 \ - --enable-shared \ - --enable-threads=posix \ - --enable-__cxa_atexit \ - --disable-nls \ - --enable-languages=c,c++ \ - --disable-libstdcxx-pch - cd $(DIR_SRC)/gcc-build && make $(PARALLELISMFLAGS) AS_FOR_TARGET=$(AS) \ - LD_FOR_TARGET=$(LD) - cd $(DIR_SRC)/gcc-build && make install - endif + + ln -fvs gcc $(TOOLS_DIR)/bin/cc + ln -sfv libgcc.a $$($(IFS_TARGET)-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/') endif ifeq "$(PASS)" "2" @@@ -226,64 -160,16 +167,67 @@@ endi --enable-__cxa_atexit \ --enable-clocale=gnu \ --enable-languages=c,c++ \ - --disable-bootstrap + --disable-bootstrap \ + --disable-werror \ + --disable-libgomp + ## Libgomp was disabled here because it doesn't want to compile ## - cd $(DIR_SRC)/gcc-build && make -j $(PARALLELISM) + cd $(DIR_SRC)/gcc-build && make $(PARALLELISMFLAGS) cd $(DIR_SRC)/gcc-build && make install - + ln -sfv ../usr/bin/cpp /lib - ln -sfv gcc /usr/bin/cc + ln -sfv gcc /usr/bin/cc endif +ifeq "$(STAGE)" "installer" + cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-uClibc-1.patch +ifeq "$(PASS)" "1" + ### Copying headers to install area of bootstrap gcc, + # so it can build libgcc2 + mkdir -pv $(UCLIBC_CC_CORE_STATIC_DIR)/$(UCLIBC_TARGET)/include + cp -rfv $(UCLIBC_HEADERS_DIR)/* $(UCLIBC_CC_CORE_STATIC_DIR)/$(UCLIBC_TARGET)/include + + cd $(DIR_SRC)/gcc-build && CC_FOR_BUILD="$(HOST_GCC)" ../$(THISAPP)/configure \ + --target=$(UCLIBC_TARGET) \ + --prefix=$(UCLIBC_CC_CORE_STATIC_DIR) \ + --with-local-prefix=$(UCLIBC_SYSROOT_DIR) \ + --disable-multilib \ + --with-newlib \ + --with-sysroot=$(UCLIBC_SYSROOT_DIR) \ + --enable-__cxa_atexit \ + --disable-nls \ + --enable-threads=no \ + --enable-symvers=gnu \ + --enable-languages=c \ + --disable-shared \ + --enable-target-optspace + cd $(DIR_SRC)/gcc-build && make $(PARALLELISMFLAGS) all-gcc + cd $(DIR_SRC)/gcc-build && make install-gcc +endif + +ifeq "$(PASS)" "2" + cd $(DIR_SRC)/gcc-build && CC_FOR_BUILD="$(HOST_GCC)" ../$(THISAPP)/configure \ + --target=$(UCLIBC_TARGET) \ + --prefix=$(UCLIBC_DIR) \ + --with-local-prefix=$(UCLIBC_SYSROOT_DIR) \ + --disable-multilib \ + --with-sysroot=$(UCLIBC_SYSROOT_DIR) \ + --enable-__cxa_atexit \ + --disable-nls \ + --enable-threads=posix \ + --enable-symvers=gnu \ + --enable-c99 \ + --enable-long-long \ + --enable-languages=c,c++ \ + --enable-target-optspace \ + --enable-shared + cd $(DIR_SRC)/gcc-build && make $(PARALLELISMFLAGS) + cd $(DIR_SRC)/gcc-build && make install + + ln -svf $(UCLIBC_DIR)/bin/$(UCLIBC_TARGET)-gcc \ + $(UCLIBC_DIR)/bin/$(UCLIBC_TARGET)-cc + cp -vaf $(UCLIBC_DIR)/$(UCLIBC_TARGET)/lib/* $(UCLIBC_SYSROOT_DIR)/usr/lib +endif +endif + @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build @$(POSTBUILD) diff --cc lfs/gettext index bda468337,b366d84cf..66f00d02f --- a/lfs/gettext +++ b/lfs/gettext @@@ -62,8 -62,8 +62,8 @@@ ifeq "$(STAGE)" "toolchain endif ifeq "$(STAGE)" "base" - cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && ./configure --prefix=/usr --disable-static - cd $(DIR_APP) && make -j $(PARALLELISM) + cd $(DIR_APP) && make $(PARALLELISMFLAGS) cd $(DIR_APP) && make install endif diff --cc lfs/glibc index b84c620b0,c3e102734..bc74de697 --- a/lfs/glibc +++ b/lfs/glibc @@@ -62,20 -82,30 +82,30 @@@ $(TARGET) @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/glibc-build - ifeq "$(firstword $(MAKEFILE_LIST))" "$(PKG_NAME)" - # - # Normal build - # - ifeq "$(STAGE)" "toolchain" - cd $(DIR_SRC)/glibc-build && echo "CFLAGS += -march=$(MACHINE)" > configparms - cd $(DIR_SRC)/glibc-build && CFLAGS="$(CFLAGS)" ../$(THISAPP)/configure \ - --prefix=$(TOOLS_DIR) --disable-profile --enable-add-ons \ - --enable-kernel=2.6.0 --with-binutils=$(TOOLS_DIR)/bin \ - --without-gd --with-headers=$(TOOLS_DIR)/include \ - --without-selinux - + ifeq "$(MACHINE)" "i586" + cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-i586_chk-2.patch + endif + ifeq "$(PAX)" "1" + cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-pt_pax-1.patch + endif + cd $(DIR_SRC)/glibc-build && CFLAGS="-O2 -march=$(MACHINE) -pipe" \ + ../$(THISAPP)/configure \ + --prefix=$(TOOLS_DIR) \ + --host=$(IFS_TARGET) \ + --build=$(shell $(DIR_APP)/scripts/config.guess) \ + --disable-profile \ + --enable-add-ons \ + --enable-kernel=2.6.0 \ + --with-headers=$(TOOLS_DIR)/include \ + --without-selinux \ + --without-gd \ + --enable-bind-now \ + libc_cv_initfini_array=yes \ + libc_cv_forced_unwind=yes \ + libc_cv_c_cleanup=yes + #--with-binutils=$(TOOLS_DIR)/bin - cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=-j$(PARALLELISM) + cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(PARALLELISMFLAGS) -mkdir -v $(TOOLS_DIR)/etc touch $(TOOLS_DIR)/etc/ld.so.conf cd $(DIR_SRC)/glibc-build && make install @@@ -88,60 -124,85 +124,85 @@@ endi cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=$(LINKER) -o|' \ scripts/test-installation.pl cd $(DIR_APP) && sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in - cd $(DIR_SRC)/glibc-build && echo "CFLAGS += -march=$(MACHINE)" > configparms - cd $(DIR_SRC)/glibc-build && ../$(THISAPP)/configure --prefix=/usr \ - --disable-profile --enable-add-ons --enable-kernel=2.6.0 \ - --libexecdir=/usr/lib/glibc - + ifeq "$(PAX)" "1" + cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-pt_pax-1.patch + endif + cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-arc4_prng-1.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-strlcpy_strlcat-1.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-asprintf_reset2null-1.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-issetugid-1.patch + cd $(DIR_APP) && sed 's/#define UNSECURE_ENVVARS.*/&\ + "MUDFLAP_OPTIONS\\0" \\/' -i.orig sysdeps/generic/unsecvars.h + ifeq "$(SSP)" "1" + cd $(DIR_APP) && sed 's/-nostdlib/& -fno-stack-protector/g' -i.orig configure + cd $(DIR_APP) && sed 's/fstack-protector/&-all/' -i.orig nscd/Makefile + endif + ifeq "$(PIE)" "1" + cd $(DIR_APP) && sed 's/CFLAGS-ldconfig.c =/& -fno-PIC -fno-PIE/' \ + -i.orig elf/Makefile + endif + cd $(DIR_SRC)/glibc-build && \ + CFLAGS="-O2 -march=$(MACHINE) -pipe" \ + ../$(THISAPP)/configure $(CONFIGURE_ARGS) + ifeq "$(SSP)" "1" + ## First compile the libraries + echo "build-programs=no" >> $(DIR_SRC)/glibc-build/configparms + echo "CC = gcc -fPIC -fno-stack-protector -U_FORTIFY_SOURCE -nonow -nopie" \ + >> $(DIR_SRC)/glibc-build/configparms + echo "CXX = g++ -fPIC -fno-stack-protector -U_FORTIFY_SOURCE -nonow -nopie" \ + >> $(DIR_SRC)/glibc-build/configparms - cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=-j$(PARALLELISM) ++ cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(PARALLELISMFLAGS) + + ## Second compile the rest + @rm -f $(DIR_SRC)/glibc-build/configparms + echo "CC = gcc -fPIE -fstack-protector-all -D_FORTIFY_SOURCE=2" \ + >> $(DIR_SRC)/glibc-build/configparms + echo "CXX = g++ -fPIE -fstack-protector-all -D_FORTIFY_SOURCE=2" \ + >> $(DIR_SRC)/glibc-build/configparms + echo "CFLAGS-sln.c += -fno-PIC -fno-PIE" \ + >> $(DIR_SRC)/glibc-build/configparms + echo "+link = \$$(CC) -nostdlib -nostartfiles -fPIE -pie -o \$$@ \\" \ + >> $(DIR_SRC)/glibc-build/configparms + echo " \$$(sysdep-LDFLAGS) \$$(config-LDFLAGS) \$$(LDFLAGS) \$$(LDFLAGS-\$$(@F)) \\" \ + >> $(DIR_SRC)/glibc-build/configparms + echo " -Wl,-z,combreloc -Wl,-z,relro -Wl,-z,now \$$(hashstyle-LDFLAGS) \\" \ + >> $(DIR_SRC)/glibc-build/configparms + echo " \$$(addprefix \$$(csu-objpfx),S\$$(start-installed-name)) \\" \ + >> $(DIR_SRC)/glibc-build/configparms + echo " \$$(+preinit) `\$$(CC) --print-file-name=crtbeginS.o` \\" \ + >> $(DIR_SRC)/glibc-build/configparms + echo " \$$(filter-out \$$(addprefix \$$(csu-objpfx),start.o \\" \ + >> $(DIR_SRC)/glibc-build/configparms + echo " \$$(start-installed-name))\\" \ + >> $(DIR_SRC)/glibc-build/configparms + echo " \$$(+preinit) \$$(link-extra-libs) \\" \ + >> $(DIR_SRC)/glibc-build/configparms + echo " \$$(common-objpfx)libc% \$$(+postinit),\$$^) \\" \ + >> $(DIR_SRC)/glibc-build/configparms + echo " \$$(link-extra-libs) \$$(link-libc) `\$$(CC) --print-file-name=crtendS.o` \$$(+postinit)" \ + >> $(DIR_SRC)/glibc-build/configparms + endif + - cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=-j$(PARALLELISM) + cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(PARALLELISMFLAGS) touch /etc/ld.so.conf cd $(DIR_SRC)/glibc-build && make install - + + install -vd /usr/lib/static/ + mv -v /usr/lib/{libbsd-compat,libg,libieee,libmcheck}.a /usr/lib/static/ + mv -v /usr/lib/{libBrokenLocale,libanl,libcrypt}.a /usr/lib/static/ + mv -v /usr/lib/{libm,libnsl,libpthread,libresolv}.a /usr/lib/static/ + mv -v /usr/lib/{librpcsvc,librt,libutil}.a /usr/lib/static/ + # Locales - -mkdir -pv /usr/lib/locale - localedef -i de_DE -f UTF-8 de_DE.UTF-8 - localedef -i de_DE -f ISO-8859-1 de_DE - localedef -i en_US -f UTF-8 en_US.UTF-8 - localedef -i en_US -f ISO-8859-1 en_US - localedef -i en_GB -f UTF-8 en_GB.UTF-8 - localedef -i en_GB -f ISO-8859-1 en_GB - + cd $(DIR_SRC)/glibc-build && make localedata/install-locales + # Timezone cp -v --remove-destination /usr/share/zoneinfo/GMT /etc/localtime - endif - else - # - # Cross build - # - - cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-libgcc_eh-1.patch - cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-localedef_segfault-1.patch - cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-i586_chk-1.patch - - echo "libc_cv_forced_unwind=yes" > $(DIR_SRC)/glibc-build/config.cache - echo "libc_cv_c_cleanup=yes" >> $(DIR_SRC)/glibc-build/config.cache - - cd $(DIR_SRC)/glibc-build && BUILD_CC="gcc" \ - CC="$(IFS_TARGET)-gcc" \ - AR="$(IFS_TARGET)-ar" \ - RANLIB="$(IFS_TARGET)-ranlib" \ - CFLAGS="-march=$$(cut -d- -f1 <<< $(IFS_TARGET)) -mtune=generic -g -O2" \ - ../$(THISAPP)/configure \ - --prefix=$(TOOLS_DIR) \ - --host=${IFS_TARGET} \ - --build=$(IFS_HOST) \ - --disable-profile \ - --enable-add-ons \ - --with-tls \ - --enable-kernel=2.6.0 \ - --with-__thread \ - --with-binutils=$(CTOOLS_DIR)/bin \ - --with-headers=$(TOOLS_DIR)/include \ - --cache-file=config.cache - cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(PARALLELISMFLAGS) - cd $(DIR_SRC)/glibc-build && make install - + # Set up ld.so.conf + echo -e "# Begin /etc/ld.so.conf\n" >> /etc/ld.so.conf + echo -e "/usr/local/lib\n" >> /etc/ld.so.conf + echo "# End /etc/ld.so.conf" >> /etc/ld.so.conf endif @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build diff --cc lfs/gzip index 95da0104d,9db47e49e..5c66fe084 --- a/lfs/gzip +++ b/lfs/gzip @@@ -61,8 -61,13 +61,13 @@@ ifeq "$(STAGE)" "toolchain sed 's/futimens/gl_&/' $$file.orig > $$file; \ done + ifeq "$(PIE)" "1" + ## Don't use assembler code because this is not position independent. + cd $(DIR_APP) && DEFS=NO_ASM ./configure --prefix=$(TOOLS_DIR) + else cd $(DIR_APP) && ./configure --prefix=$(TOOLS_DIR) + cd $(DIR_APP) && make $(PARALLELISMFLAGS) + endif - cd $(DIR_APP) && make -j $(PARALLELISM) cd $(DIR_APP) && make install endif diff --cc lfs/libtool index f10f6a36d,c48244409..d2a6efcff --- a/lfs/libtool +++ b/lfs/libtool @@@ -50,11 -50,11 +50,11 @@@ $(objects) # Installation Details ############################################################################### -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) +$(TARGET) : @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && ./configure --prefix=/usr --disable-static - cd $(DIR_APP) && make -j $(PARALLELISM) + cd $(DIR_APP) && make $(PARALLELISMFLAGS) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) @$(POSTBUILD) diff --cc lfs/readline index edfc081c4,ec56e7a61..e985374b9 --- a/lfs/readline +++ b/lfs/readline @@@ -56,11 -56,10 +56,10 @@@ $(TARGET) cd $(DIR_APP) && sed -i '/MV.*old/d' Makefile.in cd $(DIR_APP) && sed -i '/{OLDSUFF}/c:' support/shlib-install cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-fixes-5.patch - - cd $(DIR_APP) && ./configure --prefix=/usr --libdir=/lib --disable-static - - cd $(DIR_APP) && make -j $(PARALLELISM) SHLIB_LIBS=-lncurses + +ifeq "$(STAGE)" "base" - cd $(DIR_APP) && ./configure --prefix=/usr --libdir=/lib - ++ cd $(DIR_APP) && ./configure --prefix=/usr --libdir=/lib --disable-static + cd $(DIR_APP) && make $(PARALLELISMFLAGS) SHLIB_LIBS=-lncurses cd $(DIR_APP) && make install mv -v /lib/lib{readline,history}.a /usr/lib diff --cc lfs/zlib index 2d9ebc476,a4712eca8..038a56e41 --- a/lfs/zlib +++ b/lfs/zlib @@@ -63,27 -62,6 +63,20 @@@ ifeq "$(STAGE)" "base rm -v /lib/libz.so ln -sfv ../../lib/libz.so.$(VER) /usr/lib/libz.so - - cd $(DIR_APP) && make clean - cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make $(PARALLELISMFLAGS) - cd $(DIR_APP) && make install -- - chmod -v 644 /usr/lib/libz.a +endif + +ifeq "$(STAGE)" "installer" + cd $(DIR_APP) && $(U_TOOLS) ./configure --prefix=/usr \ + --shared \ + --libdir=/lib + cd $(DIR_APP) && make $(PARALLELISMFLAGS) + cd $(DIR_APP) && install -v -m 644 zlib.h zconf.h \ + $(INSTALLER_DIR)/usr/include + cd $(DIR_APP) && install -v -m 755 libz.so.$(VER) \ + $(INSTALLER_DIR)/usr/lib + ln -svf libz.so.$(VER) $(INSTALLER_DIR)/usr/lib/libz.so.1 + ln -svf libz.so.$(VER) $(INSTALLER_DIR)/usr/lib/libz.so +endif + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --cc make.sh index e2929bcdb,8eabb6a0d..a62728442 --- a/make.sh +++ b/make.sh @@@ -22,11 -22,11 +22,11 @@@ ############################################################################ # -NAME="IPFire" # Software name -SNAME="ipfire" # Short name -VERSION="3.0-prealpha" # Version number +NAME="IPFire" # Software name +SNAME="ipfire" # Short name +VERSION="3.0-prealpha" # Version number - TOOLCHAINVERSION="${VERSION}-3" # Toolchain + TOOLCHAINVERSION="${VERSION}-4" # Toolchain -SLOGAN="www.ipfire.org" # Software slogan +SLOGAN="www.ipfire.org" # Software slogan # Include funtions . tools/make-include diff --cc tools/make-include index ac33deb49,9ed5c409f..bb5f5b2b3 --- a/tools/make-include +++ b/tools/make-include @@@ -31,8 -31,13 +31,13 @@@ KVER=`grep --max-count=1 VER lfs/linux MACHINE_REAL=`uname -m` GIT_TAG=$(git tag | tail -1) + # Security options + SSP=1 + PIE=1 + PAX=1 + # Parallelism flag -PARALLELISM=$(( $(grep processor < /proc/cpuinfo | wc -l) * 2 + 1 )) +PARALLELISMFLAGS=-j$(( $(grep processor < /proc/cpuinfo | wc -l) * 2 + 1 )) DISTCC_HOSTS=localhost PWD=`pwd` @@@ -679,10 -685,9 +711,10 @@@ prepareenv() unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD # Make some extra directories - mkdir -p $BASEDIR/build_${MACHINE}/{$TOOLS_DIR,$CTOOLS_DIR,cdrom} 2>/dev/null - mkdir -p $BASEDIR/build_${MACHINE}/{$TOOLS_DIR,$INSTALLER_DIR,cdrom,images} 2>/dev/null ++ mkdir -p $BASEDIR/build_${MACHINE}/{$TOOLS_DIR,cdrom} 2>/dev/null mkdir -p $BASEDIR/{cache,ccache,distcc} 2>/dev/null + mkdir -p $BASEDIR/cache/toolchains 2>/dev/null - mkdir -p $LFS/{$TOOLS_DIR/usr,$CTOOLS_DIR,usr/src} 2>/dev/null + mkdir -p $LFS/{$TOOLS_DIR/usr,usr/src} 2>/dev/null mkdir -p $LFS/dev/pts mkdir -p $LFS/proc mkdir -p $LFS/usr/src/{cache,config,doc,lfs,log_${MACHINE},src,ccache,distcc} @@@ -693,19 -698,20 +725,18 @@@ mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null # Make all sources and proc available under lfs build - mount --bind /dev $LFS/dev - mount --bind /proc $LFS/proc - mount --bind $BASEDIR/cache $LFS/usr/src/cache - mount --bind $BASEDIR/ccache $LFS/usr/src/ccache - mount --bind $BASEDIR/distcc $LFS/usr/src/distcc - mount --bind $BASEDIR/config $LFS/usr/src/config - mount --bind $BASEDIR/doc $LFS/usr/src/doc - mount --bind $BASEDIR/lfs $LFS/usr/src/lfs - mount --bind $BASEDIR/log_${MACHINE} $LFS/usr/src/log_${MACHINE} - mount --bind $BASEDIR/src $LFS/usr/src/src - mount --bind $BASEDIR/build_${MACHINE}/$TOOLS_DIR $LFS/$TOOLS_DIR - mount --bind $BASEDIR/build_${MACHINE}/$INSTALLER_DIR $LFS/$INSTALLER_DIR - mount --bind $BASEDIR/build_${MACHINE}/$CDROM_DIR $LFS/$CDROM_DIR - mount --bind $BASEDIR/build_${MACHINE}/$IMAGES_DIR $LFS/$IMAGES_DIR + mount --bind /dev $LFS/dev + mount --bind /proc $LFS/proc + mount --bind $BASEDIR/cache $LFS/usr/src/cache + mount --bind $BASEDIR/ccache $LFS/usr/src/ccache + mount --bind $BASEDIR/distcc $LFS/usr/src/distcc + mount --bind $BASEDIR/config $LFS/usr/src/config + mount --bind $BASEDIR/doc $LFS/usr/src/doc + mount --bind $BASEDIR/lfs $LFS/usr/src/lfs + mount --bind $BASEDIR/log_${MACHINE} $LFS/usr/src/log_${MACHINE} + mount --bind $BASEDIR/src $LFS/usr/src/src + mount --bind $BASEDIR/build_${MACHINE}/$TOOLS_DIR $LFS/$TOOLS_DIR - mount --bind $BASEDIR/build_${MACHINE}/$CTOOLS_DIR $LFS/$CTOOLS_DIR + mount --bind $BASEDIR/build_${MACHINE}/$CDROM_DIR $LFS/$CDROM_DIR # Run LFS static binary creation scripts one by one export CCACHE_DIR=$BASEDIR/ccache