From d632d42b34888f169a9394f2c5ce64ccca75a5cb Mon Sep 17 00:00:00 2001 From: Manuel Novoa III Date: Sat, 1 Nov 2003 05:34:41 +0000 Subject: Enable building soft float buildroot for gcc 3.3. Currently works for i386 (limited to 64 bit long double... same as double), arm (libfloat), mips, and mipsel. Enable cross compiling a native gcc 3.3 toolchain to run on the target. Misc rootfs cleanups... strip some things that weren't, eliminate duplicate libs, move openssl shared libs out of /lib, reduce size of libssl.so by dynamicly linking with libcrypto.so, fix dropbear compile on mips. --- make/autoconf.mk | 1 + make/automake.mk | 1 + make/bash.mk | 1 + make/binutils.mk | 29 +++++----- make/bison.mk | 1 + make/bridge.mk | 1 + make/busybox.mk | 8 +-- make/coreutils.mk | 2 + make/diffutils.mk | 1 + make/dropbear_sshd.mk | 10 ++-- make/ed.mk | 1 + make/file.mk | 2 + make/findutils.mk | 2 + make/flex.mk | 1 + make/gawk.mk | 2 + make/gcc-3.3.mk | 147 +++++++++++++++++++++++++++++++------------------- make/gdb.mk | 1 + make/grep.mk | 1 + make/libfloat.mk | 56 +++++++++++++++++++ make/libtool.mk | 2 + make/m4.mk | 2 + make/make.mk | 1 + make/ncurses.mk | 3 +- make/openssh.mk | 1 + make/openssl.mk | 24 ++++----- make/patch.mk | 1 + make/sed.mk | 1 + make/strace.mk | 2 + make/tar.mk | 1 + make/tinylogin.mk | 5 +- make/uclibc.mk | 26 +++++++-- make/zlib.mk | 6 +-- 32 files changed, 244 insertions(+), 99 deletions(-) create mode 100644 make/libfloat.mk (limited to 'make') diff --git a/make/autoconf.mk b/make/autoconf.mk index 2332f546a..8343160ae 100644 --- a/make/autoconf.mk +++ b/make/autoconf.mk @@ -22,6 +22,7 @@ $(AUTOCONF_DIR)/.unpacked: $(DL_DIR)/$(AUTOCONF_SOURCE) $(AUTOCONF_DIR)/.configured: $(AUTOCONF_DIR)/.unpacked (cd $(AUTOCONF_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) EMACS="no" \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/automake.mk b/make/automake.mk index 4231a9d8d..6ac66003a 100644 --- a/make/automake.mk +++ b/make/automake.mk @@ -22,6 +22,7 @@ $(AUTOMAKE_DIR)/.unpacked: $(DL_DIR)/$(AUTOMAKE_SOURCE) $(AUTOMAKE_DIR)/.configured: $(AUTOMAKE_DIR)/.unpacked (cd $(AUTOMAKE_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/bash.mk b/make/bash.mk index 21a31d060..c919a066f 100644 --- a/make/bash.mk +++ b/make/bash.mk @@ -25,6 +25,7 @@ $(BASH_DIR)/.unpacked: $(DL_DIR)/$(BASH_SOURCE) $(BASH_DIR)/.configured: $(BASH_DIR)/.unpacked (cd $(BASH_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) CC_FOR_BUILD=$(HOSTCC) \ + CFLAGS="$(TARGET_CFLAGS)" \ ac_cv_func_setvbuf_reversed=no \ bash_cv_have_mbstate_t=yes \ ./configure \ diff --git a/make/binutils.mk b/make/binutils.mk index ac2116a0a..c9de5593d 100644 --- a/make/binutils.mk +++ b/make/binutils.mk @@ -57,7 +57,8 @@ $(BINUTILS_DIR1)/.configured: $(BINUTILS_DIR)/.patched --with-sysroot=$(STAGING_DIR) \ --with-lib-path="$(STAGING_DIR)/usr/lib:$(STAGING_DIR)/lib" \ $(MULTILIB) \ - --program-prefix=$(ARCH)-uclibc-); + $(SOFT_FLOAT_CONFIG_OPTION) \ + --program-prefix=$(ARCH)-linux-); touch $(BINUTILS_DIR1)/.configured $(BINUTILS_DIR1)/binutils/objdump: $(BINUTILS_DIR1)/.configured @@ -74,12 +75,12 @@ $(STAGING_DIR)/$(GNU_TARGET_NAME)/bin/ld: $(BINUTILS_DIR1)/binutils/objdump for app in addr2line ar as c++filt gprof ld nm objcopy \ objdump ranlib readelf size strings strip ; \ do \ - if [ -x $(STAGING_DIR)/bin/$(ARCH)-uclibc-$${app} ] ; then \ + if [ -x $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} ] ; then \ (cd $(STAGING_DIR)/$(GNU_TARGET_NAME)/bin; \ - ln -fs ../../bin/$(ARCH)-uclibc-$${app} $${app}; \ + ln -fs ../../bin/$(ARCH)-linux-$${app} $${app}; \ ); \ (cd $(STAGING_DIR)/usr/bin; \ - ln -fs ../../bin/$(ARCH)-uclibc-$${app} $${app}; \ + ln -fs ../../bin/$(ARCH)-linux-$${app} $${app}; \ ); \ fi; \ done; @@ -122,15 +123,16 @@ $(BINUTILS_DIR2)/.configured: $(BINUTILS_DIR)/.patched mkdir -p $(TARGET_DIR)/usr/$(GNU_TARGET_NAME)/ (cd $(BINUTILS_DIR2); \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ CC_FOR_BUILD=$(HOSTCC) \ CXX_FOR_BUILD=$(HOSTCC) \ AR_FOR_TARGET=$(TARGET_CROSS)ar \ AS_FOR_TARGET=$(TARGET_CROSS)as \ LD_FOR_TARGET=$(TARGET_CROSS)ld \ NM_FOR_TARGET=$(TARGET_CROSS)nm \ - CC_FOR_TARGET=$(TARGET_CROSS)gcc \ - GCC_FOR_TARGET=$(TARGET_CROSS)gcc \ - CXX_FOR_TARGET=$(TARGET_CROSS)g++ \ + CC_FOR_TARGET=$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) \ + GCC_FOR_TARGET=$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) \ + CXX_FOR_TARGET=$(TARGET_CROSS)g++$(TARGET_SOFT_FLOAT) \ RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib \ $(BINUTILS_DIR)/configure \ --target=$(GNU_TARGET_NAME) \ @@ -140,6 +142,7 @@ $(BINUTILS_DIR2)/.configured: $(BINUTILS_DIR)/.patched --mandir=/usr/man \ --infodir=/usr/info \ $(MULTILIB) \ + $(SOFT_FLOAT_CONFIG_OPTION) \ ); touch $(BINUTILS_DIR2)/.configured @@ -151,9 +154,9 @@ $(BINUTILS_DIR2)/binutils/objdump: $(BINUTILS_DIR2)/.configured AS_FOR_TARGET=$(TARGET_CROSS)as \ LD_FOR_TARGET=$(TARGET_CROSS)ld \ NM_FOR_TARGET=$(TARGET_CROSS)nm \ - CC_FOR_TARGET=$(TARGET_CROSS)gcc \ - GCC_FOR_TARGET=$(TARGET_CROSS)gcc \ - CXX_FOR_TARGET=$(TARGET_CROSS)g++ \ + CC_FOR_TARGET=$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) \ + GCC_FOR_TARGET=$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) \ + CXX_FOR_TARGET=$(TARGET_CROSS)g++$(TARGET_SOFT_FLOAT) \ RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib touch -c $(BINUTILS_DIR2)/binutils/objdump @@ -165,9 +168,9 @@ $(TARGET_DIR)/usr/bin/ld: $(BINUTILS_DIR2)/binutils/objdump AS_FOR_TARGET=$(TARGET_CROSS)as \ LD_FOR_TARGET=$(TARGET_CROSS)ld \ NM_FOR_TARGET=$(TARGET_CROSS)nm \ - CC_FOR_TARGET=$(TARGET_CROSS)gcc \ - GCC_FOR_TARGET=$(TARGET_CROSS)gcc \ - CXX_FOR_TARGET=$(TARGET_CROSS)g++ \ + CC_FOR_TARGET=$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) \ + GCC_FOR_TARGET=$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) \ + CXX_FOR_TARGET=$(TARGET_CROSS)g++$(TARGET_SOFT_FLOAT) \ RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib \ prefix=/usr \ infodir=/usr/info \ diff --git a/make/bison.mk b/make/bison.mk index f1dbf4607..71a6d7788 100644 --- a/make/bison.mk +++ b/make/bison.mk @@ -22,6 +22,7 @@ $(BISON_DIR)/.unpacked: $(DL_DIR)/$(BISON_SOURCE) $(BISON_DIR)/.configured: $(BISON_DIR)/.unpacked (cd $(BISON_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ gt_cv_func_gnugettext2_libintl=yes \ ./configure \ --target=$(GNU_TARGET_NAME) \ diff --git a/make/bridge.mk b/make/bridge.mk index 0ecfa9c21..fca571ec1 100644 --- a/make/bridge.mk +++ b/make/bridge.mk @@ -19,6 +19,7 @@ $(BRIDGE_BUILD_DIR)/.unpacked: $(DL_DIR)/$(BRIDGE_SOURCE) $(BRIDGE_BUILD_DIR)/.configured: $(BRIDGE_BUILD_DIR)/.unpacked (cd $(BRIDGE_BUILD_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/busybox.mk b/make/busybox.mk index e6465e13c..d7b682b47 100644 --- a/make/busybox.mk +++ b/make/busybox.mk @@ -33,7 +33,7 @@ ifeq ($(USE_BUSYBOX_SNAPSHOT),true) ifeq ($(strip $(BUILD_WITH_LARGEFILE)),true) perl -i -p -e "s/^.*DOLFS.*/DOLFS=y/;" $(BUSYBOX_DIR)/.config endif - $(MAKE) CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_DIR) oldconfig + $(MAKE) CC=$(TARGET_CC) CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_DIR) oldconfig else # Not using snapshot cp $(BUSYBOX_CONFIG) $(BUSYBOX_DIR)/Config.h perl -i -p -e "s,^CROSS.*,CROSS=$(TARGET_CROSS),;" $(BUSYBOX_DIR)/Makefile @@ -47,10 +47,12 @@ endif busybox-unpack: $(BUSYBOX_DIR)/.configured $(BUSYBOX_DIR)/busybox: $(BUSYBOX_DIR)/.configured - $(MAKE) CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" -C $(BUSYBOX_DIR) + $(MAKE) CC=$(TARGET_CC) CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \ + -C $(BUSYBOX_DIR) $(TARGET_DIR)/bin/busybox: $(BUSYBOX_DIR)/busybox - $(MAKE) CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" -C $(BUSYBOX_DIR) install + $(MAKE) CC=$(TARGET_CC) CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \ + -C $(BUSYBOX_DIR) install # Just in case -chmod a+x $(TARGET_DIR)/usr/share/udhcpc/default.script diff --git a/make/coreutils.mk b/make/coreutils.mk index 0d1d723d9..5c4e28a28 100644 --- a/make/coreutils.mk +++ b/make/coreutils.mk @@ -24,6 +24,7 @@ $(COREUTILS_DIR)/.unpacked: $(DL_DIR)/$(COREUTILS_SOURCE) $(COREUTILS_DIR)/.configured: $(COREUTILS_DIR)/.unpacked (cd $(COREUTILS_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ @@ -65,6 +66,7 @@ $(TARGET_DIR)/$(COREUTILS_TARGET_BINARY): $(COREUTILS_DIR)/$(COREUTILS_BINARY) ln -fs test $(TARGET_DIR)/usr/bin/[ # gnu thinks chroot is in bin, debian thinks it's in sbin mv $(TARGET_DIR)/usr/bin/chroot $(TARGET_DIR)/usr/sbin/chroot + $(STRIP) $(TARGET_DIR)/usr/sbin/chroot > /dev/null 2>&1 rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc diff --git a/make/diffutils.mk b/make/diffutils.mk index 6ef49da66..823de91b3 100644 --- a/make/diffutils.mk +++ b/make/diffutils.mk @@ -22,6 +22,7 @@ $(DIFFUTILS_DIR)/.unpacked: $(DL_DIR)/$(DIFFUTILS_SOURCE) $(DIFFUTILS_DIR)/.configured: $(DIFFUTILS_DIR)/.unpacked (cd $(DIFFUTILS_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/dropbear_sshd.mk b/make/dropbear_sshd.mk index 98bad0f6e..9d7b7d791 100644 --- a/make/dropbear_sshd.mk +++ b/make/dropbear_sshd.mk @@ -18,12 +18,14 @@ dropbear_sshd-source: $(DL_DIR)/$(DROPBEAR_SSHD_SOURCE) $(DROPBEAR_SSHD_DIR)/.unpacked: $(DL_DIR)/$(DROPBEAR_SSHD_SOURCE) $(DROPBEAR_SSHD_CAT) $(DL_DIR)/$(DROPBEAR_SSHD_SOURCE) | tar -C $(BUILD_DIR) -xvf - + $(SOURCE_DIR)/patch-kernel.sh $(DROPBEAR_SSHD_DIR) $(SOURCE_DIR) dropbear-*.patch touch $(DROPBEAR_SSHD_DIR)/.unpacked $(DROPBEAR_SSHD_DIR)/.configured: $(DROPBEAR_SSHD_DIR)/.unpacked (cd $(DROPBEAR_SSHD_DIR); rm -rf config.cache; \ autoconf; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ @@ -44,17 +46,19 @@ $(DROPBEAR_SSHD_DIR)/.configured: $(DROPBEAR_SSHD_DIR)/.unpacked touch $(DROPBEAR_SSHD_DIR)/.configured $(DROPBEAR_SSHD_DIR)/$(DROPBEAR_SSHD_BINARY): $(DROPBEAR_SSHD_DIR)/.configured - $(MAKE) CC=$(TARGET_CC) -C $(DROPBEAR_SSHD_DIR) + $(MAKE) $(TARGET_CONFIGURE_OPTS) LD=$(TARGET_CC) -C $(DROPBEAR_SSHD_DIR) $(TARGET_DIR)/$(DROPBEAR_SSHD_TARGET_BINARY): $(DROPBEAR_SSHD_DIR)/$(DROPBEAR_SSHD_BINARY) - $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(DROPBEAR_SSHD_DIR) install + $(MAKE) DESTDIR=$(TARGET_DIR) $(TARGET_CONFIGURE_OPTS) LD=$(TARGET_CC) \ + -C $(DROPBEAR_SSHD_DIR) install rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc dropbear_sshd: uclibc zlib $(TARGET_DIR)/$(DROPBEAR_SSHD_TARGET_BINARY) dropbear_sshd-clean: - $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(DROPBEAR_SSHD_DIR) uninstall + $(MAKE) DESTDIR=$(TARGET_DIR) $(TARGET_CONFIGURE_OPTS) LD=$(TARGET_CC) \ + -C $(DROPBEAR_SSHD_DIR) uninstall -$(MAKE) -C $(DROPBEAR_SSHD_DIR) clean dropbear_sshd-dirclean: diff --git a/make/ed.mk b/make/ed.mk index c2754683c..de6c3cb25 100644 --- a/make/ed.mk +++ b/make/ed.mk @@ -27,6 +27,7 @@ $(ED_DIR)/.unpacked: $(DL_DIR)/$(ED_SOURCE) $(DL_DIR)/$(ED_PATCH) $(ED_DIR)/.configured: $(ED_DIR)/.unpacked (cd $(ED_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/file.mk b/make/file.mk index 53de3fbd3..471d92d71 100644 --- a/make/file.mk +++ b/make/file.mk @@ -23,6 +23,7 @@ $(FILE_DIR)/.unpacked: $(DL_DIR)/$(FILE_SOURCE) $(FILE_DIR)/.configured: $(FILE_DIR)/.unpacked (cd $(FILE_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ @@ -47,6 +48,7 @@ $(FILE_DIR)/$(FILE_BINARY): $(FILE_DIR)/.configured $(TARGET_DIR)/$(FILE_TARGET_BINARY): $(FILE_DIR)/$(FILE_BINARY) $(MAKE) $(TARGET_CONFIGURE_OPTS) DESTDIR=$(TARGET_DIR) -C $(FILE_DIR) install + -($(STRIP) $(TARGET_DIR)/usr/lib/libmagic.so.*.* > /dev/null 2>&1) rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc diff --git a/make/findutils.mk b/make/findutils.mk index 518b5771f..b7716b2c7 100644 --- a/make/findutils.mk +++ b/make/findutils.mk @@ -23,6 +23,7 @@ $(FINDUTILS_DIR)/.unpacked: $(DL_DIR)/$(FINDUTILS_SOURCE) $(FINDUTILS_DIR)/.configured: $(FINDUTILS_DIR)/.unpacked (cd $(FINDUTILS_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ac_cv_func_setvbuf_reversed=no \ ./configure \ --target=$(GNU_TARGET_NAME) \ @@ -52,6 +53,7 @@ findutils-target_binary: $(FINDUTILS_DIR)/$(FINDUTILS_BINARY) @if [ $(TARGET_DIR)/$(FINDUTILS_TARGET_BINARY) -ot $(FINDUTILS_DIR)/$(FINDUTILS_BINARY) ] ; then \ set -x; \ $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(FINDUTILS_DIR) install; \ + $(STRIP) $(TARGET_DIR)/usr/lib/locate/* > /dev/null 2>&1; \ rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc; fi; diff --git a/make/flex.mk b/make/flex.mk index 89855d76c..2dc944902 100644 --- a/make/flex.mk +++ b/make/flex.mk @@ -27,6 +27,7 @@ $(FLEX_DIR)/.unpacked: $(DL_DIR)/$(FLEX_SOURCE) $(DL_DIR)/$(FLEX_PATCH) $(FLEX_DIR)/.configured: $(FLEX_DIR)/.unpacked (cd $(FLEX_DIR); autoconf; rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/gawk.mk b/make/gawk.mk index da60945cf..f3a1a1d8e 100644 --- a/make/gawk.mk +++ b/make/gawk.mk @@ -22,6 +22,7 @@ $(GAWK_DIR)/.unpacked: $(DL_DIR)/$(GAWK_SOURCE) $(GAWK_DIR)/.configured: $(GAWK_DIR)/.unpacked (cd $(GAWK_DIR); rm -rf config.cache; autoconf; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ac_cv_func_getpgrp_void=yes \ ./configure \ --target=$(GNU_TARGET_NAME) \ @@ -49,6 +50,7 @@ $(TARGET_DIR)/$(GAWK_TARGET_BINARY): $(GAWK_DIR)/$(GAWK_BINARY) $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(GAWK_DIR) install rm -f $(TARGET_DIR)/usr/bin/gawk-* (cd $(TARGET_DIR)/usr/bin; ln -sf gawk awk) + $(STRIP) $(TARGET_DIR)/usr/lib/awk/* > /dev/null 2>&1 rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc diff --git a/make/gcc-3.3.mk b/make/gcc-3.3.mk index ab8e6b847..077e02a0a 100644 --- a/make/gcc-3.3.mk +++ b/make/gcc-3.3.mk @@ -66,6 +66,11 @@ $(GCC_DIR)/.unpacked: $(DL_DIR)/$(GCC_SOURCE) $(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked # Apply any files named gcc-*.patch from the source directory to gcc $(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) gcc-*.patch +ifneq ("$(strip $(TARGET_SOFT_FLOAT))","") +ifeq ("$(strip $(ARCH))","i386") + $(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) i386-gcc-soft-float.patch +endif +endif touch $(GCC_DIR)/.patched $(GCC_DIR)/.gcc3_3_build_hacks: $(GCC_DIR)/.patched @@ -111,8 +116,11 @@ $(GCC_DIR)/.gcc3_3_build_hacks: $(GCC_DIR)/.patched # # the step or libgcc will not build... $(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.gcc3_3_build_hacks mkdir -p $(GCC_BUILD_DIR1) + echo -e "#!/bin/sh\nexec $(GCC_BUILD_DIR1)/gcc/xgcc -B$(GCC_BUILD_DIR1)/gcc/ -B$(STAGING_DIR)/arm-linux/bin/ -B$(STAGING_DIR)/arm-linux/lib/ -isystem $(STAGING_DIR)/arm-linux/include $(TARGET_SOFT_FLOAT) \$$@" > $(GCC_BUILD_DIR1)/target_gcc + chmod a+x $(GCC_BUILD_DIR1)/target_gcc (cd $(GCC_BUILD_DIR1); PATH=$(TARGET_PATH) AR=$(TARGET_CROSS)ar \ RANLIB=$(TARGET_CROSS)ranlib CC=$(HOSTCC) \ + gcc_cv_as_hidden=no \ $(GCC_DIR)/configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_HOST_NAME) \ @@ -132,25 +140,39 @@ $(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.gcc3_3_build_hacks --oldincludedir=$(STAGING_DIR)/include $(MULTILIB) \ --enable-target-optspace $(DISABLE_NLS) --with-gnu-ld \ --disable-shared --enable-languages=c --disable-__cxa_atexit \ - $(EXTRA_GCC_CONFIG_OPTIONS) --program-prefix=$(ARCH)-uclibc-); + $(SOFT_FLOAT_CONFIG_OPTION) \ + $(EXTRA_GCC_CONFIG_OPTIONS) --program-prefix=$(ARCH)-linux-); touch $(GCC_BUILD_DIR1)/.configured $(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR1) \ - AR_FOR_TARGET=$(STAGING_DIR)/bin/$(ARCH)-uclibc-ar \ - RANLIB_FOR_TARGET=$(STAGING_DIR)/bin/$(ARCH)-uclibc-ranlib + AR_FOR_TARGET=$(STAGING_DIR)/bin/$(ARCH)-linux-ar \ + RANLIB_FOR_TARGET=$(STAGING_DIR)/bin/$(ARCH)-linux-ranlib \ + CC_FOR_TARGET=$(GCC_BUILD_DIR1)/target_gcc \ + GCC_FOR_TARGET=$(GCC_BUILD_DIR1)/target_gcc touch $(GCC_BUILD_DIR1)/.compiled -$(STAGING_DIR)/bin/$(ARCH)-uclibc-gcc: $(GCC_BUILD_DIR1)/.compiled +$(STAGING_DIR)/bin/$(ARCH)-linux-gcc: $(GCC_BUILD_DIR1)/.compiled PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR1) install; #Cleanup then mess when --program-prefix mysteriously fails - -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-cpp $(STAGING_DIR)/bin/$(ARCH)-uclibc-cpp - -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-gcc $(STAGING_DIR)/bin/$(ARCH)-uclibc-gcc + -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-cpp $(STAGING_DIR)/bin/$(ARCH)-linux-cpp + -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-gcc $(STAGING_DIR)/bin/$(ARCH)-linux-gcc + if [ -n "$(strip $(TARGET_SOFT_FLOAT))" ] ; then \ + for app in gcc c++ g++ ; do \ + if [ -x $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} ] ; then \ + (cd $(STAGING_DIR)/bin; \ + rm -f $(ARCH)-linux-$${app}$(TARGET_SOFT_FLOAT); \ + echo -e "#!/bin/sh\nexec $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} -msoft-float \$$@" > $(ARCH)-linux-$${app}$(TARGET_SOFT_FLOAT); \ + chmod a+x $(ARCH)-linux-$${app}$(TARGET_SOFT_FLOAT); \ + ); \ + fi; \ + done; \ + fi; \ rm -f $(STAGING_DIR)/bin/gccbug $(STAGING_DIR)/bin/gcov rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc \ $(STAGING_DIR)/share/locale -gcc3_3_initial: binutils uclibc-configured $(STAGING_DIR)/bin/$(ARCH)-uclibc-gcc +gcc3_3_initial: binutils uclibc-configured $(STAGING_DIR)/bin/$(ARCH)-linux-gcc gcc3_3_initial-clean: rm -rf $(GCC_BUILD_DIR1) @@ -159,8 +181,6 @@ gcc3_3_initial-clean: gcc3_3_initial-dirclean: rm -rf $(GCC_BUILD_DIR1) - - ############################################################# # # second pass compiler build. Build the compiler targeting @@ -181,9 +201,15 @@ $(GCC_DIR)/.g++_build_hacks: $(GCC_DIR)/.patched $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.g++_build_hacks mkdir -p $(GCC_BUILD_DIR2) + #echo -e "#!/bin/sh\nexec $(GCC_BUILD_DIR2)/gcc/g++ -B$(GCC_BUILD_DIR2)/gcc/ -B$(STAGING_DIR)/arm-linux/bin/ -B$(STAGING_DIR)/arm-linux/lib/ -isystem $(STAGING_DIR)/arm-linux/include $(TARGET_SOFT_FLOAT) \$$@" > $(GCC_BUILD_DIR2)/target_g++ + echo -e "#!/bin/sh\nexec $(GCC_BUILD_DIR2)/gcc/xgcc -B$(GCC_BUILD_DIR2)/gcc/ -B$(STAGING_DIR)/arm-linux/bin/ -B$(STAGING_DIR)/arm-linux/lib/ -isystem $(STAGING_DIR)/arm-linux/include $(TARGET_SOFT_FLOAT) \$$@" > $(GCC_BUILD_DIR2)/target_g++ + chmod a+x $(GCC_BUILD_DIR2)/target_g++ + echo -e "#!/bin/sh\nexec $(GCC_BUILD_DIR2)/gcc/xgcc -B$(GCC_BUILD_DIR2)/gcc/ -B$(STAGING_DIR)/arm-linux/bin/ -B$(STAGING_DIR)/arm-linux/lib/ -isystem $(STAGING_DIR)/arm-linux/include $(TARGET_SOFT_FLOAT) \$$@" > $(GCC_BUILD_DIR2)/target_gcc + chmod a+x $(GCC_BUILD_DIR2)/target_gcc (cd $(GCC_BUILD_DIR2); PATH=$(TARGET_PATH) AR=$(TARGET_CROSS)ar \ RANLIB=$(TARGET_CROSS)ranlib LD=$(TARGET_CROSS)ld \ NM=$(TARGET_CROSS)nm CC=$(HOSTCC) \ + gcc_cv_as_hidden=no \ $(GCC_DIR)/configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_HOST_NAME) \ @@ -207,15 +233,18 @@ $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.g++_build_hacks --with-gnu-ld --disable-__cxa_atexit \ --enable-languages=$(TARGET_LANGUAGES) \ $(EXTRA_GCC_CONFIG_OPTIONS) \ - --program-prefix=$(ARCH)-uclibc- \ + --program-prefix=$(ARCH)-linux- \ ); touch $(GCC_BUILD_DIR2)/.configured $(GCC_BUILD_DIR2)/.compiled: $(GCC_BUILD_DIR2)/.configured - PATH=$(TARGET_PATH) CC=$(HOSTCC) \ + PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR2) \ + CC=$(HOSTCC) \ AR_FOR_TARGET=$(TARGET_CROSS)ar RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib \ LD_FOR_TARGET=$(TARGET_CROSS)ld NM_FOR_TARGET=$(TARGET_CROSS)nm \ - CC_FOR_TARGET=$(TARGET_CROSS)gcc $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR2) + CC_FOR_TARGET=$(GCC_BUILD_DIR2)/target_gcc \ + GCC_FOR_TARGET=$(GCC_BUILD_DIR2)/target_gcc \ + CXX_FOR_TARGET=$(GCC_BUILD_DIR2)/target_g++ touch $(GCC_BUILD_DIR2)/.compiled $(GCC_BUILD_DIR2)/.installed: $(GCC_BUILD_DIR2)/.compiled $(STAGING_DIR)/lib/libc.a @@ -223,22 +252,33 @@ $(GCC_BUILD_DIR2)/.installed: $(GCC_BUILD_DIR2)/.compiled $(STAGING_DIR)/lib/lib -mv $(STAGING_DIR)/bin/gcc $(STAGING_DIR)/usr/bin; -mv $(STAGING_DIR)/bin/protoize $(STAGING_DIR)/usr/bin; -mv $(STAGING_DIR)/bin/unprotoize $(STAGING_DIR)/usr/bin; - -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-cpp $(STAGING_DIR)/bin/$(ARCH)-uclibc-cpp - -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-gcc $(STAGING_DIR)/bin/$(ARCH)-uclibc-gcc - -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-c++ $(STAGING_DIR)/bin/$(ARCH)-uclibc-c++ - -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-g++ $(STAGING_DIR)/bin/$(ARCH)-uclibc-g++ - -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-c++filt $(STAGING_DIR)/bin/$(ARCH)-uclibc-c++filt + -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-cpp $(STAGING_DIR)/bin/$(ARCH)-linux-cpp + -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-gcc $(STAGING_DIR)/bin/$(ARCH)-linux-gcc + -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-c++ $(STAGING_DIR)/bin/$(ARCH)-linux-c++ + -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-g++ $(STAGING_DIR)/bin/$(ARCH)-linux-g++ + -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-c++filt $(STAGING_DIR)/bin/$(ARCH)-linux-c++filt rm -f $(STAGING_DIR)/bin/cpp $(STAGING_DIR)/bin/gcov $(STAGING_DIR)/bin/*gccbug - rm -f $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-$(ARCH)-uclibc-* + rm -f $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-$(ARCH)-linux-* rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc \ $(STAGING_DIR)/share/locale # Strip the host binaries -strip --strip-all -R .note -R .comment $(STAGING_DIR)/bin/* + if [ -n "$(strip $(TARGET_SOFT_FLOAT))" ] ; then \ + for app in gcc c++ g++ ; do \ + if [ -x $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} ] ; then \ + (cd $(STAGING_DIR)/bin; \ + rm -f $(ARCH)-linux-$${app}$(TARGET_SOFT_FLOAT); \ + echo -e "#!/bin/sh\nexec $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} -msoft-float \$$@" > $(ARCH)-linux-$${app}$(TARGET_SOFT_FLOAT); \ + chmod a+x $(ARCH)-linux-$${app}$(TARGET_SOFT_FLOAT); \ + ); \ + fi; \ + done; \ + fi; \ set -e; \ for app in cc gcc c89 cpp c++ g++ ; do \ - if [ -x $(STAGING_DIR)/bin/$(ARCH)-uclibc-$${app} ] ; then \ + if [ -x $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} ] ; then \ (cd $(STAGING_DIR)/usr/bin; \ - ln -fs ../../bin/$(ARCH)-uclibc-$${app} $${app}; \ + ln -fs ../../bin/$(ARCH)-linux-$${app} $${app}; \ ); \ fi; \ done; @@ -250,6 +290,8 @@ $(TARGET_DIR)/lib/libstdc++.so.5.0.5: $(GCC_BUILD_DIR2)/.installed $(TARGET_DIR)/lib/libgcc_s.so.0.9.9: $(GCC_BUILD_DIR2)/.installed cp -a $(STAGING_DIR)/lib/libgcc_s.so* $(TARGET_DIR)/lib/ + # Enable applications to link with the shared ligbcc. + ln -sf $(STAGING_DIR)/lib/libgcc_s.so $(STAGING_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION)/libgcc.so ifeq ($(INSTALL_LIBSTDCPP),true) GCC_TARGETS= $(TARGET_DIR)/lib/libgcc_s.so.0.9.9 $(TARGET_DIR)/lib/libstdc++.so.5.0.5 @@ -259,7 +301,7 @@ endif endif -gcc3_3: binutils uclibc-configured gcc3_3_initial uclibc \ +gcc3_3: binutils uclibc-configured gcc3_3_initial $(LIBFLOAT_TARGET) uclibc \ $(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS) gcc3_3-clean: @@ -269,11 +311,6 @@ gcc3_3-clean: gcc3_3-dirclean: rm -rf $(GCC_BUILD_DIR2) - - - - - ############################################################# # # Next build target gcc compiler @@ -281,27 +318,7 @@ gcc3_3-dirclean: ############################################################# GCC_BUILD_DIR3:=$(BUILD_DIR)/gcc-3.3-target -ifeq ($(HOST_ARCH),$(ARCH)) -TARGET_GCC_ARGS=$(TARGET_CONFIGURE_OPTS) \ - AR_FOR_BUILD=ar \ - AS_FOR_BUILD=as \ - LD_FOR_BUILD=ld \ - NM_FOR_BUILD=nm \ - RANLIB_FOR_BUILD=ranlib \ - HOST_CC=$(HOSTCC) \ - CC_FOR_BUILD=$(HOSTCC) \ - GCC_FOR_BUILD=$(HOSTCC) \ - CXX_FOR_BUILD=$(HOSTCC) \ - AR_FOR_TARGET=$(TARGET_CROSS)ar \ - AS_FOR_TARGET=$(TARGET_CROSS)as \ - LD_FOR_TARGET=$(TARGET_CROSS)ld \ - NM_FOR_TARGET=$(TARGET_CROSS)nm \ - CC_FOR_TARGET=$(TARGET_CROSS)gcc \ - GCC_FOR_TARGET=$(TARGET_CROSS)gcc \ - CXX_FOR_TARGET=$(TARGET_CROSS)g++ \ - RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib -else -TARGET_GCC_ARGS=\ +TARGET_GCC_ARGS= $(TARGET_CONFIGURE_OPTS) \ AR_FOR_BUILD=ar \ AS_FOR_BUILD=as \ LD_FOR_BUILD=ld \ @@ -315,11 +332,13 @@ TARGET_GCC_ARGS=\ AS_FOR_TARGET=$(TARGET_CROSS)as \ LD_FOR_TARGET=$(TARGET_CROSS)ld \ NM_FOR_TARGET=$(TARGET_CROSS)nm \ - CC_FOR_TARGET=$(TARGET_CROSS)gcc \ - GCC_FOR_TARGET=$(TARGET_CROSS)gcc \ - CXX_FOR_TARGET=$(TARGET_CROSS)g++ \ + CC="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ + GCC="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ + CXX="$(TARGET_CROSS)g++$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ + CC_FOR_TARGET="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ + GCC_FOR_TARGET="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ + CXX_FOR_TARGET="$(TARGET_CROSS)g++$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib -endif # We need to unpack a pristine source tree to avoid some of # the previously applied hacks, which do not apply here... @@ -331,6 +350,9 @@ $(GCC_BUILD_DIR3)/.unpacked: $(DL_DIR)/$(GCC_SOURCE) $(GCC_BUILD_DIR3)/.patched: $(GCC_BUILD_DIR3)/.unpacked # Apply any files named gcc-*.patch from the source directory to gcc $(SOURCE_DIR)/patch-kernel.sh $(GCC_BUILD_DIR3) $(SOURCE_DIR) gcc-*.patch +ifeq ("$(strip $(ARCH))","i386") + $(SOURCE_DIR)/patch-kernel.sh $(GCC_BUILD_DIR3) $(SOURCE_DIR) i386-gcc-*.patch +endif touch $(GCC_BUILD_DIR3)/.patched $(GCC_BUILD_DIR3)/.gcc3_3_build_hacks: $(GCC_BUILD_DIR3)/.patched @@ -360,20 +382,23 @@ $(GCC_BUILD_DIR3)/.gcc3_3_build_hacks: $(GCC_BUILD_DIR3)/.patched $(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR3)/.gcc3_3_build_hacks mkdir -p $(GCC_BUILD_DIR3) - (cd $(GCC_BUILD_DIR3); ln -fs $(ARCH)-linux build-$(GNU_TARGET_NAME)) + #(cd $(GCC_BUILD_DIR3); ln -fs $(ARCH)-linux build-$(GNU_TARGET_NAME)) (cd $(GCC_BUILD_DIR3); \ $(TARGET_GCC_ARGS) \ + gcc_cv_as_hidden=no \ ./configure \ + --verbose \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ - --build=$(ARCH)-linux \ + --build=`./config.guess` \ --prefix=/usr \ --mandir=/usr/man \ --infodir=/usr/info \ --with-gxx-include-dir=/usr/include/c++/3.3 \ + --enable-target-optspace \ --enable-shared \ $(MULTILIB) \ - --enable-target-optspace $(DISABLE_NLS) \ + $(DISABLE_NLS) \ --with-gnu-ld --disable-__cxa_atexit \ --enable-languages=$(TARGET_LANGUAGES) \ $(EXTRA_GCC_CONFIG_OPTIONS) \ @@ -402,17 +427,27 @@ $(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled #-cp -a $(STAGING_DIR)/include/c++ $(TARGET_DIR)/usr/include/ -mv $(TARGET_DIR)/lib/*.a $(TARGET_DIR)/usr/lib/ -mv $(TARGET_DIR)/lib/*.la $(TARGET_DIR)/usr/lib/ - rm -f $(TARGET_DIR)/lib/libstdc++.so - -(cd $(TARGET_DIR)/usr/lib; ln -fs /lib/libstdc++.so.5.0.5 libstdc++.so) + rm -f $(TARGET_DIR)/lib/libstdc++.so* # A nasty hack to work around g++ adding -lgcc_eh to the link -(cd $(TARGET_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION)/ ; ln -s libgcc.a libgcc_eh.a) # Make sure gcc does not think we are cross compiling perl -i -p -e "s/^1/0/;" $(TARGET_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION)/specs -(cd $(TARGET_DIR)/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1) -(cd $(TARGET_DIR)/usr/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1) + -(cd $(TARGET_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION); $(STRIP) cc1 cc1plus collect2 > /dev/null 2>&1) + -(cd $(TARGET_DIR)/usr/lib; $(STRIP) libstdc++.so.*.*.* > /dev/null 2>&1) + -(cd $(TARGET_DIR)/lib; $(STRIP) libgcc_s.so.*.*.* > /dev/null 2>&1) + # rm -f $(TARGET_DIR)/usr/lib/*.la* rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc + # Work around problem of missing syslimits.h + cp -f $(STAGING_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION)/include/syslimits.h $(TARGET_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION)/include/ + # Enable applications to find the shared libgcc when linking (on target). + ln -sf $(TARGET_DIR)/lib/libgcc_s.so $(TARGET_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION)/libgcc.so + (cd $(TARGET_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION) ; ln -sf /lib/libgcc_s.so libgcc.so) + # These are in /lib, so... + rm -rf $(TARGET_DIR)/usr/lib/libgcc_s.so* touch -c $(TARGET_DIR)/usr/bin/gcc gcc3_3_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gcc diff --git a/make/gdb.mk b/make/gdb.mk index 7bff3399f..88bd6d693 100644 --- a/make/gdb.mk +++ b/make/gdb.mk @@ -21,6 +21,7 @@ $(GDB_DIR)/.unpacked: $(DL_DIR)/$(GDB_SOURCE) $(GDB_PATCH) $(GDB_DIR)/.configured: $(GDB_DIR)/.unpacked (cd $(GDB_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ac_cv_type_uintptr_t=yes \ gt_cv_func_gettext_libintl=yes \ ac_cv_func_dcgettext=yes \ diff --git a/make/grep.mk b/make/grep.mk index 7c205833c..449904382 100644 --- a/make/grep.mk +++ b/make/grep.mk @@ -22,6 +22,7 @@ $(GNUGREP_DIR)/.unpacked: $(DL_DIR)/$(GNUGREP_SOURCE) $(GNUGREP_DIR)/.configured: $(GNUGREP_DIR)/.unpacked (cd $(GNUGREP_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/libfloat.mk b/make/libfloat.mk new file mode 100644 index 000000000..97e1be1b5 --- /dev/null +++ b/make/libfloat.mk @@ -0,0 +1,56 @@ +############################################################# +# +# libfloat +# +############################################################# +LIBFLOAT_SOURCE:=libfloat_990616.orig.tar.gz +LIBFLOAT_PATCH:=libfloat_990616-3.diff.gz +LIBFLOAT_SITE:=http://ftp.debian.org/debian/pool/main/libf/libfloat +LIBFLOAT_CAT:=zcat +LIBFLOAT_DIR:=$(BUILD_DIR)/libfloat + +LIBFLOAT_TARGET= +ifneq ("$(strip $(TARGET_SOFT_FLOAT))","") +ifeq ("$(strip $(ARCH))","arm") +LIBFLOAT_TARGET+=$(STAGING_DIR)/lib/libfloat.so +endif +endif + +$(DL_DIR)/$(LIBFLOAT_SOURCE): + $(WGET) -P $(DL_DIR) $(LIBFLOAT_SITE)/$(LIBFLOAT_SOURCE) + +$(DL_DIR)/$(LIBFLOAT_PATCH): + $(WGET) -P $(DL_DIR) $(LIBFLOAT_SITE)/$(LIBFLOAT_PATCH) + +libfloat-source: $(DL_DIR)/$(LIBFLOAT_SOURCE) $(DL_DIR)/$(LIBFLOAT_PATCH) + +$(LIBFLOAT_DIR)/.unpacked: $(DL_DIR)/$(LIBFLOAT_SOURCE) $(DL_DIR)/$(LIBFLOAT_PATCH) + $(LIBFLOAT_CAT) $(DL_DIR)/$(LIBFLOAT_SOURCE) | tar -C $(BUILD_DIR) -xvf - + # Remove the binary files distributed with the the package. + make -C $(LIBFLOAT_DIR) clean + $(SOURCE_DIR)/patch-kernel.sh $(LIBFLOAT_DIR) $(DL_DIR) $(LIBFLOAT_PATCH) + $(SOURCE_DIR)/patch-kernel.sh $(LIBFLOAT_DIR) $(SOURCE_DIR) libfloat.patch + touch $(LIBFLOAT_DIR)/.unpacked + +$(LIBFLOAT_DIR)/libfloat.so.1: $(LIBFLOAT_DIR)/.unpacked \ + $(STAGING_DIR)/bin/$(ARCH)-linux-gcc + $(MAKE) CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld -C $(LIBFLOAT_DIR) + +$(STAGING_DIR)/lib/libfloat.so: $(LIBFLOAT_DIR)/libfloat.so.1 + cp -a $(LIBFLOAT_DIR)/libfloat.a $(STAGING_DIR)/lib/libfloat.a + cp -a $(LIBFLOAT_DIR)/libfloat.so.1 $(STAGING_DIR)/lib/libfloat.so.1 + (cd $(STAGING_DIR)/lib ; ln -sf libfloat.so.1 libfloat.so) + cp -a $(LIBFLOAT_DIR)/libfloat.a $(TARGET_DIR)/usr/lib/libfloat.a + cp -a $(LIBFLOAT_DIR)/libfloat.so.1 $(TARGET_DIR)/lib/libfloat.so.1 + $(STRIP) $(TARGET_DIR)/lib/libfloat.so.1 > /dev/null 2>&1 + (cd $(TARGET_DIR)/lib ; ln -sf libfloat.so.1 libfloat.so) + (cd $(TARGET_DIR)/usr/lib ; ln -sf /lib/libfloat.so libfloat.so) + +libfloat: $(STAGING_DIR)/lib/libfloat.so + +libfloat-clean: + -$(MAKE) -C $(LIBFLOAT_DIR) clean + +libfloat-dirclean: + rm -rf $(LIBFLOAT_DIR) + diff --git a/make/libtool.mk b/make/libtool.mk index 308d4338c..59ba780c6 100644 --- a/make/libtool.mk +++ b/make/libtool.mk @@ -22,6 +22,7 @@ $(LIBTOOL_DIR)/.unpacked: $(DL_DIR)/$(LIBTOOL_SOURCE) $(LIBTOOL_DIR)/.configured: $(LIBTOOL_DIR)/.unpacked (cd $(LIBTOOL_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ @@ -59,6 +60,7 @@ $(TARGET_DIR)/$(LIBTOOL_TARGET_BINARY): $(LIBTOOL_DIR)/$(LIBTOOL_BINARY) mandir=$(TARGET_DIR)/usr/man \ includedir=$(TARGET_DIR)/usr/include \ -C $(LIBTOOL_DIR) install; + $(STRIP) $(TARGET_DIR)//usr/lib/libltdl.so.*.*.* > /dev/null 2>&1 perl -pi -e "s,^CC.*,CC=\"/usr/bin/gcc\"," $(TARGET_DIR)/usr/bin/libtool perl -pi -e "s,^LD.*,LD=\"/usr/bin/ld\"," $(TARGET_DIR)/usr/bin/libtool rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ diff --git a/make/m4.mk b/make/m4.mk index 1ee543024..5a0988972 100644 --- a/make/m4.mk +++ b/make/m4.mk @@ -22,6 +22,7 @@ $(M4_DIR)/.unpacked: $(DL_DIR)/$(M4_SOURCE) $(M4_DIR)/.configured: $(M4_DIR)/.unpacked (cd $(M4_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ @@ -49,6 +50,7 @@ $(TARGET_DIR)/$(M4_TARGET_BINARY): $(M4_DIR)/src/$(M4_BINARY) mandir=$(TARGET_DIR)/usr/man \ includedir=$(TARGET_DIR)/usr/include \ -C $(M4_DIR) install; + $(STRIP) $(TARGET_DIR)/$(M4_TARGET_BINARY) > /dev/null 2>&1 rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc diff --git a/make/make.mk b/make/make.mk index 353d4a09c..07edd1ea9 100644 --- a/make/make.mk +++ b/make/make.mk @@ -22,6 +22,7 @@ $(GNUMAKE_DIR)/.unpacked: $(DL_DIR)/$(GNUMAKE_SOURCE) $(GNUMAKE_DIR)/.configured: $(GNUMAKE_DIR)/.unpacked (cd $(GNUMAKE_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/ncurses.mk b/make/ncurses.mk index c6cd23c77..d7b917e1c 100644 --- a/make/ncurses.mk +++ b/make/ncurses.mk @@ -5,7 +5,7 @@ # ############################################################# # Copyright (C) 2002 by Ken Restivo -# $Id: ncurses.mk,v 1.27 2003/09/03 07:18:14 mjn3 Exp $ +# $Id: ncurses.mk,v 1.28 2003/11/01 05:34:39 mjn3 Exp $ # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Library General Public License as @@ -41,6 +41,7 @@ $(NCURSES_DIR)/.configured: $(NCURSES_DIR)/.dist (cd $(NCURSES_DIR); rm -rf config.cache; \ BUILD_CC=$(TARGET_CC) HOSTCC=$(HOSTCC) \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/openssh.mk b/make/openssh.mk index 73a1b0dd6..8f37abd0c 100644 --- a/make/openssh.mk +++ b/make/openssh.mk @@ -21,6 +21,7 @@ $(OPENSSH_DIR)/.configured: $(OPENSSH_DIR)/.unpacked (cd $(OPENSSH_DIR); rm -rf config.cache; autoconf; \ $(TARGET_CONFIGURE_OPTS) \ LD=$(TARGET_CROSS)gcc \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/openssl.mk b/make/openssl.mk index b35bb3135..b5dc56721 100644 --- a/make/openssl.mk +++ b/make/openssl.mk @@ -16,6 +16,9 @@ $(DL_DIR)/$(OPENSSL_SOURCE): $(OPENSSL_DIR)/.unpacked: $(DL_DIR)/$(OPENSSL_SOURCE) $(OPENSSL_PATCH) gunzip -c $(DL_DIR)/$(OPENSSL_SOURCE) | tar -C $(BUILD_DIR) -xvf - cat $(OPENSSL_PATCH) | patch -p1 -d $(OPENSSL_DIR) + # sigh... we have to resort to this just to set a gcc flag. + perl -i -p -e 's,/CFLAG=,/CFLAG= $(TARGET_SOFT_FLOAT) ,g' \ + $(OPENSSL_DIR)/Configure touch $(OPENSSL_DIR)/.unpacked $(OPENSSL_DIR)/Makefile: $(OPENSSL_DIR)/.unpacked @@ -28,6 +31,9 @@ $(OPENSSL_DIR)/Makefile: $(OPENSSL_DIR)/.unpacked $(OPENSSL_DIR)/apps/openssl: $(OPENSSL_DIR)/Makefile $(MAKE) CC=$(TARGET_CC) -C $(OPENSSL_DIR) all build-shared + # Work around openssl build bug to link libssl.so with libcrypto.so. + -rm $(OPENSSL_DIR)/libssl.so.*.*.* + $(MAKE) CC=$(TARGET_CC) -C $(OPENSSL_DIR) do_linux-shared $(STAGING_DIR)/lib/libcrypto.a: $(OPENSSL_DIR)/apps/openssl $(MAKE) CC=$(TARGET_CC) INSTALL_PREFIX=$(STAGING_DIR) -C $(OPENSSL_DIR) install @@ -40,24 +46,18 @@ $(STAGING_DIR)/lib/libcrypto.a: $(OPENSSL_DIR)/apps/openssl (cd $(STAGING_DIR)/lib; ln -fs libssl.so.0.9.7 libssl.so) (cd $(STAGING_DIR)/lib; ln -fs libssl.so.0.9.7 libssl.so.0) -$(TARGET_DIR)/lib/libcrypto.so.0.9.7: $(STAGING_DIR)/lib/libcrypto.a - cp -fa $(STAGING_DIR)/lib/libcrypto.so* $(TARGET_DIR)/lib/ - cp -fa $(STAGING_DIR)/lib/libssl.so* $(TARGET_DIR)/lib/ +$(TARGET_DIR)/usr/lib/libcrypto.so.0.9.7: $(STAGING_DIR)/lib/libcrypto.a + cp -fa $(STAGING_DIR)/lib/libcrypto.so* $(TARGET_DIR)/usr/lib/ + cp -fa $(STAGING_DIR)/lib/libssl.so* $(TARGET_DIR)/usr/lib/ #cp -fa $(STAGING_DIR)/bin/openssl $(TARGET_DIR)/bin/ + -$(STRIP) --strip-unneeded $(TARGET_DIR)/usr/lib/libssl.so.0.9.7 + -$(STRIP) --strip-unneeded $(TARGET_DIR)/usr/lib/libcrypto.so.0.9.7 $(TARGET_DIR)/usr/lib/libssl.a: $(STAGING_DIR)/lib/libcrypto.a mkdir -p $(TARGET_DIR)/usr/include cp -a $(STAGING_DIR)/include/openssl $(TARGET_DIR)/usr/include/ cp -dpf $(STAGING_DIR)/lib/libssl.a $(TARGET_DIR)/usr/lib/ cp -dpf $(STAGING_DIR)/lib/libcrypto.a $(TARGET_DIR)/usr/lib/ - rm -f $(TARGET_DIR)/lib/libcrypto.so - rm -f $(TARGET_DIR)/lib/libssl.so - (cd $(TARGET_DIR)/usr/lib; \ - ln -fs /lib/libssl.so.0.9.7 libssl.so; \ - ln -fs /lib/libcrypto.so.0.9.7 libcrypto.so; \ - ) - -$(STRIP) --strip-unneeded $(TARGET_DIR)/lib/libssl.so.0.9.7 - -$(STRIP) --strip-unneeded $(TARGET_DIR)/lib/libcrypto.so.0.9.7 touch -c $(TARGET_DIR)/usr/lib/libssl.a openssl-headers: $(TARGET_DIR)/usr/lib/libssl.a @@ -71,5 +71,5 @@ openssl-clean: openssl-dirclean: rm -rf $(OPENSSL_DIR) -openssl: uclibc $(TARGET_DIR)/lib/libcrypto.so.0.9.7 +openssl: uclibc $(TARGET_DIR)/usr/lib/libcrypto.so.0.9.7 diff --git a/make/patch.mk b/make/patch.mk index 17fe5176f..dd5383f30 100644 --- a/make/patch.mk +++ b/make/patch.mk @@ -22,6 +22,7 @@ $(GNUPATCH_DIR)/.unpacked: $(DL_DIR)/$(GNUPATCH_SOURCE) $(GNUPATCH_DIR)/.configured: $(GNUPATCH_DIR)/.unpacked (cd $(GNUPATCH_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/sed.mk b/make/sed.mk index f7b3a137b..58f3221c4 100644 --- a/make/sed.mk +++ b/make/sed.mk @@ -22,6 +22,7 @@ $(SED_DIR)/.unpacked: $(DL_DIR)/$(SED_SOURCE) $(SED_DIR)/.configured: $(SED_DIR)/.unpacked (cd $(SED_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/strace.mk b/make/strace.mk index ef026d78c..f4be954c5 100644 --- a/make/strace.mk +++ b/make/strace.mk @@ -23,6 +23,7 @@ $(STRACE_DIR)/.unpacked: $(DL_DIR)/$(STRACE_SOURCE) $(STRACE_DIR)/.configured: $(STRACE_DIR)/.unpacked (cd $(STRACE_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ @@ -46,6 +47,7 @@ $(STRACE_DIR)/strace: $(STRACE_DIR)/.configured $(TARGET_DIR)/usr/bin/strace: $(STRACE_DIR)/strace install -c $(STRACE_DIR)/strace $(TARGET_DIR)/usr/bin/strace + $(STRIP) $(TARGET_DIR)/usr/bin/strace > /dev/null 2>&1 strace: uclibc $(TARGET_DIR)/usr/bin/strace diff --git a/make/tar.mk b/make/tar.mk index 0e1ea04eb..5e61a6b66 100644 --- a/make/tar.mk +++ b/make/tar.mk @@ -22,6 +22,7 @@ $(GNUTAR_DIR)/.unpacked: $(DL_DIR)/$(GNUTAR_SOURCE) $(GNUTAR_DIR)/.configured: $(GNUTAR_DIR)/.unpacked (cd $(GNUTAR_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ diff --git a/make/tinylogin.mk b/make/tinylogin.mk index 03a560285..d24987712 100644 --- a/make/tinylogin.mk +++ b/make/tinylogin.mk @@ -33,10 +33,11 @@ $(TINYLOGIN_DIR)/Config.h: $(DL_DIR)/$(TINYLOGIN_SOURCE) touch $(TINYLOGIN_DIR)/Config.h $(TINYLOGIN_DIR)/tinylogin: $(TINYLOGIN_DIR)/Config.h - $(MAKE) CROSS="$(TARGET_CROSS)" -C $(TINYLOGIN_DIR) + $(MAKE) CC=$(TARGET_CC) CROSS="$(TARGET_CROSS)" -C $(TINYLOGIN_DIR) $(TARGET_DIR)/bin/tinylogin: $(TINYLOGIN_DIR)/tinylogin - $(MAKE) CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" -C $(TINYLOGIN_DIR) install + $(MAKE) CC=$(TARGET_CC) CROSS="$(TARGET_CROSS)" \ + PREFIX="$(TARGET_DIR)" -C $(TINYLOGIN_DIR) install tinylogin: uclibc $(TARGET_DIR)/bin/tinylogin diff --git a/make/uclibc.mk b/make/uclibc.mk index db111ce75..e6ab1652a 100644 --- a/make/uclibc.mk +++ b/make/uclibc.mk @@ -44,10 +44,14 @@ endif perl -i -p -e 's,^SHARED_LIB_LOADER_PATH=.*,SHARED_LIB_LOADER_PATH=\"/lib\",g' \ $(UCLIBC_DIR)/.config perl -i -p -e 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y\nUCLIBC_HAS_LOCALE=n,g' \ - $(UCLIBC_DIR)/.config - perl -i -p -e 's,^GCC_BIN.*,GCC_BIN=$(STAGING_DIR)/bin/$(ARCH)-uclibc-gcc,g' \ + $(UCLIBC_DIR)/.conf + if [ -n "$(strip $(TARGET_SOFT_FLOAT))" ] ; then \ + perl -i -p -e 's,.*HAS_FPU.*,# HAS_FPU is not set\nUCLIBC_HAS_SOFT_FLOAT=y,g' \ + $(UCLIBC_DIR)/.config; \ + fi + perl -i -p -e 's,^GCC_BIN.*,GCC_BIN=$(STAGING_DIR)/bin/$(ARCH)-linux-gcc,g' \ $(UCLIBC_DIR)/extra/gcc-uClibc/Makefile - perl -i -p -e 's,^LD_BIN.*,LD_BIN=$(STAGING_DIR)/bin/$(ARCH)-uclibc-ld,g' \ + perl -i -p -e 's,^LD_BIN.*,LD_BIN=$(STAGING_DIR)/bin/$(ARCH)-linux-ld,g' \ $(UCLIBC_DIR)/extra/gcc-uClibc/Makefile $(MAKE) -C $(UCLIBC_DIR) oldconfig $(MAKE) -C $(UCLIBC_DIR) pregen @@ -55,7 +59,7 @@ endif $(MAKE) -C $(UCLIBC_DIR) install_dev; touch $(UCLIBC_DIR)/.configured -$(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured +$(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(LIBFLOAT_TARGET) $(MAKE) -C $(UCLIBC_DIR) $(STAGING_DIR)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a @@ -77,7 +81,7 @@ endif uclibc-configured: $(UCLIBC_DIR)/.configured -uclibc: $(STAGING_DIR)/bin/$(ARCH)-uclibc-gcc $(STAGING_DIR)/lib/libc.a \ +uclibc: $(STAGING_DIR)/bin/$(ARCH)-linux-gcc $(STAGING_DIR)/lib/libc.a \ $(UCLIBC_TARGETS) uclibc-clean: @@ -112,6 +116,18 @@ $(TARGET_DIR)/usr/lib/libc.a: $(STAGING_DIR)/lib/libc.a ln -fs /lib/libm.so.0 libm.so; \ ln -fs /lib/libpthread.so.0 libpthread.so; \ ln -fs /lib/libnsl.so.0 libnsl.so; \ + \ + ln -fs /lib/libthread_db.so.1 libthread_db.so; \ + rm -f ld-uClibc-0.9.21.so; \ + rm -f libcrypt-0.9.21.so; \ + rm -f libdl-0.9.21.so; \ + rm -f libm-0.9.21.so; \ + rm -f libnsl-0.9.21.so; \ + rm -f libpthread-0.9.21.so; \ + rm -f libresolv-0.9.21.so; \ + rm -f libuClibc-0.9.21.so; \ + rm -f libutil-0.9.21.so; \ + rm -f libthread_db-0.9.21.so; \ ) ifeq ($(USE_UCLIBC_TOOLCHAIN),true) diff --git a/make/zlib.mk b/make/zlib.mk index 7a23fb63e..901723e02 100644 --- a/make/zlib.mk +++ b/make/zlib.mk @@ -6,12 +6,10 @@ ZLIB_SOURCE=zlib-1.1.4.tar.bz2 ZLIB_SITE=http://aleron.dl.sourceforge.net/sourceforge/libpng ZLIB_DIR=$(BUILD_DIR)/zlib-1.1.4 +ZLIB_CFLAGS= $(TARGET_CFLAGS) -fPIC ifeq ($(strip $(BUILD_WITH_LARGEFILE)),true) -ZLIB_CFLAGS=-Os -g -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -else -ZLIB_CFLAGS=-Os -g +ZLIB_CFLAGS+= -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 endif -ZLIB_CFLAGS+=-fPIC $(DL_DIR)/$(ZLIB_SOURCE): $(WGET) -P $(DL_DIR) $(ZLIB_SITE)/$(ZLIB_SOURCE) -- cgit v1.2.3