diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index 30880e5518..761b90e8ec 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -39,11 +39,16 @@ copy_toolchain_lib_root = \ # dir. The operation of this function is rendered a little bit # complicated by the support for multilib toolchains. # -# We start by copying etc, lib, sbin and usr from the sysroot of the -# selected architecture variant (as pointed by ARCH_SYSROOT_DIR). This -# allows to import into the staging directory the C library and -# companion libraries for the correct architecture variant. We -# explictly only copy etc, lib, sbin and usr since other directories +# We start by copying etc, 'lib', sbin, usr and usr/'lib' from the +# sysroot of the selected architecture variant (as pointed to by +# ARCH_SYSROOT_DIR). This allows to import into the staging directory +# the C library and companion libraries for the correct architecture +# variant. 'lib' may not be literally 'lib' but could be something else, +# e.g. lib32-fp (as determined by ARCH_LIB_DIR) and we only want to copy +# that lib directory and no other. When copying usr, we therefore need +# to be extra careful not to include usr/lib* but we _do_ want to +# include usr/libexec. +# We are selective in the directories we copy since other directories # might exist for other architecture variants (on Codesourcery # toolchain, the sysroot for the default architecture variant contains # the armv4t and thumb2 subdirectories, which are the sysroot for the @@ -92,9 +97,14 @@ copy_toolchain_sysroot = \ if [ ! -d $${ARCH_SYSROOT_DIR}/$$i ] ; then \ continue ; \ fi ; \ - rsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \ - --include '/libexec*/' --exclude '/lib*/' \ - $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ + if [ "$$i" = "usr" ]; then \ + rsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \ + --include '/libexec*/' --exclude '/lib*/' \ + $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ + else \ + rsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \ + $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ + fi ; \ done ; \ if [ `readlink -f $${SYSROOT_DIR}` != `readlink -f $${ARCH_SYSROOT_DIR}` ] ; then \ if [ ! -d $${ARCH_SYSROOT_DIR}/usr/include ] ; then \