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
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~
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
>
© 2016 - 2026 Red Hat, Inc.