commit: 66f05bf7536ef5dadde32b0faf4ad199eef90dab Author: Aric Belsito <lluixhi <AT> gmail <DOT> com> AuthorDate: Sat Jan 6 22:37:31 2018 +0000 Commit: Aric Belsito <lluixhi <AT> gmail <DOT> com> CommitDate: Sat Jan 6 22:37:31 2018 +0000 URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=66f05bf7
toolchain.eclass: sync with upstream eclass/toolchain.eclass | 90 ++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 46 deletions(-) diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass index e3011d6..d3a06ea 100644 --- a/eclass/toolchain.eclass +++ b/eclass/toolchain.eclass @@ -1,4 +1,4 @@ -# Copyright 1999-2016 Gentoo Foundation +# Copyright 1999-2018 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # Maintainer: Toolchain Ninjas <toolch...@gentoo.org> @@ -23,14 +23,13 @@ fi FEATURES=${FEATURES/multilib-strict/} -EXPORTED_FUNCTIONS="pkg_setup src_unpack src_compile src_test src_install pkg_postinst pkg_postrm" case ${EAPI:-0} in - 0|1) die "Need to upgrade to at least EAPI=2";; - 2|3) EXPORTED_FUNCTIONS+=" src_prepare src_configure" ;; - 4*|5*) EXPORTED_FUNCTIONS+=" pkg_pretend src_prepare src_configure" ;; - *) die "I don't speak EAPI ${EAPI}." + 0|1|2|3) die "Need to upgrade to at least EAPI=4" ;; + 4*|5*) ;; + *) die "I don't speak EAPI ${EAPI}." ;; esac -EXPORT_FUNCTIONS ${EXPORTED_FUNCTIONS} +EXPORT_FUNCTIONS pkg_pretend pkg_setup src_unpack src_prepare src_configure \ + src_compile src_test src_install pkg_postinst pkg_postrm #---->> globals <<---- @@ -390,10 +389,6 @@ toolchain_pkg_pretend() { #---->> pkg_setup <<---- toolchain_pkg_setup() { - case ${EAPI} in - 2|3) toolchain_pkg_pretend ;; - esac - # we dont want to use the installed compiler's specs to build gcc unset GCC_SPECS unset LANGUAGES #265283 @@ -496,7 +491,7 @@ toolchain_src_prepare() { do_gcc_PIE_patches epatch_user - if ( tc_version_is_at_least 4.8.2 || use hardened ) && ! use vanilla ; then + if ( tc_version_is_at_least 4.8.2 || use_if_iuse hardened ) && ! use vanilla ; then make_gcc_hard fi @@ -538,7 +533,7 @@ toolchain_src_prepare() { fi # >= gcc-4.3 doesn't bundle ecj.jar, so copy it - if tc_version_is_at_least 4.3 && use gcj ; then + if tc_version_is_at_least 4.3 && use_if_iuse gcj ; then if tc_version_is_at_least 4.5 ; then einfo "Copying ecj-4.5.jar" cp -pPR "${DISTDIR}/ecj-4.5.jar" "${S}/ecj.jar" || die @@ -648,20 +643,20 @@ make_gcc_hard() { # Gcc >= 6.X we can use configurations options to turn pie/ssp on as default if tc_version_is_at_least 6.0 ; then - if use pie ; then + if use_if_iuse pie ; then einfo "Updating gcc to use automatic PIE building ..." fi - if use ssp ; then + if use_if_iuse ssp ; then einfo "Updating gcc to use automatic SSP building ..." fi - if use hardened ; then + if use_if_iuse hardened ; then # Will add some optimatizion as default. gcc_hard_flags+=" -DEXTRA_OPTIONS" # rebrand to make bug reports easier BRANDING_GCC_PKGVERSION=${BRANDING_GCC_PKGVERSION/Gentoo/Gentoo Hardened} fi else - if use hardened ; then + if use_if_iuse hardened ; then # rebrand to make bug reports easier BRANDING_GCC_PKGVERSION=${BRANDING_GCC_PKGVERSION/Gentoo/Gentoo Hardened} if hardened_gcc_works ; then @@ -909,7 +904,7 @@ toolchain_src_configure() { # Use the default ("release") checking because upstream usually neglects # to test "disabled" so it has a history of breaking. #317217 - if tc_version_is_at_least 3.4 ; then + if tc_version_is_at_least 3.4 && in_iuse debug ; then # The "release" keyword is new to 4.0. #551636 local off=$(tc_version_is_at_least 4.0 && echo release || echo no) confgcc+=( --enable-checking="${GCC_CHECKS_LIST:-$(usex debug yes ${off})}" ) @@ -922,7 +917,7 @@ toolchain_src_configure() { ) # If we want hardened support with the newer piepatchset for >=gcc 4.4 - if tc_version_is_at_least 4.4 && want_minispecs ; then + if tc_version_is_at_least 4.4 && want_minispecs && in_iuse hardened ; then confgcc+=( $(use_enable hardened esp) ) fi @@ -934,7 +929,7 @@ toolchain_src_configure() { fi # Support to disable pch when building libstdcxx - if tc_version_is_at_least 6.0 && ! use pch ; then + if tc_version_is_at_least 6.0 && ! use_if_iuse pch ; then confgcc+=( --disable-libstdcxx-pch ) fi @@ -998,7 +993,7 @@ toolchain_src_configure() { --disable-threads --without-headers ) - elif built_with_use --hidden --missing false ${CATEGORY}/${needed_libc} crosscompile_opts_headers-only ; then + elif has_version "${CATEGORY}/${needed_libc}[crosscompile_opts_headers-only(-)]" ; then confgcc+=( "${confgcc_no_libc[@]}" --with-sysroot="${PREFIX}"/${CTARGET} @@ -1061,12 +1056,12 @@ toolchain_src_configure() { gcc-multilib-configure # ppc altivec support - confgcc+=( $(use_enable altivec) ) + in_iuse altivec && confgcc+=( $(use_enable altivec) ) # gcc has fixed-point arithmetic support in 4.3 for mips targets that can # significantly increase compile time by several hours. This will allow # users to control this feature in the event they need the support. - tc_version_is_at_least 4.3 && confgcc+=( $(use_enable fixed-point) ) + tc_version_is_at_least 4.3 && in_iuse fixed-point && confgcc+=( $(use_enable fixed-point) ) case $(tc-is-softfloat) in yes) confgcc+=( --with-float=soft ) ;; @@ -1232,23 +1227,26 @@ toolchain_src_configure() { # graphite was added in 4.4 but we only support it in 4.8+ due to external # library issues. #448024 - if tc_version_is_at_least 5.0 ; then + if tc_version_is_at_least 5.0 && in_iuse graphite ; then confgcc+=( $(use_with graphite isl) ) use graphite && confgcc+=( --disable-isl-version-check ) - elif tc_version_is_at_least 4.8 ; then + elif tc_version_is_at_least 4.8 && in_iuse graphite ; then confgcc+=( $(use_with graphite cloog) ) use graphite && confgcc+=( --disable-isl-version-check ) elif tc_version_is_at_least 4.4 ; then confgcc+=( --without-{cloog,ppl} ) fi - if tc_version_is_at_least 4.8 ; then + if tc_version_is_at_least 4.8 && in_iuse sanitize ; then confgcc+=( $(use_enable sanitize libsanitizer) ) fi - if tc_version_is_at_least 6.0 ; then + if tc_version_is_at_least 6.0 && in_iuse pie ; then + confgcc+=( $(use_enable pie default-pie) ) + fi + + if tc_version_is_at_least 6.0 && in_iuse ssp ; then confgcc+=( - $(use_enable pie default-pie) # This defaults to -fstack-protector-strong. $(use_enable ssp default-ssp) ) @@ -1487,7 +1485,7 @@ gcc_do_filter_flags() { # "hppa2.0-unknown-linux-gnu" -> hppa2_0_unknown_linux_gnu local VAR="CFLAGS_"${CTARGET//[-.]/_} - CXXFLAGS=${!VAR} + CXXFLAGS=${!VAR-${CFLAGS}} fi export GCJFLAGS=${GCJFLAGS:-${CFLAGS}} @@ -1578,7 +1576,7 @@ gcc_do_make() { # resulting binaries natively ^^; GCC_MAKE_TARGET=${GCC_MAKE_TARGET-all} else - if tc_version_is_at_least 3.3 && use pgo; then + if tc_version_is_at_least 3.3 && use_if_iuse pgo; then GCC_MAKE_TARGET=${GCC_MAKE_TARGET-profiledbootstrap} else GCC_MAKE_TARGET=${GCC_MAKE_TARGET-bootstrap-lean} @@ -1622,7 +1620,7 @@ gcc_do_make() { ${GCC_MAKE_TARGET} \ || die "emake failed with ${GCC_MAKE_TARGET}" - if ! is_crosscompile && use cxx && use_if_iuse doc ; then + if ! is_crosscompile && use_if_iuse cxx && use_if_iuse doc ; then if type -p doxygen > /dev/null ; then if tc_version_is_at_least 4.3 ; then cd "${CTARGET}"/libstdc++-v3/doc @@ -1789,7 +1787,7 @@ toolchain_src_install() { # Rather install the script, else portage with changing $FILESDIR # between binary and source package borks things .... - if ! is_crosscompile ; then + if ! is_crosscompile && [[ ${PN} != "kgcc64" ]] ; then insinto "${DATAPATH#${EPREFIX}}" newins "$(prefixify_ro "${FILESDIR}"/awk/fixlafiles.awk-no_gcc_la)" fixlafiles.awk || die exeinto "${DATAPATH#${EPREFIX}}" @@ -2083,7 +2081,7 @@ toolchain_pkg_postinst() { eselect compiler-shadow update all fi - if ! is_crosscompile ; then + if ! is_crosscompile && [[ ${PN} != "kgcc64" ]] ; then echo ewarn "If you have issues with packages unable to locate libstdc++.la," ewarn "then try running 'fix_libtool_files.sh' on the old gcc versions." @@ -2248,13 +2246,13 @@ gcc-lang-supported() { is_ada() { gcc-lang-supported ada || return 1 - use ada + use_if_iuse ada } is_cxx() { gcc-lang-supported 'c++' || return 1 ! is_crosscompile && tc_version_is_at_least 4.8 && return 0 - use cxx + use_if_iuse cxx } is_d() { @@ -2264,27 +2262,27 @@ is_d() { is_f77() { gcc-lang-supported f77 || return 1 - use fortran + use_if_iuse fortran } is_f95() { gcc-lang-supported f95 || return 1 - use fortran + use_if_iuse fortran } is_fortran() { gcc-lang-supported fortran || return 1 - use fortran + use_if_iuse fortran } is_gcj() { gcc-lang-supported java || return 1 - use cxx && use_if_iuse gcj + use_if_iuse cxx && use_if_iuse gcj } is_go() { gcc-lang-supported go || return 1 - use cxx && use_if_iuse go + use_if_iuse cxx && use_if_iuse go } is_jit() { @@ -2294,7 +2292,7 @@ is_jit() { is_multilib() { tc_version_is_at_least 3 || return 1 - use multilib + use_if_iuse multilib } is_objc() { @@ -2304,7 +2302,7 @@ is_objc() { is_objcxx() { gcc-lang-supported 'obj-c++' || return 1 - use cxx && use_if_iuse objc++ + use_if_iuse cxx && use_if_iuse objc++ } # Grab a variable from the build system (taken from linux-info.eclass) @@ -2376,12 +2374,12 @@ want_minispecs() { if tc_version_is_at_least 6.0 ; then return 0 fi - if tc_version_is_at_least 4.3.2 && use hardened ; then + if tc_version_is_at_least 4.3.2 && use_if_iuse hardened ; then if ! want_pie ; then ewarn "PIE_VER or SPECS_VER is not defined in the GCC ebuild." elif use vanilla ; then ewarn "You will not get hardened features if you have the vanilla USE-flag." - elif use nopie && use nossp ; then + elif use_if_iuse nopie && use_if_iuse nossp ; then ewarn "You will not get hardened features if you have the nopie and nossp USE-flag." elif ! hardened_gcc_works ; then ewarn "Your $(tc-arch) arch is not supported." @@ -2395,11 +2393,11 @@ want_minispecs() { } want_pie() { - ! use hardened && [[ -n ${PIE_VER} ]] && use nopie && return 1 + ! use_if_iuse hardened && [[ -n ${PIE_VER} ]] && use_if_iuse nopie && return 1 [[ -n ${PIE_VER} ]] && [[ -n ${SPECS_VER} ]] && return 0 tc_version_is_at_least 4.3.2 && return 1 [[ -z ${PIE_VER} ]] && return 1 - use !nopie && return 0 + use_if_iuse nopie || return 0 return 1 }