diff options
author | Alexey Neyman <stilor@att.net> | 2016-10-05 19:34:01 (GMT) |
---|---|---|
committer | Alexey Neyman <stilor@att.net> | 2016-10-07 17:34:33 (GMT) |
commit | 3330ad719720905ed2a901ec26a90bcad9d32748 (patch) | |
tree | 8aad9caed9cf75ebf438976712119f830f6fca4d /scripts/build | |
parent | 3ec2211548a853203e070af6810f49825ec46a6a (diff) |
Fine-tune moving gcc libraries to sysroot.
1. Check if anything was installed outside sysroot; on some [baremetal only?]
configurations GCC doesn't install anything to ${CT_PREFIX_DIR}/${CT_TARGET}/lib.
2. We need to create <sysroot>/lib/<multilib> if it doesn't exist
(MUSL only installs in <sysroot>/usr/lib).
3. Do not move the linker scripts; elf2flt expects to find them
in gcc's dir, not sysroot.
Signed-off-by: Alexey Neyman <stilor@att.net>
Diffstat (limited to 'scripts/build')
-rw-r--r-- | scripts/build/cc/100-gcc.sh | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/scripts/build/cc/100-gcc.sh b/scripts/build/cc/100-gcc.sh index 14edcd4..bab4c7b 100644 --- a/scripts/build/cc/100-gcc.sh +++ b/scripts/build/cc/100-gcc.sh @@ -780,8 +780,20 @@ gcc_movelibs() { # Move only files, directories are for other multilibs gcc_dir="${CT_PREFIX_DIR}/${CT_TARGET}/lib/${multi_os_dir}" + if [ ! -d "${gcc_dir}" ]; then + # GCC didn't install anything outside of sysroot + return + fi ls "${gcc_dir}" | while read f; do + case "${f}" in + *.ld) + # Linker scripts remain in GCC's directory; elf2flt insists on + # finding them there. + continue + ;; + esac if [ -f "${gcc_dir}/${f}" ]; then + CT_DoExecLog ALL mkdir -p "${multi_root}/lib/${multi_os_dir}" CT_DoExecLog ALL mv "${gcc_dir}/${f}" "${multi_root}/lib/${multi_os_dir}/${f}" fi done |