From: Mohamed Mediouni Date: Tue, 10 Feb 2026 04:07:22 +0000 (+0100) Subject: plugins: fix cross-build using LLVM for Windows targets X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b0353beebb0c4fa4059c88362561a8362ada8b4c;p=thirdparty%2Fqemu.git plugins: fix cross-build using LLVM for Windows targets llvm-dlltool assumes that it's by default targeting the host architecture it's running on. That assumption doesn't hold true when cross-compiling. Signed-off-by: Mohamed Mediouni Reviewed-by: Pierrick Bouvier Tested-by: Pierrick Bouvier Link: https://lore.kernel.org/qemu-devel/20260210040722.11375-1-mohamed@unpredictable.fr Signed-off-by: Pierrick Bouvier --- diff --git a/plugins/meson.build b/plugins/meson.build index 34643e2cea..9899f166ee 100644 --- a/plugins/meson.build +++ b/plugins/meson.build @@ -41,9 +41,16 @@ if host_os == 'windows' # to find missing symbols in current program. win32_qemu_plugin_api_link_flags = ['-Lplugins', '-lqemu_plugin_api'] if meson.get_compiler('c').get_id() == 'clang' + if host_machine.cpu() == 'x86_64' + dlltool_target = 'i386:x86-64' + elif host_machine.cpu() == 'aarch64' + dlltool_target = 'arm64' + else + error('Unknown machine') + endif # With LLVM/lld, delaylib is specified at link time (-delayload) dlltool = find_program('llvm-dlltool', required: true) - dlltool_cmd = [dlltool, '-d', '@INPUT@', '-l', '@OUTPUT@', '-D', 'qemu.exe'] + dlltool_cmd = [dlltool, '-m', dlltool_target,'-d', '@INPUT@', '-l', '@OUTPUT@', '-D', 'qemu.exe'] win32_qemu_plugin_api_link_flags += ['-Wl,-delayload=qemu.exe'] else # With gcc/ld, delay lib is built with a specific delay parameter.