Message ID | 20240813202329.1237572-9-alex.bennee@linaro.org |
---|---|
State | New |
Headers | show |
Series | Various fixes and tweaks for 9.1-rc2/3 | expand |
On 13/8/24 22:23, Alex Bennée wrote: > From: Philippe Mathieu-Daudé <philmd@linaro.org> > > 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") Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2476 > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > Acked-by: Richard Henderson <richard.henderson@linaro.org> > Message-Id: <20240813112457.92560-1-philmd@linaro.org> > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > --- > plugins/meson.build | 50 +++++++++++++++++++++++---------------------- > 1 file changed, 26 insertions(+), 24 deletions(-) > > 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', > +))
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', +))