1SUMMARY = "GNU cc and gcc C compilers" 2HOMEPAGE = "http://www.gnu.org/software/gcc/" 3SECTION = "devel" 4LICENSE = "GPL" 5 6NATIVEDEPS = "" 7 8CVE_PRODUCT = "gcc" 9 10inherit autotools gettext texinfo 11 12BPN = "gcc" 13COMPILERDEP = "virtual/${MLPREFIX}${TARGET_PREFIX}gcc:do_gcc_stash_builddir" 14COMPILERDEP_class-nativesdk = "virtual/${TARGET_PREFIX}gcc-crosssdk:do_gcc_stash_builddir" 15 16python extract_stashed_builddir () { 17 src = d.expand("${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-stashed-builddir-${TARGET_SYS}") 18 dest = d.getVar("B") 19 oe.path.copyhardlinktree(src, dest) 20 staging_processfixme([src + "/fixmepath"], dest, dest, dest, d) 21} 22 23def get_gcc_float_setting(bb, d): 24 if d.getVar('ARMPKGSFX_EABI') == "hf" and d.getVar('TRANSLATED_TARGET_ARCH') == "arm": 25 return "--with-float=hard" 26 if d.getVar('TARGET_FPU') in [ 'soft' ]: 27 return "--with-float=soft" 28 if d.getVar('TARGET_FPU') in [ 'ppc-efd' ]: 29 return "--enable-e500_double" 30 return "" 31 32get_gcc_float_setting[vardepvalue] = "${@get_gcc_float_setting(bb, d)}" 33 34def get_gcc_mips_plt_setting(bb, d): 35 if d.getVar('TRANSLATED_TARGET_ARCH') in [ 'mips', 'mipsel' ] and bb.utils.contains('DISTRO_FEATURES', 'mplt', True, False, d): 36 return "--with-mips-plt" 37 return "" 38 39def get_gcc_ppc_plt_settings(bb, d): 40 if d.getVar('TRANSLATED_TARGET_ARCH') in [ 'powerpc', 'powerpc64' ] and not bb.utils.contains('DISTRO_FEATURES', 'bssplt', True, False, d): 41 return "--enable-secureplt" 42 return "" 43 44def get_long_double_setting(bb, d): 45 if d.getVar('TRANSLATED_TARGET_ARCH') in [ 'powerpc', 'powerpc64' ] and d.getVar('TCLIBC') in [ 'glibc' ]: 46 return "--with-long-double-128" 47 else: 48 return "--without-long-double-128 libgcc_cv_powerpc_float128=no" 49 return "" 50 51def get_gcc_multiarch_setting(bb, d): 52 target_arch = d.getVar('TRANSLATED_TARGET_ARCH') 53 multiarch_options = { 54 "i586": "--enable-targets=all", 55 "i686": "--enable-targets=all", 56 "powerpc": "--enable-targets=powerpc64", 57 "mips": "--enable-targets=all", 58 "sparc": "--enable-targets=all", 59 } 60 61 if bb.utils.contains('DISTRO_FEATURES', 'multiarch', True, False, d): 62 if target_arch in multiarch_options : 63 return multiarch_options[target_arch] 64 return "" 65 66# this is used by the multilib setup of gcc 67def get_tune_parameters(tune, d): 68 availtunes = d.getVar('AVAILTUNES') 69 if tune not in availtunes.split(): 70 bb.error('The tune: %s is not one of the available tunes: %s' % (tune or None, availtunes)) 71 72 localdata = bb.data.createCopy(d) 73 override = ':tune-' + tune 74 localdata.setVar('OVERRIDES', localdata.getVar('OVERRIDES', False) + override) 75 76 retdict = {} 77 retdict['tune'] = tune 78 retdict['ccargs'] = localdata.getVar('TUNE_CCARGS') 79 retdict['features'] = localdata.getVar('TUNE_FEATURES') 80 # BASELIB is used by the multilib code to change library paths 81 retdict['baselib'] = localdata.getVar('BASE_LIB') or localdata.getVar('BASELIB') 82 retdict['arch'] = localdata.getVar('TUNE_ARCH') 83 retdict['abiextension'] = localdata.getVar('ABIEXTENSION') 84 retdict['target_fpu'] = localdata.getVar('TARGET_FPU') 85 retdict['pkgarch'] = localdata.getVar('TUNE_PKGARCH') 86 retdict['package_extra_archs'] = localdata.getVar('PACKAGE_EXTRA_ARCHS') 87 return retdict 88 89get_tune_parameters[vardepsexclude] = "AVAILTUNES TUNE_CCARGS OVERRIDES TUNE_FEATURES BASE_LIB BASELIB TUNE_ARCH ABIEXTENSION TARGET_FPU TUNE_PKGARCH PACKAGE_EXTRA_ARCHS" 90 91DEBIANNAME_${MLPREFIX}libgcc = "libgcc1" 92 93MIRRORS =+ "\ 94${GNU_MIRROR}/gcc ftp://gcc.gnu.org/pub/gcc/releases/ \n \ 95${GNU_MIRROR}/gcc ftp://gd.tuwien.ac.at/gnu/gcc/ \n \ 96${GNU_MIRROR}/gcc http://mirrors.rcn.net/pub/sourceware/gcc/releases/ \n \ 97${GNU_MIRROR}/gcc http://gcc.get-software.com/releases/ \n \ 98${GNU_MIRROR}/gcc http://gcc.get-software.com/releases/ \n \ 99" 100# 101# Set some default values 102# 103gcclibdir = "${libdir}/gcc" 104BINV = "${PV}" 105#S = "${WORKDIR}/gcc-${PV}" 106S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}" 107 108B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}" 109 110target_includedir ?= "${includedir}" 111target_libdir ?= "${libdir}" 112target_base_libdir ?= "${base_libdir}" 113target_prefix ?= "${prefix}" 114 115# We need to ensure that for the shared work directory, the do_patch signatures match 116# The real WORKDIR location isn't a dependency for the shared workdir. 117src_patches[vardepsexclude] = "WORKDIR" 118should_apply[vardepsexclude] += "PN" 119