qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/7] Makefile: add dummy target for build.ninja dependencies
  2020-12-16 15:02 [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0 Paolo Bonzini
@ 2020-12-16 15:02 ` Paolo Bonzini
  0 siblings, 0 replies; 15+ messages in thread
From: Paolo Bonzini @ 2020-12-16 15:02 UTC (permalink / raw)
  To: qemu-devel

The dummy targets ensure that incremental build can be done after
deleting a meson.build file.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Makefile b/Makefile
index 76dbb917f5..fb9923ff22 100644
--- a/Makefile
+++ b/Makefile
@@ -133,6 +133,7 @@ Makefile.ninja: build.ninja
 
 # A separate rule is needed for Makefile dependencies to avoid -n
 build.ninja: build.ninja.stamp
+$(build-files):
 build.ninja.stamp: meson.stamp $(build-files)
 	$(NINJA) $(if $V,-v,) build.ninja && touch $@
 endif
-- 
2.29.2




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

* [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0
@ 2020-12-16 16:19 Paolo Bonzini
  2020-12-16 16:20 ` [PATCH 1/7] Makefile: add dummy target for build.ninja dependencies Paolo Bonzini
                   ` (6 more replies)
  0 siblings, 7 replies; 15+ messages in thread
From: Paolo Bonzini @ 2020-12-16 16:19 UTC (permalink / raw)
  To: qemu-devel

Mostly switching to 0.56.0 in order to remove the b_staticpic
version-dependent hack.

Paolo Bonzini (7):
  Makefile: add dummy target for build.ninja dependencies
  meson: update submodule to 0.56.0
  meson: switch minimum meson version to 0.56.0
  meson: fix detection of curses with pkgconfig
  meson: use pkg-config method for libudev
  meson: use dependency to gate block modules
  meson: cleanup Kconfig.host handling

 Makefile                      |   1 +
 accel/Kconfig                 |   9 +++
 block/meson.build             |  20 +++----
 configure                     |   7 +--
 docs/devel/kconfig.rst        |  19 +++----
 docs/meson.build              |  12 ++--
 meson                         |   2 +-
 meson.build                   | 104 +++++++++++++++-------------------
 plugins/meson.build           |   4 +-
 tests/meson.build             |   2 +-
 tests/qapi-schema/meson.build |   4 +-
 tests/qtest/meson.build       |   2 +-
 trace/meson.build             |   4 +-
 13 files changed, 91 insertions(+), 99 deletions(-)

-- 
2.29.2



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

* [PATCH 1/7] Makefile: add dummy target for build.ninja dependencies
  2020-12-16 16:19 [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0 Paolo Bonzini
@ 2020-12-16 16:20 ` Paolo Bonzini
  2020-12-16 16:20 ` [PATCH 2/7] meson: update submodule to 0.56.0 Paolo Bonzini
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 15+ messages in thread
From: Paolo Bonzini @ 2020-12-16 16:20 UTC (permalink / raw)
  To: qemu-devel

The dummy targets ensure that incremental build can be done after
deleting a meson.build file.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Makefile b/Makefile
index 76dbb917f5..fb9923ff22 100644
--- a/Makefile
+++ b/Makefile
@@ -133,6 +133,7 @@ Makefile.ninja: build.ninja
 
 # A separate rule is needed for Makefile dependencies to avoid -n
 build.ninja: build.ninja.stamp
+$(build-files):
 build.ninja.stamp: meson.stamp $(build-files)
 	$(NINJA) $(if $V,-v,) build.ninja && touch $@
 endif
-- 
2.29.2




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

* [PATCH 2/7] meson: update submodule to 0.56.0
  2020-12-16 16:19 [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0 Paolo Bonzini
  2020-12-16 16:20 ` [PATCH 1/7] Makefile: add dummy target for build.ninja dependencies Paolo Bonzini
@ 2020-12-16 16:20 ` Paolo Bonzini
  2020-12-16 16:52   ` Marc-André Lureau
  2020-12-16 16:20 ` [PATCH 3/7] meson: switch minimum meson version " Paolo Bonzini
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 15+ messages in thread
From: Paolo Bonzini @ 2020-12-16 16:20 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure | 2 +-
 meson     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 6317964997..8d12b715e3 100755
--- a/configure
+++ b/configure
@@ -1938,7 +1938,7 @@ python_version=$($python -c 'import sys; print("%d.%d.%d" % (sys.version_info[0]
 python="$python -B"
 
 if test -z "$meson"; then
-    if test "$explicit_python" = no && has meson && version_ge "$(meson --version)" 0.55.3; then
+    if test "$explicit_python" = no && has meson && version_ge "$(meson --version)" 0.56.0; then
         meson=meson
     elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
         meson=git
diff --git a/meson b/meson
index 776acd2a80..f16d31607e 160000
--- a/meson
+++ b/meson
@@ -1 +1 @@
-Subproject commit 776acd2a805c9b42b4f0375150977df42130317f
+Subproject commit f16d31607eb3cd0f281758bd0944e206ef6be387
-- 
2.29.2




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

* [PATCH 3/7] meson: switch minimum meson version to 0.56.0
  2020-12-16 16:19 [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0 Paolo Bonzini
  2020-12-16 16:20 ` [PATCH 1/7] Makefile: add dummy target for build.ninja dependencies Paolo Bonzini
  2020-12-16 16:20 ` [PATCH 2/7] meson: update submodule to 0.56.0 Paolo Bonzini
@ 2020-12-16 16:20 ` Paolo Bonzini
  2020-12-16 16:53   ` Marc-André Lureau
  2020-12-16 16:20 ` [PATCH 4/7] meson: fix detection of curses with pkgconfig Paolo Bonzini
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 15+ messages in thread
From: Paolo Bonzini @ 2020-12-16 16:20 UTC (permalink / raw)
  To: qemu-devel

Meson 0.56.0 does not need b_staticpic=$pie anymore, and has
stabilized the keyval module.  Remove the workaround and use a few
replacements for features deprecated in that release cycle.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure                     |  5 ----
 docs/meson.build              | 12 ++++----
 meson.build                   | 54 ++++++++++++++++-------------------
 plugins/meson.build           |  4 +--
 tests/meson.build             |  2 +-
 tests/qapi-schema/meson.build |  4 +--
 tests/qtest/meson.build       |  2 +-
 trace/meson.build             |  4 +--
 8 files changed, 39 insertions(+), 48 deletions(-)

diff --git a/configure b/configure
index 8d12b715e3..708cf365f0 100755
--- a/configure
+++ b/configure
@@ -6965,10 +6965,6 @@ fi
 mv $cross config-meson.cross
 
 rm -rf meson-private meson-info meson-logs
-unset staticpic
-if ! version_ge "$($meson --version)" 0.56.0; then
-  staticpic=$(if test "$pie" = yes; then echo true; else echo false; fi)
-fi
 NINJA=$ninja $meson setup \
         --prefix "$prefix" \
         --libdir "$libdir" \
@@ -6988,7 +6984,6 @@ NINJA=$ninja $meson setup \
         -Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \
         -Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo false; fi) \
         -Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \
-        ${staticpic:+-Db_staticpic=$staticpic} \
         -Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \
         -Db_lto=$lto -Dcfi=$cfi -Dcfi_debug=$cfi_debug \
         -Dmalloc=$malloc -Dmalloc_trim=$malloc_trim -Dsparse=$sparse \
diff --git a/docs/meson.build b/docs/meson.build
index bb8fe4c9e4..4e88ed7516 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -38,12 +38,12 @@ endif
 if build_docs
   SPHINX_ARGS += ['-Dversion=' + meson.project_version(), '-Drelease=' + config_host['PKGVERSION']]
 
-  sphinx_extn_depends = [ meson.source_root() / 'docs/sphinx/depfile.py',
-                          meson.source_root() / 'docs/sphinx/hxtool.py',
-                          meson.source_root() / 'docs/sphinx/kerneldoc.py',
-                          meson.source_root() / 'docs/sphinx/kernellog.py',
-                          meson.source_root() / 'docs/sphinx/qapidoc.py',
-                          meson.source_root() / 'docs/sphinx/qmp_lexer.py',
+  sphinx_extn_depends = [ meson.current_source_dir() / 'sphinx/depfile.py',
+                          meson.current_source_dir() / 'sphinx/hxtool.py',
+                          meson.current_source_dir() / 'sphinx/kerneldoc.py',
+                          meson.current_source_dir() / 'sphinx/kernellog.py',
+                          meson.current_source_dir() / 'sphinx/qapidoc.py',
+                          meson.current_source_dir() / 'sphinx/qmp_lexer.py',
                           qapi_gen_depends ]
 
   configure_file(output: 'index.html',
diff --git a/meson.build b/meson.build
index 77ac9ec01b..39fc9b7143 100644
--- a/meson.build
+++ b/meson.build
@@ -1,14 +1,10 @@
-project('qemu', ['c'], meson_version: '>=0.55.0',
-        default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_colorout=auto'] +
-                         (meson.version().version_compare('>=0.56.0') ? [ 'b_staticpic=false' ] : []),
-        version: run_command('head', meson.source_root() / 'VERSION').stdout().strip())
+project('qemu', ['c'], meson_version: '>=0.56.0',
+        default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_colorout=auto',
+                          'b_staticpic=false'],
+        version: run_command('head', meson.project_source_root() / 'VERSION').stdout().strip())
 
 not_found = dependency('', required: false)
-if meson.version().version_compare('>=0.56.0')
-  keyval = import('keyval')
-else
-  keyval = import('unstable-keyval')
-endif
+keyval = import('keyval')
 ss = import('sourceset')
 fs = import('fs')
 
@@ -1372,21 +1368,21 @@ genh += configure_file(output: 'config-host.h', configuration: config_host_data)
 hxtool = find_program('scripts/hxtool')
 shaderinclude = find_program('scripts/shaderinclude.pl')
 qapi_gen = find_program('scripts/qapi-gen.py')
-qapi_gen_depends = [ meson.source_root() / 'scripts/qapi/__init__.py',
-                     meson.source_root() / 'scripts/qapi/commands.py',
-                     meson.source_root() / 'scripts/qapi/common.py',
-                     meson.source_root() / 'scripts/qapi/error.py',
-                     meson.source_root() / 'scripts/qapi/events.py',
-                     meson.source_root() / 'scripts/qapi/expr.py',
-                     meson.source_root() / 'scripts/qapi/gen.py',
-                     meson.source_root() / 'scripts/qapi/introspect.py',
-                     meson.source_root() / 'scripts/qapi/parser.py',
-                     meson.source_root() / 'scripts/qapi/schema.py',
-                     meson.source_root() / 'scripts/qapi/source.py',
-                     meson.source_root() / 'scripts/qapi/types.py',
-                     meson.source_root() / 'scripts/qapi/visit.py',
-                     meson.source_root() / 'scripts/qapi/common.py',
-                     meson.source_root() / 'scripts/qapi-gen.py'
+qapi_gen_depends = [ meson.current_source_dir() / 'scripts/qapi/__init__.py',
+                     meson.current_source_dir() / 'scripts/qapi/commands.py',
+                     meson.current_source_dir() / 'scripts/qapi/common.py',
+                     meson.current_source_dir() / 'scripts/qapi/error.py',
+                     meson.current_source_dir() / 'scripts/qapi/events.py',
+                     meson.current_source_dir() / 'scripts/qapi/expr.py',
+                     meson.current_source_dir() / 'scripts/qapi/gen.py',
+                     meson.current_source_dir() / 'scripts/qapi/introspect.py',
+                     meson.current_source_dir() / 'scripts/qapi/parser.py',
+                     meson.current_source_dir() / 'scripts/qapi/schema.py',
+                     meson.current_source_dir() / 'scripts/qapi/source.py',
+                     meson.current_source_dir() / 'scripts/qapi/types.py',
+                     meson.current_source_dir() / 'scripts/qapi/visit.py',
+                     meson.current_source_dir() / 'scripts/qapi/common.py',
+                     meson.current_source_dir() / 'scripts/qapi-gen.py'
 ]
 
 tracetool = [
@@ -1894,14 +1890,14 @@ foreach target : target_dirs
   if target.endswith('-softmmu')
     execs = [{
       'name': 'qemu-system-' + target_name,
-      'gui': false,
+      'win_subsystem': 'console',
       'sources': files('softmmu/main.c'),
       'dependencies': []
     }]
     if targetos == 'windows' and (sdl.found() or gtk.found())
       execs += [{
         'name': 'qemu-system-' + target_name + 'w',
-        'gui': true,
+        'win_subsystem': 'windows',
         'sources': files('softmmu/main.c'),
         'dependencies': []
       }]
@@ -1910,7 +1906,7 @@ foreach target : target_dirs
       specific_fuzz = specific_fuzz_ss.apply(config_target, strict: false)
       execs += [{
         'name': 'qemu-fuzz-' + target_name,
-        'gui': false,
+        'win_subsystem': 'console',
         'sources': specific_fuzz.sources(),
         'dependencies': specific_fuzz.dependencies(),
       }]
@@ -1918,7 +1914,7 @@ foreach target : target_dirs
   else
     execs = [{
       'name': 'qemu-' + target_name,
-      'gui': false,
+      'win_subsystem': 'console',
       'sources': [],
       'dependencies': []
     }]
@@ -1933,7 +1929,7 @@ foreach target : target_dirs
                link_language: link_language,
                link_depends: [block_syms, qemu_syms] + exe.get('link_depends', []),
                link_args: link_args,
-               gui_app: exe['gui'])
+               win_subsystem: exe['win_subsystem'])
     }
 
     if 'CONFIG_TRACE_SYSTEMTAP' in config_host
diff --git a/plugins/meson.build b/plugins/meson.build
index e77723010e..d58efc980e 100644
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -1,7 +1,7 @@
 if 'CONFIG_HAS_LD_DYNAMIC_LIST' in config_host
-  plugin_ldflags = ['-Wl,--dynamic-list=' + (meson.build_root() / 'qemu-plugins-ld.symbols')]
+  plugin_ldflags = ['-Wl,--dynamic-list=' + (meson.project_build_root() / 'qemu-plugins-ld.symbols')]
 elif 'CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST' in config_host
-  plugin_ldflags = ['-Wl,-exported_symbols_list,' + (meson.build_root() / 'qemu-plugins-ld64.symbols')]
+  plugin_ldflags = ['-Wl,-exported_symbols_list,' + (meson.project_build_root() / 'qemu-plugins-ld64.symbols')]
 else
   plugin_ldflags = []
 endif
diff --git a/tests/meson.build b/tests/meson.build
index 1fa068f27b..0b8c3c6f32 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -113,7 +113,7 @@ tests = {
   'test-keyval': [testqapi],
   'test-logging': [],
   'test-uuid': [],
-  'ptimer-test': ['ptimer-test-stubs.c', meson.source_root() / 'hw/core/ptimer.c'],
+  'ptimer-test': ['ptimer-test-stubs.c', meson.project_source_root() / 'hw/core/ptimer.c'],
   'test-qapi-util': [],
 }
 
diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build
index 304ef939bd..26588396d2 100644
--- a/tests/qapi-schema/meson.build
+++ b/tests/qapi-schema/meson.build
@@ -1,5 +1,5 @@
 test_env = environment()
-test_env.set('PYTHONPATH', meson.source_root() / 'scripts')
+test_env.set('PYTHONPATH', meson.project_source_root() / 'scripts')
 test_env.set('PYTHONIOENCODING', 'utf-8')
 
 schemas = [
@@ -240,7 +240,7 @@ if build_docs
                                # clutter up the build dir with the cache.
                                command: [SPHINX_ARGS,
                                          '-b', 'text', '-E',
-                                         '-c', meson.source_root() / 'docs',
+                                         '-c', meson.project_source_root() / 'docs',
                                          '-D', 'master_doc=doc-good',
                                          meson.current_source_dir(),
                                          meson.current_build_dir()])
diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
index 6a67c538be..450af3e51c 100644
--- a/tests/qtest/meson.build
+++ b/tests/qtest/meson.build
@@ -237,7 +237,7 @@ foreach dir : target_dirs
     qtest_env.set('QTEST_QEMU_IMG', './qemu-img')
     test_deps += [qemu_img]
   endif
-  qtest_env.set('G_TEST_DBUS_DAEMON', meson.source_root() / 'tests/dbus-vmstate-daemon.sh')
+  qtest_env.set('G_TEST_DBUS_DAEMON', meson.project_source_root() / 'tests/dbus-vmstate-daemon.sh')
   qtest_env.set('QTEST_QEMU_BINARY', './qemu-system-' + target_base)
   
   foreach test : target_qtests
diff --git a/trace/meson.build b/trace/meson.build
index b19309b327..012d0dbceb 100644
--- a/trace/meson.build
+++ b/trace/meson.build
@@ -2,7 +2,7 @@ specific_ss.add(files('control-target.c'))
 
 trace_events_files = []
 foreach dir : [ '.' ] + trace_events_subdirs
-  trace_events_file = meson.source_root() / dir / 'trace-events'
+  trace_events_file = meson.project_source_root() / dir / 'trace-events'
   trace_events_files += [ trace_events_file ]
   group_name = dir == '.' ? 'root' : dir.underscorify()
   group = '--group=' + group_name
@@ -68,7 +68,7 @@ foreach d : [
 ]
   gen = custom_target(d[0],
                 output: d[0],
-                input: meson.source_root() / 'trace-events',
+                input: meson.project_source_root() / 'trace-events',
                 command: [ tracetool, '--group=root', '--format=@0@'.format(d[1]), '@INPUT@' ],
                 capture: true)
   specific_ss.add(when: 'CONFIG_TCG', if_true: gen)
-- 
2.29.2




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

* [PATCH 4/7] meson: fix detection of curses with pkgconfig
  2020-12-16 16:19 [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0 Paolo Bonzini
                   ` (2 preceding siblings ...)
  2020-12-16 16:20 ` [PATCH 3/7] meson: switch minimum meson version " Paolo Bonzini
@ 2020-12-16 16:20 ` Paolo Bonzini
  2020-12-16 16:54   ` Marc-André Lureau
  2020-12-16 16:20 ` [PATCH 5/7] meson: use pkg-config method for libudev Paolo Bonzini
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 15+ messages in thread
From: Paolo Bonzini @ 2020-12-16 16:20 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 meson.build | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/meson.build b/meson.build
index 39fc9b7143..ab622ae8bd 100644
--- a/meson.build
+++ b/meson.build
@@ -500,16 +500,16 @@ if have_system and not get_option('curses').disabled()
     endif
   endforeach
   msg = get_option('curses').enabled() ? 'curses library not found' : ''
+  curses_compile_args = ['-DNCURSES_WIDECHAR']
   if curses.found()
-    if cc.links(curses_test, dependencies: [curses])
-      curses = declare_dependency(compile_args: '-DNCURSES_WIDECHAR', dependencies: [curses])
+    if cc.links(curses_test, args: curses_compile_args, dependencies: [curses])
+      curses = declare_dependency(compile_args: curses_compile_args, dependencies: [curses])
     else
       msg = 'curses package not usable'
       curses = not_found
     endif
   endif
   if not curses.found()
-    curses_compile_args = ['-DNCURSES_WIDECHAR']
     has_curses_h = cc.has_header('curses.h', args: curses_compile_args)
     if targetos != 'windows' and not has_curses_h
       message('Trying with /usr/include/ncursesw')
-- 
2.29.2




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

* [PATCH 5/7] meson: use pkg-config method for libudev
  2020-12-16 16:19 [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0 Paolo Bonzini
                   ` (3 preceding siblings ...)
  2020-12-16 16:20 ` [PATCH 4/7] meson: fix detection of curses with pkgconfig Paolo Bonzini
@ 2020-12-16 16:20 ` Paolo Bonzini
  2020-12-16 16:56   ` Marc-André Lureau
  2020-12-16 16:20 ` [PATCH 6/7] meson: use dependency to gate block modules Paolo Bonzini
  2020-12-16 16:20 ` [PATCH 7/7] meson: cleanup Kconfig.host handling Paolo Bonzini
  6 siblings, 1 reply; 15+ messages in thread
From: Paolo Bonzini @ 2020-12-16 16:20 UTC (permalink / raw)
  To: qemu-devel

Do not bother asking CMake, this is a pkg-config dependency.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 meson.build | 1 +
 1 file changed, 1 insertion(+)

diff --git a/meson.build b/meson.build
index ab622ae8bd..0b36fb38f1 100644
--- a/meson.build
+++ b/meson.build
@@ -399,6 +399,7 @@ endif
 libudev = not_found
 if targetos == 'linux' and (have_system or have_tools)
   libudev = dependency('libudev',
+                       method: 'pkg-config',
                        required: get_option('libudev'),
                        static: enable_static)
 endif
-- 
2.29.2




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

* [PATCH 6/7] meson: use dependency to gate block modules
  2020-12-16 16:19 [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0 Paolo Bonzini
                   ` (4 preceding siblings ...)
  2020-12-16 16:20 ` [PATCH 5/7] meson: use pkg-config method for libudev Paolo Bonzini
@ 2020-12-16 16:20 ` Paolo Bonzini
  2020-12-16 16:57   ` Marc-André Lureau
  2020-12-16 16:20 ` [PATCH 7/7] meson: cleanup Kconfig.host handling Paolo Bonzini
  6 siblings, 1 reply; 15+ messages in thread
From: Paolo Bonzini @ 2020-12-16 16:20 UTC (permalink / raw)
  To: qemu-devel

This will allow converting the dependencies to meson options one by one,
because moving the tests to meson.build will get rid of the symbols
in config-host.mak.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 block/meson.build | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/block/meson.build b/block/meson.build
index 5dcc1e5cce..b02cb14aad 100644
--- a/block/meson.build
+++ b/block/meson.build
@@ -70,14 +70,14 @@ block_modules = {}
 
 modsrc = []
 foreach m : [
-  ['CONFIG_CURL', 'curl', [curl, glib], 'curl.c'],
-  ['CONFIG_GLUSTERFS', 'gluster', glusterfs, 'gluster.c'],
-  ['CONFIG_LIBISCSI', 'iscsi', libiscsi, 'iscsi.c'],
-  ['CONFIG_LIBNFS', 'nfs', libnfs, 'nfs.c'],
-  ['CONFIG_LIBSSH', 'ssh', libssh, 'ssh.c'],
-  ['CONFIG_RBD', 'rbd', rbd, 'rbd.c'],
+  [curl, 'curl', [curl, glib], 'curl.c'],
+  [glusterfs, 'gluster', glusterfs, 'gluster.c'],
+  [libiscsi, 'iscsi', libiscsi, 'iscsi.c'],
+  [libnfs, 'nfs', libnfs, 'nfs.c'],
+  [libssh, 'ssh', libssh, 'ssh.c'],
+  [rbd, 'rbd', rbd, 'rbd.c'],
 ]
-  if config_host.has_key(m[0])
+  if m[0].found()
     if enable_modules
       modsrc += files(m[3])
     endif
@@ -90,10 +90,10 @@ endforeach
 # those are not exactly regular block modules, so treat them apart
 if 'CONFIG_DMG' in config_host
   foreach m : [
-    ['CONFIG_LZFSE', 'dmg-lzfse', liblzfse, 'dmg-lzfse.c'],
-    ['CONFIG_BZIP2', 'dmg-bz2', [glib, libbzip2], 'dmg-bz2.c']
+    [liblzfse, 'dmg-lzfse', liblzfse, 'dmg-lzfse.c'],
+    [libbzip2, 'dmg-bz2', [glib, libbzip2], 'dmg-bz2.c']
   ]
-    if config_host.has_key(m[0])
+    if m[0].found()
       module_ss = ss.source_set()
       module_ss.add(when: m[2], if_true: files(m[3]))
       block_modules += {m[1] : module_ss}
-- 
2.29.2




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

* [PATCH 7/7] meson: cleanup Kconfig.host handling
  2020-12-16 16:19 [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0 Paolo Bonzini
                   ` (5 preceding siblings ...)
  2020-12-16 16:20 ` [PATCH 6/7] meson: use dependency to gate block modules Paolo Bonzini
@ 2020-12-16 16:20 ` Paolo Bonzini
  2020-12-16 17:18   ` Marc-André Lureau
  6 siblings, 1 reply; 15+ messages in thread
From: Paolo Bonzini @ 2020-12-16 16:20 UTC (permalink / raw)
  To: qemu-devel

Build the array of command line arguments coming from config_host
once for all targets.  Add all accelerators to accel/Kconfig so
that the command line arguments for accelerators can be computed
easily in the existing "foreach sym: accelerators" loop.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 accel/Kconfig          |  9 +++++++++
 docs/devel/kconfig.rst | 19 +++++++++----------
 meson.build            | 43 +++++++++++++++++-------------------------
 3 files changed, 35 insertions(+), 36 deletions(-)

diff --git a/accel/Kconfig b/accel/Kconfig
index 2ad94a3839..461104c771 100644
--- a/accel/Kconfig
+++ b/accel/Kconfig
@@ -1,3 +1,12 @@
+config WHPX
+    bool
+
+config HAX
+    bool
+
+config HVF
+    bool
+
 config TCG
     bool
 
diff --git a/docs/devel/kconfig.rst b/docs/devel/kconfig.rst
index 336ba0e8e5..cb2d7ffac0 100644
--- a/docs/devel/kconfig.rst
+++ b/docs/devel/kconfig.rst
@@ -288,21 +288,20 @@ they will include all these symbols and some help text on what they do.
 ----------------
 
 In some special cases, a configurable element depends on host features
-that are detected by QEMU's configure script; for example some devices
-depend on the availability of KVM or on the presence of a library on
-the host.
+that are detected by QEMU's configure or ``meson.build`` scripts; for
+example some devices depend on the availability of KVM or on the presence
+of a library on the host.
 
 These symbols should be listed in ``Kconfig.host`` like this::
 
-    config KVM
+    config TPM
       bool
 
-and also listed as follows in the top-level Makefile's ``MINIKCONF_ARGS``
+and also listed as follows in the top-level meson.build's host_kconfig
 variable::
 
-    MINIKCONF_ARGS = \
-      $@ $*/config-devices.mak.d $< $(MINIKCONF_INPUTS) \
-      CONFIG_KVM=$(CONFIG_KVM) \
-      CONFIG_SPICE=$(CONFIG_SPICE) \
-      CONFIG_TPM=$(CONFIG_TPM) \
+    host_kconfig = \
+      ('CONFIG_TPM' in config_host ? ['CONFIG_TPM=y'] : []) + \
+      ('CONFIG_SPICE' in config_host ? ['CONFIG_SPICE=y'] : []) + \
+      ('CONFIG_IVSHMEM' in config_host ? ['CONFIG_IVSHMEM=y'] : []) + \
       ...
diff --git a/meson.build b/meson.build
index 0b36fb38f1..bb198f792a 100644
--- a/meson.build
+++ b/meson.build
@@ -954,21 +954,19 @@ if link_language == 'cpp'
   }
 endif
 
-kconfig_external_symbols = [
-  'CONFIG_KVM',
-  'CONFIG_XEN',
-  'CONFIG_TPM',
-  'CONFIG_SPICE',
-  'CONFIG_IVSHMEM',
-  'CONFIG_OPENGL',
-  'CONFIG_X11',
-  'CONFIG_VHOST_USER',
-  'CONFIG_VHOST_VDPA',
-  'CONFIG_VHOST_KERNEL',
-  'CONFIG_VIRTFS',
-  'CONFIG_LINUX',
-  'CONFIG_PVRDMA',
-]
+host_kconfig = \
+  ('CONFIG_TPM' in config_host ? ['CONFIG_TPM=y'] : []) + \
+  ('CONFIG_SPICE' in config_host ? ['CONFIG_SPICE=y'] : []) + \
+  ('CONFIG_IVSHMEM' in config_host ? ['CONFIG_IVSHMEM=y'] : []) + \
+  ('CONFIG_OPENGL' in config_host ? ['CONFIG_OPENGL=y'] : []) + \
+  ('CONFIG_X11' in config_host ? ['CONFIG_X11=y'] : []) + \
+  ('CONFIG_VHOST_USER' in config_host ? ['CONFIG_VHOST_USER=y'] : []) + \
+  ('CONFIG_VHOST_VDPA' in config_host ? ['CONFIG_VHOST_VDPA=y'] : []) + \
+  ('CONFIG_VHOST_KERNEL' in config_host ? ['CONFIG_VHOST_KERNEL=y'] : []) + \
+  ('CONFIG_VIRTFS' in config_host ? ['CONFIG_VIRTFS=y'] : []) + \
+  ('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \
+  ('CONFIG_PVRDMA' in config_host ? ['CONFIG_PVRDMA=y'] : [])
+
 ignored = [ 'TARGET_XML_FILES', 'TARGET_ABI_DIR', 'TARGET_ARCH' ]
 
 default_targets = 'CONFIG_DEFAULT_TARGETS' in config_host
@@ -1003,7 +1001,7 @@ foreach target : target_dirs
     }
   endif
 
-  have_accel = false
+  accel_kconfig = []
   foreach sym: accelerators
     if sym == 'CONFIG_TCG' or target in accelerator_targets.get(sym, [])
       config_target += { sym: 'y' }
@@ -1011,10 +1009,10 @@ foreach target : target_dirs
       if sym == 'CONFIG_XEN' and have_xen_pci_passthrough
         config_target += { 'CONFIG_XEN_PCI_PASSTHROUGH': 'y' }
       endif
-      have_accel = true
+      accel_kconfig += [ sym + '=y' ]
     endif
   endforeach
-  if not have_accel
+  if accel_kconfig.length() == 0
     if default_targets
       continue
     endif
@@ -1068,13 +1066,6 @@ foreach target : target_dirs
                                                configuration: config_target_data)}
 
   if target.endswith('-softmmu')
-    base_kconfig = []
-    foreach sym : kconfig_external_symbols
-      if sym in config_target or sym in config_host
-        base_kconfig += '@0@=y'.format(sym)
-      endif
-    endforeach
-
     config_devices_mak = target + '-config-devices.mak'
     config_devices_mak = configure_file(
       input: ['default-configs/devices' / target + '.mak', 'Kconfig'],
@@ -1083,7 +1074,7 @@ foreach target : target_dirs
       capture: true,
       command: [minikconf, config_host['CONFIG_MINIKCONF_MODE'],
                 config_devices_mak, '@DEPFILE@', '@INPUT@',
-                base_kconfig])
+                host_kconfig, accel_kconfig])
 
     config_devices_data = configuration_data()
     config_devices = keyval.load(config_devices_mak)
-- 
2.29.2



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

* Re: [PATCH 2/7] meson: update submodule to 0.56.0
  2020-12-16 16:20 ` [PATCH 2/7] meson: update submodule to 0.56.0 Paolo Bonzini
@ 2020-12-16 16:52   ` Marc-André Lureau
  0 siblings, 0 replies; 15+ messages in thread
From: Marc-André Lureau @ 2020-12-16 16:52 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: QEMU

[-- Attachment #1: Type: text/plain, Size: 1213 bytes --]

On Wed, Dec 16, 2020 at 8:25 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  configure | 2 +-
>  meson     | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/configure b/configure
> index 6317964997..8d12b715e3 100755
> --- a/configure
> +++ b/configure
> @@ -1938,7 +1938,7 @@ python_version=$($python -c 'import sys;
> print("%d.%d.%d" % (sys.version_info[0]
>  python="$python -B"
>
>  if test -z "$meson"; then
> -    if test "$explicit_python" = no && has meson && version_ge "$(meson
> --version)" 0.55.3; then
> +    if test "$explicit_python" = no && has meson && version_ge "$(meson
> --version)" 0.56.0; then
>          meson=meson
>      elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
>          meson=git
> diff --git a/meson b/meson
> index 776acd2a80..f16d31607e 160000
> --- a/meson
> +++ b/meson
> @@ -1 +1 @@
> -Subproject commit 776acd2a805c9b42b4f0375150977df42130317f
> +Subproject commit f16d31607eb3cd0f281758bd0944e206ef6be387
> --
> 2.29.2
>
>
>
>

-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 2090 bytes --]

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

* Re: [PATCH 3/7] meson: switch minimum meson version to 0.56.0
  2020-12-16 16:20 ` [PATCH 3/7] meson: switch minimum meson version " Paolo Bonzini
@ 2020-12-16 16:53   ` Marc-André Lureau
  0 siblings, 0 replies; 15+ messages in thread
From: Marc-André Lureau @ 2020-12-16 16:53 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: QEMU

[-- Attachment #1: Type: text/plain, Size: 12713 bytes --]

On Wed, Dec 16, 2020 at 8:24 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Meson 0.56.0 does not need b_staticpic=$pie anymore, and has
> stabilized the keyval module.  Remove the workaround and use a few
> replacements for features deprecated in that release cycle.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  configure                     |  5 ----
>  docs/meson.build              | 12 ++++----
>  meson.build                   | 54 ++++++++++++++++-------------------
>  plugins/meson.build           |  4 +--
>  tests/meson.build             |  2 +-
>  tests/qapi-schema/meson.build |  4 +--
>  tests/qtest/meson.build       |  2 +-
>  trace/meson.build             |  4 +--
>  8 files changed, 39 insertions(+), 48 deletions(-)
>
> diff --git a/configure b/configure
> index 8d12b715e3..708cf365f0 100755
> --- a/configure
> +++ b/configure
> @@ -6965,10 +6965,6 @@ fi
>  mv $cross config-meson.cross
>
>  rm -rf meson-private meson-info meson-logs
> -unset staticpic
> -if ! version_ge "$($meson --version)" 0.56.0; then
> -  staticpic=$(if test "$pie" = yes; then echo true; else echo false; fi)
> -fi
>  NINJA=$ninja $meson setup \
>          --prefix "$prefix" \
>          --libdir "$libdir" \
> @@ -6988,7 +6984,6 @@ NINJA=$ninja $meson setup \
>          -Dwerror=$(if test "$werror" = yes; then echo true; else echo
> false; fi) \
>          -Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo
> false; fi) \
>          -Db_pie=$(if test "$pie" = yes; then echo true; else echo false;
> fi) \
> -        ${staticpic:+-Db_staticpic=$staticpic} \
>          -Db_coverage=$(if test "$gcov" = yes; then echo true; else echo
> false; fi) \
>          -Db_lto=$lto -Dcfi=$cfi -Dcfi_debug=$cfi_debug \
>          -Dmalloc=$malloc -Dmalloc_trim=$malloc_trim -Dsparse=$sparse \
> diff --git a/docs/meson.build b/docs/meson.build
> index bb8fe4c9e4..4e88ed7516 100644
> --- a/docs/meson.build
> +++ b/docs/meson.build
> @@ -38,12 +38,12 @@ endif
>  if build_docs
>    SPHINX_ARGS += ['-Dversion=' + meson.project_version(), '-Drelease=' +
> config_host['PKGVERSION']]
>
> -  sphinx_extn_depends = [ meson.source_root() / 'docs/sphinx/depfile.py',
> -                          meson.source_root() / 'docs/sphinx/hxtool.py',
> -                          meson.source_root() /
> 'docs/sphinx/kerneldoc.py',
> -                          meson.source_root() /
> 'docs/sphinx/kernellog.py',
> -                          meson.source_root() / 'docs/sphinx/qapidoc.py',
> -                          meson.source_root() /
> 'docs/sphinx/qmp_lexer.py',
> +  sphinx_extn_depends = [ meson.current_source_dir() /
> 'sphinx/depfile.py',
> +                          meson.current_source_dir() / 'sphinx/hxtool.py',
> +                          meson.current_source_dir() /
> 'sphinx/kerneldoc.py',
> +                          meson.current_source_dir() /
> 'sphinx/kernellog.py',
> +                          meson.current_source_dir() /
> 'sphinx/qapidoc.py',
> +                          meson.current_source_dir() /
> 'sphinx/qmp_lexer.py',
>                            qapi_gen_depends ]
>
>    configure_file(output: 'index.html',
> diff --git a/meson.build b/meson.build
> index 77ac9ec01b..39fc9b7143 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1,14 +1,10 @@
> -project('qemu', ['c'], meson_version: '>=0.55.0',
> -        default_options: ['warning_level=1', 'c_std=gnu99',
> 'cpp_std=gnu++11', 'b_colorout=auto'] +
> -                         (meson.version().version_compare('>=0.56.0') ? [
> 'b_staticpic=false' ] : []),
> -        version: run_command('head', meson.source_root() /
> 'VERSION').stdout().strip())
> +project('qemu', ['c'], meson_version: '>=0.56.0',
> +        default_options: ['warning_level=1', 'c_std=gnu99',
> 'cpp_std=gnu++11', 'b_colorout=auto',
> +                          'b_staticpic=false'],
> +        version: run_command('head', meson.project_source_root() /
> 'VERSION').stdout().strip())
>
>  not_found = dependency('', required: false)
> -if meson.version().version_compare('>=0.56.0')
> -  keyval = import('keyval')
> -else
> -  keyval = import('unstable-keyval')
> -endif
> +keyval = import('keyval')
>  ss = import('sourceset')
>  fs = import('fs')
>
> @@ -1372,21 +1368,21 @@ genh += configure_file(output: 'config-host.h',
> configuration: config_host_data)
>  hxtool = find_program('scripts/hxtool')
>  shaderinclude = find_program('scripts/shaderinclude.pl')
>  qapi_gen = find_program('scripts/qapi-gen.py')
> -qapi_gen_depends = [ meson.source_root() / 'scripts/qapi/__init__.py',
> -                     meson.source_root() / 'scripts/qapi/commands.py',
> -                     meson.source_root() / 'scripts/qapi/common.py',
> -                     meson.source_root() / 'scripts/qapi/error.py',
> -                     meson.source_root() / 'scripts/qapi/events.py',
> -                     meson.source_root() / 'scripts/qapi/expr.py',
> -                     meson.source_root() / 'scripts/qapi/gen.py',
> -                     meson.source_root() / 'scripts/qapi/introspect.py',
> -                     meson.source_root() / 'scripts/qapi/parser.py',
> -                     meson.source_root() / 'scripts/qapi/schema.py',
> -                     meson.source_root() / 'scripts/qapi/source.py',
> -                     meson.source_root() / 'scripts/qapi/types.py',
> -                     meson.source_root() / 'scripts/qapi/visit.py',
> -                     meson.source_root() / 'scripts/qapi/common.py',
> -                     meson.source_root() / 'scripts/qapi-gen.py'
> +qapi_gen_depends = [ meson.current_source_dir() /
> 'scripts/qapi/__init__.py',
> +                     meson.current_source_dir() /
> 'scripts/qapi/commands.py',
> +                     meson.current_source_dir() /
> 'scripts/qapi/common.py',
> +                     meson.current_source_dir() / 'scripts/qapi/error.py',
> +                     meson.current_source_dir() /
> 'scripts/qapi/events.py',
> +                     meson.current_source_dir() / 'scripts/qapi/expr.py',
> +                     meson.current_source_dir() / 'scripts/qapi/gen.py',
> +                     meson.current_source_dir() /
> 'scripts/qapi/introspect.py',
> +                     meson.current_source_dir() /
> 'scripts/qapi/parser.py',
> +                     meson.current_source_dir() /
> 'scripts/qapi/schema.py',
> +                     meson.current_source_dir() /
> 'scripts/qapi/source.py',
> +                     meson.current_source_dir() / 'scripts/qapi/types.py',
> +                     meson.current_source_dir() / 'scripts/qapi/visit.py',
> +                     meson.current_source_dir() /
> 'scripts/qapi/common.py',
> +                     meson.current_source_dir() / 'scripts/qapi-gen.py'
>  ]
>
>  tracetool = [
> @@ -1894,14 +1890,14 @@ foreach target : target_dirs
>    if target.endswith('-softmmu')
>      execs = [{
>        'name': 'qemu-system-' + target_name,
> -      'gui': false,
> +      'win_subsystem': 'console',
>        'sources': files('softmmu/main.c'),
>        'dependencies': []
>      }]
>      if targetos == 'windows' and (sdl.found() or gtk.found())
>        execs += [{
>          'name': 'qemu-system-' + target_name + 'w',
> -        'gui': true,
> +        'win_subsystem': 'windows',
>          'sources': files('softmmu/main.c'),
>          'dependencies': []
>        }]
> @@ -1910,7 +1906,7 @@ foreach target : target_dirs
>        specific_fuzz = specific_fuzz_ss.apply(config_target, strict: false)
>        execs += [{
>          'name': 'qemu-fuzz-' + target_name,
> -        'gui': false,
> +        'win_subsystem': 'console',
>          'sources': specific_fuzz.sources(),
>          'dependencies': specific_fuzz.dependencies(),
>        }]
> @@ -1918,7 +1914,7 @@ foreach target : target_dirs
>    else
>      execs = [{
>        'name': 'qemu-' + target_name,
> -      'gui': false,
> +      'win_subsystem': 'console',
>        'sources': [],
>        'dependencies': []
>      }]
> @@ -1933,7 +1929,7 @@ foreach target : target_dirs
>                 link_language: link_language,
>                 link_depends: [block_syms, qemu_syms] +
> exe.get('link_depends', []),
>                 link_args: link_args,
> -               gui_app: exe['gui'])
> +               win_subsystem: exe['win_subsystem'])
>      }
>
>      if 'CONFIG_TRACE_SYSTEMTAP' in config_host
> diff --git a/plugins/meson.build b/plugins/meson.build
> index e77723010e..d58efc980e 100644
> --- a/plugins/meson.build
> +++ b/plugins/meson.build
> @@ -1,7 +1,7 @@
>  if 'CONFIG_HAS_LD_DYNAMIC_LIST' in config_host
> -  plugin_ldflags = ['-Wl,--dynamic-list=' + (meson.build_root() /
> 'qemu-plugins-ld.symbols')]
> +  plugin_ldflags = ['-Wl,--dynamic-list=' + (meson.project_build_root() /
> 'qemu-plugins-ld.symbols')]
>  elif 'CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST' in config_host
> -  plugin_ldflags = ['-Wl,-exported_symbols_list,' + (meson.build_root() /
> 'qemu-plugins-ld64.symbols')]
> +  plugin_ldflags = ['-Wl,-exported_symbols_list,' +
> (meson.project_build_root() / 'qemu-plugins-ld64.symbols')]
>  else
>    plugin_ldflags = []
>  endif
> diff --git a/tests/meson.build b/tests/meson.build
> index 1fa068f27b..0b8c3c6f32 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -113,7 +113,7 @@ tests = {
>    'test-keyval': [testqapi],
>    'test-logging': [],
>    'test-uuid': [],
> -  'ptimer-test': ['ptimer-test-stubs.c', meson.source_root() /
> 'hw/core/ptimer.c'],
> +  'ptimer-test': ['ptimer-test-stubs.c', meson.project_source_root() /
> 'hw/core/ptimer.c'],
>    'test-qapi-util': [],
>  }
>
> diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build
> index 304ef939bd..26588396d2 100644
> --- a/tests/qapi-schema/meson.build
> +++ b/tests/qapi-schema/meson.build
> @@ -1,5 +1,5 @@
>  test_env = environment()
> -test_env.set('PYTHONPATH', meson.source_root() / 'scripts')
> +test_env.set('PYTHONPATH', meson.project_source_root() / 'scripts')
>  test_env.set('PYTHONIOENCODING', 'utf-8')
>
>  schemas = [
> @@ -240,7 +240,7 @@ if build_docs
>                                 # clutter up the build dir with the cache.
>                                 command: [SPHINX_ARGS,
>                                           '-b', 'text', '-E',
> -                                         '-c', meson.source_root() /
> 'docs',
> +                                         '-c',
> meson.project_source_root() / 'docs',
>                                           '-D', 'master_doc=doc-good',
>                                           meson.current_source_dir(),
>                                           meson.current_build_dir()])
> diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
> index 6a67c538be..450af3e51c 100644
> --- a/tests/qtest/meson.build
> +++ b/tests/qtest/meson.build
> @@ -237,7 +237,7 @@ foreach dir : target_dirs
>      qtest_env.set('QTEST_QEMU_IMG', './qemu-img')
>      test_deps += [qemu_img]
>    endif
> -  qtest_env.set('G_TEST_DBUS_DAEMON', meson.source_root() /
> 'tests/dbus-vmstate-daemon.sh')
> +  qtest_env.set('G_TEST_DBUS_DAEMON', meson.project_source_root() /
> 'tests/dbus-vmstate-daemon.sh')
>    qtest_env.set('QTEST_QEMU_BINARY', './qemu-system-' + target_base)
>
>    foreach test : target_qtests
> diff --git a/trace/meson.build b/trace/meson.build
> index b19309b327..012d0dbceb 100644
> --- a/trace/meson.build
> +++ b/trace/meson.build
> @@ -2,7 +2,7 @@ specific_ss.add(files('control-target.c'))
>
>  trace_events_files = []
>  foreach dir : [ '.' ] + trace_events_subdirs
> -  trace_events_file = meson.source_root() / dir / 'trace-events'
> +  trace_events_file = meson.project_source_root() / dir / 'trace-events'
>    trace_events_files += [ trace_events_file ]
>    group_name = dir == '.' ? 'root' : dir.underscorify()
>    group = '--group=' + group_name
> @@ -68,7 +68,7 @@ foreach d : [
>  ]
>    gen = custom_target(d[0],
>                  output: d[0],
> -                input: meson.source_root() / 'trace-events',
> +                input: meson.project_source_root() / 'trace-events',
>                  command: [ tracetool, '--group=root', '--format=@0@'.format(d[1]),
> '@INPUT@' ],
>                  capture: true)
>    specific_ss.add(when: 'CONFIG_TCG', if_true: gen)
> --
> 2.29.2
>
>
>
>

-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 16358 bytes --]

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

* Re: [PATCH 4/7] meson: fix detection of curses with pkgconfig
  2020-12-16 16:20 ` [PATCH 4/7] meson: fix detection of curses with pkgconfig Paolo Bonzini
@ 2020-12-16 16:54   ` Marc-André Lureau
  0 siblings, 0 replies; 15+ messages in thread
From: Marc-André Lureau @ 2020-12-16 16:54 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: QEMU

[-- Attachment #1: Type: text/plain, Size: 1456 bytes --]

On Wed, Dec 16, 2020 at 8:22 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  meson.build | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 39fc9b7143..ab622ae8bd 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -500,16 +500,16 @@ if have_system and not
> get_option('curses').disabled()
>      endif
>    endforeach
>    msg = get_option('curses').enabled() ? 'curses library not found' : ''
> +  curses_compile_args = ['-DNCURSES_WIDECHAR']
>    if curses.found()
> -    if cc.links(curses_test, dependencies: [curses])
> -      curses = declare_dependency(compile_args: '-DNCURSES_WIDECHAR',
> dependencies: [curses])
> +    if cc.links(curses_test, args: curses_compile_args, dependencies:
> [curses])
> +      curses = declare_dependency(compile_args: curses_compile_args,
> dependencies: [curses])
>      else
>        msg = 'curses package not usable'
>        curses = not_found
>      endif
>    endif
>    if not curses.found()
> -    curses_compile_args = ['-DNCURSES_WIDECHAR']
>      has_curses_h = cc.has_header('curses.h', args: curses_compile_args)
>      if targetos != 'windows' and not has_curses_h
>        message('Trying with /usr/include/ncursesw')
> --
> 2.29.2
>
>
>
>

-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 2318 bytes --]

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

* Re: [PATCH 5/7] meson: use pkg-config method for libudev
  2020-12-16 16:20 ` [PATCH 5/7] meson: use pkg-config method for libudev Paolo Bonzini
@ 2020-12-16 16:56   ` Marc-André Lureau
  0 siblings, 0 replies; 15+ messages in thread
From: Marc-André Lureau @ 2020-12-16 16:56 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: QEMU

[-- Attachment #1: Type: text/plain, Size: 880 bytes --]

On Wed, Dec 16, 2020 at 8:28 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Do not bother asking CMake, this is a pkg-config dependency.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

What was the problem with the default behaviour? Do we need to set
pkg-config explicitly on all dependencies?

---
>  meson.build | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/meson.build b/meson.build
> index ab622ae8bd..0b36fb38f1 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -399,6 +399,7 @@ endif
>  libudev = not_found
>  if targetos == 'linux' and (have_system or have_tools)
>    libudev = dependency('libudev',
> +                       method: 'pkg-config',
>                         required: get_option('libudev'),
>                         static: enable_static)
>  endif
> --
> 2.29.2
>
>
>
>

-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 1612 bytes --]

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

* Re: [PATCH 6/7] meson: use dependency to gate block modules
  2020-12-16 16:20 ` [PATCH 6/7] meson: use dependency to gate block modules Paolo Bonzini
@ 2020-12-16 16:57   ` Marc-André Lureau
  0 siblings, 0 replies; 15+ messages in thread
From: Marc-André Lureau @ 2020-12-16 16:57 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: QEMU

[-- Attachment #1: Type: text/plain, Size: 2100 bytes --]

On Wed, Dec 16, 2020 at 8:26 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> This will allow converting the dependencies to meson options one by one,
> because moving the tests to meson.build will get rid of the symbols
> in config-host.mak.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  block/meson.build | 20 ++++++++++----------
>  1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/block/meson.build b/block/meson.build
> index 5dcc1e5cce..b02cb14aad 100644
> --- a/block/meson.build
> +++ b/block/meson.build
> @@ -70,14 +70,14 @@ block_modules = {}
>
>  modsrc = []
>  foreach m : [
> -  ['CONFIG_CURL', 'curl', [curl, glib], 'curl.c'],
> -  ['CONFIG_GLUSTERFS', 'gluster', glusterfs, 'gluster.c'],
> -  ['CONFIG_LIBISCSI', 'iscsi', libiscsi, 'iscsi.c'],
> -  ['CONFIG_LIBNFS', 'nfs', libnfs, 'nfs.c'],
> -  ['CONFIG_LIBSSH', 'ssh', libssh, 'ssh.c'],
> -  ['CONFIG_RBD', 'rbd', rbd, 'rbd.c'],
> +  [curl, 'curl', [curl, glib], 'curl.c'],
> +  [glusterfs, 'gluster', glusterfs, 'gluster.c'],
> +  [libiscsi, 'iscsi', libiscsi, 'iscsi.c'],
> +  [libnfs, 'nfs', libnfs, 'nfs.c'],
> +  [libssh, 'ssh', libssh, 'ssh.c'],
> +  [rbd, 'rbd', rbd, 'rbd.c'],
>  ]
> -  if config_host.has_key(m[0])
> +  if m[0].found()
>      if enable_modules
>        modsrc += files(m[3])
>      endif
> @@ -90,10 +90,10 @@ endforeach
>  # those are not exactly regular block modules, so treat them apart
>  if 'CONFIG_DMG' in config_host
>    foreach m : [
> -    ['CONFIG_LZFSE', 'dmg-lzfse', liblzfse, 'dmg-lzfse.c'],
> -    ['CONFIG_BZIP2', 'dmg-bz2', [glib, libbzip2], 'dmg-bz2.c']
> +    [liblzfse, 'dmg-lzfse', liblzfse, 'dmg-lzfse.c'],
> +    [libbzip2, 'dmg-bz2', [glib, libbzip2], 'dmg-bz2.c']
>    ]
> -    if config_host.has_key(m[0])
> +    if m[0].found()
>        module_ss = ss.source_set()
>        module_ss.add(when: m[2], if_true: files(m[3]))
>        block_modules += {m[1] : module_ss}
> --
> 2.29.2
>
>
>
>

-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 3263 bytes --]

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

* Re: [PATCH 7/7] meson: cleanup Kconfig.host handling
  2020-12-16 16:20 ` [PATCH 7/7] meson: cleanup Kconfig.host handling Paolo Bonzini
@ 2020-12-16 17:18   ` Marc-André Lureau
  0 siblings, 0 replies; 15+ messages in thread
From: Marc-André Lureau @ 2020-12-16 17:18 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: QEMU

[-- Attachment #1: Type: text/plain, Size: 5693 bytes --]

Hi

On Wed, Dec 16, 2020 at 8:26 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Build the array of command line arguments coming from config_host
> once for all targets.  Add all accelerators to accel/Kconfig so
> that the command line arguments for accelerators can be computed
> easily in the existing "foreach sym: accelerators" loop.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

nice cleanup
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  accel/Kconfig          |  9 +++++++++
>  docs/devel/kconfig.rst | 19 +++++++++----------
>  meson.build            | 43 +++++++++++++++++-------------------------
>  3 files changed, 35 insertions(+), 36 deletions(-)
>
> diff --git a/accel/Kconfig b/accel/Kconfig
> index 2ad94a3839..461104c771 100644
> --- a/accel/Kconfig
> +++ b/accel/Kconfig
> @@ -1,3 +1,12 @@
> +config WHPX
> +    bool
> +
> +config HAX
> +    bool
> +
> +config HVF
> +    bool
> +
>  config TCG
>      bool
>
> diff --git a/docs/devel/kconfig.rst b/docs/devel/kconfig.rst
> index 336ba0e8e5..cb2d7ffac0 100644
> --- a/docs/devel/kconfig.rst
> +++ b/docs/devel/kconfig.rst
> @@ -288,21 +288,20 @@ they will include all these symbols and some help
> text on what they do.
>  ----------------
>
>  In some special cases, a configurable element depends on host features
> -that are detected by QEMU's configure script; for example some devices
> -depend on the availability of KVM or on the presence of a library on
> -the host.
> +that are detected by QEMU's configure or ``meson.build`` scripts; for
> +example some devices depend on the availability of KVM or on the presence
> +of a library on the host.
>
>  These symbols should be listed in ``Kconfig.host`` like this::
>
> -    config KVM
> +    config TPM
>        bool
>
> -and also listed as follows in the top-level Makefile's ``MINIKCONF_ARGS``
> +and also listed as follows in the top-level meson.build's host_kconfig
>  variable::
>
> -    MINIKCONF_ARGS = \
> -      $@ $*/config-devices.mak.d $< $(MINIKCONF_INPUTS) \
> -      CONFIG_KVM=$(CONFIG_KVM) \
> -      CONFIG_SPICE=$(CONFIG_SPICE) \
> -      CONFIG_TPM=$(CONFIG_TPM) \
> +    host_kconfig = \
> +      ('CONFIG_TPM' in config_host ? ['CONFIG_TPM=y'] : []) + \
> +      ('CONFIG_SPICE' in config_host ? ['CONFIG_SPICE=y'] : []) + \
> +      ('CONFIG_IVSHMEM' in config_host ? ['CONFIG_IVSHMEM=y'] : []) + \
>        ...
> diff --git a/meson.build b/meson.build
> index 0b36fb38f1..bb198f792a 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -954,21 +954,19 @@ if link_language == 'cpp'
>    }
>  endif
>
> -kconfig_external_symbols = [
> -  'CONFIG_KVM',
> -  'CONFIG_XEN',
> -  'CONFIG_TPM',
> -  'CONFIG_SPICE',
> -  'CONFIG_IVSHMEM',
> -  'CONFIG_OPENGL',
> -  'CONFIG_X11',
> -  'CONFIG_VHOST_USER',
> -  'CONFIG_VHOST_VDPA',
> -  'CONFIG_VHOST_KERNEL',
> -  'CONFIG_VIRTFS',
> -  'CONFIG_LINUX',
> -  'CONFIG_PVRDMA',
> -]
> +host_kconfig = \
> +  ('CONFIG_TPM' in config_host ? ['CONFIG_TPM=y'] : []) + \
> +  ('CONFIG_SPICE' in config_host ? ['CONFIG_SPICE=y'] : []) + \
> +  ('CONFIG_IVSHMEM' in config_host ? ['CONFIG_IVSHMEM=y'] : []) + \
> +  ('CONFIG_OPENGL' in config_host ? ['CONFIG_OPENGL=y'] : []) + \
> +  ('CONFIG_X11' in config_host ? ['CONFIG_X11=y'] : []) + \
> +  ('CONFIG_VHOST_USER' in config_host ? ['CONFIG_VHOST_USER=y'] : []) + \
> +  ('CONFIG_VHOST_VDPA' in config_host ? ['CONFIG_VHOST_VDPA=y'] : []) + \
> +  ('CONFIG_VHOST_KERNEL' in config_host ? ['CONFIG_VHOST_KERNEL=y'] : [])
> + \
> +  ('CONFIG_VIRTFS' in config_host ? ['CONFIG_VIRTFS=y'] : []) + \
> +  ('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \
> +  ('CONFIG_PVRDMA' in config_host ? ['CONFIG_PVRDMA=y'] : [])
> +
>  ignored = [ 'TARGET_XML_FILES', 'TARGET_ABI_DIR', 'TARGET_ARCH' ]
>
>  default_targets = 'CONFIG_DEFAULT_TARGETS' in config_host
> @@ -1003,7 +1001,7 @@ foreach target : target_dirs
>      }
>    endif
>
> -  have_accel = false
> +  accel_kconfig = []
>    foreach sym: accelerators
>      if sym == 'CONFIG_TCG' or target in accelerator_targets.get(sym, [])
>        config_target += { sym: 'y' }
> @@ -1011,10 +1009,10 @@ foreach target : target_dirs
>        if sym == 'CONFIG_XEN' and have_xen_pci_passthrough
>          config_target += { 'CONFIG_XEN_PCI_PASSTHROUGH': 'y' }
>        endif
> -      have_accel = true
> +      accel_kconfig += [ sym + '=y' ]
>      endif
>    endforeach
> -  if not have_accel
> +  if accel_kconfig.length() == 0
>      if default_targets
>        continue
>      endif
> @@ -1068,13 +1066,6 @@ foreach target : target_dirs
>                                                 configuration:
> config_target_data)}
>
>    if target.endswith('-softmmu')
> -    base_kconfig = []
> -    foreach sym : kconfig_external_symbols
> -      if sym in config_target or sym in config_host
> -        base_kconfig += '@0@=y'.format(sym)
> -      endif
> -    endforeach
> -
>      config_devices_mak = target + '-config-devices.mak'
>      config_devices_mak = configure_file(
>        input: ['default-configs/devices' / target + '.mak', 'Kconfig'],
> @@ -1083,7 +1074,7 @@ foreach target : target_dirs
>        capture: true,
>        command: [minikconf, config_host['CONFIG_MINIKCONF_MODE'],
>                  config_devices_mak, '@DEPFILE@', '@INPUT@',
> -                base_kconfig])
> +                host_kconfig, accel_kconfig])
>
>      config_devices_data = configuration_data()
>      config_devices = keyval.load(config_devices_mak)
> --
> 2.29.2
>
>
>

-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 7434 bytes --]

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

end of thread, other threads:[~2020-12-16 17:35 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-12-16 16:19 [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0 Paolo Bonzini
2020-12-16 16:20 ` [PATCH 1/7] Makefile: add dummy target for build.ninja dependencies Paolo Bonzini
2020-12-16 16:20 ` [PATCH 2/7] meson: update submodule to 0.56.0 Paolo Bonzini
2020-12-16 16:52   ` Marc-André Lureau
2020-12-16 16:20 ` [PATCH 3/7] meson: switch minimum meson version " Paolo Bonzini
2020-12-16 16:53   ` Marc-André Lureau
2020-12-16 16:20 ` [PATCH 4/7] meson: fix detection of curses with pkgconfig Paolo Bonzini
2020-12-16 16:54   ` Marc-André Lureau
2020-12-16 16:20 ` [PATCH 5/7] meson: use pkg-config method for libudev Paolo Bonzini
2020-12-16 16:56   ` Marc-André Lureau
2020-12-16 16:20 ` [PATCH 6/7] meson: use dependency to gate block modules Paolo Bonzini
2020-12-16 16:57   ` Marc-André Lureau
2020-12-16 16:20 ` [PATCH 7/7] meson: cleanup Kconfig.host handling Paolo Bonzini
2020-12-16 17:18   ` Marc-André Lureau
  -- strict thread matches above, loose matches on Subject: below --
2020-12-16 15:02 [PATCH 0/7] First round of meson bugfixes and cleanups for 6.0 Paolo Bonzini
2020-12-16 15:02 ` [PATCH 1/7] Makefile: add dummy target for build.ninja dependencies Paolo Bonzini

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