1a5665051SPaolo Bonziniproject('qemu', ['c'], meson_version: '>=0.55.0', 2a5665051SPaolo Bonzini default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_lundef=false'], 3a5665051SPaolo Bonzini version: run_command('head', meson.source_root() / 'VERSION').stdout().strip()) 4a5665051SPaolo Bonzini 5a5665051SPaolo Bonzininot_found = dependency('', required: false) 6a5665051SPaolo Bonzinikeyval = import('unstable-keyval') 7a81df1b6SPaolo Bonziniss = import('sourceset') 8a81df1b6SPaolo Bonzini 9a81df1b6SPaolo Bonzinicc = meson.get_compiler('c') 10a5665051SPaolo Bonziniconfig_host = keyval.load(meson.current_build_dir() / 'config-host.mak') 11a5665051SPaolo Bonzini 12a5665051SPaolo Bonziniadd_project_arguments(config_host['QEMU_CFLAGS'].split(), 13a5665051SPaolo Bonzini native: false, language: ['c', 'objc']) 14a5665051SPaolo Bonziniadd_project_arguments(config_host['QEMU_CXXFLAGS'].split(), 15a5665051SPaolo Bonzini native: false, language: 'cpp') 16a5665051SPaolo Bonziniadd_project_link_arguments(config_host['QEMU_LDFLAGS'].split(), 17a5665051SPaolo Bonzini native: false, language: ['c', 'cpp', 'objc']) 18a5665051SPaolo Bonziniadd_project_arguments(config_host['QEMU_INCLUDES'].split(), 19a5665051SPaolo Bonzini language: ['c', 'cpp', 'objc']) 20a5665051SPaolo Bonzini 21fc929892SMarc-André Lureaupython = import('python').find_installation() 22fc929892SMarc-André Lureau 23fc929892SMarc-André Lureaulink_language = meson.get_external_property('link_language', 'cpp') 24fc929892SMarc-André Lureauif link_language == 'cpp' 25fc929892SMarc-André Lureau add_languages('cpp', required: true, native: false) 26fc929892SMarc-André Lureauendif 27a5665051SPaolo Bonziniif host_machine.system() == 'darwin' 28a5665051SPaolo Bonzini add_languages('objc', required: false, native: false) 29a5665051SPaolo Bonziniendif 30a5665051SPaolo Bonzini 31968b4db3SPaolo Bonziniif 'SPARSE_CFLAGS' in config_host 32968b4db3SPaolo Bonzini run_target('sparse', 33968b4db3SPaolo Bonzini command: [find_program('scripts/check_sparse.py'), 34968b4db3SPaolo Bonzini config_host['SPARSE_CFLAGS'].split(), 35968b4db3SPaolo Bonzini 'compile_commands.json']) 36968b4db3SPaolo Bonziniendif 37968b4db3SPaolo Bonzini 38a5665051SPaolo Bonziniconfigure_file(input: files('scripts/ninjatool.py'), 39a5665051SPaolo Bonzini output: 'ninjatool', 40a5665051SPaolo Bonzini configuration: config_host) 41f9332757SPaolo Bonzini 42f9332757SPaolo Bonzinisupported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux'] 43f9332757SPaolo Bonzinisupported_cpus = ['ppc', 'ppc64', 's390x', 'sparc64', 'riscv32', 'riscv64', 'x86', 'x86_64', 44f9332757SPaolo Bonzini 'arm', 'aarch64', 'mips', 'mips64', 'sparc', 'sparc64'] 45f9332757SPaolo Bonzini 46f9332757SPaolo Bonzinicpu = host_machine.cpu_family() 47f9332757SPaolo Bonzinitargetos = host_machine.system() 48f9332757SPaolo Bonzini 49a81df1b6SPaolo Bonzinim = cc.find_library('m', required: false) 50a81df1b6SPaolo Bonziniutil = cc.find_library('util', required: false) 51a81df1b6SPaolo Bonzinisocket = [] 5204c6f1e7SMarc-André Lureauversion_res = [] 53a81df1b6SPaolo Bonziniif targetos == 'windows' 54a81df1b6SPaolo Bonzini socket = cc.find_library('ws2_32') 5504c6f1e7SMarc-André Lureau 5604c6f1e7SMarc-André Lureau win = import('windows') 5704c6f1e7SMarc-André Lureau version_res = win.compile_resources('version.rc', 5804c6f1e7SMarc-André Lureau depend_files: files('pc-bios/qemu-nsis.ico'), 5904c6f1e7SMarc-André Lureau include_directories: include_directories('.')) 60a81df1b6SPaolo Bonziniendif 61a81df1b6SPaolo Bonziniglib = declare_dependency(compile_args: config_host['GLIB_CFLAGS'].split(), 62a81df1b6SPaolo Bonzini link_args: config_host['GLIB_LIBS'].split()) 63a81df1b6SPaolo Bonzinigio = not_found 64a81df1b6SPaolo Bonziniif 'CONFIG_GIO' in config_host 65a81df1b6SPaolo Bonzini gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(), 66a81df1b6SPaolo Bonzini link_args: config_host['GIO_LIBS'].split()) 67a81df1b6SPaolo Bonziniendif 68a81df1b6SPaolo Bonzinilttng = not_found 69a81df1b6SPaolo Bonziniif 'CONFIG_TRACE_UST' in config_host 70a81df1b6SPaolo Bonzini lttng = declare_dependency(link_args: config_host['LTTNG_UST_LIBS'].split()) 71a81df1b6SPaolo Bonziniendif 72a81df1b6SPaolo Bonziniurcubp = not_found 73a81df1b6SPaolo Bonziniif 'CONFIG_TRACE_UST' in config_host 74a81df1b6SPaolo Bonzini urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split()) 75a81df1b6SPaolo Bonziniendif 76a81df1b6SPaolo Bonzininettle = not_found 77a81df1b6SPaolo Bonziniif 'CONFIG_NETTLE' in config_host 78a81df1b6SPaolo Bonzini nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(), 79a81df1b6SPaolo Bonzini link_args: config_host['NETTLE_LIBS'].split()) 80a81df1b6SPaolo Bonziniendif 81a81df1b6SPaolo Bonzinignutls = not_found 82a81df1b6SPaolo Bonziniif 'CONFIG_GNUTLS' in config_host 83a81df1b6SPaolo Bonzini gnutls = declare_dependency(compile_args: config_host['GNUTLS_CFLAGS'].split(), 84a81df1b6SPaolo Bonzini link_args: config_host['GNUTLS_LIBS'].split()) 85a81df1b6SPaolo Bonziniendif 86*ea458960SMarc-André Lureaupixman = declare_dependency(compile_args: config_host['PIXMAN_CFLAGS'].split(), 87*ea458960SMarc-André Lureau link_args: config_host['PIXMAN_LIBS'].split()) 883f99cf57SPaolo Bonziniseccomp = not_found 893f99cf57SPaolo Bonziniif 'CONFIG_SECCOMP' in config_host 903f99cf57SPaolo Bonzini seccomp = declare_dependency(compile_args: config_host['SECCOMP_CFLAGS'].split(), 913f99cf57SPaolo Bonzini link_args: config_host['SECCOMP_LIBS'].split()) 923f99cf57SPaolo Bonziniendif 933f99cf57SPaolo Bonzinilibcap_ng = not_found 943f99cf57SPaolo Bonziniif 'CONFIG_LIBCAP_NG' in config_host 953f99cf57SPaolo Bonzini libcap_ng = declare_dependency(link_args: config_host['LIBCAP_NG_LIBS'].split()) 963f99cf57SPaolo Bonziniendif 9799650b62SPaolo Bonzinilibiscsi = not_found 9899650b62SPaolo Bonziniif 'CONFIG_LIBISCSI' in config_host 9999650b62SPaolo Bonzini libiscsi = declare_dependency(compile_args: config_host['LIBISCSI_CFLAGS'].split(), 10099650b62SPaolo Bonzini link_args: config_host['LIBISCSI_LIBS'].split()) 10199650b62SPaolo Bonziniendif 102*ea458960SMarc-André Lureaugbm = not_found 103*ea458960SMarc-André Lureauif 'CONFIG_GBM' in config_host 104*ea458960SMarc-André Lureau gbm = declare_dependency(compile_args: config_host['GBM_CFLAGS'].split(), 105*ea458960SMarc-André Lureau link_args: config_host['GBM_LIBS'].split()) 106*ea458960SMarc-André Lureauendif 107*ea458960SMarc-André Lureauvirgl = not_found 108*ea458960SMarc-André Lureauif 'CONFIG_VIRGL' in config_host 109*ea458960SMarc-André Lureau virgl = declare_dependency(compile_args: config_host['VIRGL_CFLAGS'].split(), 110*ea458960SMarc-André Lureau link_args: config_host['VIRGL_LIBS'].split()) 111*ea458960SMarc-André Lureauendif 112a81df1b6SPaolo Bonzini 113a81df1b6SPaolo Bonzinitarget_dirs = config_host['TARGET_DIRS'].split() 114a81df1b6SPaolo Bonzinihave_user = false 115a81df1b6SPaolo Bonzinihave_system = false 116a81df1b6SPaolo Bonziniforeach target : target_dirs 117a81df1b6SPaolo Bonzini have_user = have_user or target.endswith('-user') 118a81df1b6SPaolo Bonzini have_system = have_system or target.endswith('-softmmu') 119a81df1b6SPaolo Bonziniendforeach 120a81df1b6SPaolo Bonzinihave_tools = 'CONFIG_TOOLS' in config_host 121a81df1b6SPaolo Bonzinihave_block = have_system or have_tools 122a81df1b6SPaolo Bonzini 123a81df1b6SPaolo Bonzini# Generators 124a81df1b6SPaolo Bonzini 125a81df1b6SPaolo Bonziniqapi_gen = find_program('scripts/qapi-gen.py') 126a81df1b6SPaolo Bonziniqapi_gen_depends = [ meson.source_root() / 'scripts/qapi/__init__.py', 127a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/commands.py', 128a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/common.py', 129a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/doc.py', 130a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/error.py', 131a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/events.py', 132a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/expr.py', 133a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/gen.py', 134a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/introspect.py', 135a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/parser.py', 136a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/schema.py', 137a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/source.py', 138a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/types.py', 139a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/visit.py', 140a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/common.py', 141a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/doc.py', 142a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi-gen.py' 143a81df1b6SPaolo Bonzini] 144a81df1b6SPaolo Bonzini 145a81df1b6SPaolo Bonzinitracetool = [ 146a81df1b6SPaolo Bonzini python, files('scripts/tracetool.py'), 147a81df1b6SPaolo Bonzini '--backend=' + config_host['TRACE_BACKENDS'] 148a81df1b6SPaolo Bonzini] 149a81df1b6SPaolo Bonzini 150a81df1b6SPaolo Bonzini# Collect sourcesets. 151a81df1b6SPaolo Bonzini 152a81df1b6SPaolo Bonziniutil_ss = ss.source_set() 153a81df1b6SPaolo Bonzinistub_ss = ss.source_set() 154a81df1b6SPaolo Bonzinitrace_ss = ss.source_set() 155a81df1b6SPaolo Bonzini 156a81df1b6SPaolo Bonzini############### 157a81df1b6SPaolo Bonzini# Trace files # 158a81df1b6SPaolo Bonzini############### 159a81df1b6SPaolo Bonzini 160a81df1b6SPaolo Bonzinitrace_events_subdirs = [ 161a81df1b6SPaolo Bonzini 'accel/kvm', 162a81df1b6SPaolo Bonzini 'accel/tcg', 163a81df1b6SPaolo Bonzini 'crypto', 164a81df1b6SPaolo Bonzini 'monitor', 165a81df1b6SPaolo Bonzini] 166a81df1b6SPaolo Bonziniif have_user 167a81df1b6SPaolo Bonzini trace_events_subdirs += [ 'linux-user' ] 168a81df1b6SPaolo Bonziniendif 169a81df1b6SPaolo Bonziniif have_block 170a81df1b6SPaolo Bonzini trace_events_subdirs += [ 171a81df1b6SPaolo Bonzini 'authz', 172a81df1b6SPaolo Bonzini 'block', 173a81df1b6SPaolo Bonzini 'io', 174a81df1b6SPaolo Bonzini 'nbd', 175a81df1b6SPaolo Bonzini 'scsi', 176a81df1b6SPaolo Bonzini ] 177a81df1b6SPaolo Bonziniendif 178a81df1b6SPaolo Bonziniif have_system 179a81df1b6SPaolo Bonzini trace_events_subdirs += [ 180a81df1b6SPaolo Bonzini 'audio', 181a81df1b6SPaolo Bonzini 'backends', 182a81df1b6SPaolo Bonzini 'backends/tpm', 183a81df1b6SPaolo Bonzini 'chardev', 184a81df1b6SPaolo Bonzini 'hw/9pfs', 185a81df1b6SPaolo Bonzini 'hw/acpi', 186a81df1b6SPaolo Bonzini 'hw/alpha', 187a81df1b6SPaolo Bonzini 'hw/arm', 188a81df1b6SPaolo Bonzini 'hw/audio', 189a81df1b6SPaolo Bonzini 'hw/block', 190a81df1b6SPaolo Bonzini 'hw/block/dataplane', 191a81df1b6SPaolo Bonzini 'hw/char', 192a81df1b6SPaolo Bonzini 'hw/display', 193a81df1b6SPaolo Bonzini 'hw/dma', 194a81df1b6SPaolo Bonzini 'hw/hppa', 195a81df1b6SPaolo Bonzini 'hw/hyperv', 196a81df1b6SPaolo Bonzini 'hw/i2c', 197a81df1b6SPaolo Bonzini 'hw/i386', 198a81df1b6SPaolo Bonzini 'hw/i386/xen', 199a81df1b6SPaolo Bonzini 'hw/ide', 200a81df1b6SPaolo Bonzini 'hw/input', 201a81df1b6SPaolo Bonzini 'hw/intc', 202a81df1b6SPaolo Bonzini 'hw/isa', 203a81df1b6SPaolo Bonzini 'hw/mem', 204a81df1b6SPaolo Bonzini 'hw/mips', 205a81df1b6SPaolo Bonzini 'hw/misc', 206a81df1b6SPaolo Bonzini 'hw/misc/macio', 207a81df1b6SPaolo Bonzini 'hw/net', 208a81df1b6SPaolo Bonzini 'hw/nvram', 209a81df1b6SPaolo Bonzini 'hw/pci', 210a81df1b6SPaolo Bonzini 'hw/pci-host', 211a81df1b6SPaolo Bonzini 'hw/ppc', 212a81df1b6SPaolo Bonzini 'hw/rdma', 213a81df1b6SPaolo Bonzini 'hw/rdma/vmw', 214a81df1b6SPaolo Bonzini 'hw/rtc', 215a81df1b6SPaolo Bonzini 'hw/s390x', 216a81df1b6SPaolo Bonzini 'hw/scsi', 217a81df1b6SPaolo Bonzini 'hw/sd', 218a81df1b6SPaolo Bonzini 'hw/sparc', 219a81df1b6SPaolo Bonzini 'hw/sparc64', 220a81df1b6SPaolo Bonzini 'hw/ssi', 221a81df1b6SPaolo Bonzini 'hw/timer', 222a81df1b6SPaolo Bonzini 'hw/tpm', 223a81df1b6SPaolo Bonzini 'hw/usb', 224a81df1b6SPaolo Bonzini 'hw/vfio', 225a81df1b6SPaolo Bonzini 'hw/virtio', 226a81df1b6SPaolo Bonzini 'hw/watchdog', 227a81df1b6SPaolo Bonzini 'hw/xen', 228a81df1b6SPaolo Bonzini 'hw/gpio', 229a81df1b6SPaolo Bonzini 'hw/riscv', 230a81df1b6SPaolo Bonzini 'migration', 231a81df1b6SPaolo Bonzini 'net', 232a81df1b6SPaolo Bonzini 'ui', 233a81df1b6SPaolo Bonzini ] 234a81df1b6SPaolo Bonziniendif 235a81df1b6SPaolo Bonzinitrace_events_subdirs += [ 236a81df1b6SPaolo Bonzini 'hw/core', 237a81df1b6SPaolo Bonzini 'qapi', 238a81df1b6SPaolo Bonzini 'qom', 239a81df1b6SPaolo Bonzini 'target/arm', 240a81df1b6SPaolo Bonzini 'target/hppa', 241a81df1b6SPaolo Bonzini 'target/i386', 242a81df1b6SPaolo Bonzini 'target/mips', 243a81df1b6SPaolo Bonzini 'target/ppc', 244a81df1b6SPaolo Bonzini 'target/riscv', 245a81df1b6SPaolo Bonzini 'target/s390x', 246a81df1b6SPaolo Bonzini 'target/sparc', 247a81df1b6SPaolo Bonzini 'util', 248a81df1b6SPaolo Bonzini] 249a81df1b6SPaolo Bonzini 250a81df1b6SPaolo Bonzinigenh = [] 251a81df1b6SPaolo Bonzini 252a81df1b6SPaolo Bonzinisubdir('qapi') 253a81df1b6SPaolo Bonzinisubdir('qobject') 254a81df1b6SPaolo Bonzinisubdir('stubs') 255a81df1b6SPaolo Bonzinisubdir('trace') 256a81df1b6SPaolo Bonzinisubdir('util') 257a81df1b6SPaolo Bonzinisubdir('crypto') 258a81df1b6SPaolo Bonzinisubdir('storage-daemon') 259a81df1b6SPaolo Bonzini 260a81df1b6SPaolo Bonzini# Build targets from sourcesets 261a81df1b6SPaolo Bonzini 262a81df1b6SPaolo Bonzinistub_ss = stub_ss.apply(config_host, strict: false) 263a81df1b6SPaolo Bonzini 264a81df1b6SPaolo Bonziniutil_ss.add_all(trace_ss) 265a81df1b6SPaolo Bonziniutil_ss = util_ss.apply(config_host, strict: false) 266a81df1b6SPaolo Bonzinilibqemuutil = static_library('qemuutil', 267a81df1b6SPaolo Bonzini sources: util_ss.sources() + stub_ss.sources() + genh, 268a81df1b6SPaolo Bonzini dependencies: [util_ss.dependencies(), m, glib, socket]) 269a81df1b6SPaolo Bonziniqemuutil = declare_dependency(link_with: libqemuutil, 27004c6f1e7SMarc-André Lureau sources: genh + version_res) 271a81df1b6SPaolo Bonzini 272931049b4SPaolo Bonzini# Other build targets 273931049b4SPaolo Bonzini 274931049b4SPaolo Bonziniif have_tools 275a9c9727cSPaolo Bonzini subdir('contrib/rdmacm-mux') 276a9c9727cSPaolo Bonzini 277931049b4SPaolo Bonzini if 'CONFIG_VHOST_USER' in config_host 278931049b4SPaolo Bonzini subdir('contrib/libvhost-user') 2792d7ac0afSPaolo Bonzini subdir('contrib/vhost-user-blk') 280*ea458960SMarc-André Lureau if 'CONFIG_LINUX' in config_host 281*ea458960SMarc-André Lureau subdir('contrib/vhost-user-gpu') 282*ea458960SMarc-André Lureau endif 28332fcc624SMarc-André Lureau subdir('contrib/vhost-user-input') 28499650b62SPaolo Bonzini subdir('contrib/vhost-user-scsi') 285931049b4SPaolo Bonzini endif 286931049b4SPaolo Bonziniendif 287931049b4SPaolo Bonzini 2883f99cf57SPaolo Bonzinisubdir('tools') 2893f99cf57SPaolo Bonzini 290f9332757SPaolo Bonzinisummary_info = {} 291f9332757SPaolo Bonzinisummary_info += {'Install prefix': config_host['prefix']} 292f9332757SPaolo Bonzinisummary_info += {'BIOS directory': config_host['qemu_datadir']} 293f9332757SPaolo Bonzinisummary_info += {'firmware path': config_host['qemu_firmwarepath']} 294f9332757SPaolo Bonzinisummary_info += {'binary directory': config_host['bindir']} 295f9332757SPaolo Bonzinisummary_info += {'library directory': config_host['libdir']} 296f9332757SPaolo Bonzinisummary_info += {'module directory': config_host['qemu_moddir']} 297f9332757SPaolo Bonzinisummary_info += {'libexec directory': config_host['libexecdir']} 298f9332757SPaolo Bonzinisummary_info += {'include directory': config_host['includedir']} 299f9332757SPaolo Bonzinisummary_info += {'config directory': config_host['sysconfdir']} 300f9332757SPaolo Bonziniif targetos != 'windows' 301f9332757SPaolo Bonzini summary_info += {'local state directory': config_host['qemu_localstatedir']} 302f9332757SPaolo Bonzini summary_info += {'Manual directory': config_host['mandir']} 303f9332757SPaolo Bonzinielse 304f9332757SPaolo Bonzini summary_info += {'local state directory': 'queried at runtime'} 305f9332757SPaolo Bonziniendif 306f9332757SPaolo Bonzinisummary_info += {'Build directory': meson.current_build_dir()} 307f9332757SPaolo Bonzinisummary_info += {'Source path': meson.current_source_dir()} 308f9332757SPaolo Bonzinisummary_info += {'GIT binary': config_host['GIT']} 309f9332757SPaolo Bonzinisummary_info += {'GIT submodules': config_host['GIT_SUBMODULES']} 310f9332757SPaolo Bonzinisummary_info += {'C compiler': meson.get_compiler('c').cmd_array()[0]} 311f9332757SPaolo Bonzinisummary_info += {'Host C compiler': meson.get_compiler('c', native: true).cmd_array()[0]} 312f9332757SPaolo Bonziniif link_language == 'cpp' 313f9332757SPaolo Bonzini summary_info += {'C++ compiler': meson.get_compiler('cpp').cmd_array()[0]} 314f9332757SPaolo Bonzinielse 315f9332757SPaolo Bonzini summary_info += {'C++ compiler': false} 316f9332757SPaolo Bonziniendif 317f9332757SPaolo Bonziniif targetos == 'darwin' 318f9332757SPaolo Bonzini summary_info += {'Objective-C compiler': meson.get_compiler('objc').cmd_array()[0]} 319f9332757SPaolo Bonziniendif 320f9332757SPaolo Bonzinisummary_info += {'ARFLAGS': config_host['ARFLAGS']} 321f9332757SPaolo Bonzinisummary_info += {'CFLAGS': config_host['CFLAGS']} 322f9332757SPaolo Bonzinisummary_info += {'QEMU_CFLAGS': config_host['QEMU_CFLAGS']} 323f9332757SPaolo Bonzinisummary_info += {'QEMU_LDFLAGS': config_host['QEMU_LDFLAGS']} 324f9332757SPaolo Bonzinisummary_info += {'make': config_host['MAKE']} 325f9332757SPaolo Bonzinisummary_info += {'install': config_host['INSTALL']} 326f9332757SPaolo Bonzinisummary_info += {'python': '@0@ (version: @1@)'.format(python.full_path(), python.language_version())} 327f9332757SPaolo Bonzinisummary_info += {'sphinx-build': config_host['SPHINX_BUILD']} 328f9332757SPaolo Bonzinisummary_info += {'genisoimage': config_host['GENISOIMAGE']} 329f9332757SPaolo Bonzini# TODO: add back version 330f9332757SPaolo Bonzinisummary_info += {'slirp support': config_host.has_key('CONFIG_SLIRP')} 331f9332757SPaolo Bonziniif config_host.has_key('CONFIG_SLIRP') 332f9332757SPaolo Bonzini summary_info += {'smbd': config_host['CONFIG_SMBD_COMMAND']} 333f9332757SPaolo Bonziniendif 334f9332757SPaolo Bonzinisummary_info += {'module support': config_host.has_key('CONFIG_MODULES')} 335f9332757SPaolo Bonziniif config_host.has_key('CONFIG_MODULES') 336f9332757SPaolo Bonzini summary_info += {'alternative module path': config_host.has_key('CONFIG_MODULE_UPGRADES')} 337f9332757SPaolo Bonziniendif 338f9332757SPaolo Bonzinisummary_info += {'host CPU': cpu} 339f9332757SPaolo Bonzinisummary_info += {'host endianness': build_machine.endian()} 340f9332757SPaolo Bonzinisummary_info += {'target list': config_host['TARGET_DIRS']} 341f9332757SPaolo Bonzinisummary_info += {'gprof enabled': config_host.has_key('CONFIG_GPROF')} 342f9332757SPaolo Bonzinisummary_info += {'sparse enabled': meson.get_compiler('c').cmd_array().contains('cgcc')} 343f9332757SPaolo Bonzinisummary_info += {'strip binaries': get_option('strip')} 344f9332757SPaolo Bonzinisummary_info += {'profiler': config_host.has_key('CONFIG_PROFILER')} 345f9332757SPaolo Bonzinisummary_info += {'static build': config_host.has_key('CONFIG_TOOLS')} 346f9332757SPaolo Bonziniif targetos == 'darwin' 347f9332757SPaolo Bonzini summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')} 348f9332757SPaolo Bonziniendif 349f9332757SPaolo Bonzini# TODO: add back version 350f9332757SPaolo Bonzinisummary_info += {'SDL support': config_host.has_key('CONFIG_SDL')} 351f9332757SPaolo Bonzinisummary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')} 352f9332757SPaolo Bonzini# TODO: add back version 353f9332757SPaolo Bonzinisummary_info += {'GTK support': config_host.has_key('CONFIG_GTK')} 354f9332757SPaolo Bonzinisummary_info += {'GTK GL support': config_host.has_key('CONFIG_GTK_GL')} 355f9332757SPaolo Bonzini# TODO: add back version 356f9332757SPaolo Bonzinisummary_info += {'VTE support': config_host.has_key('CONFIG_VTE')} 357f9332757SPaolo Bonzinisummary_info += {'TLS priority': config_host['CONFIG_TLS_PRIORITY']} 358f9332757SPaolo Bonzinisummary_info += {'GNUTLS support': config_host.has_key('CONFIG_GNUTLS')} 359f9332757SPaolo Bonzini# TODO: add back version 360f9332757SPaolo Bonzinisummary_info += {'libgcrypt': config_host.has_key('CONFIG_GCRYPT')} 361f9332757SPaolo Bonziniif config_host.has_key('CONFIG_GCRYPT') 362f9332757SPaolo Bonzini summary_info += {' hmac': config_host.has_key('CONFIG_GCRYPT_HMAC')} 363f9332757SPaolo Bonzini summary_info += {' XTS': not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')} 364f9332757SPaolo Bonziniendif 365f9332757SPaolo Bonzini# TODO: add back version 366f9332757SPaolo Bonzinisummary_info += {'nettle': config_host.has_key('CONFIG_NETTLE')} 367f9332757SPaolo Bonziniif config_host.has_key('CONFIG_NETTLE') 368f9332757SPaolo Bonzini summary_info += {' XTS': not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')} 369f9332757SPaolo Bonziniendif 370f9332757SPaolo Bonzinisummary_info += {'libtasn1': config_host.has_key('CONFIG_TASN1')} 371f9332757SPaolo Bonzinisummary_info += {'PAM': config_host.has_key('CONFIG_AUTH_PAM')} 372f9332757SPaolo Bonzinisummary_info += {'iconv support': config_host.has_key('CONFIG_ICONV')} 373f9332757SPaolo Bonzinisummary_info += {'curses support': config_host.has_key('CONFIG_CURSES')} 374f9332757SPaolo Bonzini# TODO: add back version 375f9332757SPaolo Bonzinisummary_info += {'virgl support': config_host.has_key('CONFIG_VIRGL')} 376f9332757SPaolo Bonzinisummary_info += {'curl support': config_host.has_key('CONFIG_CURL')} 377f9332757SPaolo Bonzinisummary_info += {'mingw32 support': targetos == 'windows'} 378f9332757SPaolo Bonzinisummary_info += {'Audio drivers': config_host['CONFIG_AUDIO_DRIVERS']} 379f9332757SPaolo Bonzinisummary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']} 380f9332757SPaolo Bonzinisummary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']} 381f9332757SPaolo Bonzinisummary_info += {'VirtFS support': config_host.has_key('CONFIG_VIRTFS')} 382f9332757SPaolo Bonzinisummary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')} 383f9332757SPaolo Bonzinisummary_info += {'VNC support': config_host.has_key('CONFIG_VNC')} 384f9332757SPaolo Bonziniif config_host.has_key('CONFIG_VNC') 385f9332757SPaolo Bonzini summary_info += {'VNC SASL support': config_host.has_key('CONFIG_VNC_SASL')} 386f9332757SPaolo Bonzini summary_info += {'VNC JPEG support': config_host.has_key('CONFIG_VNC_JPEG')} 387f9332757SPaolo Bonzini summary_info += {'VNC PNG support': config_host.has_key('CONFIG_VNC_PNG')} 388f9332757SPaolo Bonziniendif 389f9332757SPaolo Bonzinisummary_info += {'xen support': config_host.has_key('CONFIG_XEN_BACKEND')} 390f9332757SPaolo Bonziniif config_host.has_key('CONFIG_XEN_BACKEND') 391f9332757SPaolo Bonzini summary_info += {'xen ctrl version': config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']} 392f9332757SPaolo Bonziniendif 393f9332757SPaolo Bonzinisummary_info += {'brlapi support': config_host.has_key('CONFIG_BRLAPI')} 394f9332757SPaolo Bonzinisummary_info += {'Documentation': config_host.has_key('BUILD_DOCS')} 395f9332757SPaolo Bonzinisummary_info += {'PIE': get_option('b_pie')} 396f9332757SPaolo Bonzinisummary_info += {'vde support': config_host.has_key('CONFIG_VDE')} 397f9332757SPaolo Bonzinisummary_info += {'netmap support': config_host.has_key('CONFIG_NETMAP')} 398f9332757SPaolo Bonzinisummary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')} 399f9332757SPaolo Bonzinisummary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')} 400f9332757SPaolo Bonzinisummary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')} 401f9332757SPaolo Bonzinisummary_info += {'Install blobs': config_host.has_key('INSTALL_BLOBS')} 402f9332757SPaolo Bonzini# TODO: add back KVM/HAX/HVF/WHPX/TCG 403f9332757SPaolo Bonzini#summary_info += {'KVM support': have_kvm'} 404f9332757SPaolo Bonzini#summary_info += {'HAX support': have_hax'} 405f9332757SPaolo Bonzini#summary_info += {'HVF support': have_hvf'} 406f9332757SPaolo Bonzini#summary_info += {'WHPX support': have_whpx'} 407f9332757SPaolo Bonzini#summary_info += {'TCG support': have_tcg'} 408f9332757SPaolo Bonzini#if get_option('tcg') 409f9332757SPaolo Bonzini# summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')} 410f9332757SPaolo Bonzini# summary_info += {'TCG interpreter': config_host.has_key('CONFIG_TCG_INTERPRETER')} 411f9332757SPaolo Bonzini#endif 412f9332757SPaolo Bonzinisummary_info += {'malloc trim support': config_host.has_key('CONFIG_MALLOC_TRIM')} 413f9332757SPaolo Bonzinisummary_info += {'RDMA support': config_host.has_key('CONFIG_RDMA')} 414f9332757SPaolo Bonzinisummary_info += {'PVRDMA support': config_host.has_key('CONFIG_PVRDMA')} 415f9332757SPaolo Bonzinisummary_info += {'fdt support': config_host.has_key('CONFIG_FDT')} 416f9332757SPaolo Bonzinisummary_info += {'membarrier': config_host.has_key('CONFIG_MEMBARRIER')} 417f9332757SPaolo Bonzinisummary_info += {'preadv support': config_host.has_key('CONFIG_PREADV')} 418f9332757SPaolo Bonzinisummary_info += {'fdatasync': config_host.has_key('CONFIG_FDATASYNC')} 419f9332757SPaolo Bonzinisummary_info += {'madvise': config_host.has_key('CONFIG_MADVISE')} 420f9332757SPaolo Bonzinisummary_info += {'posix_madvise': config_host.has_key('CONFIG_POSIX_MADVISE')} 421f9332757SPaolo Bonzinisummary_info += {'posix_memalign': config_host.has_key('CONFIG_POSIX_MEMALIGN')} 422f9332757SPaolo Bonzinisummary_info += {'libcap-ng support': config_host.has_key('CONFIG_LIBCAP_NG')} 423f9332757SPaolo Bonzinisummary_info += {'vhost-net support': config_host.has_key('CONFIG_VHOST_NET')} 424f9332757SPaolo Bonzinisummary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPTO')} 425f9332757SPaolo Bonzinisummary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')} 426f9332757SPaolo Bonzinisummary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')} 427f9332757SPaolo Bonzinisummary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_KERNEL')} 428f9332757SPaolo Bonzinisummary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')} 429f9332757SPaolo Bonzinisummary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')} 430f9332757SPaolo Bonzinisummary_info += {'Trace backends': config_host['TRACE_BACKENDS']} 431f9332757SPaolo Bonziniif config_host['TRACE_BACKENDS'].split().contains('simple') 432f9332757SPaolo Bonzini summary_info += {'Trace output file': config_host['CONFIG_TRACE_FILE'] + '-<pid>'} 433f9332757SPaolo Bonziniendif 434f9332757SPaolo Bonzini# TODO: add back protocol and server version 435f9332757SPaolo Bonzinisummary_info += {'spice support': config_host.has_key('CONFIG_SPICE')} 436f9332757SPaolo Bonzinisummary_info += {'rbd support': config_host.has_key('CONFIG_RBD')} 437f9332757SPaolo Bonzinisummary_info += {'xfsctl support': config_host.has_key('CONFIG_XFS')} 438f9332757SPaolo Bonzinisummary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')} 439f9332757SPaolo Bonzinisummary_info += {'libusb': config_host.has_key('CONFIG_USB_LIBUSB')} 440f9332757SPaolo Bonzinisummary_info += {'usb net redir': config_host.has_key('CONFIG_USB_REDIR')} 441f9332757SPaolo Bonzinisummary_info += {'OpenGL support': config_host.has_key('CONFIG_OPENGL')} 442f9332757SPaolo Bonzinisummary_info += {'OpenGL dmabufs': config_host.has_key('CONFIG_OPENGL_DMABUF')} 443f9332757SPaolo Bonzinisummary_info += {'libiscsi support': config_host.has_key('CONFIG_LIBISCSI')} 444f9332757SPaolo Bonzinisummary_info += {'libnfs support': config_host.has_key('CONFIG_LIBNFS')} 445f9332757SPaolo Bonzinisummary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')} 446f9332757SPaolo Bonziniif targetos == 'windows' 447f9332757SPaolo Bonzini if 'WIN_SDK' in config_host 448f9332757SPaolo Bonzini summary_info += {'Windows SDK': config_host['WIN_SDK']} 449f9332757SPaolo Bonzini endif 450f9332757SPaolo Bonzini summary_info += {'QGA VSS support': config_host.has_key('CONFIG_QGA_VSS')} 451f9332757SPaolo Bonzini summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')} 452f9332757SPaolo Bonzini summary_info += {'QGA MSI support': config_host.has_key('CONFIG_QGA_MSI_ENABLED')} 453f9332757SPaolo Bonziniendif 454f9332757SPaolo Bonzinisummary_info += {'seccomp support': config_host.has_key('CONFIG_SECCOMP')} 455f9332757SPaolo Bonzinisummary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']} 456f9332757SPaolo Bonzinisummary_info += {'coroutine pool': config_host['CONFIG_COROUTINE_POOL'] == '1'} 457f9332757SPaolo Bonzinisummary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')} 458f9332757SPaolo Bonzinisummary_info += {'mutex debugging': config_host.has_key('CONFIG_DEBUG_MUTEX')} 459f9332757SPaolo Bonzinisummary_info += {'crypto afalg': config_host.has_key('CONFIG_AF_ALG')} 460f9332757SPaolo Bonzinisummary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')} 461bf0e56a3SMarc-André Lureausummary_info += {'gcov': get_option('b_coverage')} 462f9332757SPaolo Bonzinisummary_info += {'TPM support': config_host.has_key('CONFIG_TPM')} 463f9332757SPaolo Bonzinisummary_info += {'libssh support': config_host.has_key('CONFIG_LIBSSH')} 464f9332757SPaolo Bonzinisummary_info += {'QOM debugging': config_host.has_key('CONFIG_QOM_CAST_DEBUG')} 465f9332757SPaolo Bonzinisummary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')} 466f9332757SPaolo Bonzinisummary_info += {'lzo support': config_host.has_key('CONFIG_LZO')} 467f9332757SPaolo Bonzinisummary_info += {'snappy support': config_host.has_key('CONFIG_SNAPPY')} 468f9332757SPaolo Bonzinisummary_info += {'bzip2 support': config_host.has_key('CONFIG_BZIP2')} 469f9332757SPaolo Bonzinisummary_info += {'lzfse support': config_host.has_key('CONFIG_LZFSE')} 470f9332757SPaolo Bonzinisummary_info += {'zstd support': config_host.has_key('CONFIG_ZSTD')} 471f9332757SPaolo Bonzinisummary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')} 472f9332757SPaolo Bonzinisummary_info += {'libxml2': config_host.has_key('CONFIG_LIBXML2')} 473f9332757SPaolo Bonzinisummary_info += {'tcmalloc support': config_host.has_key('CONFIG_TCMALLOC')} 474f9332757SPaolo Bonzinisummary_info += {'jemalloc support': config_host.has_key('CONFIG_JEMALLOC')} 475f9332757SPaolo Bonzinisummary_info += {'avx2 optimization': config_host.has_key('CONFIG_AVX2_OPT')} 476f9332757SPaolo Bonzinisummary_info += {'avx512f optimization': config_host.has_key('CONFIG_AVX512F_OPT')} 477f9332757SPaolo Bonzinisummary_info += {'replication support': config_host.has_key('CONFIG_REPLICATION')} 478f9332757SPaolo Bonzinisummary_info += {'bochs support': config_host.has_key('CONFIG_BOCHS')} 479f9332757SPaolo Bonzinisummary_info += {'cloop support': config_host.has_key('CONFIG_CLOOP')} 480f9332757SPaolo Bonzinisummary_info += {'dmg support': config_host.has_key('CONFIG_DMG')} 481f9332757SPaolo Bonzinisummary_info += {'qcow v1 support': config_host.has_key('CONFIG_QCOW1')} 482f9332757SPaolo Bonzinisummary_info += {'vdi support': config_host.has_key('CONFIG_VDI')} 483f9332757SPaolo Bonzinisummary_info += {'vvfat support': config_host.has_key('CONFIG_VVFAT')} 484f9332757SPaolo Bonzinisummary_info += {'qed support': config_host.has_key('CONFIG_QED')} 485f9332757SPaolo Bonzinisummary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')} 486f9332757SPaolo Bonzinisummary_info += {'sheepdog support': config_host.has_key('CONFIG_SHEEPDOG')} 487f9332757SPaolo Bonzinisummary_info += {'capstone': config_host.has_key('CONFIG_CAPSTONE')} 488f9332757SPaolo Bonzinisummary_info += {'libpmem support': config_host.has_key('CONFIG_LIBPMEM')} 489f9332757SPaolo Bonzinisummary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')} 490f9332757SPaolo Bonzinisummary_info += {'libudev': config_host.has_key('CONFIG_LIBUDEV')} 491f9332757SPaolo Bonzinisummary_info += {'default devices': config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'} 492f9332757SPaolo Bonzinisummary_info += {'plugin support': config_host.has_key('CONFIG_PLUGIN')} 493f9332757SPaolo Bonzinisummary_info += {'fuzzing support': config_host.has_key('CONFIG_FUZZ')} 494f9332757SPaolo Bonziniif config_host.has_key('HAVE_GDB_BIN') 495f9332757SPaolo Bonzini summary_info += {'gdb': config_host['HAVE_GDB_BIN']} 496f9332757SPaolo Bonziniendif 497f9332757SPaolo Bonzinisummary_info += {'thread sanitizer': config_host.has_key('CONFIG_TSAN')} 498f9332757SPaolo Bonzinisummary_info += {'rng-none': config_host.has_key('CONFIG_RNG_NONE')} 499f9332757SPaolo Bonzinisummary_info += {'Linux keyring': config_host.has_key('CONFIG_SECRET_KEYRING')} 500f9332757SPaolo Bonzinisummary(summary_info, bool_yn: true) 501f9332757SPaolo Bonzini 502f9332757SPaolo Bonziniif not supported_cpus.contains(cpu) 503f9332757SPaolo Bonzini message() 504f9332757SPaolo Bonzini warning('SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!') 505f9332757SPaolo Bonzini message() 506f9332757SPaolo Bonzini message('CPU host architecture ' + cpu + ' support is not currently maintained.') 507f9332757SPaolo Bonzini message('The QEMU project intends to remove support for this host CPU in') 508f9332757SPaolo Bonzini message('a future release if nobody volunteers to maintain it and to') 509f9332757SPaolo Bonzini message('provide a build host for our continuous integration setup.') 510f9332757SPaolo Bonzini message('configure has succeeded and you can continue to build, but') 511f9332757SPaolo Bonzini message('if you care about QEMU on this platform you should contact') 512f9332757SPaolo Bonzini message('us upstream at qemu-devel@nongnu.org.') 513f9332757SPaolo Bonziniendif 514f9332757SPaolo Bonzini 515f9332757SPaolo Bonziniif not supported_oses.contains(targetos) 516f9332757SPaolo Bonzini message() 517f9332757SPaolo Bonzini warning('WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!') 518f9332757SPaolo Bonzini message() 519f9332757SPaolo Bonzini message('Host OS ' + targetos + 'support is not currently maintained.') 520f9332757SPaolo Bonzini message('The QEMU project intends to remove support for this host OS in') 521f9332757SPaolo Bonzini message('a future release if nobody volunteers to maintain it and to') 522f9332757SPaolo Bonzini message('provide a build host for our continuous integration setup.') 523f9332757SPaolo Bonzini message('configure has succeeded and you can continue to build, but') 524f9332757SPaolo Bonzini message('if you care about QEMU on this platform you should contact') 525f9332757SPaolo Bonzini message('us upstream at qemu-devel@nongnu.org.') 526f9332757SPaolo Bonziniendif 527