qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] contrib/plugins: Migrate to the Meson build
@ 2023-06-28 16:25 Anton Kochkov
  2023-06-28 16:26 ` [PATCH v2 1/2] contrib/plugins: add meson build file Anton Kochkov
  2023-06-28 16:26 ` [PATCH v2 2/2] contrib/plugins: remove Makefile Anton Kochkov
  0 siblings, 2 replies; 5+ messages in thread
From: Anton Kochkov @ 2023-06-28 16:25 UTC (permalink / raw)
  To: qemu-devel; +Cc: Anton Kochkov

Makefile made a lot of assumption regarding the system to compile for.
It was also limited to the Linux (and possibly BSD) only, without the way
to compile for macOS or Windows.

Changes since v1:
- Remove Makefile

Anton Kochkov (2):
  contrib/plugins: add meson build file
  contrib/plugins: remove Makefile

 contrib/plugins/Makefile          | 46 -------------------------------
 contrib/plugins/meson.build       | 31 +++++++++++++++++++++
 contrib/plugins/meson_options.txt |  1 +
 3 files changed, 32 insertions(+), 46 deletions(-)
 delete mode 100644 contrib/plugins/Makefile
 create mode 100644 contrib/plugins/meson.build
 create mode 100644 contrib/plugins/meson_options.txt

--
2.41.0




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/2] contrib/plugins: add meson build file
  2023-06-28 16:25 [PATCH v2 0/2] contrib/plugins: Migrate to the Meson build Anton Kochkov
@ 2023-06-28 16:26 ` Anton Kochkov
  2023-08-02  8:16   ` Akihiko Odaki
  2023-06-28 16:26 ` [PATCH v2 2/2] contrib/plugins: remove Makefile Anton Kochkov
  1 sibling, 1 reply; 5+ messages in thread
From: Anton Kochkov @ 2023-06-28 16:26 UTC (permalink / raw)
  To: qemu-devel
  Cc: Anton Kochkov, Alex Bennée, Alexandre Iooss, Mahmoud Mandour

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
+
+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')
--
2.41.0




^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] contrib/plugins: remove Makefile
  2023-06-28 16:25 [PATCH v2 0/2] contrib/plugins: Migrate to the Meson build Anton Kochkov
  2023-06-28 16:26 ` [PATCH v2 1/2] contrib/plugins: add meson build file Anton Kochkov
@ 2023-06-28 16:26 ` Anton Kochkov
  1 sibling, 0 replies; 5+ messages in thread
From: Anton Kochkov @ 2023-06-28 16:26 UTC (permalink / raw)
  To: qemu-devel; +Cc: Anton Kochkov

Signed-off-by: Anton Kochkov <anton.kochkov@proton.me>
---
 contrib/plugins/Makefile | 46 ----------------------------------------
 1 file changed, 46 deletions(-)
 delete mode 100644 contrib/plugins/Makefile

diff --git a/contrib/plugins/Makefile b/contrib/plugins/Makefile
deleted file mode 100644
index b2b9db9f51..0000000000
--- a/contrib/plugins/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# This Makefile example is fairly independent from the main makefile
-# so users can take and adapt it for their build. We only really
-# include config-host.mak so we don't have to repeat probing for
-# programs that the main configure has already done for us.
-#
-
-BUILD_DIR := $(CURDIR)/../..
-
-include $(BUILD_DIR)/config-host.mak
-
-VPATH += $(SRC_PATH)/contrib/plugins
-
-NAMES :=
-NAMES += execlog
-NAMES += hotblocks
-NAMES += hotpages
-NAMES += howvec
-NAMES += lockstep
-NAMES += hwprofile
-NAMES += cache
-NAMES += drcov
-
-SONAMES := $(addsuffix .so,$(addprefix lib,$(NAMES)))
-
-# The main QEMU uses Glib extensively so it's perfectly fine to use it
-# in plugins (which many example do).
-CFLAGS := $(shell $(PKG_CONFIG) --cflags glib-2.0)
-CFLAGS += -fPIC -Wall
-CFLAGS += $(if $(CONFIG_DEBUG_TCG), -ggdb -O0)
-CFLAGS += -I$(SRC_PATH)/include/qemu
-
-all: $(SONAMES)
-
-%.o: %.c
-	$(CC) $(CFLAGS) -c -o $@ $<
-
-lib%.so: %.o
-	$(CC) -shared -Wl,-soname,$@ -o $@ $^ $(LDLIBS)
-
-clean:
-	rm -f *.o *.so *.d
-	rm -Rf .libs
-
-.PHONY: all clean
--
2.41.0




^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] contrib/plugins: add meson build file
  2023-06-28 16:26 ` [PATCH v2 1/2] contrib/plugins: add meson build file Anton Kochkov
@ 2023-08-02  8:16   ` Akihiko Odaki
  2023-08-02  8:22     ` Akihiko Odaki
  0 siblings, 1 reply; 5+ messages in thread
From: Akihiko Odaki @ 2023-08-02  8:16 UTC (permalink / raw)
  To: Anton Kochkov, qemu-devel
  Cc: Alex Bennée, Alexandre Iooss, Mahmoud Mandour

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
> 
> 
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] contrib/plugins: add meson build file
  2023-08-02  8:16   ` Akihiko Odaki
@ 2023-08-02  8:22     ` Akihiko Odaki
  0 siblings, 0 replies; 5+ messages in thread
From: Akihiko Odaki @ 2023-08-02  8:22 UTC (permalink / raw)
  To: Anton Kochkov, qemu-devel
  Cc: Alex Bennée, Alexandre Iooss, Mahmoud Mandour

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
>>
>>
>>


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-08-02  8:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-28 16:25 [PATCH v2 0/2] contrib/plugins: Migrate to the Meson build Anton Kochkov
2023-06-28 16:26 ` [PATCH v2 1/2] contrib/plugins: add meson build file Anton Kochkov
2023-08-02  8:16   ` Akihiko Odaki
2023-08-02  8:22     ` Akihiko Odaki
2023-06-28 16:26 ` [PATCH v2 2/2] contrib/plugins: remove Makefile Anton Kochkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).