diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/libgcc-common.inc')
-rw-r--r-- | meta/recipes-devtools/gcc/libgcc-common.inc | 86 |
1 files changed, 51 insertions, 35 deletions
diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc b/meta/recipes-devtools/gcc/libgcc-common.inc index b09ea657e7..d48dc8b823 100644 --- a/meta/recipes-devtools/gcc/libgcc-common.inc +++ b/meta/recipes-devtools/gcc/libgcc-common.inc @@ -1,30 +1,29 @@ BPN = "libgcc" -require gcc-shared-source.inc +require gcc-configure-common.inc INHIBIT_DEFAULT_DEPS = "1" do_configure () { - target=`echo ${TARGET_SYS} | sed -e s#-${SDKPKGSUFFIX}##` install -d ${D}${base_libdir} ${D}${libdir} - hardlinkdir ${STAGING_INCDIR_NATIVE}/${LIBGCCBUILDTREENAME}$target/ ${B} mkdir -p ${B}/${BPN} - mkdir -p ${B}/$target/${BPN}/ + mkdir -p ${B}/${TARGET_SYS}/${BPN}/ cd ${B}/${BPN} chmod a+x ${S}/${BPN}/configure - ${S}/${BPN}/configure ${CONFIGUREOPTS} ${EXTRA_OECONF} + relpath=${@os.path.relpath("${S}/${BPN}", "${B}/${BPN}")} + $relpath/configure ${CONFIGUREOPTS} ${EXTRA_OECONF} } +EXTRACONFFUNCS += "extract_stashed_builddir" +do_configure[depends] += "${COMPILERDEP}" do_compile () { - target=`echo ${TARGET_SYS} | sed -e s#-${SDKPKGSUFFIX}##` cd ${B}/${BPN} - oe_runmake MULTIBUILDTOP=${B}/$target/${BPN}/ + oe_runmake MULTIBUILDTOP=${B}/${TARGET_SYS}/${BPN}/ } do_install () { - target=`echo ${TARGET_SYS} | sed -e s#-${SDKPKGSUFFIX}##` cd ${B}/${BPN} - oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/$target/${BPN}/ install + oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/${TARGET_SYS}/${BPN}/ install # Move libgcc_s into /lib mkdir -p ${D}${base_libdir} @@ -45,11 +44,16 @@ do_install () { rm -rf ${D}${libdir}/${TARGET_SYS}/${BINV}/include } -do_install_append_libc-baremetal () { +do_install:append:libc-baremetal () { + rmdir ${D}${base_libdir} +} +do_install:append:libc-newlib () { rmdir ${D}${base_libdir} } -RDEPENDS_${PN}-dev_libc-baremetal = "" +# No rpm package is actually created but -dev depends on it, avoid dnf error +RDEPENDS:${PN}-dev:libc-baremetal = "" +RDEPENDS:${PN}-dev:libc-newlib = "" BBCLASSEXTEND = "nativesdk" @@ -63,18 +67,18 @@ addtask multilib_install after do_install before do_package do_populate_sysroot fakeroot python do_multilib_install() { import re - multilibs = d.getVar('MULTILIB_VARIANTS', True) + multilibs = d.getVar('MULTILIB_VARIANTS') if not multilibs or bb.data.inherits_class('nativesdk', d): return - binv = d.getVar('BINV', True) + binv = d.getVar('BINV') - mlprefix = d.getVar('MLPREFIX', True) - if ('%slibgcc' % mlprefix) != d.getVar('PN', True): + mlprefix = d.getVar('MLPREFIX') + if ('%slibgcc' % mlprefix) != d.getVar('PN'): return if mlprefix: - orig_tune = d.getVar('DEFAULTTUNE_MULTILIB_ORIGINAL', True) + orig_tune = d.getVar('DEFAULTTUNE_MULTILIB_ORIGINAL') orig_tune_params = get_tune_parameters(orig_tune, d) orig_tune_baselib = orig_tune_params['baselib'] orig_tune_bitness = orig_tune_baselib.replace('lib', '') @@ -82,10 +86,10 @@ fakeroot python do_multilib_install() { orig_tune_bitness = '32' src = '../../../' + orig_tune_baselib + '/' + \ - d.getVar('TARGET_SYS_MULTILIB_ORIGINAL', True) + '/' + binv + '/' + d.getVar('TARGET_SYS_MULTILIB_ORIGINAL') + '/' + binv + '/' - dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + \ - d.getVar('TARGET_SYS', True) + '/' + binv + '/' + orig_tune_bitness + dest = d.getVar('D') + d.getVar('libdir') + '/' + \ + d.getVar('TARGET_SYS') + '/' + binv + '/' + orig_tune_bitness if os.path.lexists(dest): os.unlink(dest) @@ -94,9 +98,9 @@ fakeroot python do_multilib_install() { for ml in multilibs.split(): - tune = d.getVar('DEFAULTTUNE_virtclass-multilib-' + ml, True) + tune = d.getVar('DEFAULTTUNE:virtclass-multilib-' + ml) if not tune: - bb.warn('DEFAULTTUNE_virtclass-multilib-%s is not defined. Skipping...' % ml) + bb.warn('DEFAULTTUNE:virtclass-multilib-%s is not defined. Skipping...' % ml) continue tune_parameters = get_tune_parameters(tune, d) @@ -110,35 +114,47 @@ fakeroot python do_multilib_install() { if not tune_bitness: tune_bitness = '32' # /lib => 32bit lib + tune_abiextension = tune_parameters['abiextension'] + if tune_abiextension: + libcextension = '-gnu' + tune_abiextension + else: + libcextension = '' + src = '../../../' + tune_baselib + '/' + \ - tune_arch + d.getVar('TARGET_VENDOR', True) + 'ml' + ml + \ - '-' + d.getVar('TARGET_OS', True) + '/' + binv + '/' + tune_arch + d.getVar('TARGET_VENDOR') + 'ml' + ml + \ + '-' + d.getVar('TARGET_OS') + libcextension + '/' + binv + '/' - dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + \ - d.getVar('TARGET_SYS', True) + '/' + binv + '/' + tune_bitness + dest = d.getVar('D') + d.getVar('libdir') + '/' + \ + d.getVar('TARGET_SYS') + '/' + binv + '/' + tune_bitness if os.path.lexists(dest): os.unlink(dest) os.symlink(src, dest) } -def get_original_vendoros(d): - vendoros = d.expand('${TARGET_VENDOR}-${TARGET_OS}') - for suffix in [d.getVar('ABIEXTENSION', True), d.getVar('LIBCEXTENSION', True)]: +def get_original_os(d): + vendoros = d.expand('${TARGET_ARCH}${ORIG_TARGET_VENDOR}-${TARGET_OS}') + for suffix in [d.getVar('ABIEXTENSION'), d.getVar('LIBCEXTENSION')]: if suffix and vendoros.endswith(suffix): vendoros = vendoros[:-len(suffix)] + # Arm must use linux-gnueabi not linux as only the former is accepted by gcc + if vendoros.startswith("arm-") and not vendoros.endswith("-gnueabi"): + vendoros = vendoros + "-gnueabi" return vendoros -ORIG_TARGET_VENDOROS := "${@get_original_vendoros(d)}" -BASETARGET_SYS = "${TARGET_ARCH}${ORIG_TARGET_VENDOROS}" +ORIG_TARGET_VENDOR := "${TARGET_VENDOR}" +BASETARGET_SYS = "${@get_original_os(d)}" addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot fakeroot python do_extra_symlinks() { - targetsys = d.getVar('BASETARGET_SYS', True) + if bb.data.inherits_class('nativesdk', d): + return + + targetsys = d.getVar('BASETARGET_SYS') - if targetsys != d.getVar('TARGET_SYS', True): - dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + targetsys - src = d.getVar('TARGET_SYS', True) - if not os.path.lexists(dest) and os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)): + if targetsys != d.getVar('TARGET_SYS'): + dest = d.getVar('D') + d.getVar('libdir') + '/' + targetsys + src = d.getVar('TARGET_SYS') + if not os.path.lexists(dest) and os.path.lexists(d.getVar('D') + d.getVar('libdir')): os.symlink(src, dest) } |