mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-02-20 17:12:55 +00:00
Fix building x86_64 on x86_64 (and hopefully all other *64 archs on the same *64):
- symlink all lib64/ dirs to the corresponding lib/ dir Also, prevent gcc from installing some of its target libs outside of the sys-root, in the first place. Thanks to Laurent DUFRECHOU for reporting the bug and testing the fix. /trunk/scripts/build/cc_gcc.sh | 26 0 26 0 -------------------------- /trunk/scripts/crosstool.sh | 14 14 0 0 ++++++++++++++ 2 files changed, 14 insertions(+), 26 deletions(-)
This commit is contained in:
parent
8e512f9a95
commit
5a28e26b8d
@ -281,26 +281,6 @@ do_cc() {
|
||||
CT_DoExecLog ALL make ${PARALLELMFLAGS} all-build-libiberty
|
||||
fi
|
||||
|
||||
# Idea from <cort.dougan at gmail.com>:
|
||||
# Fix lib/lib64 confusion for GCC 3.3.3 on PowerPC64 and x86_64.
|
||||
# GCC 3.4.0 and up don't suffer from this confusion, and don't need this
|
||||
# kludge.
|
||||
# FIXME: we should patch gcc's source rather than uglify crosstool.sh.
|
||||
# FIXME: is this needed for gcc-3.3.[56]?
|
||||
case "${CT_CC_FILE}" in
|
||||
gcc-3.3.[34])
|
||||
case "${CT_TARGET}" in
|
||||
powerpc64-unknown-linux-gnu|x86_64-unknown-linux-gnu)
|
||||
for d in $(find "${CT_SYSROOT_DIR}" -name lib -type d -empty); do
|
||||
if [ -d $(dirname "${d}")/lib64 ] ; then
|
||||
rm -rf "${d}"
|
||||
ln -s $(dirname "${d}")/lib64 "${d}"
|
||||
fi
|
||||
done ;;
|
||||
*) ;;
|
||||
esac ;;
|
||||
esac
|
||||
|
||||
CT_DoLog EXTRA "Building final compiler"
|
||||
CT_DoExecLog ALL make ${PARALLELMFLAGS} all
|
||||
|
||||
@ -311,11 +291,5 @@ do_cc() {
|
||||
# to call the C compiler with the same, somewhat canonical name.
|
||||
ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}"-{g,}cc 2>&1 |CT_DoLog ALL
|
||||
|
||||
# gcc installs stuff in prefix/target/lib, when it would make better sense
|
||||
# to install that into sysroot/usr/lib
|
||||
CT_DoLog EXTRA "Moving improperly installed gcc libs to sysroot"
|
||||
( cd "${CT_PREFIX_DIR}/${CT_TARGET}/lib"; tar cf - . ) | ( cd "${CT_SYSROOT_DIR}/usr/lib"; tar xfv - ) |CT_DoLog ALL
|
||||
rm -rf "${CT_PREFIX_DIR}/${CT_TARGET}/lib"
|
||||
|
||||
CT_EndStep
|
||||
}
|
||||
|
@ -350,6 +350,20 @@ if [ -z "${CT_RESTART}" ]; then
|
||||
mkdir -p "${CT_SYSROOT_DIR}/lib"
|
||||
mkdir -p "${CT_SYSROOT_DIR}/usr/lib"
|
||||
|
||||
# Prevent gcc from installing its libraries outside of the sys-root
|
||||
ln -sf "sys-root/lib" "${CT_PREFIX_DIR}/${CT_TARGET}/lib"
|
||||
|
||||
# Now, in case we're 64 bits, just have lib64/ be a symlink to lib/
|
||||
# so as to have all libraries in the same directory (we can do that
|
||||
# because we are *not* multilib).
|
||||
case "${CT_TARGET}" in
|
||||
powerpc64*|ppc64*|x86_64*)
|
||||
ln -sf "lib" "${CT_SYSROOT_DIR}/lib64"
|
||||
ln -sf "lib" "${CT_SYSROOT_DIR}/usr/lib64"
|
||||
ln -sf "sys-root/lib" "${CT_PREFIX_DIR}/${CT_TARGET}/lib64"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Canadian-cross are really picky on the way they are built. Tweak the values.
|
||||
CT_UNIQ_BUILD=$(echo "${CT_BUILD}" |sed -r -e 's/-/-build_/')
|
||||
if [ "${CT_CANADIAN}" = "y" ]; then
|
||||
|
Loading…
x
Reference in New Issue
Block a user