123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484 |
- # Makefile for to build a gcc/uClibc toolchain
- #
- # Copyright (C) 2002-2003 Erik Andersen <andersen@uclibc.org>
- # Copyright (C) 2004 Manuel Novoa III <mjn3@uclibc.org>
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- # General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
- # without sysroot support. Sysroot toolchain is gcc-uclibc-4.x.mk
- ifneq ($(BR2_TOOLCHAIN_SYSROOT),y)
- ifneq ($(GCC_SNAP_DATE),)
- GCC_SITE:=ftp://sources.redhat.com/pub/gcc/snapshots/$(GCC_VERSION)
- else ifeq ($(findstring avr32,$(GCC_VERSION)),avr32)
- GCC_SITE:=ftp://www.at91.com/pub/buildroot/
- else
- GCC_SITE:=$(BR2_GNU_MIRROR)/gcc/gcc-$(GCC_VERSION)
- endif
- GCC_SOURCE:=gcc-$(GCC_VERSION).tar.bz2
- GCC_DIR:=$(TOOLCHAIN_DIR)/gcc-$(GCC_VERSION)
- GCC_PATCH_DIR:=toolchain/gcc/$(GCC_VERSION)
- GCC_CAT:=$(BZCAT)
- GCC_STRIP_HOST_BINARIES:=true
- ifneq ($(BR2_INSTALL_FORTRAN),y)
- # fortran needs gmp and mpfr
- ifeq ($(findstring 4.0.,$(GCC_VERSION)),4.0.)
- GCC_NO_MPFR:=y
- endif
- ifeq ($(findstring 4.1.,$(GCC_VERSION)),4.1.)
- GCC_NO_MPFR:=y
- endif
- endif
- #############################################################
- #
- # Setup some initial stuff
- #
- #############################################################
- GCC_CROSS_LANGUAGES:=c
- ifeq ($(BR2_GCC_CROSS_CXX),y)
- GCC_CROSS_LANGUAGES:=$(GCC_CROSS_LANGUAGES),c++
- endif
- ifeq ($(BR2_GCC_CROSS_FORTRAN),y)
- GCC_CROSS_LANGUAGES:=$(GCC_CROSS_LANGUAGES),fortran
- endif
- ifeq ($(BR2_GCC_CROSS_OBJC),y)
- GCC_CROSS_LANGUAGES:=$(GCC_CROSS_LANGUAGES),objc
- endif
- GCC_TARGET_LANGUAGES:=c
- ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
- GCC_TARGET_LANGUAGES:=$(GCC_TARGET_LANGUAGES),c++
- endif
- ifeq ($(BR2_INSTALL_LIBGCJ),y)
- GCC_TARGET_LANGUAGES:=$(GCC_TARGET_LANGUAGES),java
- endif
- ifeq ($(BR2_INSTALL_OBJC),y)
- GCC_TARGET_LANGUAGES:=$(GCC_TARGET_LANGUAGES),objc
- endif
- GCC_TARGET_PREREQ =
- GCC_STAGING_PREREQ= $(STAGING_DIR)/usr/lib/libc.a
- ifndef GCC_NO_MPFR
- GCC_WITH_HOST_GMP=--with-gmp=$(GMP_HOST_DIR)
- GCC_WITH_HOST_MPFR=--with-mpfr=$(MPFR_HOST_DIR)
- ifeq ($(BR2_INSTALL_FORTRAN),y)
- GCC_TARGET_LANGUAGES:=$(GCC_TARGET_LANGUAGES),fortran
- #GCC_TARGET_PREREQ += $(TARGET_DIR)/lib/libmpfr.so $(TARGET_DIR)/lib/libgmp.so
- #GCC_STAGING_PREREQ+= $(TOOLCHAIN_DIR)/mpfr/lib/libmpfr.so
- GCC_WITH_TARGET_GMP=--with-gmp="$(GMP_TARGET_DIR)"
- GCC_WITH_TARGET_MPFR=--with-mpfr="$(MPFR_TARGET_DIR)"
- endif
- endif # ifndef GCC_NO_MPFR
- ifeq ($(BR2_GCC_SHARED_LIBGCC),y)
- GCC_SHARED_LIBGCC:=--enable-shared
- else
- GCC_SHARED_LIBGCC:=--disable-shared
- endif
- HOST_SOURCE+=gcc-source
- #############################################################
- #
- # build the first pass gcc compiler
- #
- #############################################################
- GCC_BUILD_DIR1:=$(TOOLCHAIN_DIR)/gcc-$(GCC_VERSION)-initial
- $(DL_DIR)/$(GCC_SOURCE):
- mkdir -p $(DL_DIR)
- $(call DOWNLOAD,$(GCC_SITE),$(GCC_SOURCE))
- gcc-unpacked: $(GCC_DIR)/.patched
- $(GCC_DIR)/.unpacked: $(DL_DIR)/$(GCC_SOURCE)
- mkdir -p $(TOOLCHAIN_DIR)
- $(GCC_CAT) $(DL_DIR)/$(GCC_SOURCE) | tar -C $(TOOLCHAIN_DIR) $(TAR_OPTIONS) -
- $(CONFIG_UPDATE) $(@D)
- touch $@
- gcc-patched: $(GCC_DIR)/.patched
- $(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked
- # Apply any files named gcc-*.patch from the source directory to gcc
- ifneq ($(wildcard $(GCC_PATCH_DIR)),)
- toolchain/patch-kernel.sh $(GCC_DIR) $(GCC_PATCH_DIR) \*.patch
- endif
- # Note: The soft float situation has improved considerably with gcc 3.4.x.
- # We can dispense with the custom spec files, as well as libfloat for the arm case.
- # However, we still need a patch for arm. There's a similar patch for gcc 3.3.x
- # which needs to be integrated so we can kill of libfloat for good, except for
- # anyone (?) who might still be using gcc 2.95. mjn3
- ifeq ($(BR2_SOFT_FLOAT),y)
- ifeq ("$(strip $(ARCH))","arm")
- toolchain/patch-kernel.sh $(GCC_DIR) toolchain/gcc/$(GCC_VERSION) arm-softfloat.patch.conditional
- endif
- ifeq ("$(strip $(ARCH))","armeb")
- toolchain/patch-kernel.sh $(GCC_DIR) toolchain/gcc/$(GCC_VERSION) arm-softfloat.patch.conditional
- endif
- endif
- touch $@
- # The --without-headers option stopped working with gcc 3.0 and has never been
- # fixed, so we need to actually have working C library header files prior to
- # the step or libgcc will not build...
- $(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.patched
- mkdir -p $(GCC_BUILD_DIR1)
- (cd $(GCC_BUILD_DIR1); PATH=$(TARGET_PATH) \
- $(HOST_CONFIGURE_OPTS) \
- $(GCC_DIR)/configure $(QUIET) \
- --prefix=$(STAGING_DIR)/usr \
- --build=$(GNU_HOST_NAME) \
- --host=$(GNU_HOST_NAME) \
- --target=$(REAL_GNU_TARGET_NAME) \
- --enable-languages=c \
- --with-sysroot=$(TOOLCHAIN_DIR)/uClibc_dev/ \
- --disable-__cxa_atexit \
- --enable-target-optspace \
- --with-gnu-ld \
- --disable-shared \
- --disable-libssp \
- $(GCC_WITH_HOST_GMP) \
- $(GCC_WITH_HOST_MPFR) \
- $(DISABLE_NLS) \
- $(THREADS) \
- $(MULTILIB) \
- $(SOFT_FLOAT_CONFIG_OPTION) \
- $(GCC_WITH_ABI) $(GCC_WITH_ARCH) $(GCC_WITH_TUNE) \
- $(EXTRA_GCC_CONFIG_OPTIONS) \
- $(QUIET) \
- )
- touch $@
- $(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured
- PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR1) all-gcc
- touch $@
- gcc_initial=$(GCC_BUILD_DIR1)/.installed
- $(gcc_initial) $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-gcc: $(GCC_BUILD_DIR1)/.compiled
- PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR1) install-gcc
- #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
- touch $(gcc_initial)
- gcc_initial: uclibc-configured binutils $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-gcc
- gcc_initial-clean:
- rm -rf $(GCC_BUILD_DIR1)
- gcc_initial-dirclean:
- rm -rf $(GCC_BUILD_DIR1) $(GCC_DIR)
- #############################################################
- #
- # second pass compiler build. Build the compiler targeting
- # the newly built shared uClibc library.
- #
- #############################################################
- #
- # Sigh... I had to rework things because using --with-gxx-include-dir
- # causes issues with include dir search order for g++. This seems to
- # have something to do with "path translations" and possibly doesn't
- # affect gcc-target. However, I haven't tested gcc-target yet so no
- # guarantees. mjn3
- GCC_BUILD_DIR2:=$(TOOLCHAIN_DIR)/gcc-$(GCC_VERSION)-final
- $(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.patched $(GCC_STAGING_PREREQ)
- mkdir -p $(GCC_BUILD_DIR2)
- # Important! Required for limits.h to be fixed.
- ln -snf ../include $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/sys-include
- #-rmdir $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
- #ln -snf ../lib/ $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
- (cd $(GCC_BUILD_DIR2); rm -rf config.cache; \
- $(HOST_CONFIGURE_OPTS) \
- GCC=$(TARGET_CROSS)gcc \
- CPP=$(TARGET_CROSS)cpp \
- LDFLAGS_FOR_TARGET="$(patsubst %,LDFLAGS+=-Wl$(comma)%,$(TARGET_LDFLAGS)) -L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- $(GCC_DIR)/configure $(QUIET) \
- --prefix=$(STAGING_DIR) \
- --build=$(GNU_HOST_NAME) \
- --host=$(GNU_HOST_NAME) \
- --target=$(REAL_GNU_TARGET_NAME) \
- --enable-languages=$(GCC_CROSS_LANGUAGES) \
- --disable-__cxa_atexit \
- --enable-target-optspace \
- --with-gnu-ld \
- --disable-libssp \
- $(GCC_WITH_HOST_GMP) \
- $(GCC_WITH_HOST_MPFR) \
- $(GCC_SHARED_LIBGCC) \
- $(DISABLE_NLS) \
- $(THREADS) \
- $(MULTILIB) \
- $(SOFT_FLOAT_CONFIG_OPTION) \
- $(GCC_WITH_ABI) $(GCC_WITH_ARCH) $(GCC_WITH_TUNE) \
- $(GCC_USE_SJLJ_EXCEPTIONS) \
- $(DISABLE_LARGEFILE) \
- $(EXTRA_GCC_CONFIG_OPTIONS) \
- )
- touch $@
- $(GCC_BUILD_DIR2)/.compiled: $(GCC_BUILD_DIR2)/.configured
- PATH=$(TARGET_PATH) $(MAKE) $(HOST_CONFIGURE_OPTS) CPP=$(TARGET_CROSS)cpp -C $(GCC_BUILD_DIR2) all
- touch $@
- $(GCC_BUILD_DIR2)/.installed: $(GCC_BUILD_DIR2)/.compiled
- PATH=$(TARGET_PATH) \
- $(MAKE) $(HOST_CONFIGURE_OPTS) \
- LDFLAGS_FOR_TARGET="$(patsubst %,LDFLAGS+=-Wl$(comma)%,$(TARGET_LDFLAGS)) -L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- -C $(GCC_BUILD_DIR2) install
- if [ -d "$(STAGING_DIR)/usr/lib64" ]; then \
- if [ ! -e "$(STAGING_DIR)/usr/lib" ]; then \
- mkdir -p "$(STAGING_DIR)/usr/lib"; \
- fi; \
- mv "$(STAGING_DIR)/usr/lib64/"* "$(STAGING_DIR)/usr/lib/"; \
- rmdir "$(STAGING_DIR)/usr/lib64"; \
- fi
- # Strip the host binaries
- ifeq ($(GCC_STRIP_HOST_BINARIES),true)
- strip --strip-all -R .note -R .comment $(filter-out %-gccbug %-embedspu,$(wildcard $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-*))
- endif
- # Make sure we have 'cc'.
- if [ ! -e $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-cc ]; then \
- ln -snf $(REAL_GNU_TARGET_NAME)-gcc \
- $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-cc; \
- fi
- if [ ! -e $(STAGING_DIR)/usr/bin/gcc ]; then \
- ln -snf gcc $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-cc; \
- fi
- # Set up the symlinks to enable lying about target name.
- set -e; \
- (cd $(STAGING_DIR)/usr; \
- ln -snf $(REAL_GNU_TARGET_NAME) $(GNU_TARGET_NAME); \
- cd bin; \
- for app in $(REAL_GNU_TARGET_NAME)-*; do \
- ln -snf $${app} \
- $(GNU_TARGET_NAME)$${app##$(REAL_GNU_TARGET_NAME)}; \
- done; \
- )
- #
- # Now for the ugly 3.3.x soft float hack...
- #
- ifeq ($(BR2_SOFT_FLOAT),y)
- ifeq ($(findstring 3.3.,$(GCC_VERSION)),3.3.)
- # Make sure we have a soft float specs file for this arch
- if [ ! -f toolchain/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)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs ]; then \
- echo staging dir specs file is missing; \
- /bin/false; \
- fi
- cp toolchain/gcc/$(GCC_VERSION)/specs-$(ARCH)-soft-float $(STAGING_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs
- endif
- endif
- #
- # Ok... that's enough of that.
- #
- mkdir -p $(TARGET_DIR)/usr/lib $(TARGET_DIR)/usr/sbin
- touch $@
- $(STAMP_DIR)/gcc_libs_target_installed: $(GCC_BUILD_DIR2)/.installed
- ifeq ($(BR2_GCC_SHARED_LIBGCC),y)
- # These are in /lib, so...
- rm -rf $(TARGET_DIR)/usr/lib/libgcc_s*.so*
- -cp -dpf $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib/libgcc_s* \
- $(TARGET_DIR)/lib/
- -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/lib/libgcc_s*
- endif
- ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
- ifeq ($(BR2_GCC_SHARED_LIBGCC),y)
- mkdir -p $(TARGET_DIR)/usr/lib
- -cp -dpf $(STAGING_DIR)/lib/libstdc++.so* $(TARGET_DIR)/usr/lib/
- -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libstdc++.so*
- endif
- endif
- ifeq ($(BR2_INSTALL_LIBGCJ),y)
- cp -dpf $(STAGING_DIR)/lib/libgcj.so* $(TARGET_DIR)/usr/lib/
- cp -dpf $(STAGING_DIR)/lib/lib-org-w3c-dom.so* $(TARGET_DIR)/usr/lib/
- cp -dpf $(STAGING_DIR)/lib/lib-org-xml-sax.so* $(TARGET_DIR)/usr/lib/
- mkdir -p $(TARGET_DIR)/usr/lib/security
- cp -dpf $(STAGING_DIR)/usr/lib/security/libgcj.security \
- $(TARGET_DIR)/usr/lib/security/
- cp -dpf $(STAGING_DIR)/usr/lib/security/classpath.security \
- $(TARGET_DIR)/usr/lib/security/
- endif
- mkdir -p $(@D)
- touch $@
- cross_compiler:=$(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-gcc
- cross_compiler gcc: gcc-config $(GCC_BUILD_DIR2)/.installed \
- $(STAMP_DIR)/gcc_libs_target_installed \
- $(GCC_TARGETS)
- gcc-source: $(DL_DIR)/$(GCC_SOURCE)
- gcc-config: uclibc-configured binutils gcc_initial $(LIBFLOAT_TARGET) \
- uclibc $(GCC_BUILD_DIR2)/.configured
- gcc-clean:
- rm -rf $(GCC_BUILD_DIR2)
- for prog in cpp gcc gcc-[0-9]* protoize unprotoize gcov gccbug cc; do \
- rm -f $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-$$prog; \
- rm -f $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-$$prog; \
- done
- gcc-dirclean: gcc_initial-dirclean
- rm -rf $(GCC_BUILD_DIR2)
- #############################################################
- #
- # Next build target gcc compiler
- #
- #############################################################
- GCC_BUILD_DIR3:=$(BUILD_DIR)/gcc-$(GCC_VERSION)-target
- $(GCC_BUILD_DIR3)/.prepared: $(STAMP_DIR)/gcc_libs_target_installed $(GCC_TARGET_PREREQ)
- mkdir -p $(GCC_BUILD_DIR3)
- touch $@
- $(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR3)/.prepared
- (cd $(GCC_BUILD_DIR3); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS_FOR_BUILD="-g -O2 $(HOST_CFLAGS)" \
- $(TARGET_GCC_FLAGS) \
- $(GCC_DIR)/configure $(QUIET) \
- --prefix=/usr \
- --build=$(GNU_HOST_NAME) \
- --host=$(REAL_GNU_TARGET_NAME) \
- --target=$(REAL_GNU_TARGET_NAME) \
- --enable-languages=$(GCC_TARGET_LANGUAGES) \
- --with-gxx-include-dir=/usr/include/c++ \
- --disable-__cxa_atexit \
- --with-gnu-ld \
- --with-gnu-as \
- --disable-libssp \
- $(GCC_SHARED_LIBGCC) \
- $(GCC_WITH_TARGET_GMP) \
- $(GCC_WITH_TARGET_MPFR) \
- $(DISABLE_NLS) \
- $(THREADS) \
- $(MULTILIB) \
- $(SOFT_FLOAT_CONFIG_OPTION) \
- $(GCC_WITH_ABI) $(GCC_WITH_ARCH) $(GCC_WITH_TUNE) \
- $(GCC_USE_SJLJ_EXCEPTIONS) \
- $(DISABLE_LARGEFILE) \
- $(EXTRA_GCC_CONFIG_OPTIONS) \
- $(EXTRA_TARGET_GCC_CONFIG_OPTIONS) \
- )
- touch $@
- $(GCC_BUILD_DIR3)/.compiled: $(GCC_BUILD_DIR3)/.configured
- PATH=$(TARGET_PATH) \
- $(MAKE) $(TARGET_CONFIGURE_OPTS) \
- CFLAGS_FOR_BUILD="-g -O2 $(HOST_CFLAGS)" \
- $(TARGET_GCC_FLAGS) \
- -C $(GCC_BUILD_DIR3) all
- touch $@
- #
- # gcc-lib dir changes names to gcc with 3.4.mumble
- #
- ifeq ($(findstring 3.4.,$(GCC_VERSION)),3.4.)
- GCC_LIB_SUBDIR=lib/gcc/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)
- else
- GCC_LIB_SUBDIR=lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)
- endif
- # sigh... we need to find a better way
- ifeq ($(findstring 4.0.,$(GCC_VERSION)),4.0.)
- GCC_LIB_SUBDIR=lib/gcc/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)
- endif
- ifeq ($(findstring 4.1.,$(GCC_VERSION)),4.1.)
- GCC_LIB_SUBDIR=lib/gcc/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)
- endif
- ifeq ($(findstring 4.2,$(GCC_VERSION)),4.2)
- ifneq ($(findstring 4.2.,$(GCC_VERSION)),4.2.)
- REAL_GCC_VERSION=$(shell cat $(GCC_DIR)/gcc/BASE-VER)
- GCC_LIB_SUBDIR=lib/gcc/$(REAL_GNU_TARGET_NAME)/$(REAL_GCC_VERSION)
- else
- GCC_LIB_SUBDIR=lib/gcc/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)
- endif
- endif
- $(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled
- PATH=$(TARGET_PATH) \
- $(MAKE) $(TARGET_CONFIGURE_OPTS) \
- CFLAGS_FOR_BUILD="-g -O2 $(HOST_CFLAGS)" \
- $(TARGET_GCC_FLAGS) \
- 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 ($(BR2_SOFT_FLOAT),y)
- ifeq ($(findstring 3.3.,$(GCC_VERSION)),3.3.)
- # Add a specs file that defaults to soft float mode.
- cp toolchain/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 $(STRIPCMD) > /dev/null 2>&1)
- -(cd $(TARGET_DIR)/usr/bin && find -type f | xargs $(STRIPCMD) > /dev/null 2>&1)
- -(cd $(TARGET_DIR)/usr/$(GCC_LIB_SUBDIR) && $(STRIPCMD) cc1 cc1plus collect2 > /dev/null 2>&1)
- -(cd $(TARGET_DIR)/usr/lib && $(STRIPCMD) libstdc++.so.*.*.* > /dev/null 2>&1)
- -(cd $(TARGET_DIR)/lib && $(STRIPCMD) 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
- if [ ! -f $(TARGET_DIR)/usr/$(GCC_LIB_SUBDIR)/include/syslimits.h ]; then \
- echo "warning: working around missing syslimits.h"; \
- cp -f $(STAGING_DIR)/usr/$(GCC_LIB_SUBDIR)/include/syslimits.h \
- $(TARGET_DIR)/usr/$(GCC_LIB_SUBDIR)/include/; \
- fi
- # Make sure we have 'cc'.
- if [ ! -e $(TARGET_DIR)/usr/bin/cc ]; then \
- ln -snf gcc $(TARGET_DIR)/usr/bin/cc; \
- fi
- # These are in /lib, so...
- #rm -rf $(TARGET_DIR)/usr/lib/libgcc_s*.so*
- #touch -c $(TARGET_DIR)/usr/bin/gcc
- gcc_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gcc
- gcc_target-clean:
- rm -rf $(GCC_BUILD_DIR3)
- rm -f $(TARGET_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)*
- gcc_target-dirclean:
- rm -rf $(GCC_BUILD_DIR3)
- endif
- # gcc-3.x only
- endif
|