When cross compiling, it would be good to support the following two
cases -

* Distro provided cross compiler + libraries - This is the case when a
  distro with multi-arch support (e.g., Debian derivaties)

* Local libraries installation - Needed when the distro doesn't
  support multi-arch or there's a need to use local installs

Update the libgcc detection to query the compiler regarding the
location of the libraries - provided the correct CROSS_PREFIX is
specified. If this fails to find the library, fall back to the hard
coded location. Also, add a message to inform the user about the
fallback usage.

Signed-off-by: Punit Agrawal <[email protected]>
---
Hi Waldek,

Here's a fixed up version of the patch. I also dropped the extra call
to readlink as it's going to be applied further on anyways.

Thanks,
Punit

 scripts/build | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/scripts/build b/scripts/build
index 5fdcc7a88214..9576f40d6a1a 100755
--- a/scripts/build
+++ b/scripts/build
@@ -270,17 +270,21 @@ kernel_end=$(($loader_size+2097151 & ~2097151))
 # the case in our old build.mk).
 cd $OUT
 
+CC=gcc
 host_arch=$(uname -m)
 if [[ "$host_arch" == "x86_64" && "$arch" == 'aarch64' ]]; then
-       libgcc_s_path=$(${CROSS_PREFIX:-aarch64-linux-gnu-}gcc 
-print-file-name=libgcc_s.so.1)
-       if [[ "$libgcc_s_path" == "libgcc_s.so.1" ]]; then
-               libgcc_s_dir=$(readlink -f 
../downloaded_packages/aarch64/gcc/install/lib64)
-       else
-               libgcc_s_dir=$(dirname $(readlink -f $libgcc_s_path))
-       fi
-else
-       libgcc_s_dir=$(dirname $(readlink -f $(gcc 
-print-file-name=libgcc_s.so.1)))
+    CC=${CROSS_PREFIX:-aarch64-linux-gnu-}gcc
+fi
+
+libgcc_s_path=$(${CC} -print-file-name=libgcc_s.so.1)
+if [[ "$libgcc_s_path" == "libgcc_s.so.1" ]]; then
+       cat <<-EOF
+       Unable to resolve libgcc_s.so.1 using "${CC}".
+       Looking in ../downloaded_packages/aarch64/gcc/install/lib64
+       EOF
+       
libgcc_s_path="../downloaded_packages/aarch64/gcc/install/lib64/libgcc_s.so.1"
 fi
+libgcc_s_dir=$(dirname $(readlink -f ${libgcc_s_path}))
 
 if [ "$export" != "none" ]; then
        export_dir=${vars[export_dir]-$SRC/build/export}
-- 
2.30.0

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/20210225115258.89826-1-punitagrawal%40gmail.com.

Reply via email to