m = cc.find_library('m', required: false)
util = cc.find_library('util', required: false)
+winmm = []
socket = []
version_res = []
coref = []
hvf = []
if targetos == 'windows'
socket = cc.find_library('ws2_32')
+ winmm = cc.find_library('winmm')
win = import('windows')
version_res = win.compile_resources('version.rc',
xkbcommon = declare_dependency(compile_args: config_host['XKBCOMMON_CFLAGS'].split(),
link_args: config_host['XKBCOMMON_LIBS'].split())
endif
+slirp = not_found
+if config_host.has_key('CONFIG_SLIRP')
+ slirp = declare_dependency(compile_args: config_host['SLIRP_CFLAGS'].split(),
+ link_args: config_host['SLIRP_LIBS'].split())
+endif
+vde = not_found
+if config_host.has_key('CONFIG_VDE')
+ vde = declare_dependency(link_args: config_host['VDE_LIBS'].split())
+endif
+pulse = not_found
+if 'CONFIG_LIBPULSE' in config_host
+ pulse = declare_dependency(compile_args: config_host['PULSE_CFLAGS'].split(),
+ link_args: config_host['PULSE_LIBS'].split())
+endif
+alsa = not_found
+if 'CONFIG_ALSA' in config_host
+ alsa = declare_dependency(compile_args: config_host['ALSA_CFLAGS'].split(),
+ link_args: config_host['ALSA_LIBS'].split())
+endif
+jack = not_found
+if 'CONFIG_LIBJACK' in config_host
+ jack = declare_dependency(link_args: config_host['JACK_LIBS'].split())
+endif
+spice = not_found
+if 'CONFIG_SPICE' in config_host
+ spice = declare_dependency(compile_args: config_host['SPICE_CFLAGS'].split(),
+ link_args: config_host['SPICE_LIBS'].split())
+endif
rt = cc.find_library('rt', required: false)
+libmpathpersist = not_found
+if config_host.has_key('CONFIG_MPATH')
+ libmpathpersist = cc.find_library('mpathpersist')
+endif
libiscsi = not_found
if 'CONFIG_LIBISCSI' in config_host
libiscsi = declare_dependency(compile_args: config_host['LIBISCSI_CFLAGS'].split(),
if 'CONFIG_LIBUDEV' in config_host
libudev = declare_dependency(link_args: config_host['LIBUDEV_LIBS'].split())
endif
+brlapi = not_found
+if 'CONFIG_BRLAPI' in config_host
+ brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split())
+endif
+sdl = not_found
+if 'CONFIG_SDL' in config_host
+ sdl = declare_dependency(compile_args: config_host['SDL_CFLAGS'].split(),
+ link_args: config_host['SDL_LIBS'].split())
+endif
rbd = not_found
if 'CONFIG_RBD' in config_host
rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
if 'CONFIG_LZFSE' in config_host
liblzfse = declare_dependency(link_args: config_host['LZFSE_LIBS'].split())
endif
+oss = not_found
+if 'CONFIG_AUDIO_OSS' in config_host
+ oss = declare_dependency(link_args: config_host['OSS_LIBS'].split())
+endif
+dsound = not_found
+if 'CONFIG_AUDIO_DSOUND' in config_host
+ dsound = declare_dependency(link_args: config_host['DSOUND_LIBS'].split())
+endif
+coreaudio = not_found
+if 'CONFIG_AUDIO_COREAUDIO' in config_host
+ coreaudio = declare_dependency(link_args: config_host['COREAUDIO_LIBS'].split())
+endif
+opengl = not_found
+if 'CONFIG_OPENGL' in config_host
+ opengl = declare_dependency(link_args: config_host['OPENGL_LIBS'].split())
+else
+endif
+gtk = not_found
+if 'CONFIG_GTK' in config_host
+ gtk = declare_dependency(compile_args: config_host['GTK_CFLAGS'].split(),
+ link_args: config_host['GTK_LIBS'].split())
+endif
+vte = not_found
+if 'CONFIG_VTE' in config_host
+ vte = declare_dependency(compile_args: config_host['VTE_CFLAGS'].split(),
+ link_args: config_host['VTE_LIBS'].split())
+endif
+x11 = not_found
+if 'CONFIG_X11' in config_host
+ x11 = declare_dependency(compile_args: config_host['X11_CFLAGS'].split(),
+ link_args: config_host['X11_LIBS'].split())
+endif
+curses = not_found
+if 'CONFIG_CURSES' in config_host
+ curses = declare_dependency(compile_args: config_host['CURSES_CFLAGS'].split(),
+ link_args: config_host['CURSES_LIBS'].split())
+endif
+iconv = not_found
+if 'CONFIG_ICONV' in config_host
+ iconv = declare_dependency(compile_args: config_host['ICONV_CFLAGS'].split(),
+ link_args: config_host['ICONV_LIBS'].split())
+endif
+gio = not_found
+if 'CONFIG_GIO' in config_host
+ gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(),
+ link_args: config_host['GIO_LIBS'].split())
+endif
+png = not_found
+if 'CONFIG_VNC_PNG' in config_host
+ png = declare_dependency(compile_args: config_host['PNG_CFLAGS'].split(),
+ link_args: config_host['PNG_LIBS'].split())
+endif
+jpeg = not_found
+if 'CONFIG_VNC_JPEG' in config_host
+ jpeg = declare_dependency(compile_args: config_host['JPEG_CFLAGS'].split(),
+ link_args: config_host['JPEG_LIBS'].split())
+endif
+sasl = not_found
+if 'CONFIG_VNC_SASL' in config_host
+ sasl = declare_dependency(compile_args: config_host['SASL_CFLAGS'].split(),
+ link_args: config_host['SASL_LIBS'].split())
+endif
+fdt = not_found
+if 'CONFIG_FDT' in config_host
+ fdt = declare_dependency(compile_args: config_host['FDT_CFLAGS'].split(),
+ link_args: config_host['FDT_LIBS'].split())
+endif
+snappy = not_found
+if 'CONFIG_SNAPPY' in config_host
+ snappy = declare_dependency(link_args: config_host['SNAPPY_LIBS'].split())
+endif
+lzo = not_found
+if 'CONFIG_LZO' in config_host
+ lzo = declare_dependency(link_args: config_host['LZO_LIBS'].split())
+endif
+rdma = not_found
+if 'CONFIG_RDMA' in config_host
+ rdma = declare_dependency(link_args: config_host['RDMA_LIBS'].split())
+endif
+numa = not_found
+if 'CONFIG_NUMA' in config_host
+ numa = declare_dependency(link_args: config_host['NUMA_LIBS'].split())
+endif
+xen = not_found
+if 'CONFIG_XEN_BACKEND' in config_host
+ xen = declare_dependency(compile_args: config_host['XEN_CFLAGS'].split(),
+ link_args: config_host['XEN_LIBS'].split())
+endif
+cacard = not_found
+if 'CONFIG_SMARTCARD' in config_host
+ cacard = declare_dependency(compile_args: config_host['SMARTCARD_CFLAGS'].split(),
+ link_args: config_host['SMARTCARD_LIBS'].split())
+endif
+usbredir = not_found
+if 'CONFIG_USB_REDIR' in config_host
+ usbredir = declare_dependency(compile_args: config_host['USB_REDIR_CFLAGS'].split(),
+ link_args: config_host['USB_REDIR_LIBS'].split())
+endif
+libusb = not_found
+if 'CONFIG_USB_LIBUSB' in config_host
+ libusb = declare_dependency(compile_args: config_host['LIBUSB_CFLAGS'].split(),
+ link_args: config_host['LIBUSB_LIBS'].split())
+endif
create_config = find_program('scripts/create_config')
minikconf = find_program('scripts/minikconf.py')
stub_ss = ss.source_set()
trace_ss = ss.source_set()
block_ss = ss.source_set()
+blockdev_ss = ss.source_set()
+qmp_ss = ss.source_set()
common_ss = ss.source_set()
softmmu_ss = ss.source_set()
user_ss = ss.source_set()
subdir('qom')
subdir('authz')
subdir('crypto')
-subdir('storage-daemon')
subdir('ui')
qemuutil = declare_dependency(link_with: libqemuutil,
sources: genh + version_res)
+decodetree = generator(find_program('scripts/decodetree.py'),
+ output: 'decode-@BASENAME@.c.inc',
+ arguments: ['@INPUT@', '@EXTRA_ARGS@', '-o', '@OUTPUT@'])
+
+subdir('audio')
subdir('io')
subdir('chardev')
subdir('fsdev')
+subdir('libdecnumber')
subdir('target')
+subdir('dump')
block_ss.add(files(
'block.c',
subdir('scsi')
subdir('block')
+blockdev_ss.add(files(
+ 'blockdev.c',
+ 'blockdev-nbd.c',
+ 'iothread.c',
+ 'job-qmp.c',
+))
+
+# os-posix.c contains POSIX-specific functions used by qemu-storage-daemon,
+# os-win32.c does not
+blockdev_ss.add(when: 'CONFIG_POSIX', if_true: files('os-posix.c'))
+softmmu_ss.add(when: 'CONFIG_WIN32', if_true: [files('os-win32.c')])
+
+softmmu_ss.add_all(blockdev_ss)
+softmmu_ss.add(files(
+ 'bootdevice.c',
+ 'dma-helpers.c',
+ 'qdev-monitor.c',
+), sdl)
+
+softmmu_ss.add(when: 'CONFIG_TPM', if_true: files('tpm.c'))
+softmmu_ss.add(when: 'CONFIG_SECCOMP', if_true: [files('qemu-seccomp.c'), seccomp])
+softmmu_ss.add(when: ['CONFIG_FDT', fdt], if_true: [files('device_tree.c')])
+
+common_ss.add(files('cpus-common.c'))
+
+subdir('softmmu')
+subdir('backends')
+subdir('disas')
+subdir('migration')
+subdir('monitor')
+subdir('net')
+subdir('replay')
+subdir('hw')
+subdir('accel')
+subdir('linux-user')
+
+linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
+specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
+
+# needed for fuzzing binaries
+subdir('tests/qtest/libqos')
+
block_mods = []
softmmu_mods = []
foreach d, list : modules
link_args: '@block.syms',
dependencies: [crypto, io])
+qmp_ss = qmp_ss.apply(config_host, strict: false)
+libqmp = static_library('qmp', qmp_ss.sources() + genh,
+ dependencies: qmp_ss.dependencies(),
+ name_suffix: 'fa',
+ build_by_default: false)
+
+qmp = declare_dependency(link_whole: [libqmp])
+
foreach m : block_mods + softmmu_mods
shared_module(m.name(),
name_prefix: '',
if target.endswith('-softmmu')
qemu_target_name = 'qemu-system-' + target_name
target_type='system'
+ t = target_softmmu_arch[arch].apply(config_target, strict: false)
+ arch_srcs += t.sources()
+
+ hw_dir = target_name == 'sparc64' ? 'sparc64' : arch
+ hw = hw_arch[hw_dir].apply(config_target, strict: false)
+ arch_srcs += hw.sources()
+
arch_srcs += config_devices_h[target]
else
+ abi = config_target['TARGET_ABI_DIR']
target_type='user'
qemu_target_name = 'qemu-' + target_name
if 'CONFIG_LINUX_USER' in config_target
endif
target_inc += include_directories(
base_dir,
- base_dir / config_target['TARGET_ABI_DIR'],
+ base_dir / abi,
)
+ if 'CONFIG_LINUX_USER' in config_target
+ dir = base_dir / abi
+ arch_srcs += files(dir / 'signal.c', dir / 'cpu_loop.c')
+ if config_target.has_key('TARGET_SYSTBL_ABI')
+ arch_srcs += \
+ syscall_nr_generators[abi].process(base_dir / abi / config_target['TARGET_SYSTBL'],
+ extra_args : config_target['TARGET_SYSTBL_ABI'])
+ endif
+ endif
endif
+ t = target_arch[arch].apply(config_target, strict: false)
+ arch_srcs += t.sources()
+
target_common = common_ss.apply(config_target, strict: false)
objects = common_all.extract_objects(target_common.sources())
endforeach
# Other build targets
+
if 'CONFIG_GUEST_AGENT' in config_host
subdir('qga')
endif
dependencies: [block, qemuutil], install: true)
endif
+ subdir('storage-daemon')
subdir('contrib/rdmacm-mux')
subdir('contrib/elf2dmp')
dependencies: [qemuutil, libcap_ng],
install: true,
install_dir: get_option('libexecdir'))
+
+ executable('qemu-pr-helper', files('scsi/qemu-pr-helper.c', 'scsi/utils.c'),
+ dependencies: [authz, crypto, io, qom, qemuutil,
+ libcap_ng, libudev, libmpathpersist],
+ install: true)
endif
if 'CONFIG_IVSHMEM' in config_host