[PATCH v2 02/11] plugins: factorize plugin dependencies and library details

Pierrick Bouvier posted 11 patches 1 month, 1 week ago
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, Alexandre Iooss <erdnaxe@crans.org>, Mahmoud Mandour <ma.mandourr@gmail.com>, Pierrick Bouvier <pierrick.bouvier@linaro.org>, Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Kostiantyn Kostiuk <kkostiuk@redhat.com>, Michael Roth <michael.roth@amd.com>
There is a newer version of this series
[PATCH v2 02/11] plugins: factorize plugin dependencies and library details
Posted by Pierrick Bouvier 1 month, 1 week ago
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
 meson.build                   |  2 +-
 contrib/plugins/meson.build   | 13 ++-----------
 plugins/meson.build           | 15 ++++++++++++++-
 tests/tcg/plugins/meson.build | 13 ++-----------
 4 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/meson.build b/meson.build
index db87358d62d..3d6c6c702d0 100644
--- a/meson.build
+++ b/meson.build
@@ -4499,7 +4499,7 @@ if get_option('plugins')
   if host_os == 'windows'
     # On windows, we want to deliver the qemu_plugin_api.lib file in the qemu installer,
     # so that plugin authors can compile against it.
-    install_data(win32_qemu_plugin_api_lib, install_dir: 'lib')
+    install_data(win32_qemu_plugin_api, install_dir: 'lib')
   endif
 endif
 
diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
index 6f72b2ce0c9..8f9f0257ee5 100644
--- a/contrib/plugins/meson.build
+++ b/contrib/plugins/meson.build
@@ -9,17 +9,8 @@ endif
 t = []
 if get_option('plugins')
   foreach i : contrib_plugins
-    if host_os == 'windows'
-      t += shared_module(i, files(i + '.c') + '../../plugins/win32_linker.c',
-                        include_directories: '../../include/qemu',
-                        link_depends: [win32_qemu_plugin_api_lib],
-                        link_args: win32_qemu_plugin_api_link_flags,
-                        dependencies: glib)
-    else
-      t += shared_module(i, files(i + '.c'),
-                        include_directories: '../../include/qemu',
-                        dependencies: glib)
-    endif
+    t += shared_module(i, files(i + '.c'),
+                      dependencies: plugins_deps)
   endforeach
 endif
 if t.length() > 0
diff --git a/plugins/meson.build b/plugins/meson.build
index 62c991d87fc..4318e3a1671 100644
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -51,11 +51,24 @@ if host_os == 'windows'
     dlltool_cmd = [dlltool, '--input-def', '@INPUT@',
                    '--output-delaylib', '@OUTPUT@', '--dllname', 'qemu.exe']
   endif
-  win32_qemu_plugin_api_lib = configure_file(
+  win32_qemu_plugin_api = configure_file(
     input: win32_plugin_def,
     output: 'libqemu_plugin_api.a',
     command: dlltool_cmd
   )
+  win32_qemu_plugin_api_lib = static_library('win32_qemu_plugin_api',
+                                             link_depends: win32_qemu_plugin_api)
+endif
+
+if host_os == 'windows'
+  plugins_deps = declare_dependency(sources: [files('win32_linker.c')],
+                                    include_directories: '../include/qemu',
+                                    link_with: win32_qemu_plugin_api_lib,
+                                    link_args: win32_qemu_plugin_api_link_flags,
+                                    dependencies: glib)
+else
+  plugins_deps = declare_dependency(include_directories: '../include/qemu',
+                                    dependencies: glib)
 endif
 
 user_ss.add(files('user.c', 'api-user.c'))
diff --git a/tests/tcg/plugins/meson.build b/tests/tcg/plugins/meson.build
index a6e78438510..c58f2e382ae 100644
--- a/tests/tcg/plugins/meson.build
+++ b/tests/tcg/plugins/meson.build
@@ -1,17 +1,8 @@
 t = []
 if get_option('plugins')
   foreach i : ['bb', 'discons', 'empty', 'inline', 'insn', 'mem', 'reset', 'syscall', 'patch']
-    if host_os == 'windows'
-      t += shared_module(i, files(i + '.c') + '../../../plugins/win32_linker.c',
-                        include_directories: '../../../include/qemu',
-                        link_depends: [win32_qemu_plugin_api_lib],
-                        link_args: win32_qemu_plugin_api_link_flags,
-                        dependencies: glib)
-    else
-      t += shared_module(i, files(i + '.c'),
-                        include_directories: '../../../include/qemu',
-                        dependencies: glib)
-    endif
+    t += shared_module(i, files(i + '.c'),
+                      dependencies: plugins_deps)
   endforeach
 endif
 if t.length() > 0
-- 
2.47.3
Re: [PATCH v2 02/11] plugins: factorize plugin dependencies and library details
Posted by Daniel P. Berrangé 3 weeks, 3 days ago
On Fri, Jan 02, 2026 at 01:47:15PM -0800, Pierrick Bouvier wrote:
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> ---
>  meson.build                   |  2 +-
>  contrib/plugins/meson.build   | 13 ++-----------
>  plugins/meson.build           | 15 ++++++++++++++-
>  tests/tcg/plugins/meson.build | 13 ++-----------
>  4 files changed, 19 insertions(+), 24 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index db87358d62d..3d6c6c702d0 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -4499,7 +4499,7 @@ if get_option('plugins')
>    if host_os == 'windows'
>      # On windows, we want to deliver the qemu_plugin_api.lib file in the qemu installer,
>      # so that plugin authors can compile against it.
> -    install_data(win32_qemu_plugin_api_lib, install_dir: 'lib')
> +    install_data(win32_qemu_plugin_api, install_dir: 'lib')
>    endif
>  endif
>  
> diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
> index 6f72b2ce0c9..8f9f0257ee5 100644
> --- a/contrib/plugins/meson.build
> +++ b/contrib/plugins/meson.build
> @@ -9,17 +9,8 @@ endif
>  t = []
>  if get_option('plugins')
>    foreach i : contrib_plugins
> -    if host_os == 'windows'
> -      t += shared_module(i, files(i + '.c') + '../../plugins/win32_linker.c',
> -                        include_directories: '../../include/qemu',
> -                        link_depends: [win32_qemu_plugin_api_lib],
> -                        link_args: win32_qemu_plugin_api_link_flags,
> -                        dependencies: glib)
> -    else
> -      t += shared_module(i, files(i + '.c'),
> -                        include_directories: '../../include/qemu',
> -                        dependencies: glib)
> -    endif
> +    t += shared_module(i, files(i + '.c'),
> +                      dependencies: plugins_deps)

Nit-pick - under-indented by 1 space. The orignal code had the
same bug, but lets not preserve it.


> diff --git a/tests/tcg/plugins/meson.build b/tests/tcg/plugins/meson.build
> index a6e78438510..c58f2e382ae 100644
> --- a/tests/tcg/plugins/meson.build
> +++ b/tests/tcg/plugins/meson.build
> @@ -1,17 +1,8 @@
>  t = []
>  if get_option('plugins')
>    foreach i : ['bb', 'discons', 'empty', 'inline', 'insn', 'mem', 'reset', 'syscall', 'patch']
> -    if host_os == 'windows'
> -      t += shared_module(i, files(i + '.c') + '../../../plugins/win32_linker.c',
> -                        include_directories: '../../../include/qemu',
> -                        link_depends: [win32_qemu_plugin_api_lib],
> -                        link_args: win32_qemu_plugin_api_link_flags,
> -                        dependencies: glib)
> -    else
> -      t += shared_module(i, files(i + '.c'),
> -                        include_directories: '../../../include/qemu',
> -                        dependencies: glib)
> -    endif
> +    t += shared_module(i, files(i + '.c'),
> +                      dependencies: plugins_deps)

Same under-indent by 1.

With the indents fixed:

  Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>



With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH v2 02/11] plugins: factorize plugin dependencies and library details
Posted by Pierrick Bouvier 3 weeks, 3 days ago
On 1/16/26 4:22 AM, Daniel P. Berrangé wrote:
> On Fri, Jan 02, 2026 at 01:47:15PM -0800, Pierrick Bouvier wrote:
>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
>> ---
>>   meson.build                   |  2 +-
>>   contrib/plugins/meson.build   | 13 ++-----------
>>   plugins/meson.build           | 15 ++++++++++++++-
>>   tests/tcg/plugins/meson.build | 13 ++-----------
>>   4 files changed, 19 insertions(+), 24 deletions(-)
>>
>> diff --git a/meson.build b/meson.build
>> index db87358d62d..3d6c6c702d0 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -4499,7 +4499,7 @@ if get_option('plugins')
>>     if host_os == 'windows'
>>       # On windows, we want to deliver the qemu_plugin_api.lib file in the qemu installer,
>>       # so that plugin authors can compile against it.
>> -    install_data(win32_qemu_plugin_api_lib, install_dir: 'lib')
>> +    install_data(win32_qemu_plugin_api, install_dir: 'lib')
>>     endif
>>   endif
>>   
>> diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
>> index 6f72b2ce0c9..8f9f0257ee5 100644
>> --- a/contrib/plugins/meson.build
>> +++ b/contrib/plugins/meson.build
>> @@ -9,17 +9,8 @@ endif
>>   t = []
>>   if get_option('plugins')
>>     foreach i : contrib_plugins
>> -    if host_os == 'windows'
>> -      t += shared_module(i, files(i + '.c') + '../../plugins/win32_linker.c',
>> -                        include_directories: '../../include/qemu',
>> -                        link_depends: [win32_qemu_plugin_api_lib],
>> -                        link_args: win32_qemu_plugin_api_link_flags,
>> -                        dependencies: glib)
>> -    else
>> -      t += shared_module(i, files(i + '.c'),
>> -                        include_directories: '../../include/qemu',
>> -                        dependencies: glib)
>> -    endif
>> +    t += shared_module(i, files(i + '.c'),
>> +                      dependencies: plugins_deps)
> 
> Nit-pick - under-indented by 1 space. The orignal code had the
> same bug, but lets not preserve it.
> 
> 
>> diff --git a/tests/tcg/plugins/meson.build b/tests/tcg/plugins/meson.build
>> index a6e78438510..c58f2e382ae 100644
>> --- a/tests/tcg/plugins/meson.build
>> +++ b/tests/tcg/plugins/meson.build
>> @@ -1,17 +1,8 @@
>>   t = []
>>   if get_option('plugins')
>>     foreach i : ['bb', 'discons', 'empty', 'inline', 'insn', 'mem', 'reset', 'syscall', 'patch']
>> -    if host_os == 'windows'
>> -      t += shared_module(i, files(i + '.c') + '../../../plugins/win32_linker.c',
>> -                        include_directories: '../../../include/qemu',
>> -                        link_depends: [win32_qemu_plugin_api_lib],
>> -                        link_args: win32_qemu_plugin_api_link_flags,
>> -                        dependencies: glib)
>> -    else
>> -      t += shared_module(i, files(i + '.c'),
>> -                        include_directories: '../../../include/qemu',
>> -                        dependencies: glib)
>> -    endif
>> +    t += shared_module(i, files(i + '.c'),
>> +                      dependencies: plugins_deps)
> 
> Same under-indent by 1.
> 
> With the indents fixed:
> 
>    Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> 

Patch 3 already fixes the indent.

> 
> 
> With regards,
> Daniel


Re: [PATCH v2 02/11] plugins: factorize plugin dependencies and library details
Posted by Daniel P. Berrangé 3 weeks, 1 day ago
On Fri, Jan 16, 2026 at 04:02:50PM -0800, Pierrick Bouvier wrote:
> On 1/16/26 4:22 AM, Daniel P. Berrangé wrote:
> > On Fri, Jan 02, 2026 at 01:47:15PM -0800, Pierrick Bouvier wrote:
> > > Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> > > ---
> > >   meson.build                   |  2 +-
> > >   contrib/plugins/meson.build   | 13 ++-----------
> > >   plugins/meson.build           | 15 ++++++++++++++-
> > >   tests/tcg/plugins/meson.build | 13 ++-----------
> > >   4 files changed, 19 insertions(+), 24 deletions(-)
> > > 
> > > diff --git a/meson.build b/meson.build
> > > index db87358d62d..3d6c6c702d0 100644
> > > --- a/meson.build
> > > +++ b/meson.build
> > > @@ -4499,7 +4499,7 @@ if get_option('plugins')
> > >     if host_os == 'windows'
> > >       # On windows, we want to deliver the qemu_plugin_api.lib file in the qemu installer,
> > >       # so that plugin authors can compile against it.
> > > -    install_data(win32_qemu_plugin_api_lib, install_dir: 'lib')
> > > +    install_data(win32_qemu_plugin_api, install_dir: 'lib')
> > >     endif
> > >   endif
> > > diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
> > > index 6f72b2ce0c9..8f9f0257ee5 100644
> > > --- a/contrib/plugins/meson.build
> > > +++ b/contrib/plugins/meson.build
> > > @@ -9,17 +9,8 @@ endif
> > >   t = []
> > >   if get_option('plugins')
> > >     foreach i : contrib_plugins
> > > -    if host_os == 'windows'
> > > -      t += shared_module(i, files(i + '.c') + '../../plugins/win32_linker.c',
> > > -                        include_directories: '../../include/qemu',
> > > -                        link_depends: [win32_qemu_plugin_api_lib],
> > > -                        link_args: win32_qemu_plugin_api_link_flags,
> > > -                        dependencies: glib)
> > > -    else
> > > -      t += shared_module(i, files(i + '.c'),
> > > -                        include_directories: '../../include/qemu',
> > > -                        dependencies: glib)
> > > -    endif
> > > +    t += shared_module(i, files(i + '.c'),
> > > +                      dependencies: plugins_deps)
> > 
> > Nit-pick - under-indented by 1 space. The orignal code had the
> > same bug, but lets not preserve it.
> > 
> > 
> > > diff --git a/tests/tcg/plugins/meson.build b/tests/tcg/plugins/meson.build
> > > index a6e78438510..c58f2e382ae 100644
> > > --- a/tests/tcg/plugins/meson.build
> > > +++ b/tests/tcg/plugins/meson.build
> > > @@ -1,17 +1,8 @@
> > >   t = []
> > >   if get_option('plugins')
> > >     foreach i : ['bb', 'discons', 'empty', 'inline', 'insn', 'mem', 'reset', 'syscall', 'patch']
> > > -    if host_os == 'windows'
> > > -      t += shared_module(i, files(i + '.c') + '../../../plugins/win32_linker.c',
> > > -                        include_directories: '../../../include/qemu',
> > > -                        link_depends: [win32_qemu_plugin_api_lib],
> > > -                        link_args: win32_qemu_plugin_api_link_flags,
> > > -                        dependencies: glib)
> > > -    else
> > > -      t += shared_module(i, files(i + '.c'),
> > > -                        include_directories: '../../../include/qemu',
> > > -                        dependencies: glib)
> > > -    endif
> > > +    t += shared_module(i, files(i + '.c'),
> > > +                      dependencies: plugins_deps)
> > 
> > Same under-indent by 1.
> > 
> > With the indents fixed:
> > 
> >    Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> > 
> 
> Patch 3 already fixes the indent.

Please fix the problem in this patch since that is where it is first
present in this series. 

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH v2 02/11] plugins: factorize plugin dependencies and library details
Posted by Pierrick Bouvier 3 weeks ago
On 1/19/26 12:09 AM, Daniel P. Berrangé wrote:
> On Fri, Jan 16, 2026 at 04:02:50PM -0800, Pierrick Bouvier wrote:
>> On 1/16/26 4:22 AM, Daniel P. Berrangé wrote:
>>> On Fri, Jan 02, 2026 at 01:47:15PM -0800, Pierrick Bouvier wrote:
>>>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
>>>> ---
>>>>    meson.build                   |  2 +-
>>>>    contrib/plugins/meson.build   | 13 ++-----------
>>>>    plugins/meson.build           | 15 ++++++++++++++-
>>>>    tests/tcg/plugins/meson.build | 13 ++-----------
>>>>    4 files changed, 19 insertions(+), 24 deletions(-)
>>>>
>>>> diff --git a/meson.build b/meson.build
>>>> index db87358d62d..3d6c6c702d0 100644
>>>> --- a/meson.build
>>>> +++ b/meson.build
>>>> @@ -4499,7 +4499,7 @@ if get_option('plugins')
>>>>      if host_os == 'windows'
>>>>        # On windows, we want to deliver the qemu_plugin_api.lib file in the qemu installer,
>>>>        # so that plugin authors can compile against it.
>>>> -    install_data(win32_qemu_plugin_api_lib, install_dir: 'lib')
>>>> +    install_data(win32_qemu_plugin_api, install_dir: 'lib')
>>>>      endif
>>>>    endif
>>>> diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
>>>> index 6f72b2ce0c9..8f9f0257ee5 100644
>>>> --- a/contrib/plugins/meson.build
>>>> +++ b/contrib/plugins/meson.build
>>>> @@ -9,17 +9,8 @@ endif
>>>>    t = []
>>>>    if get_option('plugins')
>>>>      foreach i : contrib_plugins
>>>> -    if host_os == 'windows'
>>>> -      t += shared_module(i, files(i + '.c') + '../../plugins/win32_linker.c',
>>>> -                        include_directories: '../../include/qemu',
>>>> -                        link_depends: [win32_qemu_plugin_api_lib],
>>>> -                        link_args: win32_qemu_plugin_api_link_flags,
>>>> -                        dependencies: glib)
>>>> -    else
>>>> -      t += shared_module(i, files(i + '.c'),
>>>> -                        include_directories: '../../include/qemu',
>>>> -                        dependencies: glib)
>>>> -    endif
>>>> +    t += shared_module(i, files(i + '.c'),
>>>> +                      dependencies: plugins_deps)
>>>
>>> Nit-pick - under-indented by 1 space. The orignal code had the
>>> same bug, but lets not preserve it.
>>>
>>>
>>>> diff --git a/tests/tcg/plugins/meson.build b/tests/tcg/plugins/meson.build
>>>> index a6e78438510..c58f2e382ae 100644
>>>> --- a/tests/tcg/plugins/meson.build
>>>> +++ b/tests/tcg/plugins/meson.build
>>>> @@ -1,17 +1,8 @@
>>>>    t = []
>>>>    if get_option('plugins')
>>>>      foreach i : ['bb', 'discons', 'empty', 'inline', 'insn', 'mem', 'reset', 'syscall', 'patch']
>>>> -    if host_os == 'windows'
>>>> -      t += shared_module(i, files(i + '.c') + '../../../plugins/win32_linker.c',
>>>> -                        include_directories: '../../../include/qemu',
>>>> -                        link_depends: [win32_qemu_plugin_api_lib],
>>>> -                        link_args: win32_qemu_plugin_api_link_flags,
>>>> -                        dependencies: glib)
>>>> -    else
>>>> -      t += shared_module(i, files(i + '.c'),
>>>> -                        include_directories: '../../../include/qemu',
>>>> -                        dependencies: glib)
>>>> -    endif
>>>> +    t += shared_module(i, files(i + '.c'),
>>>> +                      dependencies: plugins_deps)
>>>
>>> Same under-indent by 1.
>>>
>>> With the indents fixed:
>>>
>>>     Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>>>
>>
>> Patch 3 already fixes the indent.
> 
> Please fix the problem in this patch since that is where it is first
> present in this series.
>

I will do that for next version, thanks.

> With regards,
> Daniel