From 527413ec243564a89ffaad6368d446de44415970 Mon Sep 17 00:00:00 2001 From: Chen Qi Date: Tue, 27 Feb 2018 21:42:23 -0800 Subject: [PATCH] Fix to run efi_cc and efi_ld correctly when cross-compiling When cross-compiling, efi_cc and efi_ld may take the form of 'xxx-gcc --sysroot=xxx', and this would cause run_command and the alike fail. Fix to split them to make commands run correctly. Upstream-Status: Pending Signed-off-by: Chen Qi --- src/boot/efi/meson.build | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build index 992a3ba4c..9f9ec4911 100644 --- a/src/boot/efi/meson.build +++ b/src/boot/efi/meson.build @@ -157,7 +157,7 @@ if have_gnu_efi o_file = custom_target(file + '.o', input : file, output : file + '.o', - command : [efi_cc, '-c', '@INPUT@', '-o', '@OUTPUT@'] + command : efi_cc.split() + ['-c', '@INPUT@', '-o', '@OUTPUT@'] + compile_args, depend_files : efi_headers) if (common_sources + systemd_boot_sources).contains(file) @@ -168,7 +168,17 @@ if have_gnu_efi endif endforeach - libgcc_file_name = run_command(efi_cc, '-print-libgcc-file-name').stdout().strip() + find_libgcc_cmd_all = efi_cc + ' -print-libgcc-file-name' + find_libgcc_cmd = find_libgcc_cmd_all.split()[0] + find_libgcc_args = [] + cmd_args_all = find_libgcc_cmd_all.split() + foreach arg : cmd_args_all + if arg != find_libgcc_cmd + find_libgcc_args += arg + endif + endforeach + + libgcc_file_name = run_command(find_libgcc_cmd, find_libgcc_args).stdout().strip() systemd_boot_efi_name = 'systemd-boot@0@.efi'.format(EFI_MACHINE_TYPE_NAME) stub_efi_name = 'linux@0@.efi.stub'.format(EFI_MACHINE_TYPE_NAME) no_undefined_symbols = find_program('no-undefined-symbols.sh') @@ -179,7 +189,7 @@ if have_gnu_efi tuple[0], input : tuple[2], output : tuple[0], - command : [efi_ld, '-o', '@OUTPUT@'] + + command : efi_ld.split() + ['-o', '@OUTPUT@'] + efi_ldflags + tuple[2] + ['-lefi', '-lgnuefi', libgcc_file_name]) -- 2.13.0