All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

* [PATCH 6/7] meson: use dependency to gate block modules
  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

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

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 6/7] meson: use dependency to gate block modules Paolo Bonzini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.