diff mbox series

[v2,1/2] contrib/plugins: add meson build file

Message ID 20230628162451.147419-2-anton.kochkov@proton.me
State New
Headers show
Series contrib/plugins: Migrate to the Meson build | expand

Commit Message

Anton Kochkov June 28, 2023, 4:26 p.m. UTC
Add crossplatform Meson file to build TCG plugins since
the Makefile makes wrong assumptions about it being used only
on Linux. Tested on Linux and macOS.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1710
Signed-off-by: Anton Kochkov <anton.kochkov@proton.me>
---
 contrib/plugins/meson.build       | 31 +++++++++++++++++++++++++++++++
 contrib/plugins/meson_options.txt |  1 +
 2 files changed, 32 insertions(+)
 create mode 100644 contrib/plugins/meson.build
 create mode 100644 contrib/plugins/meson_options.txt

--
2.41.0

Comments

Akihiko Odaki Aug. 2, 2023, 8:16 a.m. UTC | #1
Thanks for letting me know this on GitLab.

On 2023/06/29 1:26, Anton Kochkov wrote:
> Add crossplatform Meson file to build TCG plugins since
> the Makefile makes wrong assumptions about it being used only
> on Linux. Tested on Linux and macOS.
> 
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1710
> Signed-off-by: Anton Kochkov <anton.kochkov@proton.me>
> ---
>   contrib/plugins/meson.build       | 31 +++++++++++++++++++++++++++++++
>   contrib/plugins/meson_options.txt |  1 +
>   2 files changed, 32 insertions(+)
>   create mode 100644 contrib/plugins/meson.build
>   create mode 100644 contrib/plugins/meson_options.txt
> 
> diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
> new file mode 100644
> index 0000000000..72c4167461
> --- /dev/null
> +++ b/contrib/plugins/meson.build
> @@ -0,0 +1,31 @@
> +project('qemu-plugins', 'c', meson_version: '>=0.50.0')
> +
> +qemu_src = get_option('qemu_path')
> +if qemu_src == ''
> +  qemu_src = '../..'
> +endif

The default value should be provided in meson_options.txt.

> +
> +qemu_include = qemu_src + '/include/qemu'

I think the following is more idiomatic:
qemu_include = qemu_src / 'include/qemu'

Regards,
Akihiko Odaki

> +incdir = include_directories(qemu_include)
> +
> +plugins = [
> +  'execlog',
> +  'hotblocks',
> +  'hotpages',
> +  'howvec',
> +  'lockstep',
> +  'hwprofile',
> +  'cache',
> +  'drcov',
> +]
> +
> +th = dependency('threads', required: true)
> +glib = dependency('glib-2.0', required: true)
> +
> +foreach p: plugins
> +  library(p, p + '.c',
> +    include_directories: incdir,
> +    dependencies: [th, glib],
> +    override_options: ['b_lundef=false']
> +  )
> +endforeach
> diff --git a/contrib/plugins/meson_options.txt b/contrib/plugins/meson_options.txt
> new file mode 100644
> index 0000000000..2d76cda496
> --- /dev/null
> +++ b/contrib/plugins/meson_options.txt
> @@ -0,0 +1 @@
> +option('qemu_path', type : 'string', value : '', description : 'Full path to the QEMU sources to build plugins for')
> --
> 2.41.0
> 
> 
>
Akihiko Odaki Aug. 2, 2023, 8:22 a.m. UTC | #2
I used a wrong email account.

I also forgot to mention that you must update other places referring to 
the Makefile. I'm aware of the following:
- root Makefile
- tests/tcg/Makefile.target
- docs/devel/tcg-plugins.rst

On 2023/08/02 17:16, Akihiko Odaki wrote:
> Thanks for letting me know this on GitLab.
> 
> On 2023/06/29 1:26, Anton Kochkov wrote:
>> Add crossplatform Meson file to build TCG plugins since
>> the Makefile makes wrong assumptions about it being used only
>> on Linux. Tested on Linux and macOS.
>>
>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1710
>> Signed-off-by: Anton Kochkov <anton.kochkov@proton.me>
>> ---
>>   contrib/plugins/meson.build       | 31 +++++++++++++++++++++++++++++++
>>   contrib/plugins/meson_options.txt |  1 +
>>   2 files changed, 32 insertions(+)
>>   create mode 100644 contrib/plugins/meson.build
>>   create mode 100644 contrib/plugins/meson_options.txt
>>
>> diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
>> new file mode 100644
>> index 0000000000..72c4167461
>> --- /dev/null
>> +++ b/contrib/plugins/meson.build
>> @@ -0,0 +1,31 @@
>> +project('qemu-plugins', 'c', meson_version: '>=0.50.0')
>> +
>> +qemu_src = get_option('qemu_path')
>> +if qemu_src == ''
>> +  qemu_src = '../..'
>> +endif
> 
> The default value should be provided in meson_options.txt.
> 
>> +
>> +qemu_include = qemu_src + '/include/qemu'
> 
> I think the following is more idiomatic:
> qemu_include = qemu_src / 'include/qemu'
> 
> Regards,
> Akihiko Odaki
> 
>> +incdir = include_directories(qemu_include)
>> +
>> +plugins = [
>> +  'execlog',
>> +  'hotblocks',
>> +  'hotpages',
>> +  'howvec',
>> +  'lockstep',
>> +  'hwprofile',
>> +  'cache',
>> +  'drcov',
>> +]
>> +
>> +th = dependency('threads', required: true)
>> +glib = dependency('glib-2.0', required: true)
>> +
>> +foreach p: plugins
>> +  library(p, p + '.c',
>> +    include_directories: incdir,
>> +    dependencies: [th, glib],
>> +    override_options: ['b_lundef=false']
>> +  )
>> +endforeach
>> diff --git a/contrib/plugins/meson_options.txt 
>> b/contrib/plugins/meson_options.txt
>> new file mode 100644
>> index 0000000000..2d76cda496
>> --- /dev/null
>> +++ b/contrib/plugins/meson_options.txt
>> @@ -0,0 +1 @@
>> +option('qemu_path', type : 'string', value : '', description : 'Full 
>> path to the QEMU sources to build plugins for')
>> -- 
>> 2.41.0
>>
>>
>>
diff mbox series

Patch

diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
new file mode 100644
index 0000000000..72c4167461
--- /dev/null
+++ b/contrib/plugins/meson.build
@@ -0,0 +1,31 @@ 
+project('qemu-plugins', 'c', meson_version: '>=0.50.0')
+
+qemu_src = get_option('qemu_path')
+if qemu_src == ''
+  qemu_src = '../..'
+endif
+
+qemu_include = qemu_src + '/include/qemu'
+incdir = include_directories(qemu_include)
+
+plugins = [
+  'execlog',
+  'hotblocks',
+  'hotpages',
+  'howvec',
+  'lockstep',
+  'hwprofile',
+  'cache',
+  'drcov',
+]
+
+th = dependency('threads', required: true)
+glib = dependency('glib-2.0', required: true)
+
+foreach p: plugins
+  library(p, p + '.c',
+    include_directories: incdir,
+    dependencies: [th, glib],
+    override_options: ['b_lundef=false']
+  )
+endforeach
diff --git a/contrib/plugins/meson_options.txt b/contrib/plugins/meson_options.txt
new file mode 100644
index 0000000000..2d76cda496
--- /dev/null
+++ b/contrib/plugins/meson_options.txt
@@ -0,0 +1 @@ 
+option('qemu_path', type : 'string', value : '', description : 'Full path to the QEMU sources to build plugins for')