diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-05-29 03:22:09 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-05-29 03:22:09 +0100 |
commit | d4bd6695641f6d2ec7ff8681913d304e995902f5 (patch) | |
tree | 6ec8d4c38152bb4f2bb4b93277236ebd9fbbd21d /eclass/toolchain-funcs.eclass | |
parent | 22910f5d14da606bd7f06e19a2f61c5d1a8fc94b (diff) |
gentoo resync : 29.05.2018
Diffstat (limited to 'eclass/toolchain-funcs.eclass')
-rw-r--r-- | eclass/toolchain-funcs.eclass | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/eclass/toolchain-funcs.eclass b/eclass/toolchain-funcs.eclass index 1c8090cf75c7..cea8949b45d7 100644 --- a/eclass/toolchain-funcs.eclass +++ b/eclass/toolchain-funcs.eclass @@ -391,11 +391,28 @@ tc-ld-disable-gold() { local path_ld=$(which "${bfd_ld}" 2>/dev/null) [[ -e ${path_ld} ]] && export LD=${bfd_ld} - # Set up LDFLAGS to select gold based on the gcc version. - local major=$(gcc-major-version "$@") - local minor=$(gcc-minor-version "$@") - if [[ ${major} -lt 4 ]] || [[ ${major} -eq 4 && ${minor} -lt 8 ]] ; then - # <=gcc-4.7 requires some coercion. Only works if bfd exists. + # Set up LDFLAGS to select gold based on the gcc / clang version. + local fallback="true" + if tc-is-gcc; then + local major=$(gcc-major-version "$@") + local minor=$(gcc-minor-version "$@") + if [[ ${major} -gt 4 ]] || [[ ${major} -eq 4 && ${minor} -ge 8 ]]; then + # gcc-4.8+ supports -fuse-ld directly. + export LDFLAGS="${LDFLAGS} -fuse-ld=bfd" + fallback="false" + fi + elif tc-is-clang; then + local major=$(clang-major-version "$@") + local minor=$(clang-minor-version "$@") + if [[ ${major} -gt 3 ]] || [[ ${major} -eq 3 && ${minor} -ge 5 ]]; then + # clang-3.5+ supports -fuse-ld directly. + export LDFLAGS="${LDFLAGS} -fuse-ld=bfd" + fallback="false" + fi + fi + if [[ ${fallback} == "true" ]] ; then + # <=gcc-4.7 and <=clang-3.4 require some coercion. + # Only works if bfd exists. if [[ -e ${path_ld} ]] ; then local d="${T}/bfd-linker" mkdir -p "${d}" @@ -404,9 +421,6 @@ tc-ld-disable-gold() { else die "unable to locate a BFD linker to bypass gold" fi - else - # gcc-4.8+ supports -fuse-ld directly. - export LDFLAGS="${LDFLAGS} -fuse-ld=bfd" fi } |