gcc.mk 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. ################################################################################
  2. #
  3. # Common variables for the gcc-initial, gcc-intermediate and gcc-final
  4. # packages.
  5. #
  6. ################################################################################
  7. #
  8. # Version, site and source
  9. #
  10. GCC_VERSION = $(call qstrip,$(BR2_GCC_VERSION))
  11. ifeq ($(BR2_GCC_VERSION_SNAP),y)
  12. GCC_SNAP_DATE = $(call qstrip,$(BR2_GCC_SNAP_DATE))
  13. endif
  14. ifneq ($(GCC_SNAP_DATE),)
  15. GCC_SITE = ftp://gcc.gnu.org/pub/gcc/snapshots/$(GCC_SNAP_DATE)/
  16. else ifeq ($(findstring avr32,$(GCC_VERSION)),avr32)
  17. GCC_SITE = ftp://www.at91.com/pub/buildroot/
  18. else ifeq ($(findstring arc,$(GCC_VERSION)),arc)
  19. GCC_SITE = $(BR2_ARC_SITE)
  20. else
  21. GCC_SITE = $(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION)
  22. endif
  23. GCC_SOURCE = gcc-$(GCC_VERSION).tar.bz2
  24. #
  25. # Xtensa special hook
  26. #
  27. define HOST_GCC_XTENSA_OVERLAY_EXTRACT
  28. tar xf $(BR2_XTENSA_OVERLAY_DIR)/xtensa_$(call qstrip,\
  29. $(BR2_XTENSA_CORE_NAME)).tar -C $(@D) --strip-components=1 gcc
  30. endef
  31. #
  32. # Apply patches
  33. #
  34. ifeq ($(ARCH),powerpc)
  35. ifneq ($(BR2_SOFT_FLOAT),)
  36. define HOST_GCC_APPLY_POWERPC_PATCH
  37. support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) powerpc-link-with-math-lib.patch.conditional
  38. endef
  39. endif
  40. endif
  41. define HOST_GCC_APPLY_PATCHES
  42. support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) \*.patch
  43. $(HOST_GCC_APPLY_POWERPC_PATCH)
  44. endef
  45. #
  46. # Custom extract command to save disk space
  47. #
  48. define HOST_GCC_EXTRACT_CMDS
  49. $(BZCAT) $(DL_DIR)/$(GCC_SOURCE) | \
  50. $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $(@D) \
  51. --exclude='libjava/*' \
  52. --exclude='libgo/*' \
  53. --exclude='gcc/testsuite/*' \
  54. --exclude='libstdc++-v3/testsuite/*' \
  55. $(TAR_OPTIONS) -
  56. mkdir -p $(@D)/libstdc++-v3/testsuite/
  57. echo "all:" > $(@D)/libstdc++-v3/testsuite/Makefile.in
  58. echo "install:" >> $(@D)/libstdc++-v3/testsuite/Makefile.in
  59. endef
  60. #
  61. # Create 'build' directory and configure symlink
  62. #
  63. define HOST_GCC_CONFIGURE_SYMLINK
  64. mkdir -p $(@D)/build
  65. ln -s ../configure $(@D)/build/configure
  66. endef
  67. #
  68. # Common configuration options
  69. #
  70. HOST_GCC_COMMON_DEPENDENCIES = \
  71. host-binutils \
  72. host-gmp \
  73. host-mpfr
  74. HOST_GCC_COMMON_CONF_OPT = \
  75. --target=$(GNU_TARGET_NAME) \
  76. --with-sysroot=$(STAGING_DIR) \
  77. --disable-__cxa_atexit \
  78. --with-gnu-ld \
  79. --disable-libssp \
  80. --disable-multilib \
  81. --with-gmp=$(HOST_DIR)/usr \
  82. --with-mpfr=$(HOST_DIR)/usr
  83. # Don't build documentation. It takes up extra space / build time,
  84. # and sometimes needs specific makeinfo versions to work
  85. HOST_GCC_COMMON_CONF_ENV = \
  86. MAKEINFO=missing
  87. # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810
  88. # Workaround until it's fixed in 4.5.4 or later
  89. ifeq ($(ARCH),powerpc)
  90. ifeq ($(findstring x4.5.,x$(GCC_VERSION)),x4.5.)
  91. HOST_GCC_COMMON_CONF_OPT += --disable-target-optspace
  92. endif
  93. else
  94. HOST_GCC_COMMON_CONF_OPT += --enable-target-optspace
  95. endif
  96. # gcc 4.6.x quadmath requires wchar
  97. ifneq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y)
  98. HOST_GCC_COMMON_CONF_OPT += --disable-libquadmath
  99. endif
  100. ifeq ($(BR2_GCC_ENABLE_TLS),y)
  101. HOST_GCC_COMMON_CONF_OPT += --enable-tls
  102. else
  103. HOST_GCC_COMMON_CONF_OPT += --disable-tls
  104. endif
  105. ifeq ($(BR2_PTHREADS_NONE),y)
  106. HOST_GCC_COMMON_CONF_OPT += \
  107. --disable-threads \
  108. --disable-libitm \
  109. --disable-libatomic
  110. else
  111. HOST_GCC_COMMON_CONF_OPT += --enable-threads
  112. endif
  113. ifeq ($(BR2_GCC_NEEDS_MPC),y)
  114. HOST_GCC_COMMON_DEPENDENCIES += host-mpc
  115. HOST_GCC_COMMON_CONF_OPT += --with-mpc=$(HOST_DIR)/usr
  116. endif
  117. ifeq ($(BR2_arc),y)
  118. HOST_GCC_COMMON_DEPENDENCIES += host-flex host-bison
  119. endif
  120. ifeq ($(BR2_SOFT_FLOAT),y)
  121. # only mips*-*-*, arm*-*-* and sparc*-*-* accept --with-float
  122. # powerpc seems to be needing it as well
  123. ifeq ($(BR2_arm)$(BR2_armeb)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_powerpc)$(BR2_sparc),y)
  124. HOST_GCC_COMMON_CONF_OPT += --with-float=soft
  125. endif
  126. endif
  127. ifeq ($(BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE),y)
  128. HOST_GCC_COMMON_CONF_OPT += --disable-decimal-float
  129. endif
  130. # Determine arch/tune/abi/cpu options
  131. ifneq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),)
  132. HOST_GCC_COMMON_CONF_OPT += --with-arch=$(BR2_GCC_TARGET_ARCH)
  133. endif
  134. ifneq ($(call qstrip,$(BR2_GCC_TARGET_TUNE)),)
  135. HOST_GCC_COMMON_CONF_OPT += --with-tune=$(BR2_GCC_TARGET_TUNE)
  136. endif
  137. ifneq ($(call qstrip,$(BR2_GCC_TARGET_ABI)),)
  138. HOST_GCC_COMMON_CONF_OPT += --with-abi=$(BR2_GCC_TARGET_ABI)
  139. endif
  140. # GCC doesn't support --with-cpu for bfin
  141. ifeq ($(BR2_bfin),)
  142. ifneq ($(call qstrip,$(BR2_GCC_TARGET_CPU)),)
  143. ifneq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),)
  144. HOST_GCC_COMMON_CONF_OPT += --with-cpu=$(call qstrip,$(BR2_GCC_TARGET_CPU)-$(BR2_GCC_TARGET_CPU_REVISION))
  145. else
  146. HOST_GCC_COMMON_CONF_OPT += --with-cpu=$(call qstrip,$(BR2_GCC_TARGET_CPU))
  147. endif
  148. endif
  149. endif
  150. GCC_TARGET_FPU = $(call qstrip,$(BR2_GCC_TARGET_FPU))
  151. ifneq ($(GCC_TARGET_FPU),)
  152. HOST_GCC_COMMON_CONF_OPT += --with-fpu=$(GCC_TARGET_FPU)
  153. endif
  154. GCC_TARGET_FLOAT_ABI = $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI))
  155. ifneq ($(GCC_TARGET_FLOAT_ABI),)
  156. HOST_GCC_COMMON_CONF_OPT += --with-float=$(GCC_TARGET_FLOAT_ABI)
  157. endif
  158. GCC_TARGET_MODE = $(call qstrip,$(BR2_GCC_TARGET_MODE))
  159. ifneq ($(GCC_TARGET_MODE),)
  160. HOST_GCC_COMMON_CONF_OPT += --with-mode=$(GCC_TARGET_MODE)
  161. endif
  162. # Branding works on >= 4.3
  163. ifneq ($(findstring x4.2.,x$(GCC_VERSION)),x4.2.)
  164. HOST_GCC_COMMON_CONF_OPT += \
  165. --with-pkgversion="Buildroot $(BR2_VERSION_FULL)" \
  166. --with-bugurl="http://bugs.buildroot.net/"
  167. endif
  168. # AVR32 GCC special configuration
  169. ifeq ($(BR2_avr32),y)
  170. HOST_GCC_COMMON_CONF_OPT += --disable-libmudflap
  171. endif
  172. # ARM Thumb and mudflap aren't friends
  173. ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
  174. HOST_GCC_COMMON_CONF_OPT += --disable-libmudflap
  175. endif
  176. # Blackfin doesn't do mudflap
  177. ifeq ($(BR2_bfin),y)
  178. HOST_GCC_COMMON_CONF_OPT += --disable-libmudflap
  179. endif
  180. # Disable mudflap and enable proper double/long double for SPE ABI
  181. ifeq ($(BR2_powerpc_SPE),y)
  182. HOST_GCC_COMMON_CONF_OPT += \
  183. --disable-libmudflap \
  184. --enable-e500_double \
  185. --with-long-double-128
  186. endif
  187. include $(sort $(wildcard package/gcc/*/*.mk))