mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-06 00:48:18 -07:00
toolchain.eclass: style cleanups, missing dies
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
@@ -197,7 +197,7 @@ tc_has_feature() {
|
||||
has "$1" "${TC_FEATURES[@]}"
|
||||
}
|
||||
|
||||
if [[ ${PN} != "kgcc64" && ${PN} != gcc-* ]] ; then
|
||||
if [[ ${PN} != kgcc64 && ${PN} != gcc-* ]] ; then
|
||||
IUSE+=" debug +cxx +nptl" TC_FEATURES+=( nptl )
|
||||
[[ -n ${PIE_VER} ]] && IUSE+=" nopie"
|
||||
[[ -n ${SPECS_VER} ]] && IUSE+=" nossp"
|
||||
@@ -1161,7 +1161,7 @@ toolchain_src_configure() {
|
||||
local with_abi_map=()
|
||||
case $(tc-arch) in
|
||||
arm)
|
||||
# bug 264534, bug #414395
|
||||
# bug #264534, bug #414395
|
||||
local a arm_arch=${CTARGET%%-*}
|
||||
# Remove trailing endian variations first: eb el be bl b l
|
||||
for a in e{b,l} {b,l}e b l ; do
|
||||
@@ -1182,7 +1182,7 @@ toolchain_src_configure() {
|
||||
confgcc+=( --with-arch=${arm_arch} )
|
||||
fi
|
||||
|
||||
# Make default mode thumb for microcontroller classes #418209
|
||||
# Make default mode thumb for microcontroller classes, bug #418209
|
||||
[[ ${arm_arch} == *-m ]] && confgcc+=( --with-mode=thumb )
|
||||
|
||||
# Enable hardvfp
|
||||
@@ -1211,7 +1211,7 @@ toolchain_src_configure() {
|
||||
fi
|
||||
;;
|
||||
x86)
|
||||
# Default arch for x86 is normally i386, lets give it a bump
|
||||
# Default arch for x86 is normally i386, let's give it a bump
|
||||
# since glibc will do so based on CTARGET anyways
|
||||
confgcc+=( --with-arch=${CTARGET%%-*} )
|
||||
;;
|
||||
@@ -1225,12 +1225,13 @@ toolchain_src_configure() {
|
||||
[[ ${CTARGET//_/-} == *-e500v2-* ]] && confgcc+=( --enable-e500-double )
|
||||
;;
|
||||
ppc64)
|
||||
# On ppc64 big endian target gcc assumes elfv1 by default,
|
||||
# and elfv2 on little endian
|
||||
# but musl does not support elfv1 at all on any endian ppc64
|
||||
# see https://git.musl-libc.org/cgit/musl/tree/INSTALL
|
||||
# bug #704784
|
||||
# https://gcc.gnu.org/PR93157
|
||||
# On ppc64, the big endian target gcc assumes elfv1 by default,
|
||||
# and elfv2 on little endian.
|
||||
# But musl does not support elfv1 at all on any endian ppc64.
|
||||
# See:
|
||||
# - https://git.musl-libc.org/cgit/musl/tree/INSTALL
|
||||
# - bug #704784
|
||||
# - https://gcc.gnu.org/PR93157
|
||||
[[ ${CTARGET} == powerpc64-*-musl ]] && confgcc+=( --with-abi=elfv2 )
|
||||
;;
|
||||
riscv)
|
||||
@@ -1239,7 +1240,7 @@ toolchain_src_configure() {
|
||||
;;
|
||||
esac
|
||||
|
||||
# if the target can do biarch (-m32/-m64), enable it. overhead should
|
||||
# If the target can do biarch (-m32/-m64), enable it. overhead should
|
||||
# be small, and should simplify building of 64bit kernels in a 32bit
|
||||
# userland by not needing sys-devel/kgcc64. bug #349405
|
||||
case $(tc-arch) in
|
||||
@@ -1275,14 +1276,14 @@ toolchain_src_configure() {
|
||||
if in_iuse openmp ; then
|
||||
# Make sure target has pthreads support: bug #326757, bug #335883
|
||||
# There shouldn't be a chicken & egg problem here as openmp won't
|
||||
# build without a C library, and you can't build that w/out
|
||||
# already having a compiler ...
|
||||
# build without a C library, and you can't build that w/ot
|
||||
# already having a compiler...
|
||||
if ! is_crosscompile || \
|
||||
$(tc-getCPP ${CTARGET}) -E - <<<"#include <pthread.h>" >& /dev/null
|
||||
then
|
||||
confgcc+=( $(use_enable openmp libgomp) )
|
||||
else
|
||||
# Force disable as the configure script can be dumb #359855
|
||||
# Force disable as the configure script can be dumb, bug #359855
|
||||
confgcc+=( --disable-libgomp )
|
||||
fi
|
||||
else
|
||||
@@ -1296,9 +1297,10 @@ toolchain_src_configure() {
|
||||
if hardened_gcc_is_stable ssp; then
|
||||
export gcc_cv_libc_provides_ssp=yes
|
||||
fi
|
||||
|
||||
if _tc_use_if_iuse ssp; then
|
||||
# On some targets USE="ssp -libssp" is an invalid
|
||||
# configuration as target libc does not provide
|
||||
# configuration as the target libc does not provide
|
||||
# stack_chk_* functions. Do not disable libssp there.
|
||||
case ${CTARGET} in
|
||||
mingw*|*-mingw*)
|
||||
@@ -1414,13 +1416,12 @@ toolchain_src_configure() {
|
||||
einfo "LIBPATH: ${LIBPATH}"
|
||||
einfo "DATAPATH: ${DATAPATH}"
|
||||
einfo "STDCXX_INCDIR: ${STDCXX_INCDIR}"
|
||||
echo
|
||||
einfo "Languages: ${GCC_LANG}"
|
||||
echo
|
||||
|
||||
# Build in a separate build tree
|
||||
mkdir -p "${WORKDIR}"/build || die
|
||||
pushd "${WORKDIR}"/build > /dev/null
|
||||
pushd "${WORKDIR}"/build > /dev/null || die
|
||||
|
||||
# ...and now to do the actual configuration
|
||||
addwrite /dev/zero
|
||||
@@ -1585,7 +1586,7 @@ gcc_do_filter_flags() {
|
||||
append-flags -O2
|
||||
fi
|
||||
|
||||
# Don't want to funk ourselves
|
||||
# Avoid shooting self in foot
|
||||
filter-flags '-mabi*' -m31 -m32 -m64
|
||||
|
||||
# bug #490738
|
||||
@@ -1652,14 +1653,17 @@ setup_minispecs_gcc_build_specs() {
|
||||
if hardened_gcc_works pie ; then
|
||||
cat "${WORKDIR}"/specs/pie.specs >> "${WORKDIR}"/build.specs
|
||||
fi
|
||||
|
||||
if hardened_gcc_works ssp ; then
|
||||
for s in ssp sspall ; do
|
||||
cat "${WORKDIR}"/specs/${s}.specs >> "${WORKDIR}"/build.specs
|
||||
done
|
||||
fi
|
||||
|
||||
for s in nostrict znow ; do
|
||||
cat "${WORKDIR}"/specs/${s}.specs >> "${WORKDIR}"/build.specs
|
||||
done
|
||||
|
||||
export GCC_SPECS="${WORKDIR}"/build.specs
|
||||
}
|
||||
|
||||
@@ -1680,10 +1684,11 @@ gcc-multilib-configure() {
|
||||
local l=$(gcc-abi-map ${abi})
|
||||
[[ -n ${l} ]] && list+=",${l}"
|
||||
done
|
||||
|
||||
if [[ -n ${list} ]] ; then
|
||||
case ${CTARGET} in
|
||||
x86_64*)
|
||||
tc_version_is_at_least 4.8 && confgcc+=( --with-multilib-list=${list:1} )
|
||||
x86_64*)
|
||||
tc_version_is_at_least 4.8 && confgcc+=( --with-multilib-list=${list:1} )
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
@@ -1714,7 +1719,7 @@ gcc-abi-map() {
|
||||
#----> src_compile <----
|
||||
|
||||
toolchain_src_compile() {
|
||||
touch "${S}"/gcc/c-gperf.h
|
||||
touch "${S}"/gcc/c-gperf.h || die
|
||||
|
||||
# Do not make manpages if we do not have perl ...
|
||||
[[ ! -x /usr/bin/perl ]] \
|
||||
@@ -1758,7 +1763,7 @@ gcc_do_make() {
|
||||
|
||||
# Older versions of GCC could not do profiledbootstrap in parallel due to
|
||||
# collisions with profiling info.
|
||||
if [[ ${GCC_MAKE_TARGET} == "profiledbootstrap" ]]; then
|
||||
if [[ ${GCC_MAKE_TARGET} == "profiledbootstrap" ]] ; then
|
||||
! tc_version_is_at_least 4.6 && export MAKEOPTS="${MAKEOPTS} -j1"
|
||||
fi
|
||||
|
||||
@@ -1795,7 +1800,7 @@ gcc_do_make() {
|
||||
|
||||
einfo "Compiling ${PN} (${GCC_MAKE_TARGET})..."
|
||||
|
||||
pushd "${WORKDIR}"/build >/dev/null
|
||||
pushd "${WORKDIR}"/build >/dev/null || die
|
||||
|
||||
emake \
|
||||
LDFLAGS="${LDFLAGS}" \
|
||||
@@ -1805,10 +1810,11 @@ gcc_do_make() {
|
||||
${GCC_MAKE_TARGET}
|
||||
|
||||
if is_ada; then
|
||||
# Without these links it is not getting the good compiler
|
||||
# Need to check why
|
||||
# Without these links, it is not getting the good compiler
|
||||
# TODO: Need to check why
|
||||
ln -s gcc ../build/prev-gcc || die
|
||||
ln -s ${CHOST} ../build/prev-${CHOST} || die
|
||||
|
||||
# Building standard ada library
|
||||
emake -C gcc gnatlib-shared
|
||||
# Building gnat toold
|
||||
@@ -1837,7 +1843,7 @@ gcc_do_make() {
|
||||
fi
|
||||
fi
|
||||
|
||||
popd >/dev/null
|
||||
popd >/dev/null || die
|
||||
}
|
||||
|
||||
#---->> src_test <<----
|
||||
@@ -1854,14 +1860,14 @@ toolchain_src_test() {
|
||||
#---->> src_install <<----
|
||||
|
||||
toolchain_src_install() {
|
||||
cd "${WORKDIR}"/build
|
||||
cd "${WORKDIR}"/build || die
|
||||
|
||||
# Don't allow symlinks in private gcc include dir as this can break the build
|
||||
find gcc/include*/ -type l -delete
|
||||
find gcc/include*/ -type l -delete || die
|
||||
|
||||
# Copy over the info pages. We disabled their generation earlier, but the
|
||||
# build system only expects to install out of the build dir, not the source. bug #464008
|
||||
mkdir -p gcc/doc
|
||||
mkdir -p gcc/doc || die
|
||||
local x=
|
||||
for x in "${S}"/gcc/doc/*.info* ; do
|
||||
if [[ -f ${x} ]] ; then
|
||||
@@ -1934,7 +1940,7 @@ toolchain_src_install() {
|
||||
gcc_slot_java
|
||||
|
||||
dodir /usr/bin
|
||||
cd "${D}"${BINPATH}
|
||||
cd "${D}"${BINPATH} || die
|
||||
# Ugh: we really need to auto-detect this list.
|
||||
# It's constantly out of date.
|
||||
for x in cpp gcc g++ c++ gcov g77 gcj gcjh gfortran gccgo gnat* ; do
|
||||
@@ -2075,14 +2081,14 @@ toolchain_src_install() {
|
||||
|
||||
# Disable RANDMMAP so PCH works, bug #301299
|
||||
if tc_version_is_at_least 4.3 ; then
|
||||
pax-mark -r "${D}${PREFIX}/libexec/gcc/${CTARGET}/${GCC_CONFIG_VER}/cc1"
|
||||
pax-mark -r "${D}${PREFIX}/libexec/gcc/${CTARGET}/${GCC_CONFIG_VER}/cc1plus"
|
||||
pax-mark -r "${ED}/libexec/gcc/${CTARGET}/${GCC_CONFIG_VER}/cc1"
|
||||
pax-mark -r "${ED}/libexec/gcc/${CTARGET}/${GCC_CONFIG_VER}/cc1plus"
|
||||
fi
|
||||
|
||||
# Disable MPROTECT so java works, bug #574808
|
||||
if is_gcj ; then
|
||||
pax-mark -m "${D}${PREFIX}/libexec/gcc/${CTARGET}/${GCC_CONFIG_VER}/ecj1"
|
||||
pax-mark -m "${D}${PREFIX}/${CTARGET}/gcc-bin/${GCC_CONFIG_VER}/gij"
|
||||
pax-mark -m "${ED}/libexec/gcc/${CTARGET}/${GCC_CONFIG_VER}/ecj1"
|
||||
pax-mark -m "${ED}/${CTARGET}/gcc-bin/${GCC_CONFIG_VER}/gij"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -2153,6 +2159,7 @@ gcc_movelibs() {
|
||||
for FROMDIR in ${removedirs} ; do
|
||||
rmdir "${D}"${FROMDIR} >& /dev/null
|
||||
done
|
||||
|
||||
find -depth "${ED}" -type d -exec rmdir {} + >& /dev/null
|
||||
}
|
||||
|
||||
@@ -2162,13 +2169,13 @@ gcc_movelibs() {
|
||||
fix_libtool_libdir_paths() {
|
||||
local libpath="$1"
|
||||
|
||||
pushd "${D}" >/dev/null
|
||||
pushd "${D}" >/dev/null || die
|
||||
|
||||
pushd "./${libpath}" >/dev/null
|
||||
pushd "./${libpath}" >/dev/null || die
|
||||
local dir="${PWD#${D%/}}"
|
||||
local allarchives=$(echo *.la)
|
||||
allarchives="\(${allarchives// /\\|}\)"
|
||||
popd >/dev/null
|
||||
popd >/dev/null || die
|
||||
|
||||
# The libdir might not have any .la files. bug #548782
|
||||
find "./${dir}" -maxdepth 1 -name '*.la' \
|
||||
@@ -2180,13 +2187,13 @@ fix_libtool_libdir_paths() {
|
||||
find "./${dir}/" -maxdepth 1 -name '*.la' \
|
||||
-exec sed -i -e "/^dependency_libs=/s:/[^ ]*/${allarchives}:${libpath}/\1:g" {} + || die
|
||||
|
||||
popd >/dev/null
|
||||
popd >/dev/null || die
|
||||
}
|
||||
|
||||
create_gcc_env_entry() {
|
||||
dodir /etc/env.d/gcc
|
||||
local gcc_envd_base="/etc/env.d/gcc/${CTARGET}-${GCC_CONFIG_VER}"
|
||||
|
||||
local gcc_envd_base="/etc/env.d/gcc/${CTARGET}-${GCC_CONFIG_VER}"
|
||||
local gcc_specs_file
|
||||
local gcc_envd_file="${ED}${gcc_envd_base}"
|
||||
if [[ -z $1 ]] ; then
|
||||
@@ -2307,6 +2314,7 @@ gcc_slot_java() {
|
||||
|
||||
toolchain_pkg_postinst() {
|
||||
do_gcc_config
|
||||
|
||||
if [[ ! ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
|
||||
eselect compiler-shadow update all
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user