gcc-runtime-external: use upstream metadata

Also splits sanitizers into gcc-sanitizers to align with oe-core.

JIRA: SB-5005

Signed-off-by: Christopher Larson <kergoth@gmail.com>
This commit is contained in:
Christopher Larson
2015-04-29 16:32:22 -07:00
parent 5b8c219f59
commit 2a27def5b6
3 changed files with 61 additions and 100 deletions

View File

@@ -30,6 +30,7 @@ PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils ?= "binutils-external-cross-
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs ?= "gcc-runtime-external"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc ?= "glibc-external"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial ?= "glibc-external"
PREFERRED_PROVIDER_gcc-sanitizers ?= "gcc-sanitizers-external"
PREFERRED_PROVIDER_glibc ?= "glibc-external"
PREFERRED_PROVIDER_virtual/libc ?= "glibc-external"
PREFERRED_PROVIDER_virtual/libintl ?= "glibc-external"
@@ -55,6 +56,7 @@ PNBLACKLIST[gcc-cross] = "not building with an external toolchain"
PNBLACKLIST[gcc-cross-initial] = "not building with an external toolchain"
PNBLACKLIST[gcc-cross-intermediate] = "not building with an external toolchain"
PNBLACKLIST[gcc-runtime] = "not building with an external toolchain"
PNBLACKLIST[gcc-sanitizers] = "not building with an external toolchain"
PNBLACKLIST[libgcc-initial] = "not building with an external toolchain"
PNBLACKLIST[libgcc] = "not building with an external toolchain"
PNBLACKLIST[linux-libc-headers] = "not building with an external toolchain"

View File

@@ -1,114 +1,55 @@
inherit external-toolchain
SUMMARY = "The GNU Compiler Collection - gcc runtime libraries"
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
GCC_VERSION := "${@external_run(d, 'gcc', '-dumpversion').rstrip()}"
PV = "${GCC_VERSION}"
BINV = "${GCC_VERSION}"
DEPENDS += "libgcc"
PROVIDES += "virtual/${TARGET_PREFIX}compilerlibs"
require recipes-devtools/gcc/gcc-runtime.inc
inherit external-toolchain
PACKAGES =+ "\
libstdc++ \
libstdc++-dev \
libstdc++-staticdev \
libatomic \
libatomic-dev \
libatomic-staticdev \
libasan \
libasan-dev \
libasan-staticdev \
liblsan \
liblsan-dev \
liblsan-staticdev \
libubsan \
libubsan-dev \
libubsan-staticdev \
libtsan \
libtsan-dev \
libtsan-staticdev \
libg2c \
libg2c-dev \
libg2c-staticdev \
libfortran \
libfortran-dev \
libfortran-staticdev \
libmudflap \
libmudflap-dev \
libmudflap-staticdev \
libquadmath \
libquadmath-dev \
libquadmath-staticdev \
libssp \
libssp-dev \
libssp-staticdev \
libgomp \
libgomp-dev \
libgomp-staticdev \
libitm \
libitm-dev \
libitm-staticdev \
"
# GCC >4.2 is GPLv3
LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
DEPENDS = "libgcc"
EXTRA_OECONF = ""
python () {
lic_deps = d.getVarFlag('do_populate_lic', 'depends', True).split()
d.setVarFlag('do_populate_lic', 'depends', ' '.join(filter(lambda d: d != 'gcc-source:do_unpack', lic_deps)))
SUMMARY_libitm = "The Transactional Memory runtime library"
SUMMARY_libitm-dev = "${SUMMARY_libitm} - development files"
cfg_deps = d.getVarFlag('do_configure', 'depends', True).split()
d.setVarFlag('do_configure', 'depends', ' '.join(filter(lambda d: d != 'gcc-source:do_preconfigure', cfg_deps)))
}
target_libdir = "${libdir}"
HEADERS_MULTILIB_SUFFIX ?= "${@external_run(d, 'gcc', *(TARGET_CC_ARCH.split() + ['-print-sysroot-headers-suffix'])).rstrip()}"
external_libroot = "${@os.path.realpath('${EXTERNAL_TOOLCHAIN_LIBROOT}').replace(os.path.realpath('${EXTERNAL_TOOLCHAIN}') + '/', '/')}"
FILES_MIRRORS =. "\
${libdir}/gcc/${TARGET_SYS}/${GCC_VERSION}/|${external_libroot}/\n \
${includedir}/c\+\+/${GCC_VERSION}/${TARGET_SYS}/|${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}${HEADERS_MULTILIB_SUFFIX}/\n \
${includedir}/c\+\+/${GCC_VERSION}/${TARGET_SYS}/|${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}/\n \
"
FILES_libstdc++ = "${libdir}/libstdc++${SOLIBS}"
FILES_libstdc++-dev = "${libdir}/libstdc++${SOLIBSDEV} \
${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}"
FILES_libstdc++-staticdev = "${libdir}/libstdc++.a \
${libdir}/libsupc++.a"
FILES_libatomic = "${libdir}/libatomic${SOLIBS}"
FILES_libatomic-dev = "${libdir}/libatomic${SOLIBSDEV}"
FILES_libatomic-staticdev = "${libdir}/libatomic.a"
FILES_libasan = "${libdir}/libasan${SOLIBS}"
FILES_libasan-dev = "${libdir}/libasan${SOLIBSDEV}"
FILES_libasan-staticdev = "${libdir}/libasan.a"
FILES_liblsan = "${libdir}/liblsan${SOLIBS}"
FILES_liblsan-dev = "${libdir}/liblsan${SOLIBSDEV}"
FILES_liblsan-staticdev = "${libdir}/liblsan.a"
FILES_libubsan = "${libdir}/libubsan${SOLIBS}"
FILES_libubsan-dev = "${libdir}/libubsan${SOLIBSDEV}"
FILES_libubsan-staticdev = "${libdir}/libubsan.a"
FILES_libtsan = "${libdir}/libtsan${SOLIBS}"
FILES_libtsan-dev = "${libdir}/libtsan${SOLIBSDEV}"
FILES_libtsan-staticdev = "${libdir}/libtsan.a"
FILES_libg2c = "${libdir}/libg2c${SOLIBS}"
FILES_libg2c-dev = "${libdir}/libg2c${SOLIBSDEV}"
FILES_libg2c-staticdev = "${libdir}/libg2c.a"
FILES_libfortran = "${libdir}/libfortran${SOLIBS}"
FILES_libfortran-dev = "${libdir}/libfortran${SOLIBSDEV}"
FILES_libfortran-staticdev = "${libdir}/libfortran.a"
FILES_libmudflap = "${libdir}/libmudflap${SOLIBS}"
FILES_libmudflap-dev = "${libdir}/libmudflap${SOLIBSDEV}"
FILES_libmudflap-staticdev = "${libdir}/libmudflap.a"
FILES_libquadmath = "${libdir}/libquadmath${SOLIBS}"
FILES_libquadmath-dev = "${libdir}/libquadmath${SOLIBSDEV} \
${libdir}/gcc/${TARGET_SYS}/${GCC_VERSION}/include/quadmath*"
FILES_libquadmath-staticdev = "${libdir}/libquadmath.a"
FILES_libssp = "${libdir}/libssp${SOLIBS}"
FILES_libssp-dev = "${libdir}/libssp${SOLIBSDEV} \
${libdir}/gcc/${TARGET_SYS}/${GCC_VERSION}/include/ssp"
FILES_libssp-staticdev = "${libdir}/libssp.a"
FILES_libgomp = "${libdir}/libgomp${SOLIBS}"
FILES_libgomp-dev = "${libdir}/libgomp${SOLIBSDEV} \
${libdir}/gcc/${TARGET_SYS}/${GCC_VERSION}/include/omp.h"
FILES_libgomp-staticdev = "${libdir}/libgomp.a"
FILES_libitm = "${libdir}/libitm${SOLIBS}"
FILES_libitm-dev = "${libdir}/libitm${SOLIBSDEV}"
FILES_libitm-staticdev = "${libdir}/libitm.a"
do_install_extra () {
if [ "${TARGET_SYS}" != "${EXTERNAL_TARGET_SYS}" ]; then
if [ -d "${D}${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}" ]; then
mv -v "${D}${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}/." "${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/"
fi
fi
FILES_${PN}-dbg += "${datadir}/gdb/python/libstdcxx \
${datadir}/gcc-${GCC_VERSION}/python/libstdcxx"
# Clear out the unused c++ header multilibs
multilib="${HEADERS_MULTILIB_SUFFIX}"
for path in ${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/*; do
case ${path##*/} in
${multilib#/})
mv -v "$path/"* "${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/"
;;
esac
rm -rfv "$path"
done
}
do_package[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
FILES_${PN}-dbg += "${datadir}/gdb/python/libstdcxx"
FILES_libstdc++-dev = "\
${includedir}/c++ \
${libdir}/libstdc++.so \
${libdir}/libstdc++.la \
${libdir}/libsupc++.la \
"
BBCLASSEXTEND = ""

View File

@@ -0,0 +1,18 @@
GCC_VERSION := "${@external_run(d, 'gcc', '-dumpversion').rstrip()}"
PV = "${GCC_VERSION}"
BINV = "${GCC_VERSION}"
require recipes-devtools/gcc/gcc-sanitizers.inc
inherit external-toolchain
# Undo various bits we don't want from the upstream include
EXTRA_OECONF = ""
BBCLASSEXTEND = ""
python () {
lic_deps = d.getVarFlag('do_populate_lic', 'depends', True).split()
d.setVarFlag('do_populate_lic', 'depends', ' '.join(filter(lambda d: d != 'gcc-source:do_unpack', lic_deps)))
cfg_deps = d.getVarFlag('do_configure', 'depends', True).split()
d.setVarFlag('do_configure', 'depends', ' '.join(filter(lambda d: d != 'gcc-source:do_preconfigure', cfg_deps)))
}