From bfa9ce0e4c5a8c823f94f32bb0e097f4bab10597 Mon Sep 17 00:00:00 2001 From: Manuel Novoa III Date: Tue, 14 Sep 2004 11:52:26 +0000 Subject: [PATCH] Add back in support for 3.3.4 soft float toolchains, although arm would require reenabling linking with -lfloat in uClibc. --- Makefile | 9 ++--- make/gcc-uclibc-3.x.mk | 35 +++++++++++++++++++ sources/{ => gcc/3.3.4}/specs-arm-soft-float | 4 +-- sources/{ => gcc/3.3.4}/specs-mips-soft-float | 6 ++-- .../{ => gcc/3.3.4}/specs-mipsel-soft-float | 6 ++-- .../{ => gcc/3.3.4}/specs-powerpc-soft-float | 6 ++-- 6 files changed, 51 insertions(+), 15 deletions(-) rename sources/{ => gcc/3.3.4}/specs-arm-soft-float (91%) rename sources/{ => gcc/3.3.4}/specs-mips-soft-float (86%) rename sources/{ => gcc/3.3.4}/specs-mipsel-soft-float (86%) rename sources/{ => gcc/3.3.4}/specs-powerpc-soft-float (96%) diff --git a/Makefile b/Makefile index 04465a40c..ac6df4c4f 100644 --- a/Makefile +++ b/Makefile @@ -129,16 +129,17 @@ GCC_WITH_TUNE:= # Soft floating point options. # Notes: -# Currently builds with gcc 3.3 for arm, mips, mipsel, powerpc. +# Builds for gcc 3.4.x. +# Can build for gcc 3.3.x for mips, mipsel, powerpc, and arm (special) +# by using custom specs files (currently for 3.3.4 only). +# NOTE!!! The libfloat stuff is currently removed from uClibc. The +# arm soft float for 3.3.x will require reenabling it. # (i386 support will be added back in at some point.) # 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. -# Custom specs files are used to set the default gcc mode to soft float -# as a convenience, since you shouldn't link hard and soft float -# together. In fact, arm won't even let you. # (Un)comment the appropriate line below. #SOFT_FLOAT:=true SOFT_FLOAT:=false diff --git a/make/gcc-uclibc-3.x.mk b/make/gcc-uclibc-3.x.mk index ff44759cd..919f5be9c 100644 --- a/make/gcc-uclibc-3.x.mk +++ b/make/gcc-uclibc-3.x.mk @@ -187,6 +187,27 @@ endif $(GNU_TARGET_NAME)$${app##$(REAL_GNU_TARGET_NAME)}; \ done; \ ); + # + # Now for the ugly 3.3.x soft float hack... + # +ifeq ($(SOFT_FLOAT),true) +ifeq ($(findstring 3.3.,$(GCC_VERSION)),3.3.) + # Make sure we have a soft float specs file for this arch + if [ ! -f $(SOURCE_DIR)/gcc/$(GCC_VERSION)/specs-$(ARCH)-soft-float ] ; then \ + echo soft float configured but no specs file for this arch ; \ + /bin/false ; \ + fi; + # Replace specs file with one that defaults to soft float mode. + if [ ! -f $(STAGING_DIR)/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs ] ; then \ + echo staging dir specs file is missing ; \ + /bin/false ; \ + fi; + cp $(SOURCE_DIR)/gcc/$(GCC_VERSION)/specs-$(ARCH)-soft-float $(STAGING_DIR)/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs +endif +endif + # + # Ok... that's enough of that. + # touch $(GCC_BUILD_DIR2)/.installed $(TARGET_DIR)/lib/libgcc_s.so.1: $(GCC_BUILD_DIR2)/.installed @@ -255,6 +276,20 @@ $(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled $(MAKE) $(JLEVEL) DESTDIR=$(TARGET_DIR) -C $(GCC_BUILD_DIR3) install # Remove broken specs file (cross compile flag is set). rm -f $(TARGET_DIR)/usr/$(GCC_LIB_SUBDIR)/specs + # + # Now for the ugly 3.3.x soft float hack... + # +ifeq ($(SOFT_FLOAT),true) +ifeq ($(findstring 3.3.,$(GCC_VERSION)),3.3.) + # Add a specs file that defaults to soft float mode. + cp $(SOURCE_DIR)/gcc/$(GCC_VERSION)/specs-$(ARCH)-soft-float $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs + # Make sure gcc does not think we are cross compiling + $(SED) "s/^1/0/;" $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs +endif +endif + # + # Ok... that's enough of that. + # -(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/$(GCC_LIB_SUBDIR); $(STRIP) cc1 cc1plus collect2 > /dev/null 2>&1) diff --git a/sources/specs-arm-soft-float b/sources/gcc/3.3.4/specs-arm-soft-float similarity index 91% rename from sources/specs-arm-soft-float rename to sources/gcc/3.3.4/specs-arm-soft-float index 3f726bd94..d692174aa 100644 --- a/sources/specs-arm-soft-float +++ b/sources/gcc/3.3.4/specs-arm-soft-float @@ -33,7 +33,7 @@ cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} %{profile:-p} *cc1_options: -%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} -auxbase%{c|S:%{o*:-strip %*}%{!o*: %b}}%{!c:%{!S: %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} +%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} *cc1plus: @@ -66,7 +66,7 @@ cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} 1 *version: -3.3.3 +3.3.4 *multilib: . ; diff --git a/sources/specs-mips-soft-float b/sources/gcc/3.3.4/specs-mips-soft-float similarity index 86% rename from sources/specs-mips-soft-float rename to sources/gcc/3.3.4/specs-mips-soft-float index 35fd67118..2a4240012 100644 --- a/sources/specs-mips-soft-float +++ b/sources/gcc/3.3.4/specs-mips-soft-float @@ -33,7 +33,7 @@ cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} %{profile:-p} *cc1_options: -%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} -auxbase%{c|S:%{o*:-strip %*}%{!o*: %b}}%{!c:%{!S: %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} +%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} *cc1plus: @@ -48,7 +48,7 @@ cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} %{!static:--eh-frame-hdr} %(endian_spec) %{shared:-shared} %{!shared: %{!ibcs: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} %{static:-static}}} *lib: -%{pthread:-lpthread} %{shared:-lc} %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}} +%{shared: -lc} %{!static:-rpath-link %R/lib:%R/usr/lib} %{!shared: %{pthread:-lpthread} %{profile:-lc_p} %{!profile: -lc}} *libgcc: %{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:%{shared-libgcc:-lgcc_s%M}%{!shared-libgcc:-lgcc}}}} @@ -66,7 +66,7 @@ cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} 1 *version: -3.3.3 +3.3.4 *multilib: . ; diff --git a/sources/specs-mipsel-soft-float b/sources/gcc/3.3.4/specs-mipsel-soft-float similarity index 86% rename from sources/specs-mipsel-soft-float rename to sources/gcc/3.3.4/specs-mipsel-soft-float index 72aa2a62e..481bf5a39 100644 --- a/sources/specs-mipsel-soft-float +++ b/sources/gcc/3.3.4/specs-mipsel-soft-float @@ -33,7 +33,7 @@ cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} %{profile:-p} *cc1_options: -%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} -auxbase%{c|S:%{o*:-strip %*}%{!o*: %b}}%{!c:%{!S: %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} +%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} *cc1plus: @@ -48,7 +48,7 @@ cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} %{!static:--eh-frame-hdr} %(endian_spec) %{shared:-shared} %{!shared: %{!ibcs: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} %{static:-static}}} *lib: -%{pthread:-lpthread} %{shared:-lc} %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}} +%{shared: -lc} %{!static:-rpath-link %R/lib:%R/usr/lib} %{!shared: %{pthread:-lpthread} %{profile:-lc_p} %{!profile: -lc}} *libgcc: %{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:%{shared-libgcc:-lgcc_s%M}%{!shared-libgcc:-lgcc}}}} @@ -66,7 +66,7 @@ cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} 1 *version: -3.3.3 +3.3.4 *multilib: . ; diff --git a/sources/specs-powerpc-soft-float b/sources/gcc/3.3.4/specs-powerpc-soft-float similarity index 96% rename from sources/specs-powerpc-soft-float rename to sources/gcc/3.3.4/specs-powerpc-soft-float index 0cb9ed3a7..8a546ac8e 100644 --- a/sources/specs-powerpc-soft-float +++ b/sources/gcc/3.3.4/specs-powerpc-soft-float @@ -33,7 +33,7 @@ cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} %{G*} %{mlittle: %(cc1_endian_little)} %{!mlittle: %{mlittle-endian: %(cc1_endian_little)}} %{mbig: %(cc1_endian_big)} %{!mbig: %{mbig-endian: %(cc1_endian_big)}} %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: %{mcall-aixdesc: -mbig %(cc1_endian_big) } %{mcall-freebsd: -mbig %(cc1_endian_big) } %{mcall-i960-old: -mlittle %(cc1_endian_little) } %{mcall-linux: -mbig %(cc1_endian_big) } %{mcall-gnu: -mbig %(cc1_endian_big) } %{mcall-netbsd: -mbig %(cc1_endian_big) } %{!mcall-aixdesc: %{!mcall-freebsd: %{!mcall-i960-old: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(cc1_endian_default) }}}}}} }}}} %{mno-sdata: -msdata=none } %{meabi: %{!mcall-*: -mcall-sysv }} %{!meabi: %{!mno-eabi: %{mrelocatable: -meabi } %{mcall-freebsd: -mno-eabi } %{mcall-i960-old: -meabi } %{mcall-linux: -mno-eabi } %{mcall-gnu: -mno-eabi } %{mcall-netbsd: -mno-eabi }}} %{msdata: -msdata=default} %{mno-sdata: -msdata=none} %{profile: -p} *cc1_options: -%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} -auxbase%{c|S:%{o*:-strip %*}%{!o*: %b}}%{!c:%{!S: %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} +%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} *cc1plus: @@ -66,7 +66,7 @@ cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} 1 *version: -3.3.3 +3.3.4 *multilib: . mhard-float;nof !mhard-float; @@ -138,7 +138,7 @@ crtsavres.o%s %{mnewlib: --start-group -lgnu -lc --end-group } %{!mnewlib: %{shared:-lc} %{!shared: %{pthread:-lpthread } %{profile:-lc_p} %{!profile:-lc}}} *lib_linux: -%{mnewlib: --start-group -llinux -lc --end-group } %{!mnewlib: %{shared:-lc} %{!shared: %{pthread:-lpthread } %{profile:-lc_p} %{!profile:-lc}}} +%{mnewlib: --start-group -llinux -lc --end-group } %{!mnewlib: %{pthread:-lpthread} %{shared:-lc} %{!shared: %{profile:-lc_p} %{!profile:-lc}}} *lib_netbsd: %{profile:-lgmon -lc_p} %{!profile:-lc}