Просмотр исходного кода

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.

Manuel Novoa III 22 лет назад
Родитель
Сommit
d632d42b34

+ 39 - 12
Makefile

@@ -31,6 +31,8 @@
 # What sortof target system shall we compile this for?
 # What sortof target system shall we compile this for?
 ARCH:=i386
 ARCH:=i386
 #ARCH:=arm
 #ARCH:=arm
+#ARCH:=mipsel
+#ARCH:=mips
 #ARCH:=powerpc
 #ARCH:=powerpc
 #ARCH:=whatever
 #ARCH:=whatever
 
 
@@ -64,9 +66,27 @@ OPTIMIZE_FOR_CPU=$(ARCH)
 #OPTIMIZE_FOR_CPU=strongarm
 #OPTIMIZE_FOR_CPU=strongarm
 #OPTIMIZE_FOR_CPU=whatever
 #OPTIMIZE_FOR_CPU=whatever
 
 
+# Soft floating point options.
+# Notes:
+#   Currently builds with gcc 3.3 for i386, arm, mips, mipsel.
+#   Only tested with multilib enabled.
+#   For i386, long double is the same as double (64 bits).  While this
+#      is unusual for x86, it seemed the best approach considering the
+#      limitations in the gcc floating point emulation library.
+#   For arm, soft float uses the usual libfloat routines.
+#   The uClibc built will support _only_ applications compiled with the
+#      -msoft-float flag.  To avoid CFLAGS problems, you may want to use
+#      scripts similar to those in the build*/staging_dir/bin directory.
+# Uncomment the next 2 lines to build a soft-float toolchain and rootfs.
+# SOFT_FLOAT_CONFIG_OPTION=--without-float
+# TARGET_SOFT_FLOAT=-msoft-float
+
+TARGET_OPTIMIZATION=-Os
+TARGET_DEBUGGING= #-g
+TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) $(TARGET_SOFT_FLOAT)
+
 # Any additional gcc options you may want to include....
 # Any additional gcc options you may want to include....
 EXTRA_GCC_CONFIG_OPTIONS=
 EXTRA_GCC_CONFIG_OPTIONS=
-#EXTRA_GCC_CONFIG_OPTIONS=--without-float
 
 
 # Enable the following if you want locale/gettext/i18n support.
 # Enable the following if you want locale/gettext/i18n support.
 #ENABLE_LOCALE:=true
 #ENABLE_LOCALE:=true
@@ -172,23 +192,32 @@ TARGETS+=ext2root
 # what you are doing.
 # what you are doing.
 #
 #
 #############################################################
 #############################################################
+ifeq ("$(strip $(TARGET_SOFT_FLOAT))","")
+ARCH_FPU_SUFFIX:=
+else
+ARCH_FPU_SUFFIX:=_nofpu
+endif
+
+
 HOSTCC:=gcc
 HOSTCC:=gcc
 BASE_DIR:=${shell pwd}
 BASE_DIR:=${shell pwd}
 SOURCE_DIR:=$(BASE_DIR)/sources
 SOURCE_DIR:=$(BASE_DIR)/sources
 DL_DIR:=$(SOURCE_DIR)/dl
 DL_DIR:=$(SOURCE_DIR)/dl
 PATCH_DIR=$(SOURCE_DIR)/patches
 PATCH_DIR=$(SOURCE_DIR)/patches
-BUILD_DIR:=$(BASE_DIR)/build_$(ARCH)
+BUILD_DIR:=$(BASE_DIR)/build_$(ARCH)$(ARCH_FPU_SUFFIX)
 TARGET_DIR:=$(BUILD_DIR)/root
 TARGET_DIR:=$(BUILD_DIR)/root
 STAGING_DIR=$(BUILD_DIR)/staging_dir
 STAGING_DIR=$(BUILD_DIR)/staging_dir
-TOOL_BUILD_DIR=$(BASE_DIR)/toolchain_build_$(ARCH)
+TOOL_BUILD_DIR=$(BASE_DIR)/toolchain_build_$(ARCH)$(ARCH_FPU_SUFFIX)
 TARGET_PATH=$(STAGING_DIR)/bin:/bin:/sbin:/usr/bin:/usr/sbin
 TARGET_PATH=$(STAGING_DIR)/bin:/bin:/sbin:/usr/bin:/usr/sbin
-TARGET_CROSS=$(STAGING_DIR)/bin/$(ARCH)-uclibc-
-TARGET_CC=$(TARGET_CROSS)gcc
+#TARGET_CROSS=$(STAGING_DIR)/bin/$(ARCH)-uclibc-
+TARGET_CROSS=$(STAGING_DIR)/bin/$(ARCH)-linux-
+TARGET_CC=$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT)
 STRIP=$(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note
 STRIP=$(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note
 #STRIP:=/bin/true
 #STRIP:=/bin/true
-IMAGE:=$(BASE_DIR)/root_fs_$(ARCH)
+IMAGE:=$(BASE_DIR)/root_fs_$(ARCH)$(ARCH_FPU_SUFFIX)
 GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux
 GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux
-KERNEL_CROSS=$(STAGING_DIR)/bin/$(ARCH)-uclibc-
+#KERNEL_CROSS=$(STAGING_DIR)/bin/$(ARCH)-uclibc-
+KERNEL_CROSS=$(STAGING_DIR)/bin/$(ARCH)-linux-
 HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \
 HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \
 	-e 's/sparc.*/sparc/' \
 	-e 's/sparc.*/sparc/' \
 	-e 's/arm.*/arm/g' \
 	-e 's/arm.*/arm/g' \
@@ -207,12 +236,10 @@ TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
 		AS=$(TARGET_CROSS)as \
 		AS=$(TARGET_CROSS)as \
 		LD=$(TARGET_CROSS)ld \
 		LD=$(TARGET_CROSS)ld \
 		NM=$(TARGET_CROSS)nm \
 		NM=$(TARGET_CROSS)nm \
-		CC=$(TARGET_CROSS)gcc \
-		GCC=$(TARGET_CROSS)gcc \
-		CXX=$(TARGET_CROSS)g++ \
+		CC=$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) \
+		GCC=$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) \
+		CXX=$(TARGET_CROSS)g++$(TARGET_SOFT_FLOAT) \
 		RANLIB=$(TARGET_CROSS)ranlib
 		RANLIB=$(TARGET_CROSS)ranlib
-#Directory in which to build the toolchain
-TOOL_BUILD_DIR=$(BASE_DIR)/toolchain_build_$(ARCH)
 ifeq ($(ENABLE_LOCALE),true)
 ifeq ($(ENABLE_LOCALE),true)
 DISABLE_NLS:=
 DISABLE_NLS:=
 else
 else

+ 1 - 0
make/autoconf.mk

@@ -22,6 +22,7 @@ $(AUTOCONF_DIR)/.unpacked: $(DL_DIR)/$(AUTOCONF_SOURCE)
 $(AUTOCONF_DIR)/.configured: $(AUTOCONF_DIR)/.unpacked
 $(AUTOCONF_DIR)/.configured: $(AUTOCONF_DIR)/.unpacked
 	(cd $(AUTOCONF_DIR); rm -rf config.cache; \
 	(cd $(AUTOCONF_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) EMACS="no" \
 		$(TARGET_CONFIGURE_OPTS) EMACS="no" \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 1 - 0
make/automake.mk

@@ -22,6 +22,7 @@ $(AUTOMAKE_DIR)/.unpacked: $(DL_DIR)/$(AUTOMAKE_SOURCE)
 $(AUTOMAKE_DIR)/.configured: $(AUTOMAKE_DIR)/.unpacked
 $(AUTOMAKE_DIR)/.configured: $(AUTOMAKE_DIR)/.unpacked
 	(cd $(AUTOMAKE_DIR); rm -rf config.cache; \
 	(cd $(AUTOMAKE_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 1 - 0
make/bash.mk

@@ -25,6 +25,7 @@ $(BASH_DIR)/.unpacked: $(DL_DIR)/$(BASH_SOURCE)
 $(BASH_DIR)/.configured: $(BASH_DIR)/.unpacked
 $(BASH_DIR)/.configured: $(BASH_DIR)/.unpacked
 	(cd $(BASH_DIR); rm -rf config.cache; \
 	(cd $(BASH_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) CC_FOR_BUILD=$(HOSTCC) \
 		$(TARGET_CONFIGURE_OPTS) CC_FOR_BUILD=$(HOSTCC) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		ac_cv_func_setvbuf_reversed=no \
 		ac_cv_func_setvbuf_reversed=no \
 		bash_cv_have_mbstate_t=yes \
 		bash_cv_have_mbstate_t=yes \
 		./configure \
 		./configure \

+ 16 - 13
make/binutils.mk

@@ -57,7 +57,8 @@ $(BINUTILS_DIR1)/.configured: $(BINUTILS_DIR)/.patched
 		--with-sysroot=$(STAGING_DIR) \
 		--with-sysroot=$(STAGING_DIR) \
 		--with-lib-path="$(STAGING_DIR)/usr/lib:$(STAGING_DIR)/lib" \
 		--with-lib-path="$(STAGING_DIR)/usr/lib:$(STAGING_DIR)/lib" \
 		$(MULTILIB) \
 		$(MULTILIB) \
-		--program-prefix=$(ARCH)-uclibc-);
+		$(SOFT_FLOAT_CONFIG_OPTION) \
+		--program-prefix=$(ARCH)-linux-);
 	touch $(BINUTILS_DIR1)/.configured
 	touch $(BINUTILS_DIR1)/.configured
 
 
 $(BINUTILS_DIR1)/binutils/objdump: $(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 \
 	for app in addr2line ar as c++filt gprof ld nm objcopy \
 		    objdump ranlib readelf size strings strip ; \
 		    objdump ranlib readelf size strings strip ; \
 	do \
 	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; \
 		    (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; \
 		    (cd $(STAGING_DIR)/usr/bin; \
-			ln -fs ../../bin/$(ARCH)-uclibc-$${app} $${app}; \
+			ln -fs ../../bin/$(ARCH)-linux-$${app} $${app}; \
 		    ); \
 		    ); \
 		fi; \
 		fi; \
 	done;
 	done;
@@ -122,15 +123,16 @@ $(BINUTILS_DIR2)/.configured: $(BINUTILS_DIR)/.patched
 	mkdir -p $(TARGET_DIR)/usr/$(GNU_TARGET_NAME)/
 	mkdir -p $(TARGET_DIR)/usr/$(GNU_TARGET_NAME)/
 	(cd $(BINUTILS_DIR2); \
 	(cd $(BINUTILS_DIR2); \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		CC_FOR_BUILD=$(HOSTCC) \
 		CC_FOR_BUILD=$(HOSTCC) \
 		CXX_FOR_BUILD=$(HOSTCC) \
 		CXX_FOR_BUILD=$(HOSTCC) \
 		AR_FOR_TARGET=$(TARGET_CROSS)ar \
 		AR_FOR_TARGET=$(TARGET_CROSS)ar \
 		AS_FOR_TARGET=$(TARGET_CROSS)as \
 		AS_FOR_TARGET=$(TARGET_CROSS)as \
 		LD_FOR_TARGET=$(TARGET_CROSS)ld \
 		LD_FOR_TARGET=$(TARGET_CROSS)ld \
 		NM_FOR_TARGET=$(TARGET_CROSS)nm \
 		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 \
 		RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib \
 		$(BINUTILS_DIR)/configure \
 		$(BINUTILS_DIR)/configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
@@ -140,6 +142,7 @@ $(BINUTILS_DIR2)/.configured: $(BINUTILS_DIR)/.patched
 		--mandir=/usr/man \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
 		--infodir=/usr/info \
 		$(MULTILIB) \
 		$(MULTILIB) \
+		$(SOFT_FLOAT_CONFIG_OPTION) \
 	);
 	);
 	touch $(BINUTILS_DIR2)/.configured
 	touch $(BINUTILS_DIR2)/.configured
 
 
@@ -151,9 +154,9 @@ $(BINUTILS_DIR2)/binutils/objdump: $(BINUTILS_DIR2)/.configured
 		AS_FOR_TARGET=$(TARGET_CROSS)as \
 		AS_FOR_TARGET=$(TARGET_CROSS)as \
 		LD_FOR_TARGET=$(TARGET_CROSS)ld \
 		LD_FOR_TARGET=$(TARGET_CROSS)ld \
 		NM_FOR_TARGET=$(TARGET_CROSS)nm \
 		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
 		RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib
 	touch -c $(BINUTILS_DIR2)/binutils/objdump
 	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 \
 		AS_FOR_TARGET=$(TARGET_CROSS)as \
 		LD_FOR_TARGET=$(TARGET_CROSS)ld \
 		LD_FOR_TARGET=$(TARGET_CROSS)ld \
 		NM_FOR_TARGET=$(TARGET_CROSS)nm \
 		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 \
 		RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib \
 		prefix=/usr \
 		prefix=/usr \
 		infodir=/usr/info \
 		infodir=/usr/info \

+ 1 - 0
make/bison.mk

@@ -22,6 +22,7 @@ $(BISON_DIR)/.unpacked: $(DL_DIR)/$(BISON_SOURCE)
 $(BISON_DIR)/.configured: $(BISON_DIR)/.unpacked
 $(BISON_DIR)/.configured: $(BISON_DIR)/.unpacked
 	(cd $(BISON_DIR); rm -rf config.cache; \
 	(cd $(BISON_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		gt_cv_func_gnugettext2_libintl=yes \
 		gt_cv_func_gnugettext2_libintl=yes \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \

+ 1 - 0
make/bridge.mk

@@ -19,6 +19,7 @@ $(BRIDGE_BUILD_DIR)/.unpacked: $(DL_DIR)/$(BRIDGE_SOURCE)
 $(BRIDGE_BUILD_DIR)/.configured: $(BRIDGE_BUILD_DIR)/.unpacked
 $(BRIDGE_BUILD_DIR)/.configured: $(BRIDGE_BUILD_DIR)/.unpacked
 	(cd $(BRIDGE_BUILD_DIR); rm -rf config.cache; \
 	(cd $(BRIDGE_BUILD_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 5 - 3
make/busybox.mk

@@ -33,7 +33,7 @@ ifeq ($(USE_BUSYBOX_SNAPSHOT),true)
 ifeq ($(strip $(BUILD_WITH_LARGEFILE)),true)
 ifeq ($(strip $(BUILD_WITH_LARGEFILE)),true)
 	perl -i -p -e "s/^.*DOLFS.*/DOLFS=y/;" $(BUSYBOX_DIR)/.config
 	perl -i -p -e "s/^.*DOLFS.*/DOLFS=y/;" $(BUSYBOX_DIR)/.config
 endif
 endif
-	$(MAKE) CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_DIR) oldconfig
+	$(MAKE) CC=$(TARGET_CC) CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_DIR) oldconfig
 else  # Not using snapshot
 else  # Not using snapshot
 	cp $(BUSYBOX_CONFIG) $(BUSYBOX_DIR)/Config.h
 	cp $(BUSYBOX_CONFIG) $(BUSYBOX_DIR)/Config.h
 	perl -i -p -e "s,^CROSS.*,CROSS=$(TARGET_CROSS),;" $(BUSYBOX_DIR)/Makefile
 	perl -i -p -e "s,^CROSS.*,CROSS=$(TARGET_CROSS),;" $(BUSYBOX_DIR)/Makefile
@@ -47,10 +47,12 @@ endif
 busybox-unpack: $(BUSYBOX_DIR)/.configured
 busybox-unpack: $(BUSYBOX_DIR)/.configured
 
 
 $(BUSYBOX_DIR)/busybox: $(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
 $(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
 	# Just in case
 	-chmod a+x $(TARGET_DIR)/usr/share/udhcpc/default.script
 	-chmod a+x $(TARGET_DIR)/usr/share/udhcpc/default.script
 
 

+ 2 - 0
make/coreutils.mk

@@ -24,6 +24,7 @@ $(COREUTILS_DIR)/.unpacked: $(DL_DIR)/$(COREUTILS_SOURCE)
 $(COREUTILS_DIR)/.configured: $(COREUTILS_DIR)/.unpacked
 $(COREUTILS_DIR)/.configured: $(COREUTILS_DIR)/.unpacked
 	(cd $(COREUTILS_DIR); rm -rf config.cache; \
 	(cd $(COREUTILS_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(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/[
 	ln -fs test $(TARGET_DIR)/usr/bin/[
 	# gnu thinks chroot is in bin, debian thinks it's in sbin
 	# gnu thinks chroot is in bin, debian thinks it's in sbin
 	mv $(TARGET_DIR)/usr/bin/chroot $(TARGET_DIR)/usr/sbin/chroot
 	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 \
 	rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 
 

+ 1 - 0
make/diffutils.mk

@@ -22,6 +22,7 @@ $(DIFFUTILS_DIR)/.unpacked: $(DL_DIR)/$(DIFFUTILS_SOURCE)
 $(DIFFUTILS_DIR)/.configured: $(DIFFUTILS_DIR)/.unpacked
 $(DIFFUTILS_DIR)/.configured: $(DIFFUTILS_DIR)/.unpacked
 	(cd $(DIFFUTILS_DIR); rm -rf config.cache; \
 	(cd $(DIFFUTILS_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 7 - 3
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_DIR)/.unpacked: $(DL_DIR)/$(DROPBEAR_SSHD_SOURCE)
 	$(DROPBEAR_SSHD_CAT) $(DL_DIR)/$(DROPBEAR_SSHD_SOURCE) | tar -C $(BUILD_DIR) -xvf -
 	$(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
 	touch $(DROPBEAR_SSHD_DIR)/.unpacked
 
 
 $(DROPBEAR_SSHD_DIR)/.configured: $(DROPBEAR_SSHD_DIR)/.unpacked
 $(DROPBEAR_SSHD_DIR)/.configured: $(DROPBEAR_SSHD_DIR)/.unpacked
 	(cd $(DROPBEAR_SSHD_DIR); rm -rf config.cache; \
 	(cd $(DROPBEAR_SSHD_DIR); rm -rf config.cache; \
 		autoconf; \
 		autoconf; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
@@ -44,17 +46,19 @@ $(DROPBEAR_SSHD_DIR)/.configured: $(DROPBEAR_SSHD_DIR)/.unpacked
 	touch  $(DROPBEAR_SSHD_DIR)/.configured
 	touch  $(DROPBEAR_SSHD_DIR)/.configured
 
 
 $(DROPBEAR_SSHD_DIR)/$(DROPBEAR_SSHD_BINARY): $(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)
 $(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 \
 	rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 
 
 dropbear_sshd: uclibc zlib $(TARGET_DIR)/$(DROPBEAR_SSHD_TARGET_BINARY)
 dropbear_sshd: uclibc zlib $(TARGET_DIR)/$(DROPBEAR_SSHD_TARGET_BINARY)
 
 
 dropbear_sshd-clean:
 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
 	-$(MAKE) -C $(DROPBEAR_SSHD_DIR) clean
 
 
 dropbear_sshd-dirclean:
 dropbear_sshd-dirclean:

+ 1 - 0
make/ed.mk

@@ -27,6 +27,7 @@ $(ED_DIR)/.unpacked: $(DL_DIR)/$(ED_SOURCE) $(DL_DIR)/$(ED_PATCH)
 $(ED_DIR)/.configured: $(ED_DIR)/.unpacked
 $(ED_DIR)/.configured: $(ED_DIR)/.unpacked
 	(cd $(ED_DIR); rm -rf config.cache; \
 	(cd $(ED_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 2 - 0
make/file.mk

@@ -23,6 +23,7 @@ $(FILE_DIR)/.unpacked: $(DL_DIR)/$(FILE_SOURCE)
 $(FILE_DIR)/.configured: $(FILE_DIR)/.unpacked
 $(FILE_DIR)/.configured: $(FILE_DIR)/.unpacked
 	(cd $(FILE_DIR); rm -rf config.cache; \
 	(cd $(FILE_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(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)
 $(TARGET_DIR)/$(FILE_TARGET_BINARY): $(FILE_DIR)/$(FILE_BINARY)
 	$(MAKE) $(TARGET_CONFIGURE_OPTS) DESTDIR=$(TARGET_DIR) -C $(FILE_DIR) install
 	$(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 \
 	rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 
 

+ 2 - 0
make/findutils.mk

@@ -23,6 +23,7 @@ $(FINDUTILS_DIR)/.unpacked: $(DL_DIR)/$(FINDUTILS_SOURCE)
 $(FINDUTILS_DIR)/.configured: $(FINDUTILS_DIR)/.unpacked
 $(FINDUTILS_DIR)/.configured: $(FINDUTILS_DIR)/.unpacked
 	(cd $(FINDUTILS_DIR); rm -rf config.cache; \
 	(cd $(FINDUTILS_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		ac_cv_func_setvbuf_reversed=no \
 		ac_cv_func_setvbuf_reversed=no \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--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 \
 	@if [ $(TARGET_DIR)/$(FINDUTILS_TARGET_BINARY) -ot $(FINDUTILS_DIR)/$(FINDUTILS_BINARY) ] ; then \
 	    set -x; \
 	    set -x; \
 	    $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(FINDUTILS_DIR) install; \
 	    $(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 \
 	    rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc; fi;
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc; fi;
 
 

+ 1 - 0
make/flex.mk

@@ -27,6 +27,7 @@ $(FLEX_DIR)/.unpacked: $(DL_DIR)/$(FLEX_SOURCE) $(DL_DIR)/$(FLEX_PATCH)
 $(FLEX_DIR)/.configured: $(FLEX_DIR)/.unpacked
 $(FLEX_DIR)/.configured: $(FLEX_DIR)/.unpacked
 	(cd $(FLEX_DIR); autoconf; rm -rf config.cache; \
 	(cd $(FLEX_DIR); autoconf; rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 2 - 0
make/gawk.mk

@@ -22,6 +22,7 @@ $(GAWK_DIR)/.unpacked: $(DL_DIR)/$(GAWK_SOURCE)
 $(GAWK_DIR)/.configured: $(GAWK_DIR)/.unpacked
 $(GAWK_DIR)/.configured: $(GAWK_DIR)/.unpacked
 	(cd $(GAWK_DIR); rm -rf config.cache; autoconf; \
 	(cd $(GAWK_DIR); rm -rf config.cache; autoconf; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		ac_cv_func_getpgrp_void=yes \
 		ac_cv_func_getpgrp_void=yes \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--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
 	$(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(GAWK_DIR) install
 	rm -f $(TARGET_DIR)/usr/bin/gawk-*
 	rm -f $(TARGET_DIR)/usr/bin/gawk-*
 	(cd $(TARGET_DIR)/usr/bin; ln -sf gawk awk) 
 	(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 \
 	rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 
 

+ 91 - 56
make/gcc-3.3.mk

@@ -66,6 +66,11 @@ $(GCC_DIR)/.unpacked: $(DL_DIR)/$(GCC_SOURCE)
 $(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked
 $(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked
 	# Apply any files named gcc-*.patch from the source directory to gcc
 	# Apply any files named gcc-*.patch from the source directory to gcc
 	$(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) gcc-*.patch
 	$(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
 	touch $(GCC_DIR)/.patched
 
 
 $(GCC_DIR)/.gcc3_3_build_hacks: $(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...
 # # the step or libgcc will not build...
 $(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.gcc3_3_build_hacks
 $(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.gcc3_3_build_hacks
 	mkdir -p $(GCC_BUILD_DIR1)
 	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 \
 	(cd $(GCC_BUILD_DIR1); PATH=$(TARGET_PATH) AR=$(TARGET_CROSS)ar \
 		RANLIB=$(TARGET_CROSS)ranlib CC=$(HOSTCC) \
 		RANLIB=$(TARGET_CROSS)ranlib CC=$(HOSTCC) \
+		gcc_cv_as_hidden=no \
 		$(GCC_DIR)/configure \
 		$(GCC_DIR)/configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_HOST_NAME) \
 		--host=$(GNU_HOST_NAME) \
@@ -132,25 +140,39 @@ $(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.gcc3_3_build_hacks
 		--oldincludedir=$(STAGING_DIR)/include $(MULTILIB) \
 		--oldincludedir=$(STAGING_DIR)/include $(MULTILIB) \
 		--enable-target-optspace $(DISABLE_NLS) --with-gnu-ld \
 		--enable-target-optspace $(DISABLE_NLS) --with-gnu-ld \
 		--disable-shared --enable-languages=c --disable-__cxa_atexit \
 		--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
 	touch $(GCC_BUILD_DIR1)/.configured
 
 
 $(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured
 $(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured
 	PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR1) \
 	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
 	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;
 	PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR1) install;
 	#Cleanup then mess when --program-prefix mysteriously fails 
 	#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 -f $(STAGING_DIR)/bin/gccbug $(STAGING_DIR)/bin/gcov
 	rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc \
 	rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc \
 		$(STAGING_DIR)/share/locale
 		$(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:
 gcc3_3_initial-clean:
 	rm -rf $(GCC_BUILD_DIR1)
 	rm -rf $(GCC_BUILD_DIR1)
@@ -159,8 +181,6 @@ gcc3_3_initial-clean:
 gcc3_3_initial-dirclean:
 gcc3_3_initial-dirclean:
 	rm -rf $(GCC_BUILD_DIR1)
 	rm -rf $(GCC_BUILD_DIR1)
 
 
-
-
 #############################################################
 #############################################################
 #
 #
 # second pass compiler build.  Build the compiler targeting 
 # 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
 $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.g++_build_hacks
 	mkdir -p $(GCC_BUILD_DIR2)
 	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 \
 	(cd $(GCC_BUILD_DIR2); PATH=$(TARGET_PATH) AR=$(TARGET_CROSS)ar \
 		RANLIB=$(TARGET_CROSS)ranlib LD=$(TARGET_CROSS)ld \
 		RANLIB=$(TARGET_CROSS)ranlib LD=$(TARGET_CROSS)ld \
 		NM=$(TARGET_CROSS)nm CC=$(HOSTCC) \
 		NM=$(TARGET_CROSS)nm CC=$(HOSTCC) \
+		gcc_cv_as_hidden=no \
 		$(GCC_DIR)/configure \
 		$(GCC_DIR)/configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_HOST_NAME) \
 		--host=$(GNU_HOST_NAME) \
@@ -207,15 +233,18 @@ $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.g++_build_hacks
 		--with-gnu-ld --disable-__cxa_atexit \
 		--with-gnu-ld --disable-__cxa_atexit \
 		--enable-languages=$(TARGET_LANGUAGES) \
 		--enable-languages=$(TARGET_LANGUAGES) \
 		$(EXTRA_GCC_CONFIG_OPTIONS) \
 		$(EXTRA_GCC_CONFIG_OPTIONS) \
-		--program-prefix=$(ARCH)-uclibc- \
+		--program-prefix=$(ARCH)-linux- \
 	);
 	);
 	touch $(GCC_BUILD_DIR2)/.configured
 	touch $(GCC_BUILD_DIR2)/.configured
 
 
 $(GCC_BUILD_DIR2)/.compiled: $(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 \
 	    AR_FOR_TARGET=$(TARGET_CROSS)ar RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib \
 	    LD_FOR_TARGET=$(TARGET_CROSS)ld NM_FOR_TARGET=$(TARGET_CROSS)nm \
 	    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
 	touch $(GCC_BUILD_DIR2)/.compiled
 
 
 $(GCC_BUILD_DIR2)/.installed: $(GCC_BUILD_DIR2)/.compiled $(STAGING_DIR)/lib/libc.a
 $(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/gcc $(STAGING_DIR)/usr/bin;
 	-mv $(STAGING_DIR)/bin/protoize $(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/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/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 \
 	rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc \
 		$(STAGING_DIR)/share/locale
 		$(STAGING_DIR)/share/locale
 	# Strip the host binaries
 	# Strip the host binaries
 	-strip --strip-all -R .note -R .comment $(STAGING_DIR)/bin/*
 	-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; \
 	set -e; \
 	for app in cc gcc c89 cpp c++ g++ ; do \
 	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; \
 		    (cd $(STAGING_DIR)/usr/bin; \
-			ln -fs ../../bin/$(ARCH)-uclibc-$${app} $${app}; \
+			ln -fs ../../bin/$(ARCH)-linux-$${app} $${app}; \
 		    ); \
 		    ); \
 		fi; \
 		fi; \
 	done;
 	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
 $(TARGET_DIR)/lib/libgcc_s.so.0.9.9: $(GCC_BUILD_DIR2)/.installed
 	cp -a $(STAGING_DIR)/lib/libgcc_s.so* $(TARGET_DIR)/lib/
 	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)
 ifeq ($(INSTALL_LIBSTDCPP),true)
 GCC_TARGETS= $(TARGET_DIR)/lib/libgcc_s.so.0.9.9 $(TARGET_DIR)/lib/libstdc++.so.5.0.5 
 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
 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)
 	$(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS)
 
 
 gcc3_3-clean:
 gcc3_3-clean:
@@ -269,11 +311,6 @@ gcc3_3-clean:
 gcc3_3-dirclean:
 gcc3_3-dirclean:
 	rm -rf $(GCC_BUILD_DIR2)
 	rm -rf $(GCC_BUILD_DIR2)
 
 
-
-
-
-
-
 #############################################################
 #############################################################
 #
 #
 # Next build target gcc compiler
 # Next build target gcc compiler
@@ -281,27 +318,7 @@ gcc3_3-dirclean:
 #############################################################
 #############################################################
 GCC_BUILD_DIR3:=$(BUILD_DIR)/gcc-3.3-target
 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 \
 		AR_FOR_BUILD=ar \
 		AS_FOR_BUILD=as \
 		AS_FOR_BUILD=as \
 		LD_FOR_BUILD=ld \
 		LD_FOR_BUILD=ld \
@@ -315,11 +332,13 @@ TARGET_GCC_ARGS=\
 		AS_FOR_TARGET=$(TARGET_CROSS)as \
 		AS_FOR_TARGET=$(TARGET_CROSS)as \
 		LD_FOR_TARGET=$(TARGET_CROSS)ld \
 		LD_FOR_TARGET=$(TARGET_CROSS)ld \
 		NM_FOR_TARGET=$(TARGET_CROSS)nm \
 		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
 		RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib
-endif
 
 
 # We need to unpack a pristine source tree to avoid some of
 # We need to unpack a pristine source tree to avoid some of
 # the previously applied hacks, which do not apply here...
 # 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
 $(GCC_BUILD_DIR3)/.patched: $(GCC_BUILD_DIR3)/.unpacked
 	# Apply any files named gcc-*.patch from the source directory to gcc
 	# Apply any files named gcc-*.patch from the source directory to gcc
 	$(SOURCE_DIR)/patch-kernel.sh $(GCC_BUILD_DIR3) $(SOURCE_DIR) gcc-*.patch
 	$(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
 	touch $(GCC_BUILD_DIR3)/.patched
 
 
 $(GCC_BUILD_DIR3)/.gcc3_3_build_hacks: $(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
 $(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR3)/.gcc3_3_build_hacks
 	mkdir -p $(GCC_BUILD_DIR3)
 	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); \
 	(cd $(GCC_BUILD_DIR3); \
 		$(TARGET_GCC_ARGS) \
 		$(TARGET_GCC_ARGS) \
+		gcc_cv_as_hidden=no \
 		./configure \
 		./configure \
+		--verbose \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
-		--build=$(ARCH)-linux \
+		--build=`./config.guess` \
 		--prefix=/usr \
 		--prefix=/usr \
 		--mandir=/usr/man \
 		--mandir=/usr/man \
 		--infodir=/usr/info \
 		--infodir=/usr/info \
 		--with-gxx-include-dir=/usr/include/c++/3.3 \
 		--with-gxx-include-dir=/usr/include/c++/3.3 \
+		--enable-target-optspace \
 		--enable-shared \
 		--enable-shared \
 		$(MULTILIB) \
 		$(MULTILIB) \
-		--enable-target-optspace $(DISABLE_NLS) \
+		$(DISABLE_NLS) \
 		--with-gnu-ld --disable-__cxa_atexit \
 		--with-gnu-ld --disable-__cxa_atexit \
 		--enable-languages=$(TARGET_LANGUAGES) \
 		--enable-languages=$(TARGET_LANGUAGES) \
 		$(EXTRA_GCC_CONFIG_OPTIONS) \
 		$(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/
 	#-cp -a $(STAGING_DIR)/include/c++ $(TARGET_DIR)/usr/include/
 	-mv $(TARGET_DIR)/lib/*.a $(TARGET_DIR)/usr/lib/
 	-mv $(TARGET_DIR)/lib/*.a $(TARGET_DIR)/usr/lib/
 	-mv $(TARGET_DIR)/lib/*.la $(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
 	# 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)
 	-(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
 	# 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
 	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)/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/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 -f $(TARGET_DIR)/usr/lib/*.la*
 	rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
 	rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 		$(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
 	touch -c $(TARGET_DIR)/usr/bin/gcc
 
 
 gcc3_3_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gcc
 gcc3_3_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gcc

+ 1 - 0
make/gdb.mk

@@ -21,6 +21,7 @@ $(GDB_DIR)/.unpacked: $(DL_DIR)/$(GDB_SOURCE) $(GDB_PATCH)
 $(GDB_DIR)/.configured: $(GDB_DIR)/.unpacked
 $(GDB_DIR)/.configured: $(GDB_DIR)/.unpacked
 	(cd $(GDB_DIR); rm -rf config.cache; \
 	(cd $(GDB_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		ac_cv_type_uintptr_t=yes \
 		ac_cv_type_uintptr_t=yes \
 		gt_cv_func_gettext_libintl=yes \
 		gt_cv_func_gettext_libintl=yes \
 		ac_cv_func_dcgettext=yes \
 		ac_cv_func_dcgettext=yes \

+ 1 - 0
make/grep.mk

@@ -22,6 +22,7 @@ $(GNUGREP_DIR)/.unpacked: $(DL_DIR)/$(GNUGREP_SOURCE)
 $(GNUGREP_DIR)/.configured: $(GNUGREP_DIR)/.unpacked
 $(GNUGREP_DIR)/.configured: $(GNUGREP_DIR)/.unpacked
 	(cd $(GNUGREP_DIR); rm -rf config.cache; \
 	(cd $(GNUGREP_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 56 - 0
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)
+

+ 2 - 0
make/libtool.mk

@@ -22,6 +22,7 @@ $(LIBTOOL_DIR)/.unpacked: $(DL_DIR)/$(LIBTOOL_SOURCE)
 $(LIBTOOL_DIR)/.configured: $(LIBTOOL_DIR)/.unpacked
 $(LIBTOOL_DIR)/.configured: $(LIBTOOL_DIR)/.unpacked
 	(cd $(LIBTOOL_DIR); rm -rf config.cache; \
 	(cd $(LIBTOOL_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(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 \
 	    mandir=$(TARGET_DIR)/usr/man \
 	    includedir=$(TARGET_DIR)/usr/include \
 	    includedir=$(TARGET_DIR)/usr/include \
 	    -C $(LIBTOOL_DIR) install;
 	    -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,^CC.*,CC=\"/usr/bin/gcc\"," $(TARGET_DIR)/usr/bin/libtool
 	perl -pi -e "s,^LD.*,LD=\"/usr/bin/ld\"," $(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 \
 	rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \

+ 2 - 0
make/m4.mk

@@ -22,6 +22,7 @@ $(M4_DIR)/.unpacked: $(DL_DIR)/$(M4_SOURCE)
 $(M4_DIR)/.configured: $(M4_DIR)/.unpacked
 $(M4_DIR)/.configured: $(M4_DIR)/.unpacked
 	(cd $(M4_DIR); rm -rf config.cache; \
 	(cd $(M4_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(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 \
 	    mandir=$(TARGET_DIR)/usr/man \
 	    includedir=$(TARGET_DIR)/usr/include \
 	    includedir=$(TARGET_DIR)/usr/include \
 	    -C $(M4_DIR) install;
 	    -C $(M4_DIR) install;
+	$(STRIP) $(TARGET_DIR)/$(M4_TARGET_BINARY) > /dev/null 2>&1
 	rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
 	rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
 
 

+ 1 - 0
make/make.mk

@@ -22,6 +22,7 @@ $(GNUMAKE_DIR)/.unpacked: $(DL_DIR)/$(GNUMAKE_SOURCE)
 $(GNUMAKE_DIR)/.configured: $(GNUMAKE_DIR)/.unpacked
 $(GNUMAKE_DIR)/.configured: $(GNUMAKE_DIR)/.unpacked
 	(cd $(GNUMAKE_DIR); rm -rf config.cache; \
 	(cd $(GNUMAKE_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 2 - 1
make/ncurses.mk

@@ -5,7 +5,7 @@
 #
 #
 #############################################################
 #############################################################
 # Copyright (C) 2002 by Ken Restivo <ken@246gt.com>
 # Copyright (C) 2002 by Ken Restivo <ken@246gt.com>
-# $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
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU Library General Public License as
 # 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; \
 	(cd $(NCURSES_DIR); rm -rf config.cache; \
 		BUILD_CC=$(TARGET_CC) HOSTCC=$(HOSTCC) \
 		BUILD_CC=$(TARGET_CC) HOSTCC=$(HOSTCC) \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 1 - 0
make/openssh.mk

@@ -21,6 +21,7 @@ $(OPENSSH_DIR)/.configured: $(OPENSSH_DIR)/.unpacked
 	(cd $(OPENSSH_DIR); rm -rf config.cache; autoconf; \
 	(cd $(OPENSSH_DIR); rm -rf config.cache; autoconf; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
 		LD=$(TARGET_CROSS)gcc \
 		LD=$(TARGET_CROSS)gcc \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 12 - 12
make/openssl.mk

@@ -16,6 +16,9 @@ $(DL_DIR)/$(OPENSSL_SOURCE):
 $(OPENSSL_DIR)/.unpacked: $(DL_DIR)/$(OPENSSL_SOURCE) $(OPENSSL_PATCH)
 $(OPENSSL_DIR)/.unpacked: $(DL_DIR)/$(OPENSSL_SOURCE) $(OPENSSL_PATCH)
 	gunzip -c $(DL_DIR)/$(OPENSSL_SOURCE) | tar -C $(BUILD_DIR) -xvf -
 	gunzip -c $(DL_DIR)/$(OPENSSL_SOURCE) | tar -C $(BUILD_DIR) -xvf -
 	cat $(OPENSSL_PATCH) | patch -p1 -d $(OPENSSL_DIR)
 	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
 	touch  $(OPENSSL_DIR)/.unpacked
 
 
 $(OPENSSL_DIR)/Makefile: $(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
 $(OPENSSL_DIR)/apps/openssl: $(OPENSSL_DIR)/Makefile
 	$(MAKE) CC=$(TARGET_CC) -C $(OPENSSL_DIR) all build-shared
 	$(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
 $(STAGING_DIR)/lib/libcrypto.a: $(OPENSSL_DIR)/apps/openssl
 	$(MAKE) CC=$(TARGET_CC) INSTALL_PREFIX=$(STAGING_DIR) -C $(OPENSSL_DIR) install
 	$(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)
 	(cd $(STAGING_DIR)/lib; ln -fs libssl.so.0.9.7 libssl.so.0)
 	(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/
 	#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
 $(TARGET_DIR)/usr/lib/libssl.a: $(STAGING_DIR)/lib/libcrypto.a
 	mkdir -p $(TARGET_DIR)/usr/include 
 	mkdir -p $(TARGET_DIR)/usr/include 
 	cp -a $(STAGING_DIR)/include/openssl $(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/libssl.a $(TARGET_DIR)/usr/lib/
 	cp -dpf $(STAGING_DIR)/lib/libcrypto.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
 	touch -c $(TARGET_DIR)/usr/lib/libssl.a
 
 
 openssl-headers: $(TARGET_DIR)/usr/lib/libssl.a
 openssl-headers: $(TARGET_DIR)/usr/lib/libssl.a
@@ -71,5 +71,5 @@ openssl-clean:
 openssl-dirclean: 
 openssl-dirclean: 
 	rm -rf $(OPENSSL_DIR) 
 	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
 
 

+ 1 - 0
make/patch.mk

@@ -22,6 +22,7 @@ $(GNUPATCH_DIR)/.unpacked: $(DL_DIR)/$(GNUPATCH_SOURCE)
 $(GNUPATCH_DIR)/.configured: $(GNUPATCH_DIR)/.unpacked
 $(GNUPATCH_DIR)/.configured: $(GNUPATCH_DIR)/.unpacked
 	(cd $(GNUPATCH_DIR); rm -rf config.cache; \
 	(cd $(GNUPATCH_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 1 - 0
make/sed.mk

@@ -22,6 +22,7 @@ $(SED_DIR)/.unpacked: $(DL_DIR)/$(SED_SOURCE)
 $(SED_DIR)/.configured: $(SED_DIR)/.unpacked
 $(SED_DIR)/.configured: $(SED_DIR)/.unpacked
 	(cd $(SED_DIR); rm -rf config.cache; \
 	(cd $(SED_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 2 - 0
make/strace.mk

@@ -23,6 +23,7 @@ $(STRACE_DIR)/.unpacked: $(DL_DIR)/$(STRACE_SOURCE)
 $(STRACE_DIR)/.configured: $(STRACE_DIR)/.unpacked
 $(STRACE_DIR)/.configured: $(STRACE_DIR)/.unpacked
 	(cd $(STRACE_DIR); rm -rf config.cache; \
 	(cd $(STRACE_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(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
 $(TARGET_DIR)/usr/bin/strace: $(STRACE_DIR)/strace
 	install -c $(STRACE_DIR)/strace $(TARGET_DIR)/usr/bin/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 
 strace: uclibc $(TARGET_DIR)/usr/bin/strace 
 
 

+ 1 - 0
make/tar.mk

@@ -22,6 +22,7 @@ $(GNUTAR_DIR)/.unpacked: $(DL_DIR)/$(GNUTAR_SOURCE)
 $(GNUTAR_DIR)/.configured: $(GNUTAR_DIR)/.unpacked
 $(GNUTAR_DIR)/.configured: $(GNUTAR_DIR)/.unpacked
 	(cd $(GNUTAR_DIR); rm -rf config.cache; \
 	(cd $(GNUTAR_DIR); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
 		./configure \
 		./configure \
 		--target=$(GNU_TARGET_NAME) \
 		--target=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \
 		--host=$(GNU_TARGET_NAME) \

+ 3 - 2
make/tinylogin.mk

@@ -33,10 +33,11 @@ $(TINYLOGIN_DIR)/Config.h: $(DL_DIR)/$(TINYLOGIN_SOURCE)
 	touch $(TINYLOGIN_DIR)/Config.h
 	touch $(TINYLOGIN_DIR)/Config.h
 
 
 $(TINYLOGIN_DIR)/tinylogin: $(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
 $(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
 tinylogin: uclibc $(TARGET_DIR)/bin/tinylogin
 
 

+ 21 - 5
make/uclibc.mk

@@ -44,10 +44,14 @@ endif
 	perl -i -p -e 's,^SHARED_LIB_LOADER_PATH=.*,SHARED_LIB_LOADER_PATH=\"/lib\",g' \
 	perl -i -p -e 's,^SHARED_LIB_LOADER_PATH=.*,SHARED_LIB_LOADER_PATH=\"/lib\",g' \
 		$(UCLIBC_DIR)/.config
 		$(UCLIBC_DIR)/.config
 	perl -i -p -e 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y\nUCLIBC_HAS_LOCALE=n,g' \
 	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
 		$(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
 		$(UCLIBC_DIR)/extra/gcc-uClibc/Makefile
 	$(MAKE) -C $(UCLIBC_DIR) oldconfig
 	$(MAKE) -C $(UCLIBC_DIR) oldconfig
 	$(MAKE) -C $(UCLIBC_DIR) pregen
 	$(MAKE) -C $(UCLIBC_DIR) pregen
@@ -55,7 +59,7 @@ endif
 	$(MAKE) -C $(UCLIBC_DIR) install_dev;
 	$(MAKE) -C $(UCLIBC_DIR) install_dev;
 	touch $(UCLIBC_DIR)/.configured
 	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)
 	$(MAKE) -C $(UCLIBC_DIR)
 
 
 $(STAGING_DIR)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a
 $(STAGING_DIR)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a
@@ -77,7 +81,7 @@ endif
 
 
 uclibc-configured: $(UCLIBC_DIR)/.configured
 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_TARGETS)
 
 
 uclibc-clean:
 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/libm.so.0 libm.so; \
 		ln -fs /lib/libpthread.so.0 libpthread.so; \
 		ln -fs /lib/libpthread.so.0 libpthread.so; \
 		ln -fs /lib/libnsl.so.0 libnsl.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)
 ifeq ($(USE_UCLIBC_TOOLCHAIN),true)

+ 2 - 4
make/zlib.mk

@@ -6,12 +6,10 @@
 ZLIB_SOURCE=zlib-1.1.4.tar.bz2
 ZLIB_SOURCE=zlib-1.1.4.tar.bz2
 ZLIB_SITE=http://aleron.dl.sourceforge.net/sourceforge/libpng
 ZLIB_SITE=http://aleron.dl.sourceforge.net/sourceforge/libpng
 ZLIB_DIR=$(BUILD_DIR)/zlib-1.1.4
 ZLIB_DIR=$(BUILD_DIR)/zlib-1.1.4
+ZLIB_CFLAGS= $(TARGET_CFLAGS) -fPIC
 ifeq ($(strip $(BUILD_WITH_LARGEFILE)),true)
 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
 endif
-ZLIB_CFLAGS+=-fPIC
 
 
 $(DL_DIR)/$(ZLIB_SOURCE):
 $(DL_DIR)/$(ZLIB_SOURCE):
 	$(WGET) -P $(DL_DIR) $(ZLIB_SITE)/$(ZLIB_SOURCE)
 	$(WGET) -P $(DL_DIR) $(ZLIB_SITE)/$(ZLIB_SOURCE)

+ 24 - 0
sources/dropbear-010-ranlib.patch

@@ -0,0 +1,24 @@
+diff -urN dropbear-0.38/libtomcrypt/makefile dropbear-0.38-new/libtomcrypt/makefile
+--- dropbear-0.38/libtomcrypt/makefile	2003-09-24 05:22:44.000000000 -0500
++++ dropbear-0.38-new/libtomcrypt/makefile	2003-10-29 23:39:57.000000000 -0600
+@@ -103,7 +103,7 @@
+ 
+ $(LIBNAME): $(OBJECTS)
+ 	$(AR) $(ARFLAGS) $@ $(OBJECTS) 
+-	ranlib $(LIBNAME)
++	$(RANLIB) $(LIBNAME)
+ 
+ #This rule makes the test program included with libtomcrypt
+ test: library $(TESTOBJECTS)
+diff -urN dropbear-0.38/libtommath/makefile dropbear-0.38-new/libtommath/makefile
+--- dropbear-0.38/libtommath/makefile	2003-09-24 03:55:34.000000000 -0500
++++ dropbear-0.38-new/libtommath/makefile	2003-10-29 23:40:18.000000000 -0600
+@@ -48,7 +48,7 @@
+ 
+ libtommath.a:  $(OBJECTS)
+ 	$(AR) $(ARFLAGS) libtommath.a $(OBJECTS)
+-	ranlib libtommath.a
++	$(RANLIB) libtommath.a
+ 
+ install: libtommath.a
+ 	install -d -g root -o root $(DESTDIR)$(LIBPATH)

+ 14 - 0
sources/gcc-830-nonhidden.patch

@@ -0,0 +1,14 @@
+diff -urN gcc-3.3.2-orig/gcc/mklibgcc.in gcc-3.3.2/gcc/mklibgcc.in
+--- gcc-3.3.2-orig/gcc/mklibgcc.in	2003-09-08 19:37:34.000000000 -0500
++++ gcc-3.3.2/gcc/mklibgcc.in	2003-10-22 02:27:34.000000000 -0500
+@@ -296,7 +296,9 @@
+ 
+   libgcc_a_objs="$libgcc_objs $libgcc_st_objs"
+ 
+-  if [ "@libgcc_visibility@" = yes -a "$SHLIB_LINK" ]; then
++  #if [ "@libgcc_visibility@" = yes -a "$SHLIB_LINK" ]; then
++  if [ "@libgcc_visibility@" = I_AM_DISABLED -a "$SHLIB_LINK" ]; then
++    echo "OUCH!!!!! : @libgcc_visibility@ : $SHLIB_LINK : OUCH!!!!!"
+     libgcc_a_objs=
+     echo ""
+     for o in $libgcc_objs $libgcc_st_objs; do

+ 14 - 0
sources/gcc-840-abi_check.patch

@@ -0,0 +1,14 @@
+--- gcc-3.3.2/libstdc++-v3/testsuite/Makefile.in.dist	2003-10-26 00:07:43.000000000 -0500
++++ gcc-3.3.2/libstdc++-v3/testsuite/Makefile.in	2003-10-26 00:06:35.000000000 -0500
+@@ -204,9 +204,9 @@
+ PROGRAMS =  $(noinst_PROGRAMS)
+ 
+ abi_check_OBJECTS =  abi_check.$(OBJEXT)
+-abi_check_LDADD = $(LDADD)
++abi_check_LDADD = -lstdc++ $(LDADD)
+ abi_check_DEPENDENCIES = 
+-abi_check_LDFLAGS = 
++abi_check_LDFLAGS = -L../src
+ CXXFLAGS = @CXXFLAGS@
+ CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+ LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)

+ 61 - 0
sources/i386-gcc-soft-float.patch

@@ -0,0 +1,61 @@
+diff -urN gcc-3.3.2-orig/gcc/config/i386/i386.h gcc-3.3.2/gcc/config/i386/i386.h
+--- gcc-3.3.2-orig/gcc/config/i386/i386.h	2003-06-25 16:18:31.000000000 -0500
++++ gcc-3.3.2/gcc/config/i386/i386.h	2003-10-22 01:46:57.000000000 -0500
+@@ -653,6 +653,7 @@
+ /* Define for XFmode or TFmode extended real floating point support.
+    The XFmode is specified by i386 ABI, while TFmode may be faster
+    due to alignment and simplifications in the address calculations.  */
++#if 0
+ #define LONG_DOUBLE_TYPE_SIZE (TARGET_128BIT_LONG_DOUBLE ? 128 : 96)
+ #define MAX_LONG_DOUBLE_TYPE_SIZE 128
+ #ifdef __x86_64__
+@@ -660,6 +661,17 @@
+ #else
+ #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 96
+ #endif
++#else
++	  /* Set up for x86 soft float with 64-bit long doubles, since that's
++	   * all the soft float emulation supports. */
++#define LONG_DOUBLE_TYPE_SIZE (TARGET_128BIT_LONG_DOUBLE ? 128 : (TARGET_80387 ? 96 : 64))
++#define MAX_LONG_DOUBLE_TYPE_SIZE 128
++#ifdef __x86_64__
++#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 128
++#else
++#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE (TARGET_80387 ? 96 : 64)
++#endif
++#endif
+ 
+ /* Set the value of FLT_EVAL_METHOD in float.h.  When using only the
+    FPU, assume that the fpcw is set to extended precision; when using
+diff -urN gcc-3.3.2-orig/gcc/config/t-linux gcc-3.3.2/gcc/config/t-linux
+--- gcc-3.3.2-orig/gcc/config/t-linux	2003-06-04 11:56:11.000000000 -0500
++++ gcc-3.3.2/gcc/config/t-linux	2003-10-22 01:46:39.000000000 -0500
+@@ -14,3 +14,28 @@
+ LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \
+   $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
+ LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c
++
++##############################################
++# We want fine grained libraries, so use the new code to build the
++# floating point emulation libraries.
++FPBIT = fp-bit.c
++DPBIT = dp-bit.c
++
++#LIB2FUNCS_EXTRA = xp-bit.c
++
++dp-bit.c: $(srcdir)/config/fp-bit.c
++	echo '#ifdef __LITTLE_ENDIAN__' > dp-bit.c
++	echo '#define FLOAT_BIT_ORDER_MISMATCH' >>dp-bit.c
++	echo '#endif'           >> dp-bit.c
++	cat $(srcdir)/config/fp-bit.c >> dp-bit.c
++
++fp-bit.c: $(srcdir)/config/fp-bit.c
++	echo '#define FLOAT' > fp-bit.c
++	echo '#ifdef __LITTLE_ENDIAN__' >> fp-bit.c
++	echo '#define FLOAT_BIT_ORDER_MISMATCH' >>fp-bit.c
++	echo '#endif'           >> fp-bit.c
++	cat $(srcdir)/config/fp-bit.c >> fp-bit.c
++
++#MULTILIB_OPTIONS = msoft-float
++#MULTILIB_DIRNAMES = soft-float
++

+ 44 - 0
sources/libfloat.patch

@@ -0,0 +1,44 @@
+diff -urN libfloat-dist/Makefile libfloat/Makefile
+--- libfloat-dist/Makefile	2003-10-26 00:33:45.000000000 -0500
++++ libfloat/Makefile	2003-10-26 01:07:26.000000000 -0500
+@@ -1,7 +1,6 @@
+ # Makefile for the Linux soft-float library
+ 
+-CC=gcc -O2 -freg-struct-return -fomit-frame-pointer -D__LIBFLOAT__
+-#CC=gcc -g -O2 -freg-struct-return -D__LIBFLOAT__
++CFLAGS= -O2 -freg-struct-return -fomit-frame-pointer -D__LIBFLOAT__
+ AR=ar
+ 
+ all: libfloat.a libfloat.so.1
+@@ -12,24 +11,24 @@
+ 
+ libfloat.so.1: softfloat.os fplib_glue.os
+ 	rm -f libfloat.so.1
+-	gcc -shared -Wl,-soname,libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
++	$(LD) -shared -soname=libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
+ 
+ softfloat.o: softfloat/bits64/softfloat.c
+-	$(CC) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
++	$(CC) $(CFLAGS) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
+ 
+ fplib_glue.o: fplib_glue.S
+-	$(CC) -c -o fplib_glue.o fplib_glue.S
++	$(CC) $(CFLAGS) -c -o fplib_glue.o fplib_glue.S
+ 
+ softfloat.os: softfloat/bits64/softfloat.c
+-	$(CC) -fpic -c -o softfloat.os -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
++	$(CC) $(CFLAGS) -fpic -c -o softfloat.os -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
+ 
+ fplib_glue.os: fplib_glue.S
+-	$(CC) -fpic -c -o fplib_glue.os fplib_glue.S
++	$(CC) $(CFLAGS) -fpic -c -o fplib_glue.os fplib_glue.S
+ 
+ install: libfloat.a libfloat.so.1
+ 	cp -a libfloat.a $(DESTDIR)/usr/lib
+-	cp -a libfloat.so.1 $(DESTDIR)/usr/lib
+-	cd $(DESTDIR)/usr/lib; ln -s libfloat.so.1 libfloat.so
++	cp -a libfloat.so.1 $(DESTDIR)/lib
++	cd $(DESTDIR)/lib; ln -s libfloat.so.1 libfloat.so
+ 	#ldconfig
+ 
+ clean: