[PATCH v2 06/11] plugins: move qemu-plugin.h to include/plugins/

Pierrick Bouvier posted 11 patches 4 days, 12 hours 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>
[PATCH v2 06/11] plugins: move qemu-plugin.h to include/plugins/
Posted by Pierrick Bouvier 4 days, 12 hours ago
This change has two benefits:
- ensure plugins can't include anything else from QEMU than plugins API
- when compiling a C++ module, solves the header conflict with iostream
  header that includes transitively the wrong ctype.h, which already
  exists in include/qemu.

By Hyrum's law, there was already one usage of other headers with mem
plugin, which has been eliminated in previous commit.

Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
 docs/devel/tcg-plugins.rst              | 4 ++--
 meson.build                             | 2 +-
 include/{qemu => plugins}/qemu-plugin.h | 3 ---
 include/qemu/plugin.h                   | 2 +-
 plugins/core.c                          | 2 +-
 plugins/meson.build                     | 6 +++---
 scripts/clean-includes                  | 2 +-
 7 files changed, 9 insertions(+), 12 deletions(-)
 rename include/{qemu => plugins}/qemu-plugin.h (99%)

diff --git a/docs/devel/tcg-plugins.rst b/docs/devel/tcg-plugins.rst
index 9463692c411..f48c32bd844 100644
--- a/docs/devel/tcg-plugins.rst
+++ b/docs/devel/tcg-plugins.rst
@@ -166,7 +166,7 @@ Plugin API
 ==========
 
 The following API is generated from the inline documentation in
-``include/qemu/qemu-plugin.h``. Please ensure any updates to the API
+``include/plugins/qemu-plugin.h``. Please ensure any updates to the API
 include the full kernel-doc annotations.
 
-.. kernel-doc:: include/qemu/qemu-plugin.h
+.. kernel-doc:: include/plugins/qemu-plugin.h
diff --git a/meson.build b/meson.build
index 3d6c6c702d0..a8fd8e88225 100644
--- a/meson.build
+++ b/meson.build
@@ -4495,7 +4495,7 @@ endforeach
 # Other build targets
 
 if get_option('plugins')
-  install_headers('include/qemu/qemu-plugin.h')
+  install_headers('include/plugins/qemu-plugin.h')
   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.
diff --git a/include/qemu/qemu-plugin.h b/include/plugins/qemu-plugin.h
similarity index 99%
rename from include/qemu/qemu-plugin.h
rename to include/plugins/qemu-plugin.h
index e44f863d839..78872716246 100644
--- a/include/qemu/qemu-plugin.h
+++ b/include/plugins/qemu-plugin.h
@@ -2,9 +2,6 @@
  * Copyright (C) 2017, Emilio G. Cota <cota@braap.org>
  * Copyright (C) 2019, Linaro
  *
- * License: GNU GPL, version 2 or later.
- *   See the COPYING file in the top-level directory.
- *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
diff --git a/include/qemu/plugin.h b/include/qemu/plugin.h
index cea0a68858b..cdd4f68c0c1 100644
--- a/include/qemu/plugin.h
+++ b/include/qemu/plugin.h
@@ -8,7 +8,7 @@
 #define QEMU_PLUGIN_H
 
 #include "qemu/config-file.h"
-#include "qemu/qemu-plugin.h"
+#include "plugins/qemu-plugin.h"
 #include "qemu/error-report.h"
 #include "qemu/queue.h"
 #include "qemu/option.h"
diff --git a/plugins/core.c b/plugins/core.c
index b4b783008f7..3f66533d749 100644
--- a/plugins/core.c
+++ b/plugins/core.c
@@ -15,7 +15,7 @@
 #include "qemu/lockable.h"
 #include "qemu/option.h"
 #include "qemu/plugin.h"
-#include "qemu/qemu-plugin.h"
+#include "plugins/qemu-plugin.h"
 #include "qemu/queue.h"
 #include "qemu/rcu_queue.h"
 #include "qemu/rcu.h"
diff --git a/plugins/meson.build b/plugins/meson.build
index 4318e3a1671..34643e2cea3 100644
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -3,7 +3,7 @@ if not get_option('plugins')
 endif
 
 qemu_plugin_symbols = configure_file(
-  input: files('../include/qemu/qemu-plugin.h'),
+  input: files('../include/plugins/qemu-plugin.h'),
   output: 'qemu-plugin.symbols',
   capture: true,
   command: [files('../scripts/qemu-plugin-symbols.py'), '@INPUT@'])
@@ -62,12 +62,12 @@ endif
 
 if host_os == 'windows'
   plugins_deps = declare_dependency(sources: [files('win32_linker.c')],
-                                    include_directories: '../include/qemu',
+                                    include_directories: '../include/plugins',
                                     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',
+  plugins_deps = declare_dependency(include_directories: '../include/plugins',
                                     dependencies: glib)
 endif
 
diff --git a/scripts/clean-includes b/scripts/clean-includes
index 25dbf16c021..3fae8e00e67 100755
--- a/scripts/clean-includes
+++ b/scripts/clean-includes
@@ -128,7 +128,7 @@ for f in "$@"; do
       ;;
     *include/qemu/osdep.h | \
     *include/qemu/compiler.h | \
-    *include/qemu/qemu-plugin.h | \
+    *include/plugins/qemu-plugin.h | \
     *include/glib-compat.h | \
     *include/system/os-posix.h | \
     *include/system/os-win32.h | \
-- 
2.47.3
Re: [PATCH v2 06/11] plugins: move qemu-plugin.h to include/plugins/
Posted by Richard Henderson 2 days, 4 hours ago
On 1/3/26 08:47, Pierrick Bouvier wrote:
> This change has two benefits:
> - ensure plugins can't include anything else from QEMU than plugins API
> - when compiling a C++ module, solves the header conflict with iostream
>    header that includes transitively the wrong ctype.h, which already
>    exists in include/qemu.
> 
> By Hyrum's law, there was already one usage of other headers with mem
> plugin, which has been eliminated in previous commit.
> 
> Signed-off-by: Pierrick Bouvier<pierrick.bouvier@linaro.org>
> ---
>   docs/devel/tcg-plugins.rst              | 4 ++--
>   meson.build                             | 2 +-
>   include/{qemu => plugins}/qemu-plugin.h | 3 ---
>   include/qemu/plugin.h                   | 2 +-
>   plugins/core.c                          | 2 +-
>   plugins/meson.build                     | 6 +++---
>   scripts/clean-includes                  | 2 +-
>   7 files changed, 9 insertions(+), 12 deletions(-)
>   rename include/{qemu => plugins}/qemu-plugin.h (99%)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~
Re: [PATCH v2 06/11] plugins: move qemu-plugin.h to include/plugins/
Posted by Manos Pitsidianakis 3 days, 20 hours ago
On Fri, 02 Jan 2026 23:47, Pierrick Bouvier <pierrick.bouvier@linaro.org> wrote:
>This change has two benefits:
>- ensure plugins can't include anything else from QEMU than plugins API
>- when compiling a C++ module, solves the header conflict with iostream
>  header that includes transitively the wrong ctype.h, which already
>  exists in include/qemu.
>
>By Hyrum's law, there was already one usage of other headers with mem
>plugin, which has been eliminated in previous commit.
>
>Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
>---

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

> docs/devel/tcg-plugins.rst              | 4 ++--
> meson.build                             | 2 +-
> include/{qemu => plugins}/qemu-plugin.h | 3 ---
> include/qemu/plugin.h                   | 2 +-
> plugins/core.c                          | 2 +-
> plugins/meson.build                     | 6 +++---
> scripts/clean-includes                  | 2 +-
> 7 files changed, 9 insertions(+), 12 deletions(-)
> rename include/{qemu => plugins}/qemu-plugin.h (99%)
>
>diff --git a/docs/devel/tcg-plugins.rst b/docs/devel/tcg-plugins.rst
>index 9463692c411..f48c32bd844 100644
>--- a/docs/devel/tcg-plugins.rst
>+++ b/docs/devel/tcg-plugins.rst
>@@ -166,7 +166,7 @@ Plugin API
> ==========
> 
> The following API is generated from the inline documentation in
>-``include/qemu/qemu-plugin.h``. Please ensure any updates to the API
>+``include/plugins/qemu-plugin.h``. Please ensure any updates to the API
> include the full kernel-doc annotations.
> 
>-.. kernel-doc:: include/qemu/qemu-plugin.h
>+.. kernel-doc:: include/plugins/qemu-plugin.h
>diff --git a/meson.build b/meson.build
>index 3d6c6c702d0..a8fd8e88225 100644
>--- a/meson.build
>+++ b/meson.build
>@@ -4495,7 +4495,7 @@ endforeach
> # Other build targets
> 
> if get_option('plugins')
>-  install_headers('include/qemu/qemu-plugin.h')
>+  install_headers('include/plugins/qemu-plugin.h')
>   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.
>diff --git a/include/qemu/qemu-plugin.h b/include/plugins/qemu-plugin.h
>similarity index 99%
>rename from include/qemu/qemu-plugin.h
>rename to include/plugins/qemu-plugin.h
>index e44f863d839..78872716246 100644
>--- a/include/qemu/qemu-plugin.h
>+++ b/include/plugins/qemu-plugin.h
>@@ -2,9 +2,6 @@
>  * Copyright (C) 2017, Emilio G. Cota <cota@braap.org>
>  * Copyright (C) 2019, Linaro
>  *
>- * License: GNU GPL, version 2 or later.
>- *   See the COPYING file in the top-level directory.
>- *
>  * SPDX-License-Identifier: GPL-2.0-or-later
>  */
> 
>diff --git a/include/qemu/plugin.h b/include/qemu/plugin.h
>index cea0a68858b..cdd4f68c0c1 100644
>--- a/include/qemu/plugin.h
>+++ b/include/qemu/plugin.h
>@@ -8,7 +8,7 @@
> #define QEMU_PLUGIN_H
> 
> #include "qemu/config-file.h"
>-#include "qemu/qemu-plugin.h"
>+#include "plugins/qemu-plugin.h"
> #include "qemu/error-report.h"
> #include "qemu/queue.h"
> #include "qemu/option.h"
>diff --git a/plugins/core.c b/plugins/core.c
>index b4b783008f7..3f66533d749 100644
>--- a/plugins/core.c
>+++ b/plugins/core.c
>@@ -15,7 +15,7 @@
> #include "qemu/lockable.h"
> #include "qemu/option.h"
> #include "qemu/plugin.h"
>-#include "qemu/qemu-plugin.h"
>+#include "plugins/qemu-plugin.h"
> #include "qemu/queue.h"
> #include "qemu/rcu_queue.h"
> #include "qemu/rcu.h"
>diff --git a/plugins/meson.build b/plugins/meson.build
>index 4318e3a1671..34643e2cea3 100644
>--- a/plugins/meson.build
>+++ b/plugins/meson.build
>@@ -3,7 +3,7 @@ if not get_option('plugins')
> endif
> 
> qemu_plugin_symbols = configure_file(
>-  input: files('../include/qemu/qemu-plugin.h'),
>+  input: files('../include/plugins/qemu-plugin.h'),
>   output: 'qemu-plugin.symbols',
>   capture: true,
>   command: [files('../scripts/qemu-plugin-symbols.py'), '@INPUT@'])
>@@ -62,12 +62,12 @@ endif
> 
> if host_os == 'windows'
>   plugins_deps = declare_dependency(sources: [files('win32_linker.c')],
>-                                    include_directories: '../include/qemu',
>+                                    include_directories: '../include/plugins',
>                                     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',
>+  plugins_deps = declare_dependency(include_directories: '../include/plugins',
>                                     dependencies: glib)
> endif
> 
>diff --git a/scripts/clean-includes b/scripts/clean-includes
>index 25dbf16c021..3fae8e00e67 100755
>--- a/scripts/clean-includes
>+++ b/scripts/clean-includes
>@@ -128,7 +128,7 @@ for f in "$@"; do
>       ;;
>     *include/qemu/osdep.h | \
>     *include/qemu/compiler.h | \
>-    *include/qemu/qemu-plugin.h | \
>+    *include/plugins/qemu-plugin.h | \
>     *include/glib-compat.h | \
>     *include/system/os-posix.h | \
>     *include/system/os-win32.h | \
>-- 
>2.47.3
>