capstone: Remove the capstone submodule

Now that we allow compiling with Capstone v3.0.5 again, all our supported
build hosts should provide at least this version of the disassembler
library, so we do not need to ship this as a submodule anymore.

Message-Id: <20220516145823.148450-4-thuth@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Thomas Huth 2022-05-16 16:58:23 +02:00
parent 43ecd16678
commit 83602083b4
8 changed files with 11 additions and 144 deletions

View File

@ -42,7 +42,7 @@ build-system-ubuntu:
variables:
IMAGE: ubuntu2004
CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-slirp=system
--enable-capstone=system
--enable-capstone
TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
microblazeel-softmmu mips64el-softmmu
MAKE_CHECK_ARGS: check-build
@ -119,7 +119,7 @@ build-system-fedora:
variables:
IMAGE: fedora
CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
--enable-fdt=system --enable-slirp=system --enable-capstone=system
--enable-fdt=system --enable-slirp=system --enable-capstone
TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
MAKE_CHECK_ARGS: check-build

View File

@ -57,7 +57,7 @@ msys2-64bit:
- $env:CHERE_INVOKING = 'yes' # Preserve the current working directory
- $env:MSYSTEM = 'MINGW64' # Start a 64 bit Mingw environment
- .\msys64\usr\bin\bash -lc './configure --target-list=x86_64-softmmu
--enable-capstone=system --without-default-devices'
--enable-capstone --without-default-devices'
- .\msys64\usr\bin\bash -lc "sed -i '/^ROMS=/d' build/config-host.mak"
- .\msys64\usr\bin\bash -lc 'make -j2'
- .\msys64\usr\bin\bash -lc 'make check'
@ -90,7 +90,6 @@ msys2-32bit:
- $env:MSYSTEM = 'MINGW32' # Start a 32-bit MinG environment
- mkdir output
- cd output
- ..\msys64\usr\bin\bash -lc "../configure --target-list=ppc64-softmmu
--enable-capstone=system"
- ..\msys64\usr\bin\bash -lc "../configure --target-list=ppc64-softmmu"
- ..\msys64\usr\bin\bash -lc 'make -j2'
- ..\msys64\usr\bin\bash -lc 'make check'

3
.gitmodules vendored
View File

@ -31,9 +31,6 @@
[submodule "ui/keycodemapdb"]
path = ui/keycodemapdb
url = https://gitlab.com/qemu-project/keycodemapdb.git
[submodule "capstone"]
path = capstone
url = https://gitlab.com/qemu-project/capstone.git
[submodule "roms/seabios-hppa"]
path = roms/seabios-hppa
url = https://gitlab.com/qemu-project/seabios-hppa.git

@ -1 +0,0 @@
Subproject commit f8b1b833015a4ae47110ed068e0deb7106ced66d

21
configure vendored
View File

@ -307,10 +307,8 @@ skip_meson=no
# 1. Track which submodules are needed
if test "$default_feature" = no ; then
capstone="disabled"
slirp="disabled"
else
capstone="auto"
slirp="auto"
fi
fdt="auto"
@ -869,14 +867,6 @@ for opt do
--enable-uuid|--disable-uuid)
echo "$0: $opt is obsolete, UUID support is always built" >&2
;;
--disable-capstone) capstone="disabled"
;;
--enable-capstone) capstone="enabled"
;;
--enable-capstone=git) capstone="internal"
;;
--enable-capstone=*) capstone="$optarg"
;;
--with-git=*) git="$optarg"
;;
--with-git-submodules=*)
@ -1566,16 +1556,6 @@ case "$fdt" in
;;
esac
##########################################
# capstone
case "$capstone" in
auto | enabled | internal)
# Simpler to always update submodule, even if not needed.
git_submodules="${git_submodules} capstone"
;;
esac
##########################################
# check and set a backend for coroutine
@ -2220,7 +2200,6 @@ if test "$skip_meson" = no; then
test "$werror" = yes && meson_option_add -Dwerror=true
# QEMU options
test "$capstone" != auto && meson_option_add "-Dcapstone=$capstone"
test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
test "$fdt" != auto && meson_option_add "-Dfdt=$fdt"
test -n "${LIB_FUZZING_ENGINE+xxx}" && meson_option_add "-Dfuzzing_engine=$LIB_FUZZING_ENGINE"

View File

@ -2522,13 +2522,10 @@ genh += custom_target('config-poison.h',
##############
capstone = not_found
capstone_opt = get_option('capstone')
if capstone_opt in ['enabled', 'auto', 'system']
have_internal = fs.exists(meson.current_source_dir() / 'capstone/Makefile')
if not get_option('capstone').auto() or have_system or have_user
capstone = dependency('capstone', version: '>=3.0.5',
kwargs: static_kwargs, method: 'pkg-config',
required: capstone_opt == 'system' or
capstone_opt == 'enabled' and not have_internal)
required: get_option('capstone'))
# Some versions of capstone have broken pkg-config file
# that reports a wrong -I path, causing the #include to
@ -2537,110 +2534,10 @@ if capstone_opt in ['enabled', 'auto', 'system']
if capstone.found() and not cc.compiles('#include <capstone.h>',
dependencies: [capstone])
capstone = not_found
if capstone_opt == 'system'
error('system capstone requested, it does not appear to work')
if get_option('capstone').enabled()
error('capstone requested, but it does not appear to work')
endif
endif
if capstone.found()
capstone_opt = 'system'
elif have_internal
capstone_opt = 'internal'
else
capstone_opt = 'disabled'
endif
endif
if capstone_opt == 'internal'
capstone_data = configuration_data()
capstone_data.set('CAPSTONE_USE_SYS_DYN_MEM', '1')
capstone_files = files(
'capstone/cs.c',
'capstone/MCInst.c',
'capstone/MCInstrDesc.c',
'capstone/MCRegisterInfo.c',
'capstone/SStream.c',
'capstone/utils.c'
)
if 'CONFIG_ARM_DIS' in config_all_disas
capstone_data.set('CAPSTONE_HAS_ARM', '1')
capstone_files += files(
'capstone/arch/ARM/ARMDisassembler.c',
'capstone/arch/ARM/ARMInstPrinter.c',
'capstone/arch/ARM/ARMMapping.c',
'capstone/arch/ARM/ARMModule.c'
)
endif
# FIXME: This config entry currently depends on a c++ compiler.
# Which is needed for building libvixl, but not for capstone.
if 'CONFIG_ARM_A64_DIS' in config_all_disas
capstone_data.set('CAPSTONE_HAS_ARM64', '1')
capstone_files += files(
'capstone/arch/AArch64/AArch64BaseInfo.c',
'capstone/arch/AArch64/AArch64Disassembler.c',
'capstone/arch/AArch64/AArch64InstPrinter.c',
'capstone/arch/AArch64/AArch64Mapping.c',
'capstone/arch/AArch64/AArch64Module.c'
)
endif
if 'CONFIG_PPC_DIS' in config_all_disas
capstone_data.set('CAPSTONE_HAS_POWERPC', '1')
capstone_files += files(
'capstone/arch/PowerPC/PPCDisassembler.c',
'capstone/arch/PowerPC/PPCInstPrinter.c',
'capstone/arch/PowerPC/PPCMapping.c',
'capstone/arch/PowerPC/PPCModule.c'
)
endif
if 'CONFIG_S390_DIS' in config_all_disas
capstone_data.set('CAPSTONE_HAS_SYSZ', '1')
capstone_files += files(
'capstone/arch/SystemZ/SystemZDisassembler.c',
'capstone/arch/SystemZ/SystemZInstPrinter.c',
'capstone/arch/SystemZ/SystemZMapping.c',
'capstone/arch/SystemZ/SystemZModule.c',
'capstone/arch/SystemZ/SystemZMCTargetDesc.c'
)
endif
if 'CONFIG_I386_DIS' in config_all_disas
capstone_data.set('CAPSTONE_HAS_X86', 1)
capstone_files += files(
'capstone/arch/X86/X86Disassembler.c',
'capstone/arch/X86/X86DisassemblerDecoder.c',
'capstone/arch/X86/X86ATTInstPrinter.c',
'capstone/arch/X86/X86IntelInstPrinter.c',
'capstone/arch/X86/X86InstPrinterCommon.c',
'capstone/arch/X86/X86Mapping.c',
'capstone/arch/X86/X86Module.c'
)
endif
configure_file(output: 'capstone-defs.h', configuration: capstone_data)
capstone_cargs = [
# FIXME: There does not seem to be a way to completely replace the c_args
# that come from add_project_arguments() -- we can only add to them.
# So: disable all warnings with a big hammer.
'-Wno-error', '-w',
# Include all configuration defines via a header file, which will wind up
# as a dependency on the object file, and thus changes here will result
# in a rebuild.
'-include', 'capstone-defs.h'
]
libcapstone = static_library('capstone',
build_by_default: false,
sources: capstone_files,
c_args: capstone_cargs,
include_directories: 'capstone/include')
capstone = declare_dependency(link_with: libcapstone,
include_directories: 'capstone/include/capstone')
endif
slirp = not_found
@ -3970,7 +3867,7 @@ summary_info += {'bzip2 support': libbzip2}
summary_info += {'lzfse support': liblzfse}
summary_info += {'zstd support': zstd}
summary_info += {'NUMA host support': numa}
summary_info += {'capstone': capstone_opt == 'internal' ? capstone_opt : capstone}
summary_info += {'capstone': capstone}
summary_info += {'libpmem support': libpmem}
summary_info += {'libdaxctl support': libdaxctl}
summary_info += {'libudev': libudev}

View File

@ -252,8 +252,7 @@ option('virtfs', type: 'feature', value: 'auto',
option('virtiofsd', type: 'feature', value: 'auto',
description: 'build virtiofs daemon (virtiofsd)')
option('capstone', type: 'combo', value: 'auto',
choices: ['disabled', 'enabled', 'auto', 'system', 'internal'],
option('capstone', type: 'feature', value: 'auto',
description: 'Whether and how to find the capstone library')
option('slirp', type: 'combo', value: 'auto',
choices: ['disabled', 'enabled', 'auto', 'system', 'internal'],

View File

@ -16,9 +16,6 @@ meson_options_help() {
printf "%s\n" ' --enable-block-drv-whitelist-in-tools'
printf "%s\n" ' use block whitelist also in tools instead of only'
printf "%s\n" ' QEMU'
printf "%s\n" ' --enable-capstone[=CHOICE]'
printf "%s\n" ' Whether and how to find the capstone library'
printf "%s\n" ' (choices: auto/disabled/enabled/internal/system)'
printf "%s\n" ' --enable-cfi Control-Flow Integrity (CFI)'
printf "%s\n" ' --enable-cfi-debug Verbose errors in case of CFI violation'
printf "%s\n" ' --enable-debug-mutex mutex debugging support'
@ -77,6 +74,7 @@ meson_options_help() {
printf "%s\n" ' brlapi brlapi character device driver'
printf "%s\n" ' bzip2 bzip2 support for DMG images'
printf "%s\n" ' cap-ng cap_ng support'
printf "%s\n" ' capstone Whether and how to find the capstone library'
printf "%s\n" ' cloop cloop image format support'
printf "%s\n" ' cocoa Cocoa user interface (macOS only)'
printf "%s\n" ' coreaudio CoreAudio sound support'
@ -209,7 +207,6 @@ _meson_option_parse() {
--disable-cap-ng) printf "%s" -Dcap_ng=disabled ;;
--enable-capstone) printf "%s" -Dcapstone=enabled ;;
--disable-capstone) printf "%s" -Dcapstone=disabled ;;
--enable-capstone=*) quote_sh "-Dcapstone=$2" ;;
--enable-cfi) printf "%s" -Dcfi=true ;;
--disable-cfi) printf "%s" -Dcfi=false ;;
--enable-cfi-debug) printf "%s" -Dcfi_debug=true ;;