|
@@ -1170,9 +1170,35 @@ if not fdt.found() and fdt_required.length() > 0
|
|
error('fdt not available but required by targets ' + ', '.join(fdt_required))
|
|
error('fdt not available but required by targets ' + ', '.join(fdt_required))
|
|
endif
|
|
endif
|
|
|
|
|
|
|
|
+ucontext = not_found
|
|
|
|
+slirp_opt = 'disabled'
|
|
|
|
+if get_option('ucontext').enabled()
|
|
|
|
+ if not fs.is_dir(meson.current_source_dir() / 'libucontext/arch' / cpu)
|
|
|
|
+ error('libucontext is wanted but not implemented for host ' + cpu)
|
|
|
|
+ endif
|
|
|
|
+ arch = host_machine.cpu()
|
|
|
|
+ ucontext_cargs = ['-DG_LOG_DOMAIN="ucontext"', '-DCUSTOM_IMPL']
|
|
|
|
+ ucontext_files = [
|
|
|
|
+ 'libucontext/arch' / arch / 'getcontext.S',
|
|
|
|
+ 'libucontext/arch' / arch / 'setcontext.S',
|
|
|
|
+ 'libucontext/arch' / arch / 'makecontext.c',
|
|
|
|
+ 'libucontext/arch' / arch / 'startcontext.S',
|
|
|
|
+ 'libucontext/arch' / arch / 'swapcontext.S',
|
|
|
|
+ ]
|
|
|
|
+
|
|
|
|
+ ucontext_inc = include_directories('libucontext/include')
|
|
|
|
+ libucontext = static_library('ucontext',
|
|
|
|
+ sources: ucontext_files,
|
|
|
|
+ c_args: ucontext_cargs,
|
|
|
|
+ include_directories: ucontext_inc)
|
|
|
|
+ ucontext = declare_dependency(link_with: libucontext,
|
|
|
|
+ include_directories: ucontext_inc)
|
|
|
|
+endif
|
|
|
|
+
|
|
config_host_data.set('CONFIG_CAPSTONE', capstone.found())
|
|
config_host_data.set('CONFIG_CAPSTONE', capstone.found())
|
|
config_host_data.set('CONFIG_FDT', fdt.found())
|
|
config_host_data.set('CONFIG_FDT', fdt.found())
|
|
config_host_data.set('CONFIG_SLIRP', slirp.found())
|
|
config_host_data.set('CONFIG_SLIRP', slirp.found())
|
|
|
|
+config_host_data.set('CONFIG_LIBUCONTEXT', ucontext.found())
|
|
|
|
|
|
#####################
|
|
#####################
|
|
# Generated sources #
|
|
# Generated sources #
|
|
@@ -1399,7 +1425,7 @@ util_ss.add_all(trace_ss)
|
|
util_ss = util_ss.apply(config_all, strict: false)
|
|
util_ss = util_ss.apply(config_all, strict: false)
|
|
libqemuutil = static_library('qemuutil',
|
|
libqemuutil = static_library('qemuutil',
|
|
sources: util_ss.sources() + stub_ss.sources() + genh,
|
|
sources: util_ss.sources() + stub_ss.sources() + genh,
|
|
- dependencies: [util_ss.dependencies(), m, glib, socket, malloc])
|
|
|
|
|
|
+ dependencies: [util_ss.dependencies(), m, glib, socket, malloc, ucontext])
|
|
qemuutil = declare_dependency(link_with: libqemuutil,
|
|
qemuutil = declare_dependency(link_with: libqemuutil,
|
|
sources: genh + version_res)
|
|
sources: genh + version_res)
|
|
|
|
|
|
@@ -2049,6 +2075,7 @@ if targetos == 'windows'
|
|
summary_info += {'QGA MSI support': config_host.has_key('CONFIG_QGA_MSI')}
|
|
summary_info += {'QGA MSI support': config_host.has_key('CONFIG_QGA_MSI')}
|
|
endif
|
|
endif
|
|
summary_info += {'seccomp support': config_host.has_key('CONFIG_SECCOMP')}
|
|
summary_info += {'seccomp support': config_host.has_key('CONFIG_SECCOMP')}
|
|
|
|
+summary_info += {'libucontext support': ucontext.found()}
|
|
summary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']}
|
|
summary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']}
|
|
summary_info += {'coroutine pool': config_host['CONFIG_COROUTINE_POOL'] == '1'}
|
|
summary_info += {'coroutine pool': config_host['CONFIG_COROUTINE_POOL'] == '1'}
|
|
summary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
|
|
summary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
|