This plugin makes sure we can compile in C++ while including qemu-plugin header. It includes all C++ standard headers, up to C++23 standard, minus the ones that are missing in the oldest environments we need to build for.
Signed-off-by: Pierrick Bouvier <[email protected]> --- contrib/plugins/cpp.cpp | 119 ++++++++++++++++++++++++++++++++++++ contrib/plugins/meson.build | 4 ++ 2 files changed, 123 insertions(+) create mode 100644 contrib/plugins/cpp.cpp diff --git a/contrib/plugins/cpp.cpp b/contrib/plugins/cpp.cpp new file mode 100644 index 00000000000..1ff54896d97 --- /dev/null +++ b/contrib/plugins/cpp.cpp @@ -0,0 +1,119 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * + * This C++ plugin ensures we don't have regression when compiling C++. + */ + +#include <qemu-plugin.h> + +/* https://en.cppreference.com/w/cpp/headers.html */ +#include <algorithm> +#include <any> +#include <array> +#include <atomic> +#include <barrier> +#include <bit> +#include <bitset> +#include <cassert> +#include <cctype> +#include <cerrno> +#include <cfenv> +#include <cfloat> +#include <charconv> +#include <chrono> +#include <cinttypes> +#include <climits> +#include <clocale> +#include <cmath> +#include <codecvt> +#include <compare> +#include <complex> +#include <concepts> +#include <condition_variable> +#include <coroutine> +#include <csetjmp> +#include <csignal> +#include <cstdarg> +#include <cstddef> +#include <cstdint> +#include <cstdio> +#include <cstdlib> +#include <cstring> +#include <ctime> +#include <cuchar> +#include <cwchar> +#include <cwctype> +#include <deque> +#include <exception> +#include <execution> +#include <filesystem> +#include <forward_list> +#include <fstream> +#include <functional> +#include <future> +#include <initializer_list> +#include <iomanip> +#include <ios> +#include <iosfwd> +#include <iostream> +#include <istream> +#include <iterator> +#include <latch> +#include <limits> +#include <list> +#include <locale> +#include <map> +#include <memory> +#include <memory_resource> +#include <mutex> +#include <new> +#include <numbers> +#include <numeric> +#include <optional> +#include <ostream> +#include <queue> +#include <random> +#include <ranges> +#include <ratio> +#include <regex> +#include <scoped_allocator> +#include <semaphore> +#include <set> +#include <shared_mutex> +#include <source_location> +#include <span> +#include <sstream> +#include <stack> +#include <stdexcept> +#include <stop_token> +#include <streambuf> +#include <string> +#include <string_view> +#include <syncstream> +#include <system_error> +#include <thread> +#include <tuple> +#include <typeindex> +#include <typeinfo> +#include <type_traits> +#include <unordered_map> +#include <unordered_set> +#include <utility> +#include <valarray> +#include <variant> +#include <vector> +#include <version> + +QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION; + +static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb) +{ +} + +QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id, + const qemu_info_t *info, + int argc, char **argv) +{ + qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans); + return 0; +} diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build index 3d2d7862e0c..53d52c97967 100644 --- a/contrib/plugins/meson.build +++ b/contrib/plugins/meson.build @@ -6,6 +6,10 @@ if host_os != 'windows' contrib_plugins += 'lockstep.c' endif +if 'cpp' in all_languages + contrib_plugins += 'cpp.cpp' +endif + t = [] if get_option('plugins') foreach i : contrib_plugins -- 2.47.3
