Message ID | 20240813112457.92560-1-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | [PATCH-for-9.1] buildsys: Fix building without plugins on Darwin | expand |
On 8/13/24 21:24, Philippe Mathieu-Daudé wrote: > Since commit 0082475e26 the plugin symbol list is unconditionally > added to the linker flags, leading to a build failure: > > Undefined symbols for architecture arm64: > "_qemu_plugin_entry_code", referenced from: > <initial-undefines> > ... > ld: symbol(s) not found for architecture arm64 > clang: error: linker command failed with exit code 1 (use -v to see invocation) > ninja: build stopped: subcommand failed. > > Fix by restricting the whole meson file to the --enable-plugins > configure argument. > > Fixes: 0082475e26 ("meson: merge plugin_ldflags into emulator_link_args") > Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org> > --- > plugins/meson.build | 50 +++++++++++++++++++++++---------------------- > 1 file changed, 26 insertions(+), 24 deletions(-) Acked-by: Richard Henderson <richard.henderson@linaro.org>
Philippe Mathieu-Daudé <philmd@linaro.org> writes: > Since commit 0082475e26 the plugin symbol list is unconditionally > added to the linker flags, leading to a build failure: > > Undefined symbols for architecture arm64: > "_qemu_plugin_entry_code", referenced from: > <initial-undefines> > ... > ld: symbol(s) not found for architecture arm64 > clang: error: linker command failed with exit code 1 (use -v to see invocation) > ninja: build stopped: subcommand failed. > > Fix by restricting the whole meson file to the --enable-plugins > configure argument. > > Fixes: 0082475e26 ("meson: merge plugin_ldflags into emulator_link_args") > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Queued to maintainer/for-9.1, thanks.
On 13/8/24 15:57, Alex Bennée wrote: > Philippe Mathieu-Daudé <philmd@linaro.org> writes: > >> Since commit 0082475e26 the plugin symbol list is unconditionally >> added to the linker flags, leading to a build failure: >> >> Undefined symbols for architecture arm64: >> "_qemu_plugin_entry_code", referenced from: >> <initial-undefines> >> ... >> ld: symbol(s) not found for architecture arm64 >> clang: error: linker command failed with exit code 1 (use -v to see invocation) >> ninja: build stopped: subcommand failed. >> >> Fix by restricting the whole meson file to the --enable-plugins >> configure argument. >> >> Fixes: 0082475e26 ("meson: merge plugin_ldflags into emulator_link_args") >> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > > Queued to maintainer/for-9.1, thanks. Thanks, possibly also: Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2476 (Cc'ing Helge to confirm)
diff --git a/plugins/meson.build b/plugins/meson.build index 18a0303bff..1cc039d29b 100644 --- a/plugins/meson.build +++ b/plugins/meson.build @@ -1,3 +1,7 @@ +if not get_option('plugins') + subdir_done() +endif + # Modules need more symbols than just those in plugins/qemu-plugins.symbols if not enable_modules if host_os == 'darwin' @@ -12,29 +16,27 @@ if not enable_modules endif endif -if get_option('plugins') - if host_os == 'windows' - dlltool = find_program('dlltool', required: true) +if host_os == 'windows' + dlltool = find_program('dlltool', required: true) - # Generate a .lib file for plugins to link against. - # First, create a .def file listing all the symbols a plugin should expect to have - # available in qemu - win32_plugin_def = configure_file( - input: files('qemu-plugins.symbols'), - output: 'qemu_plugin_api.def', - capture: true, - command: ['sed', '-e', '0,/^/s//EXPORTS/; s/[{};]//g', '@INPUT@']) - # then use dlltool to assemble a delaylib. - win32_qemu_plugin_api_lib = configure_file( - input: win32_plugin_def, - output: 'libqemu_plugin_api.a', - command: [dlltool, '--input-def', '@INPUT@', - '--output-delaylib', '@OUTPUT@', '--dllname', 'qemu.exe'] - ) - endif - specific_ss.add(files( - 'loader.c', - 'core.c', - 'api.c', - )) + # Generate a .lib file for plugins to link against. + # First, create a .def file listing all the symbols a plugin should expect to have + # available in qemu + win32_plugin_def = configure_file( + input: files('qemu-plugins.symbols'), + output: 'qemu_plugin_api.def', + capture: true, + command: ['sed', '-e', '0,/^/s//EXPORTS/; s/[{};]//g', '@INPUT@']) + # then use dlltool to assemble a delaylib. + win32_qemu_plugin_api_lib = configure_file( + input: win32_plugin_def, + output: 'libqemu_plugin_api.a', + command: [dlltool, '--input-def', '@INPUT@', + '--output-delaylib', '@OUTPUT@', '--dllname', 'qemu.exe'] + ) endif +specific_ss.add(files( + 'loader.c', + 'core.c', + 'api.c', +))
Since commit 0082475e26 the plugin symbol list is unconditionally added to the linker flags, leading to a build failure: Undefined symbols for architecture arm64: "_qemu_plugin_entry_code", referenced from: <initial-undefines> ... ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed. Fix by restricting the whole meson file to the --enable-plugins configure argument. Fixes: 0082475e26 ("meson: merge plugin_ldflags into emulator_link_args") Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- plugins/meson.build | 50 +++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 24 deletions(-)