summaryrefslogtreecommitdiffstats
path: root/toolchain/helpers.mk
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain/helpers.mk')
-rw-r--r--toolchain/helpers.mk19
1 files changed, 12 insertions, 7 deletions
diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
index 65cc9982d..4c3f2406f 100644
--- a/toolchain/helpers.mk
+++ b/toolchain/helpers.mk
@@ -10,19 +10,22 @@
# Most toolchains have their libraries either in /lib or /usr/lib
# relative to their ARCH_SYSROOT_DIR. Buildroot toolchains, however,
# have basic libraries in /lib, and libstdc++/libgcc_s in
-# /usr/<target-name>/lib(64).
+# /usr/<target-name>/lib(64). Thanks to ARCH_LIB_DIR we also take into
+# account toolchains that have the libraries in lib64 and usr/lib64.
#
# $1: arch specific sysroot directory
-# $2: library name
-# $3: destination directory of the libary, relative to $(TARGET_DIR)
+# $2: library directory ('lib' or 'lib64') from which libraries must be copied
+# $3: library name
+# $4: destination directory of the libary, relative to $(TARGET_DIR)
#
copy_toolchain_lib_root = \
ARCH_SYSROOT_DIR="$(strip $1)"; \
- LIB="$(strip $2)"; \
- DESTDIR="$(strip $3)" ; \
+ ARCH_LIB_DIR="$(strip $2)" ; \
+ LIB="$(strip $3)"; \
+ DESTDIR="$(strip $4)" ; \
\
LIBS=`(cd $${ARCH_SYSROOT_DIR}; \
- find -L lib* usr/lib* usr/$(TOOLCHAIN_EXTERNAL_PREFIX)/lib* \
+ find -L $${ARCH_LIB_DIR} usr/$${ARCH_LIB_DIR} usr/$(TOOLCHAIN_EXTERNAL_PREFIX)/$${ARCH_LIB_DIR} \
-maxdepth 1 -name "$${LIB}.*" 2>/dev/null \
)` ; \
for FILE in $${LIBS} ; do \
@@ -84,12 +87,14 @@ copy_toolchain_lib_root = \
# $1: main sysroot directory of the toolchain
# $2: arch specific sysroot directory of the toolchain
# $3: arch specific subdirectory in the sysroot
+# $4: directory of libraries ('lib' or 'lib64')
#
copy_toolchain_sysroot = \
SYSROOT_DIR="$(strip $1)"; \
ARCH_SYSROOT_DIR="$(strip $2)"; \
ARCH_SUBDIR="$(strip $3)"; \
- for i in etc lib sbin usr ; do \
+ ARCH_LIB_DIR="$(strip $4)" ; \
+ for i in etc $${ARCH_LIB_DIR} sbin usr ; do \
if [ -d $${ARCH_SYSROOT_DIR}/$$i ] ; then \
rsync -au --chmod=Du+w --exclude 'usr/lib/locale' $${ARCH_SYSROOT_DIR}/$$i $(STAGING_DIR)/ ; \
fi ; \