From 2a27def5b6465f449b2be121f372f80e6e37e01d Mon Sep 17 00:00:00 2001 From: Christopher Larson Date: Wed, 29 Apr 2015 16:32:22 -0700 Subject: [PATCH] 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 --- .../include/tcmode-external-sourcery.inc | 2 + recipes-external/gcc/gcc-runtime-external.bb | 141 +++++------------- .../gcc/gcc-sanitizers-external.bb | 18 +++ 3 files changed, 61 insertions(+), 100 deletions(-) create mode 100644 recipes-external/gcc/gcc-sanitizers-external.bb diff --git a/conf/distro/include/tcmode-external-sourcery.inc b/conf/distro/include/tcmode-external-sourcery.inc index 67371d0..7e3ba15 100644 --- a/conf/distro/include/tcmode-external-sourcery.inc +++ b/conf/distro/include/tcmode-external-sourcery.inc @@ -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" diff --git a/recipes-external/gcc/gcc-runtime-external.bb b/recipes-external/gcc/gcc-runtime-external.bb index ac962ce..de3a025 100644 --- a/recipes-external/gcc/gcc-runtime-external.bb +++ b/recipes-external/gcc/gcc-runtime-external.bb @@ -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 = "" diff --git a/recipes-external/gcc/gcc-sanitizers-external.bb b/recipes-external/gcc/gcc-sanitizers-external.bb new file mode 100644 index 0000000..38e82a3 --- /dev/null +++ b/recipes-external/gcc/gcc-sanitizers-external.bb @@ -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))) +}