build-system: clean up TCG/TCI configury
Make CONFIG_TCG_INTERPRETER a Meson option, and enable TCI (though with a warning) if the host CPU is unsupported, making it more similar to other --enable-* options. Remove TCG-specific include paths from !CONFIG_TCG builds. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5a140b255d
commit
23a77b2d18
11
configure
vendored
11
configure
vendored
@ -359,7 +359,7 @@ sanitizers="no"
|
|||||||
tsan="no"
|
tsan="no"
|
||||||
fortify_source="$default_feature"
|
fortify_source="$default_feature"
|
||||||
strip_opt="yes"
|
strip_opt="yes"
|
||||||
tcg_interpreter="no"
|
tcg_interpreter="false"
|
||||||
bigendian="no"
|
bigendian="no"
|
||||||
mingw32="no"
|
mingw32="no"
|
||||||
gcov="no"
|
gcov="no"
|
||||||
@ -1119,9 +1119,9 @@ for opt do
|
|||||||
;;
|
;;
|
||||||
--enable-whpx) whpx="enabled"
|
--enable-whpx) whpx="enabled"
|
||||||
;;
|
;;
|
||||||
--disable-tcg-interpreter) tcg_interpreter="no"
|
--disable-tcg-interpreter) tcg_interpreter="true"
|
||||||
;;
|
;;
|
||||||
--enable-tcg-interpreter) tcg_interpreter="yes"
|
--enable-tcg-interpreter) tcg_interpreter="false"
|
||||||
;;
|
;;
|
||||||
--disable-cap-ng) cap_ng="disabled"
|
--disable-cap-ng) cap_ng="disabled"
|
||||||
;;
|
;;
|
||||||
@ -5834,11 +5834,6 @@ fi
|
|||||||
if test "$optreset" = "yes" ; then
|
if test "$optreset" = "yes" ; then
|
||||||
echo "HAVE_OPTRESET=y" >> $config_host_mak
|
echo "HAVE_OPTRESET=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$tcg" = "enabled"; then
|
|
||||||
if test "$tcg_interpreter" = "yes" ; then
|
|
||||||
echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test "$fdatasync" = "yes" ; then
|
if test "$fdatasync" = "yes" ; then
|
||||||
echo "CONFIG_FDATASYNC=y" >> $config_host_mak
|
echo "CONFIG_FDATASYNC=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
@ -22,5 +22,3 @@ common_ss.add(when: 'CONFIG_SH4_DIS', if_true: files('sh4.c'))
|
|||||||
common_ss.add(when: 'CONFIG_SPARC_DIS', if_true: files('sparc.c'))
|
common_ss.add(when: 'CONFIG_SPARC_DIS', if_true: files('sparc.c'))
|
||||||
common_ss.add(when: 'CONFIG_XTENSA_DIS', if_true: files('xtensa.c'))
|
common_ss.add(when: 'CONFIG_XTENSA_DIS', if_true: files('xtensa.c'))
|
||||||
common_ss.add(when: capstone, if_true: files('capstone.c'))
|
common_ss.add(when: capstone, if_true: files('capstone.c'))
|
||||||
|
|
||||||
specific_ss.add(when: 'CONFIG_TCG_INTERPRETER', if_true: files('tci.c'))
|
|
||||||
|
46
meson.build
46
meson.build
@ -113,25 +113,8 @@ if targetos == 'linux'
|
|||||||
language: ['c', 'cpp'])
|
language: ['c', 'cpp'])
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if 'CONFIG_TCG_INTERPRETER' in config_host
|
add_project_arguments('-iquote', '.',
|
||||||
tcg_arch = 'tci'
|
|
||||||
elif config_host['ARCH'] == 'sparc64'
|
|
||||||
tcg_arch = 'sparc'
|
|
||||||
elif config_host['ARCH'] == 's390x'
|
|
||||||
tcg_arch = 's390'
|
|
||||||
elif config_host['ARCH'] in ['x86_64', 'x32']
|
|
||||||
tcg_arch = 'i386'
|
|
||||||
elif config_host['ARCH'] == 'ppc64'
|
|
||||||
tcg_arch = 'ppc'
|
|
||||||
elif config_host['ARCH'] in ['riscv32', 'riscv64']
|
|
||||||
tcg_arch = 'riscv'
|
|
||||||
else
|
|
||||||
tcg_arch = config_host['ARCH']
|
|
||||||
endif
|
|
||||||
add_project_arguments('-iquote', meson.current_source_dir() / 'tcg' / tcg_arch,
|
|
||||||
'-iquote', '.',
|
|
||||||
'-iquote', meson.current_source_dir(),
|
'-iquote', meson.current_source_dir(),
|
||||||
'-iquote', meson.current_source_dir() / 'accel/tcg',
|
|
||||||
'-iquote', meson.current_source_dir() / 'include',
|
'-iquote', meson.current_source_dir() / 'include',
|
||||||
'-iquote', meson.current_source_dir() / 'disas/libvixl',
|
'-iquote', meson.current_source_dir() / 'disas/libvixl',
|
||||||
language: ['c', 'cpp', 'objc'])
|
language: ['c', 'cpp', 'objc'])
|
||||||
@ -226,14 +209,33 @@ if not get_option('hax').disabled()
|
|||||||
accelerators += 'CONFIG_HAX'
|
accelerators += 'CONFIG_HAX'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
tcg_arch = config_host['ARCH']
|
||||||
if not get_option('tcg').disabled()
|
if not get_option('tcg').disabled()
|
||||||
if cpu not in supported_cpus
|
if cpu not in supported_cpus
|
||||||
if 'CONFIG_TCG_INTERPRETER' in config_host
|
if get_option('tcg_interpreter')
|
||||||
warning('Unsupported CPU @0@, will use TCG with TCI (experimental)'.format(cpu))
|
warning('Unsupported CPU @0@, will use TCG with TCI (experimental)'.format(cpu))
|
||||||
else
|
else
|
||||||
error('Unsupported CPU @0@, try --enable-tcg-interpreter'.format(cpu))
|
error('Unsupported CPU @0@, try --enable-tcg-interpreter'.format(cpu))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
if get_option('tcg_interpreter')
|
||||||
|
tcg_arch = 'tci'
|
||||||
|
elif config_host['ARCH'] == 'sparc64'
|
||||||
|
tcg_arch = 'sparc'
|
||||||
|
elif config_host['ARCH'] == 's390x'
|
||||||
|
tcg_arch = 's390'
|
||||||
|
elif config_host['ARCH'] in ['x86_64', 'x32']
|
||||||
|
tcg_arch = 'i386'
|
||||||
|
elif config_host['ARCH'] == 'ppc64'
|
||||||
|
tcg_arch = 'ppc'
|
||||||
|
elif config_host['ARCH'] in ['riscv32', 'riscv64']
|
||||||
|
tcg_arch = 'riscv'
|
||||||
|
endif
|
||||||
|
add_project_arguments('-iquote', meson.current_source_dir() / 'tcg' / tcg_arch,
|
||||||
|
'-iquote', meson.current_source_dir() / 'accel/tcg',
|
||||||
|
language: ['c', 'cpp', 'objc'])
|
||||||
|
|
||||||
accelerators += 'CONFIG_TCG'
|
accelerators += 'CONFIG_TCG'
|
||||||
config_host += { 'CONFIG_TCG': 'y' }
|
config_host += { 'CONFIG_TCG': 'y' }
|
||||||
endif
|
endif
|
||||||
@ -1234,7 +1236,9 @@ foreach target : target_dirs
|
|||||||
if sym == 'CONFIG_TCG' or target in accelerator_targets.get(sym, [])
|
if sym == 'CONFIG_TCG' or target in accelerator_targets.get(sym, [])
|
||||||
config_target += { sym: 'y' }
|
config_target += { sym: 'y' }
|
||||||
config_all += { sym: 'y' }
|
config_all += { sym: 'y' }
|
||||||
if sym == 'CONFIG_XEN' and have_xen_pci_passthrough
|
if sym == 'CONFIG_TCG' and tcg_arch == 'tci'
|
||||||
|
config_target += { 'CONFIG_TCG_INTERPRETER': 'y' }
|
||||||
|
elif sym == 'CONFIG_XEN' and have_xen_pci_passthrough
|
||||||
config_target += { 'CONFIG_XEN_PCI_PASSTHROUGH': 'y' }
|
config_target += { 'CONFIG_XEN_PCI_PASSTHROUGH': 'y' }
|
||||||
endif
|
endif
|
||||||
accel_kconfig += [ sym + '=y' ]
|
accel_kconfig += [ sym + '=y' ]
|
||||||
@ -2411,7 +2415,7 @@ summary_info += {'WHPX support': config_all.has_key('CONFIG_WHPX')}
|
|||||||
summary_info += {'TCG support': config_all.has_key('CONFIG_TCG')}
|
summary_info += {'TCG support': config_all.has_key('CONFIG_TCG')}
|
||||||
if config_all.has_key('CONFIG_TCG')
|
if config_all.has_key('CONFIG_TCG')
|
||||||
summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')}
|
summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')}
|
||||||
summary_info += {'TCG interpreter': config_host.has_key('CONFIG_TCG_INTERPRETER')}
|
summary_info += {'TCG interpreter': tcg_arch == 'tci'}
|
||||||
endif
|
endif
|
||||||
summary_info += {'malloc trim support': has_malloc_trim}
|
summary_info += {'malloc trim support': has_malloc_trim}
|
||||||
summary_info += {'RDMA support': config_host.has_key('CONFIG_RDMA')}
|
summary_info += {'RDMA support': config_host.has_key('CONFIG_RDMA')}
|
||||||
|
@ -37,6 +37,8 @@ option('xen_pci_passthrough', type: 'feature', value: 'auto',
|
|||||||
description: 'Xen PCI passthrough support')
|
description: 'Xen PCI passthrough support')
|
||||||
option('tcg', type: 'feature', value: 'auto',
|
option('tcg', type: 'feature', value: 'auto',
|
||||||
description: 'TCG support')
|
description: 'TCG support')
|
||||||
|
option('tcg_interpreter', type: 'boolean', value: false,
|
||||||
|
description: 'TCG bytecode interpreter (TCI)')
|
||||||
option('cfi', type: 'boolean', value: 'false',
|
option('cfi', type: 'boolean', value: 'false',
|
||||||
description: 'Control-Flow Integrity (CFI)')
|
description: 'Control-Flow Integrity (CFI)')
|
||||||
option('cfi_debug', type: 'boolean', value: 'false',
|
option('cfi_debug', type: 'boolean', value: 'false',
|
||||||
|
Loading…
Reference in New Issue
Block a user