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') 7*a81df1b6SPaolo Bonziniss = import('sourceset') 8*a81df1b6SPaolo Bonzini 9*a81df1b6SPaolo 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 49*a81df1b6SPaolo Bonzinim = cc.find_library('m', required: false) 50*a81df1b6SPaolo Bonziniutil = cc.find_library('util', required: false) 51*a81df1b6SPaolo Bonzinisocket = [] 52*a81df1b6SPaolo Bonziniif targetos == 'windows' 53*a81df1b6SPaolo Bonzini socket = cc.find_library('ws2_32') 54*a81df1b6SPaolo Bonziniendif 55*a81df1b6SPaolo Bonziniglib = declare_dependency(compile_args: config_host['GLIB_CFLAGS'].split(), 56*a81df1b6SPaolo Bonzini link_args: config_host['GLIB_LIBS'].split()) 57*a81df1b6SPaolo Bonzinigio = not_found 58*a81df1b6SPaolo Bonziniif 'CONFIG_GIO' in config_host 59*a81df1b6SPaolo Bonzini gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(), 60*a81df1b6SPaolo Bonzini link_args: config_host['GIO_LIBS'].split()) 61*a81df1b6SPaolo Bonziniendif 62*a81df1b6SPaolo Bonzinilttng = not_found 63*a81df1b6SPaolo Bonziniif 'CONFIG_TRACE_UST' in config_host 64*a81df1b6SPaolo Bonzini lttng = declare_dependency(link_args: config_host['LTTNG_UST_LIBS'].split()) 65*a81df1b6SPaolo Bonziniendif 66*a81df1b6SPaolo Bonziniurcubp = not_found 67*a81df1b6SPaolo Bonziniif 'CONFIG_TRACE_UST' in config_host 68*a81df1b6SPaolo Bonzini urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split()) 69*a81df1b6SPaolo Bonziniendif 70*a81df1b6SPaolo Bonzininettle = not_found 71*a81df1b6SPaolo Bonziniif 'CONFIG_NETTLE' in config_host 72*a81df1b6SPaolo Bonzini nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(), 73*a81df1b6SPaolo Bonzini link_args: config_host['NETTLE_LIBS'].split()) 74*a81df1b6SPaolo Bonziniendif 75*a81df1b6SPaolo Bonzinignutls = not_found 76*a81df1b6SPaolo Bonziniif 'CONFIG_GNUTLS' in config_host 77*a81df1b6SPaolo Bonzini gnutls = declare_dependency(compile_args: config_host['GNUTLS_CFLAGS'].split(), 78*a81df1b6SPaolo Bonzini link_args: config_host['GNUTLS_LIBS'].split()) 79*a81df1b6SPaolo Bonziniendif 80*a81df1b6SPaolo Bonzini 81*a81df1b6SPaolo Bonzinitarget_dirs = config_host['TARGET_DIRS'].split() 82*a81df1b6SPaolo Bonzinihave_user = false 83*a81df1b6SPaolo Bonzinihave_system = false 84*a81df1b6SPaolo Bonziniforeach target : target_dirs 85*a81df1b6SPaolo Bonzini have_user = have_user or target.endswith('-user') 86*a81df1b6SPaolo Bonzini have_system = have_system or target.endswith('-softmmu') 87*a81df1b6SPaolo Bonziniendforeach 88*a81df1b6SPaolo Bonzinihave_tools = 'CONFIG_TOOLS' in config_host 89*a81df1b6SPaolo Bonzinihave_block = have_system or have_tools 90*a81df1b6SPaolo Bonzini 91*a81df1b6SPaolo Bonzini# Generators 92*a81df1b6SPaolo Bonzini 93*a81df1b6SPaolo Bonziniqapi_gen = find_program('scripts/qapi-gen.py') 94*a81df1b6SPaolo Bonziniqapi_gen_depends = [ meson.source_root() / 'scripts/qapi/__init__.py', 95*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/commands.py', 96*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/common.py', 97*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/doc.py', 98*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/error.py', 99*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/events.py', 100*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/expr.py', 101*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/gen.py', 102*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/introspect.py', 103*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/parser.py', 104*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/schema.py', 105*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/source.py', 106*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/types.py', 107*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/visit.py', 108*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/common.py', 109*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi/doc.py', 110*a81df1b6SPaolo Bonzini meson.source_root() / 'scripts/qapi-gen.py' 111*a81df1b6SPaolo Bonzini] 112*a81df1b6SPaolo Bonzini 113*a81df1b6SPaolo Bonzinitracetool = [ 114*a81df1b6SPaolo Bonzini python, files('scripts/tracetool.py'), 115*a81df1b6SPaolo Bonzini '--backend=' + config_host['TRACE_BACKENDS'] 116*a81df1b6SPaolo Bonzini] 117*a81df1b6SPaolo Bonzini 118*a81df1b6SPaolo Bonzini# Collect sourcesets. 119*a81df1b6SPaolo Bonzini 120*a81df1b6SPaolo Bonziniutil_ss = ss.source_set() 121*a81df1b6SPaolo Bonzinistub_ss = ss.source_set() 122*a81df1b6SPaolo Bonzinitrace_ss = ss.source_set() 123*a81df1b6SPaolo Bonzini 124*a81df1b6SPaolo Bonzini############### 125*a81df1b6SPaolo Bonzini# Trace files # 126*a81df1b6SPaolo Bonzini############### 127*a81df1b6SPaolo Bonzini 128*a81df1b6SPaolo Bonzinitrace_events_subdirs = [ 129*a81df1b6SPaolo Bonzini 'accel/kvm', 130*a81df1b6SPaolo Bonzini 'accel/tcg', 131*a81df1b6SPaolo Bonzini 'crypto', 132*a81df1b6SPaolo Bonzini 'monitor', 133*a81df1b6SPaolo Bonzini] 134*a81df1b6SPaolo Bonziniif have_user 135*a81df1b6SPaolo Bonzini trace_events_subdirs += [ 'linux-user' ] 136*a81df1b6SPaolo Bonziniendif 137*a81df1b6SPaolo Bonziniif have_block 138*a81df1b6SPaolo Bonzini trace_events_subdirs += [ 139*a81df1b6SPaolo Bonzini 'authz', 140*a81df1b6SPaolo Bonzini 'block', 141*a81df1b6SPaolo Bonzini 'io', 142*a81df1b6SPaolo Bonzini 'nbd', 143*a81df1b6SPaolo Bonzini 'scsi', 144*a81df1b6SPaolo Bonzini ] 145*a81df1b6SPaolo Bonziniendif 146*a81df1b6SPaolo Bonziniif have_system 147*a81df1b6SPaolo Bonzini trace_events_subdirs += [ 148*a81df1b6SPaolo Bonzini 'audio', 149*a81df1b6SPaolo Bonzini 'backends', 150*a81df1b6SPaolo Bonzini 'backends/tpm', 151*a81df1b6SPaolo Bonzini 'chardev', 152*a81df1b6SPaolo Bonzini 'hw/9pfs', 153*a81df1b6SPaolo Bonzini 'hw/acpi', 154*a81df1b6SPaolo Bonzini 'hw/alpha', 155*a81df1b6SPaolo Bonzini 'hw/arm', 156*a81df1b6SPaolo Bonzini 'hw/audio', 157*a81df1b6SPaolo Bonzini 'hw/block', 158*a81df1b6SPaolo Bonzini 'hw/block/dataplane', 159*a81df1b6SPaolo Bonzini 'hw/char', 160*a81df1b6SPaolo Bonzini 'hw/display', 161*a81df1b6SPaolo Bonzini 'hw/dma', 162*a81df1b6SPaolo Bonzini 'hw/hppa', 163*a81df1b6SPaolo Bonzini 'hw/hyperv', 164*a81df1b6SPaolo Bonzini 'hw/i2c', 165*a81df1b6SPaolo Bonzini 'hw/i386', 166*a81df1b6SPaolo Bonzini 'hw/i386/xen', 167*a81df1b6SPaolo Bonzini 'hw/ide', 168*a81df1b6SPaolo Bonzini 'hw/input', 169*a81df1b6SPaolo Bonzini 'hw/intc', 170*a81df1b6SPaolo Bonzini 'hw/isa', 171*a81df1b6SPaolo Bonzini 'hw/mem', 172*a81df1b6SPaolo Bonzini 'hw/mips', 173*a81df1b6SPaolo Bonzini 'hw/misc', 174*a81df1b6SPaolo Bonzini 'hw/misc/macio', 175*a81df1b6SPaolo Bonzini 'hw/net', 176*a81df1b6SPaolo Bonzini 'hw/nvram', 177*a81df1b6SPaolo Bonzini 'hw/pci', 178*a81df1b6SPaolo Bonzini 'hw/pci-host', 179*a81df1b6SPaolo Bonzini 'hw/ppc', 180*a81df1b6SPaolo Bonzini 'hw/rdma', 181*a81df1b6SPaolo Bonzini 'hw/rdma/vmw', 182*a81df1b6SPaolo Bonzini 'hw/rtc', 183*a81df1b6SPaolo Bonzini 'hw/s390x', 184*a81df1b6SPaolo Bonzini 'hw/scsi', 185*a81df1b6SPaolo Bonzini 'hw/sd', 186*a81df1b6SPaolo Bonzini 'hw/sparc', 187*a81df1b6SPaolo Bonzini 'hw/sparc64', 188*a81df1b6SPaolo Bonzini 'hw/ssi', 189*a81df1b6SPaolo Bonzini 'hw/timer', 190*a81df1b6SPaolo Bonzini 'hw/tpm', 191*a81df1b6SPaolo Bonzini 'hw/usb', 192*a81df1b6SPaolo Bonzini 'hw/vfio', 193*a81df1b6SPaolo Bonzini 'hw/virtio', 194*a81df1b6SPaolo Bonzini 'hw/watchdog', 195*a81df1b6SPaolo Bonzini 'hw/xen', 196*a81df1b6SPaolo Bonzini 'hw/gpio', 197*a81df1b6SPaolo Bonzini 'hw/riscv', 198*a81df1b6SPaolo Bonzini 'migration', 199*a81df1b6SPaolo Bonzini 'net', 200*a81df1b6SPaolo Bonzini 'ui', 201*a81df1b6SPaolo Bonzini ] 202*a81df1b6SPaolo Bonziniendif 203*a81df1b6SPaolo Bonzinitrace_events_subdirs += [ 204*a81df1b6SPaolo Bonzini 'hw/core', 205*a81df1b6SPaolo Bonzini 'qapi', 206*a81df1b6SPaolo Bonzini 'qom', 207*a81df1b6SPaolo Bonzini 'target/arm', 208*a81df1b6SPaolo Bonzini 'target/hppa', 209*a81df1b6SPaolo Bonzini 'target/i386', 210*a81df1b6SPaolo Bonzini 'target/mips', 211*a81df1b6SPaolo Bonzini 'target/ppc', 212*a81df1b6SPaolo Bonzini 'target/riscv', 213*a81df1b6SPaolo Bonzini 'target/s390x', 214*a81df1b6SPaolo Bonzini 'target/sparc', 215*a81df1b6SPaolo Bonzini 'util', 216*a81df1b6SPaolo Bonzini] 217*a81df1b6SPaolo Bonzini 218*a81df1b6SPaolo Bonzinigenh = [] 219*a81df1b6SPaolo Bonzini 220*a81df1b6SPaolo Bonzinisubdir('qapi') 221*a81df1b6SPaolo Bonzinisubdir('qobject') 222*a81df1b6SPaolo Bonzinisubdir('stubs') 223*a81df1b6SPaolo Bonzinisubdir('trace') 224*a81df1b6SPaolo Bonzinisubdir('util') 225*a81df1b6SPaolo Bonzinisubdir('crypto') 226*a81df1b6SPaolo Bonzinisubdir('storage-daemon') 227*a81df1b6SPaolo Bonzini 228*a81df1b6SPaolo Bonzini# Build targets from sourcesets 229*a81df1b6SPaolo Bonzini 230*a81df1b6SPaolo Bonzinistub_ss = stub_ss.apply(config_host, strict: false) 231*a81df1b6SPaolo Bonzini 232*a81df1b6SPaolo Bonziniutil_ss.add_all(trace_ss) 233*a81df1b6SPaolo Bonziniutil_ss = util_ss.apply(config_host, strict: false) 234*a81df1b6SPaolo Bonzinilibqemuutil = static_library('qemuutil', 235*a81df1b6SPaolo Bonzini sources: util_ss.sources() + stub_ss.sources() + genh, 236*a81df1b6SPaolo Bonzini dependencies: [util_ss.dependencies(), m, glib, socket]) 237*a81df1b6SPaolo Bonziniqemuutil = declare_dependency(link_with: libqemuutil, 238*a81df1b6SPaolo Bonzini sources: genh) 239*a81df1b6SPaolo Bonzini 240f9332757SPaolo Bonzinisummary_info = {} 241f9332757SPaolo Bonzinisummary_info += {'Install prefix': config_host['prefix']} 242f9332757SPaolo Bonzinisummary_info += {'BIOS directory': config_host['qemu_datadir']} 243f9332757SPaolo Bonzinisummary_info += {'firmware path': config_host['qemu_firmwarepath']} 244f9332757SPaolo Bonzinisummary_info += {'binary directory': config_host['bindir']} 245f9332757SPaolo Bonzinisummary_info += {'library directory': config_host['libdir']} 246f9332757SPaolo Bonzinisummary_info += {'module directory': config_host['qemu_moddir']} 247f9332757SPaolo Bonzinisummary_info += {'libexec directory': config_host['libexecdir']} 248f9332757SPaolo Bonzinisummary_info += {'include directory': config_host['includedir']} 249f9332757SPaolo Bonzinisummary_info += {'config directory': config_host['sysconfdir']} 250f9332757SPaolo Bonziniif targetos != 'windows' 251f9332757SPaolo Bonzini summary_info += {'local state directory': config_host['qemu_localstatedir']} 252f9332757SPaolo Bonzini summary_info += {'Manual directory': config_host['mandir']} 253f9332757SPaolo Bonzinielse 254f9332757SPaolo Bonzini summary_info += {'local state directory': 'queried at runtime'} 255f9332757SPaolo Bonziniendif 256f9332757SPaolo Bonzinisummary_info += {'Build directory': meson.current_build_dir()} 257f9332757SPaolo Bonzinisummary_info += {'Source path': meson.current_source_dir()} 258f9332757SPaolo Bonzinisummary_info += {'GIT binary': config_host['GIT']} 259f9332757SPaolo Bonzinisummary_info += {'GIT submodules': config_host['GIT_SUBMODULES']} 260f9332757SPaolo Bonzinisummary_info += {'C compiler': meson.get_compiler('c').cmd_array()[0]} 261f9332757SPaolo Bonzinisummary_info += {'Host C compiler': meson.get_compiler('c', native: true).cmd_array()[0]} 262f9332757SPaolo Bonziniif link_language == 'cpp' 263f9332757SPaolo Bonzini summary_info += {'C++ compiler': meson.get_compiler('cpp').cmd_array()[0]} 264f9332757SPaolo Bonzinielse 265f9332757SPaolo Bonzini summary_info += {'C++ compiler': false} 266f9332757SPaolo Bonziniendif 267f9332757SPaolo Bonziniif targetos == 'darwin' 268f9332757SPaolo Bonzini summary_info += {'Objective-C compiler': meson.get_compiler('objc').cmd_array()[0]} 269f9332757SPaolo Bonziniendif 270f9332757SPaolo Bonzinisummary_info += {'ARFLAGS': config_host['ARFLAGS']} 271f9332757SPaolo Bonzinisummary_info += {'CFLAGS': config_host['CFLAGS']} 272f9332757SPaolo Bonzinisummary_info += {'QEMU_CFLAGS': config_host['QEMU_CFLAGS']} 273f9332757SPaolo Bonzinisummary_info += {'QEMU_LDFLAGS': config_host['QEMU_LDFLAGS']} 274f9332757SPaolo Bonzinisummary_info += {'make': config_host['MAKE']} 275f9332757SPaolo Bonzinisummary_info += {'install': config_host['INSTALL']} 276f9332757SPaolo Bonzinisummary_info += {'python': '@0@ (version: @1@)'.format(python.full_path(), python.language_version())} 277f9332757SPaolo Bonzinisummary_info += {'sphinx-build': config_host['SPHINX_BUILD']} 278f9332757SPaolo Bonzinisummary_info += {'genisoimage': config_host['GENISOIMAGE']} 279f9332757SPaolo Bonzini# TODO: add back version 280f9332757SPaolo Bonzinisummary_info += {'slirp support': config_host.has_key('CONFIG_SLIRP')} 281f9332757SPaolo Bonziniif config_host.has_key('CONFIG_SLIRP') 282f9332757SPaolo Bonzini summary_info += {'smbd': config_host['CONFIG_SMBD_COMMAND']} 283f9332757SPaolo Bonziniendif 284f9332757SPaolo Bonzinisummary_info += {'module support': config_host.has_key('CONFIG_MODULES')} 285f9332757SPaolo Bonziniif config_host.has_key('CONFIG_MODULES') 286f9332757SPaolo Bonzini summary_info += {'alternative module path': config_host.has_key('CONFIG_MODULE_UPGRADES')} 287f9332757SPaolo Bonziniendif 288f9332757SPaolo Bonzinisummary_info += {'host CPU': cpu} 289f9332757SPaolo Bonzinisummary_info += {'host endianness': build_machine.endian()} 290f9332757SPaolo Bonzinisummary_info += {'target list': config_host['TARGET_DIRS']} 291f9332757SPaolo Bonzinisummary_info += {'gprof enabled': config_host.has_key('CONFIG_GPROF')} 292f9332757SPaolo Bonzinisummary_info += {'sparse enabled': meson.get_compiler('c').cmd_array().contains('cgcc')} 293f9332757SPaolo Bonzinisummary_info += {'strip binaries': get_option('strip')} 294f9332757SPaolo Bonzinisummary_info += {'profiler': config_host.has_key('CONFIG_PROFILER')} 295f9332757SPaolo Bonzinisummary_info += {'static build': config_host.has_key('CONFIG_TOOLS')} 296f9332757SPaolo Bonziniif targetos == 'darwin' 297f9332757SPaolo Bonzini summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')} 298f9332757SPaolo Bonziniendif 299f9332757SPaolo Bonzini# TODO: add back version 300f9332757SPaolo Bonzinisummary_info += {'SDL support': config_host.has_key('CONFIG_SDL')} 301f9332757SPaolo Bonzinisummary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')} 302f9332757SPaolo Bonzini# TODO: add back version 303f9332757SPaolo Bonzinisummary_info += {'GTK support': config_host.has_key('CONFIG_GTK')} 304f9332757SPaolo Bonzinisummary_info += {'GTK GL support': config_host.has_key('CONFIG_GTK_GL')} 305f9332757SPaolo Bonzini# TODO: add back version 306f9332757SPaolo Bonzinisummary_info += {'VTE support': config_host.has_key('CONFIG_VTE')} 307f9332757SPaolo Bonzinisummary_info += {'TLS priority': config_host['CONFIG_TLS_PRIORITY']} 308f9332757SPaolo Bonzinisummary_info += {'GNUTLS support': config_host.has_key('CONFIG_GNUTLS')} 309f9332757SPaolo Bonzini# TODO: add back version 310f9332757SPaolo Bonzinisummary_info += {'libgcrypt': config_host.has_key('CONFIG_GCRYPT')} 311f9332757SPaolo Bonziniif config_host.has_key('CONFIG_GCRYPT') 312f9332757SPaolo Bonzini summary_info += {' hmac': config_host.has_key('CONFIG_GCRYPT_HMAC')} 313f9332757SPaolo Bonzini summary_info += {' XTS': not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')} 314f9332757SPaolo Bonziniendif 315f9332757SPaolo Bonzini# TODO: add back version 316f9332757SPaolo Bonzinisummary_info += {'nettle': config_host.has_key('CONFIG_NETTLE')} 317f9332757SPaolo Bonziniif config_host.has_key('CONFIG_NETTLE') 318f9332757SPaolo Bonzini summary_info += {' XTS': not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')} 319f9332757SPaolo Bonziniendif 320f9332757SPaolo Bonzinisummary_info += {'libtasn1': config_host.has_key('CONFIG_TASN1')} 321f9332757SPaolo Bonzinisummary_info += {'PAM': config_host.has_key('CONFIG_AUTH_PAM')} 322f9332757SPaolo Bonzinisummary_info += {'iconv support': config_host.has_key('CONFIG_ICONV')} 323f9332757SPaolo Bonzinisummary_info += {'curses support': config_host.has_key('CONFIG_CURSES')} 324f9332757SPaolo Bonzini# TODO: add back version 325f9332757SPaolo Bonzinisummary_info += {'virgl support': config_host.has_key('CONFIG_VIRGL')} 326f9332757SPaolo Bonzinisummary_info += {'curl support': config_host.has_key('CONFIG_CURL')} 327f9332757SPaolo Bonzinisummary_info += {'mingw32 support': targetos == 'windows'} 328f9332757SPaolo Bonzinisummary_info += {'Audio drivers': config_host['CONFIG_AUDIO_DRIVERS']} 329f9332757SPaolo Bonzinisummary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']} 330f9332757SPaolo Bonzinisummary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']} 331f9332757SPaolo Bonzinisummary_info += {'VirtFS support': config_host.has_key('CONFIG_VIRTFS')} 332f9332757SPaolo Bonzinisummary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')} 333f9332757SPaolo Bonzinisummary_info += {'VNC support': config_host.has_key('CONFIG_VNC')} 334f9332757SPaolo Bonziniif config_host.has_key('CONFIG_VNC') 335f9332757SPaolo Bonzini summary_info += {'VNC SASL support': config_host.has_key('CONFIG_VNC_SASL')} 336f9332757SPaolo Bonzini summary_info += {'VNC JPEG support': config_host.has_key('CONFIG_VNC_JPEG')} 337f9332757SPaolo Bonzini summary_info += {'VNC PNG support': config_host.has_key('CONFIG_VNC_PNG')} 338f9332757SPaolo Bonziniendif 339f9332757SPaolo Bonzinisummary_info += {'xen support': config_host.has_key('CONFIG_XEN_BACKEND')} 340f9332757SPaolo Bonziniif config_host.has_key('CONFIG_XEN_BACKEND') 341f9332757SPaolo Bonzini summary_info += {'xen ctrl version': config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']} 342f9332757SPaolo Bonziniendif 343f9332757SPaolo Bonzinisummary_info += {'brlapi support': config_host.has_key('CONFIG_BRLAPI')} 344f9332757SPaolo Bonzinisummary_info += {'Documentation': config_host.has_key('BUILD_DOCS')} 345f9332757SPaolo Bonzinisummary_info += {'PIE': get_option('b_pie')} 346f9332757SPaolo Bonzinisummary_info += {'vde support': config_host.has_key('CONFIG_VDE')} 347f9332757SPaolo Bonzinisummary_info += {'netmap support': config_host.has_key('CONFIG_NETMAP')} 348f9332757SPaolo Bonzinisummary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')} 349f9332757SPaolo Bonzinisummary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')} 350f9332757SPaolo Bonzinisummary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')} 351f9332757SPaolo Bonzinisummary_info += {'Install blobs': config_host.has_key('INSTALL_BLOBS')} 352f9332757SPaolo Bonzini# TODO: add back KVM/HAX/HVF/WHPX/TCG 353f9332757SPaolo Bonzini#summary_info += {'KVM support': have_kvm'} 354f9332757SPaolo Bonzini#summary_info += {'HAX support': have_hax'} 355f9332757SPaolo Bonzini#summary_info += {'HVF support': have_hvf'} 356f9332757SPaolo Bonzini#summary_info += {'WHPX support': have_whpx'} 357f9332757SPaolo Bonzini#summary_info += {'TCG support': have_tcg'} 358f9332757SPaolo Bonzini#if get_option('tcg') 359f9332757SPaolo Bonzini# summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')} 360f9332757SPaolo Bonzini# summary_info += {'TCG interpreter': config_host.has_key('CONFIG_TCG_INTERPRETER')} 361f9332757SPaolo Bonzini#endif 362f9332757SPaolo Bonzinisummary_info += {'malloc trim support': config_host.has_key('CONFIG_MALLOC_TRIM')} 363f9332757SPaolo Bonzinisummary_info += {'RDMA support': config_host.has_key('CONFIG_RDMA')} 364f9332757SPaolo Bonzinisummary_info += {'PVRDMA support': config_host.has_key('CONFIG_PVRDMA')} 365f9332757SPaolo Bonzinisummary_info += {'fdt support': config_host.has_key('CONFIG_FDT')} 366f9332757SPaolo Bonzinisummary_info += {'membarrier': config_host.has_key('CONFIG_MEMBARRIER')} 367f9332757SPaolo Bonzinisummary_info += {'preadv support': config_host.has_key('CONFIG_PREADV')} 368f9332757SPaolo Bonzinisummary_info += {'fdatasync': config_host.has_key('CONFIG_FDATASYNC')} 369f9332757SPaolo Bonzinisummary_info += {'madvise': config_host.has_key('CONFIG_MADVISE')} 370f9332757SPaolo Bonzinisummary_info += {'posix_madvise': config_host.has_key('CONFIG_POSIX_MADVISE')} 371f9332757SPaolo Bonzinisummary_info += {'posix_memalign': config_host.has_key('CONFIG_POSIX_MEMALIGN')} 372f9332757SPaolo Bonzinisummary_info += {'libcap-ng support': config_host.has_key('CONFIG_LIBCAP_NG')} 373f9332757SPaolo Bonzinisummary_info += {'vhost-net support': config_host.has_key('CONFIG_VHOST_NET')} 374f9332757SPaolo Bonzinisummary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPTO')} 375f9332757SPaolo Bonzinisummary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')} 376f9332757SPaolo Bonzinisummary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')} 377f9332757SPaolo Bonzinisummary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_KERNEL')} 378f9332757SPaolo Bonzinisummary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')} 379f9332757SPaolo Bonzinisummary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')} 380f9332757SPaolo Bonzinisummary_info += {'Trace backends': config_host['TRACE_BACKENDS']} 381f9332757SPaolo Bonziniif config_host['TRACE_BACKENDS'].split().contains('simple') 382f9332757SPaolo Bonzini summary_info += {'Trace output file': config_host['CONFIG_TRACE_FILE'] + '-<pid>'} 383f9332757SPaolo Bonziniendif 384f9332757SPaolo Bonzini# TODO: add back protocol and server version 385f9332757SPaolo Bonzinisummary_info += {'spice support': config_host.has_key('CONFIG_SPICE')} 386f9332757SPaolo Bonzinisummary_info += {'rbd support': config_host.has_key('CONFIG_RBD')} 387f9332757SPaolo Bonzinisummary_info += {'xfsctl support': config_host.has_key('CONFIG_XFS')} 388f9332757SPaolo Bonzinisummary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')} 389f9332757SPaolo Bonzinisummary_info += {'libusb': config_host.has_key('CONFIG_USB_LIBUSB')} 390f9332757SPaolo Bonzinisummary_info += {'usb net redir': config_host.has_key('CONFIG_USB_REDIR')} 391f9332757SPaolo Bonzinisummary_info += {'OpenGL support': config_host.has_key('CONFIG_OPENGL')} 392f9332757SPaolo Bonzinisummary_info += {'OpenGL dmabufs': config_host.has_key('CONFIG_OPENGL_DMABUF')} 393f9332757SPaolo Bonzinisummary_info += {'libiscsi support': config_host.has_key('CONFIG_LIBISCSI')} 394f9332757SPaolo Bonzinisummary_info += {'libnfs support': config_host.has_key('CONFIG_LIBNFS')} 395f9332757SPaolo Bonzinisummary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')} 396f9332757SPaolo Bonziniif targetos == 'windows' 397f9332757SPaolo Bonzini if 'WIN_SDK' in config_host 398f9332757SPaolo Bonzini summary_info += {'Windows SDK': config_host['WIN_SDK']} 399f9332757SPaolo Bonzini endif 400f9332757SPaolo Bonzini summary_info += {'QGA VSS support': config_host.has_key('CONFIG_QGA_VSS')} 401f9332757SPaolo Bonzini summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')} 402f9332757SPaolo Bonzini summary_info += {'QGA MSI support': config_host.has_key('CONFIG_QGA_MSI_ENABLED')} 403f9332757SPaolo Bonziniendif 404f9332757SPaolo Bonzinisummary_info += {'seccomp support': config_host.has_key('CONFIG_SECCOMP')} 405f9332757SPaolo Bonzinisummary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']} 406f9332757SPaolo Bonzinisummary_info += {'coroutine pool': config_host['CONFIG_COROUTINE_POOL'] == '1'} 407f9332757SPaolo Bonzinisummary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')} 408f9332757SPaolo Bonzinisummary_info += {'mutex debugging': config_host.has_key('CONFIG_DEBUG_MUTEX')} 409f9332757SPaolo Bonzinisummary_info += {'crypto afalg': config_host.has_key('CONFIG_AF_ALG')} 410f9332757SPaolo Bonzinisummary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')} 411bf0e56a3SMarc-André Lureausummary_info += {'gcov': get_option('b_coverage')} 412f9332757SPaolo Bonzinisummary_info += {'TPM support': config_host.has_key('CONFIG_TPM')} 413f9332757SPaolo Bonzinisummary_info += {'libssh support': config_host.has_key('CONFIG_LIBSSH')} 414f9332757SPaolo Bonzinisummary_info += {'QOM debugging': config_host.has_key('CONFIG_QOM_CAST_DEBUG')} 415f9332757SPaolo Bonzinisummary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')} 416f9332757SPaolo Bonzinisummary_info += {'lzo support': config_host.has_key('CONFIG_LZO')} 417f9332757SPaolo Bonzinisummary_info += {'snappy support': config_host.has_key('CONFIG_SNAPPY')} 418f9332757SPaolo Bonzinisummary_info += {'bzip2 support': config_host.has_key('CONFIG_BZIP2')} 419f9332757SPaolo Bonzinisummary_info += {'lzfse support': config_host.has_key('CONFIG_LZFSE')} 420f9332757SPaolo Bonzinisummary_info += {'zstd support': config_host.has_key('CONFIG_ZSTD')} 421f9332757SPaolo Bonzinisummary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')} 422f9332757SPaolo Bonzinisummary_info += {'libxml2': config_host.has_key('CONFIG_LIBXML2')} 423f9332757SPaolo Bonzinisummary_info += {'tcmalloc support': config_host.has_key('CONFIG_TCMALLOC')} 424f9332757SPaolo Bonzinisummary_info += {'jemalloc support': config_host.has_key('CONFIG_JEMALLOC')} 425f9332757SPaolo Bonzinisummary_info += {'avx2 optimization': config_host.has_key('CONFIG_AVX2_OPT')} 426f9332757SPaolo Bonzinisummary_info += {'avx512f optimization': config_host.has_key('CONFIG_AVX512F_OPT')} 427f9332757SPaolo Bonzinisummary_info += {'replication support': config_host.has_key('CONFIG_REPLICATION')} 428f9332757SPaolo Bonzinisummary_info += {'bochs support': config_host.has_key('CONFIG_BOCHS')} 429f9332757SPaolo Bonzinisummary_info += {'cloop support': config_host.has_key('CONFIG_CLOOP')} 430f9332757SPaolo Bonzinisummary_info += {'dmg support': config_host.has_key('CONFIG_DMG')} 431f9332757SPaolo Bonzinisummary_info += {'qcow v1 support': config_host.has_key('CONFIG_QCOW1')} 432f9332757SPaolo Bonzinisummary_info += {'vdi support': config_host.has_key('CONFIG_VDI')} 433f9332757SPaolo Bonzinisummary_info += {'vvfat support': config_host.has_key('CONFIG_VVFAT')} 434f9332757SPaolo Bonzinisummary_info += {'qed support': config_host.has_key('CONFIG_QED')} 435f9332757SPaolo Bonzinisummary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')} 436f9332757SPaolo Bonzinisummary_info += {'sheepdog support': config_host.has_key('CONFIG_SHEEPDOG')} 437f9332757SPaolo Bonzinisummary_info += {'capstone': config_host.has_key('CONFIG_CAPSTONE')} 438f9332757SPaolo Bonzinisummary_info += {'libpmem support': config_host.has_key('CONFIG_LIBPMEM')} 439f9332757SPaolo Bonzinisummary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')} 440f9332757SPaolo Bonzinisummary_info += {'libudev': config_host.has_key('CONFIG_LIBUDEV')} 441f9332757SPaolo Bonzinisummary_info += {'default devices': config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'} 442f9332757SPaolo Bonzinisummary_info += {'plugin support': config_host.has_key('CONFIG_PLUGIN')} 443f9332757SPaolo Bonzinisummary_info += {'fuzzing support': config_host.has_key('CONFIG_FUZZ')} 444f9332757SPaolo Bonziniif config_host.has_key('HAVE_GDB_BIN') 445f9332757SPaolo Bonzini summary_info += {'gdb': config_host['HAVE_GDB_BIN']} 446f9332757SPaolo Bonziniendif 447f9332757SPaolo Bonzinisummary_info += {'thread sanitizer': config_host.has_key('CONFIG_TSAN')} 448f9332757SPaolo Bonzinisummary_info += {'rng-none': config_host.has_key('CONFIG_RNG_NONE')} 449f9332757SPaolo Bonzinisummary_info += {'Linux keyring': config_host.has_key('CONFIG_SECRET_KEYRING')} 450f9332757SPaolo Bonzinisummary(summary_info, bool_yn: true) 451f9332757SPaolo Bonzini 452f9332757SPaolo Bonziniif not supported_cpus.contains(cpu) 453f9332757SPaolo Bonzini message() 454f9332757SPaolo Bonzini warning('SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!') 455f9332757SPaolo Bonzini message() 456f9332757SPaolo Bonzini message('CPU host architecture ' + cpu + ' support is not currently maintained.') 457f9332757SPaolo Bonzini message('The QEMU project intends to remove support for this host CPU in') 458f9332757SPaolo Bonzini message('a future release if nobody volunteers to maintain it and to') 459f9332757SPaolo Bonzini message('provide a build host for our continuous integration setup.') 460f9332757SPaolo Bonzini message('configure has succeeded and you can continue to build, but') 461f9332757SPaolo Bonzini message('if you care about QEMU on this platform you should contact') 462f9332757SPaolo Bonzini message('us upstream at qemu-devel@nongnu.org.') 463f9332757SPaolo Bonziniendif 464f9332757SPaolo Bonzini 465f9332757SPaolo Bonziniif not supported_oses.contains(targetos) 466f9332757SPaolo Bonzini message() 467f9332757SPaolo Bonzini warning('WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!') 468f9332757SPaolo Bonzini message() 469f9332757SPaolo Bonzini message('Host OS ' + targetos + 'support is not currently maintained.') 470f9332757SPaolo Bonzini message('The QEMU project intends to remove support for this host OS in') 471f9332757SPaolo Bonzini message('a future release if nobody volunteers to maintain it and to') 472f9332757SPaolo Bonzini message('provide a build host for our continuous integration setup.') 473f9332757SPaolo Bonzini message('configure has succeeded and you can continue to build, but') 474f9332757SPaolo Bonzini message('if you care about QEMU on this platform you should contact') 475f9332757SPaolo Bonzini message('us upstream at qemu-devel@nongnu.org.') 476f9332757SPaolo Bonziniendif 477