123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- ################################################################################
- #
- # Common variables for the gcc-initial, gcc-intermediate and gcc-final
- # packages.
- #
- ################################################################################
- #
- # Version, site and source
- #
- GCC_VERSION = $(call qstrip,$(BR2_GCC_VERSION))
- ifeq ($(BR2_GCC_VERSION_SNAP),y)
- GCC_SNAP_DATE = $(call qstrip,$(BR2_GCC_SNAP_DATE))
- endif
- ifneq ($(GCC_SNAP_DATE),)
- GCC_SITE = ftp://gcc.gnu.org/pub/gcc/snapshots/$(GCC_SNAP_DATE)/
- else ifeq ($(findstring avr32,$(GCC_VERSION)),avr32)
- GCC_SITE = ftp://www.at91.com/pub/buildroot/
- else ifeq ($(findstring arc,$(GCC_VERSION)),arc)
- GCC_SITE = $(BR2_ARC_SITE)
- else
- GCC_SITE = $(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION)
- endif
- GCC_SOURCE = gcc-$(GCC_VERSION).tar.bz2
- #
- # Xtensa special hook
- #
- define HOST_GCC_XTENSA_OVERLAY_EXTRACT
- tar xf $(BR2_XTENSA_OVERLAY_DIR)/xtensa_$(call qstrip,\
- $(BR2_XTENSA_CORE_NAME)).tar -C $(@D) --strip-components=1 gcc
- endef
- #
- # Apply patches
- #
- ifeq ($(ARCH),powerpc)
- ifneq ($(BR2_SOFT_FLOAT),)
- define HOST_GCC_APPLY_POWERPC_PATCH
- support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) powerpc-link-with-math-lib.patch.conditional
- endef
- endif
- endif
- define HOST_GCC_APPLY_PATCHES
- support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) \*.patch
- $(HOST_GCC_APPLY_POWERPC_PATCH)
- endef
- #
- # Custom extract command to save disk space
- #
- define HOST_GCC_EXTRACT_CMDS
- $(BZCAT) $(DL_DIR)/$(GCC_SOURCE) | \
- $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $(@D) \
- --exclude='libjava/*' \
- --exclude='libgo/*' \
- --exclude='gcc/testsuite/*' \
- --exclude='libstdc++-v3/testsuite/*' \
- $(TAR_OPTIONS) -
- mkdir -p $(@D)/libstdc++-v3/testsuite/
- echo "all:" > $(@D)/libstdc++-v3/testsuite/Makefile.in
- echo "install:" >> $(@D)/libstdc++-v3/testsuite/Makefile.in
- endef
- #
- # Create 'build' directory and configure symlink
- #
- define HOST_GCC_CONFIGURE_SYMLINK
- mkdir -p $(@D)/build
- ln -s ../configure $(@D)/build/configure
- endef
- #
- # Common configuration options
- #
- HOST_GCC_COMMON_DEPENDENCIES = \
- host-binutils \
- host-gmp \
- host-mpfr
- HOST_GCC_COMMON_CONF_OPT = \
- --target=$(GNU_TARGET_NAME) \
- --with-sysroot=$(STAGING_DIR) \
- --disable-__cxa_atexit \
- --with-gnu-ld \
- --disable-libssp \
- --disable-multilib \
- --with-gmp=$(HOST_DIR)/usr \
- --with-mpfr=$(HOST_DIR)/usr
- # Don't build documentation. It takes up extra space / build time,
- # and sometimes needs specific makeinfo versions to work
- HOST_GCC_COMMON_CONF_ENV = \
- MAKEINFO=missing
- # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810
- # Workaround until it's fixed in 4.5.4 or later
- ifeq ($(ARCH),powerpc)
- ifeq ($(findstring x4.5.,x$(GCC_VERSION)),x4.5.)
- HOST_GCC_COMMON_CONF_OPT += --disable-target-optspace
- endif
- else
- HOST_GCC_COMMON_CONF_OPT += --enable-target-optspace
- endif
- # gcc 4.6.x quadmath requires wchar
- ifneq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y)
- HOST_GCC_COMMON_CONF_OPT += --disable-libquadmath
- endif
- ifeq ($(BR2_GCC_ENABLE_TLS),y)
- HOST_GCC_COMMON_CONF_OPT += --enable-tls
- else
- HOST_GCC_COMMON_CONF_OPT += --disable-tls
- endif
- ifeq ($(BR2_PTHREADS_NONE),y)
- HOST_GCC_COMMON_CONF_OPT += \
- --disable-threads \
- --disable-libitm \
- --disable-libatomic
- else
- HOST_GCC_COMMON_CONF_OPT += --enable-threads
- endif
- ifeq ($(BR2_GCC_NEEDS_MPC),y)
- HOST_GCC_COMMON_DEPENDENCIES += host-mpc
- HOST_GCC_COMMON_CONF_OPT += --with-mpc=$(HOST_DIR)/usr
- endif
- ifeq ($(BR2_arc),y)
- HOST_GCC_COMMON_DEPENDENCIES += host-flex host-bison
- endif
- ifeq ($(BR2_SOFT_FLOAT),y)
- # only mips*-*-*, arm*-*-* and sparc*-*-* accept --with-float
- # powerpc seems to be needing it as well
- ifeq ($(BR2_arm)$(BR2_armeb)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_powerpc)$(BR2_sparc),y)
- HOST_GCC_COMMON_CONF_OPT += --with-float=soft
- endif
- endif
- ifeq ($(BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE),y)
- HOST_GCC_COMMON_CONF_OPT += --disable-decimal-float
- endif
- # Determine arch/tune/abi/cpu options
- ifneq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),)
- HOST_GCC_COMMON_CONF_OPT += --with-arch=$(BR2_GCC_TARGET_ARCH)
- endif
- ifneq ($(call qstrip,$(BR2_GCC_TARGET_TUNE)),)
- HOST_GCC_COMMON_CONF_OPT += --with-tune=$(BR2_GCC_TARGET_TUNE)
- endif
- ifneq ($(call qstrip,$(BR2_GCC_TARGET_ABI)),)
- HOST_GCC_COMMON_CONF_OPT += --with-abi=$(BR2_GCC_TARGET_ABI)
- endif
- # GCC doesn't support --with-cpu for bfin
- ifeq ($(BR2_bfin),)
- ifneq ($(call qstrip,$(BR2_GCC_TARGET_CPU)),)
- ifneq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),)
- HOST_GCC_COMMON_CONF_OPT += --with-cpu=$(call qstrip,$(BR2_GCC_TARGET_CPU)-$(BR2_GCC_TARGET_CPU_REVISION))
- else
- HOST_GCC_COMMON_CONF_OPT += --with-cpu=$(call qstrip,$(BR2_GCC_TARGET_CPU))
- endif
- endif
- endif
- GCC_TARGET_FPU = $(call qstrip,$(BR2_GCC_TARGET_FPU))
- ifneq ($(GCC_TARGET_FPU),)
- HOST_GCC_COMMON_CONF_OPT += --with-fpu=$(GCC_TARGET_FPU)
- endif
- GCC_TARGET_FLOAT_ABI = $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI))
- ifneq ($(GCC_TARGET_FLOAT_ABI),)
- HOST_GCC_COMMON_CONF_OPT += --with-float=$(GCC_TARGET_FLOAT_ABI)
- endif
- GCC_TARGET_MODE = $(call qstrip,$(BR2_GCC_TARGET_MODE))
- ifneq ($(GCC_TARGET_MODE),)
- HOST_GCC_COMMON_CONF_OPT += --with-mode=$(GCC_TARGET_MODE)
- endif
- # Branding works on >= 4.3
- ifneq ($(findstring x4.2.,x$(GCC_VERSION)),x4.2.)
- HOST_GCC_COMMON_CONF_OPT += \
- --with-pkgversion="Buildroot $(BR2_VERSION_FULL)" \
- --with-bugurl="http://bugs.buildroot.net/"
- endif
- # AVR32 GCC special configuration
- ifeq ($(BR2_avr32),y)
- HOST_GCC_COMMON_CONF_OPT += --disable-libmudflap
- endif
- # ARM Thumb and mudflap aren't friends
- ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
- HOST_GCC_COMMON_CONF_OPT += --disable-libmudflap
- endif
- # Blackfin doesn't do mudflap
- ifeq ($(BR2_bfin),y)
- HOST_GCC_COMMON_CONF_OPT += --disable-libmudflap
- endif
- # Disable mudflap and enable proper double/long double for SPE ABI
- ifeq ($(BR2_powerpc_SPE),y)
- HOST_GCC_COMMON_CONF_OPT += \
- --disable-libmudflap \
- --enable-e500_double \
- --with-long-double-128
- endif
- include $(sort $(wildcard package/gcc/*/*.mk))
|