This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Always create lib32 and lib64 symlinks


On 09/29/2010 04:33 PM, Anthony Foiani wrote:
# HG changeset patch
# User Anthony Foiani<anthony.foiani@gmail.com>
# Date 1285770576 21600
# Node ID 10f0f77c04eba49613f054dab9527ca0dfa3bad5
# Parent  5676bb6d9d7a61a062d0b8bf86c9ddccfcae4f7c
Always create lib32 and lib64 symlinks.

Since we always remove them without checking CT_HOST, we need to
create them without checking CT_HOST either.

Signed-off-by: Anthony Foiani<anthony.foiani@gmail.com>

diff -r 5676bb6d9d7a -r 10f0f77c04eb scripts/crosstool-NG.sh.in
--- a/scripts/crosstool-NG.sh.in	Wed Sep 29 08:27:56 2010 -0600
+++ b/scripts/crosstool-NG.sh.in	Wed Sep 29 08:29:36 2010 -0600
@@ -328,23 +328,22 @@
          CT_DoExecLog ALL ln -sf "./${CT_SYSROOT_DIR_PREFIX}/sys-root/usr/include" "${CT_PREFIX_DIR}/${CT_TARGET}/include"
      fi

-    # 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).
-    # Mips64 with n32 emulation install its libs in lib32, so also prepare
-    # these symlinks
-    # Not all the symlinks are necessary, but better safe than sorry...
-    if [ "${CT_ARCH_64}" = "y" ]; then
-        for d in                            \
-            "${CT_PREFIX_DIR}"              \
-            "${CT_SYSROOT_DIR}"             \
-            "${CT_SYSROOT_DIR}/usr"         \
-            "${CT_PREFIX_DIR}/${CT_TARGET}" \
-        ; do
-            CT_DoExecLog ALL ln -sf "lib" "${d}/lib32"
-            CT_DoExecLog ALL ln -sf "lib" "${d}/lib64"
-        done
-    fi
+    # Since we're *not* multi-lib on the build side, we want all the
+    # libraries to end up in "lib".  We create "lib64" (for 64-bit
+    # build or host architectures) and "lib32" (for 32-bit emulation
+    # on 64-bit) as symlinks to "lib".
+    #
+    # Not all of these symlinks are necessary, but better safe than
+    # sorry.  They are summarily removed by build/internals.sh:do_finish.
+    for d in                            \
+        "${CT_PREFIX_DIR}"              \
+        "${CT_SYSROOT_DIR}"             \
+        "${CT_SYSROOT_DIR}/usr"         \
+        "${CT_PREFIX_DIR}/${CT_TARGET}" \
+    ; do
+        CT_DoExecLog ALL ln -sf "lib" "${d}/lib32"
+        CT_DoExecLog ALL ln -sf "lib" "${d}/lib64"
+    done

      # Determine build system if not set by the user
      if [ -z "${CT_BUILD}" ]; then
Again, this is all wrong on multi-arch'ed systems (e.g. Fedora).

You must not symlink 32bit libraries to 64bit libraries and vice versa.

Ralf

--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]