summaryrefslogtreecommitdiffstats
path: root/make
diff options
context:
space:
mode:
authorManuel Novoa III <mjn3@codepoet.org>2004-01-16 19:08:39 +0000
committerManuel Novoa III <mjn3@codepoet.org>2004-01-16 19:08:39 +0000
commit93e576b799bacbe419b1c442d116b41734f8d03b (patch)
tree649a06c045b54355eb421b7d1f71c80038b5f419 /make
parent2d472b2334f683eff884f3e9c8e63f0c02bfa6b7 (diff)
downloadbuildroot-novena-93e576b799bacbe419b1c442d116b41734f8d03b.tar.gz
buildroot-novena-93e576b799bacbe419b1c442d116b41734f8d03b.zip
Get soft float working for gcc 3.3.2. Support for arm, mips, mipsel, powerpc.
Diffstat (limited to 'make')
-rw-r--r--make/gcc-uclibc-3.3.mk19
-rw-r--r--make/uclibc.mk7
2 files changed, 26 insertions, 0 deletions
diff --git a/make/gcc-uclibc-3.3.mk b/make/gcc-uclibc-3.3.mk
index 8d2d20db2..532373a19 100644
--- a/make/gcc-uclibc-3.3.mk
+++ b/make/gcc-uclibc-3.3.mk
@@ -160,6 +160,14 @@ $(GCC_BUILD_DIR2)/.installed: $(GCC_BUILD_DIR2)/.compiled
$(GNU_TARGET_NAME)$${app##$(REAL_GNU_TARGET_NAME)}; \
done; \
);
+ifeq ($(SOFT_FLOAT),true)
+ # Replace specs file with one that defaults to soft float mode.
+ if [ ! -f $(STAGING_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs ] ; then \
+ echo staging dir specs file is missing ; \
+ /bin/false ; \
+ fi;
+ cp $(SOURCE_DIR)/specs-$(ARCH)-soft-float $(STAGING_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs
+endif
touch $(GCC_BUILD_DIR2)/.installed
gcc3_3: uclibc-configured binutils gcc3_3_initial $(LIBFLOAT_TARGET) uclibc \
@@ -209,8 +217,19 @@ $(GCC_BUILD_DIR3)/.compiled: $(GCC_BUILD_DIR3)/.configured
$(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled
PATH=$(TARGET_PATH) \
$(MAKE) $(JLEVEL) DESTDIR=$(TARGET_DIR) -C $(GCC_BUILD_DIR3) install
+ifeq ($(SOFT_FLOAT),true)
+ # Replace specs file with one that defaults to soft float mode.
+ if [ ! -f $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs ] ; then \
+ echo target dir specs file is missing ; \
+ /bin/false ; \
+ fi;
+ cp $(SOURCE_DIR)/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
+else
# Remove broken specs file (cross compile flag is set).
rm -f $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs
+endif
-(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/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION); $(STRIP) cc1 cc1plus collect2 > /dev/null 2>&1)
diff --git a/make/uclibc.mk b/make/uclibc.mk
index 7bdad88a9..4d138ffe4 100644
--- a/make/uclibc.mk
+++ b/make/uclibc.mk
@@ -33,6 +33,13 @@ $(DL_DIR)/$(UCLIBC_SOURCE):
$(WGET) -P $(DL_DIR) $(UCLIBC_SITE)/$(UCLIBC_SOURCE)
$(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE)
+ifeq ($(SOFT_FLOAT),true)
+ # Make sure we have a soft float specs file for this arch
+ if [ ! -f $(SOURCE_DIR)/specs-$(ARCH)-soft-float ] ; then \
+ echo soft float configured but no specs file for this arch ; \
+ /bin/false ; \
+ fi;
+endif
bzcat $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(BUILD_DIR) -xvf -
#(cd $(BUILD_DIR) ; ln -s $(DL_DIR)/uClibc)
#-mkdir $(UCLIBC_DIR)