From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: [PATCH 110/132] meson: cpu-emu
Date: Thu, 19 Dec 2019 13:23:30 +0100 [thread overview]
Message-ID: <1576758232-12439-19-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1576155176-2464-1-git-send-email-pbonzini@redhat.com>
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
Makefile.target | 12 ------------
configure | 6 ++++++
meson.build | 28 ++++++++++++++++++++++++++++
scripts/feature_to_c.sh | 24 ++++++++----------------
4 files changed, 42 insertions(+), 28 deletions(-)
diff --git a/Makefile.target b/Makefile.target
index 0eca5f8..7b5b254 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -108,15 +108,6 @@ obj-y += $(LIBQEMU)
obj-y += trace/
#########################################################
-# cpu emulator library
-obj-y += exec.o
-obj-$(CONFIG_TCG) += tcg/tcg.o tcg/tcg-op.o tcg/tcg-op-vec.o tcg/tcg-op-gvec.o
-obj-$(CONFIG_TCG) += tcg/tcg-common.o tcg/optimize.o
-obj-$(CONFIG_TCG_INTERPRETER) += tcg/tci.o
-obj-$(CONFIG_TCG_INTERPRETER) += disas/tci.o
-obj-$(CONFIG_TCG) += fpu/softfloat.o
-obj-y += disas.o
-obj-$(call notempty,$(TARGET_XML_FILES)) += gdbstub-xml.o
LIBS := $(libs_cpu) $(LIBS)
#########################################################
@@ -199,9 +190,6 @@ ifdef CONFIG_DARWIN
$(call quiet-command,SetFile -a C $@,"SETFILE","$(TARGET_DIR)$@")
endif
-gdbstub-xml.c: $(TARGET_XML_FILES) $(SRC_PATH)/scripts/feature_to_c.sh
- $(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/scripts/feature_to_c.sh $@ $(TARGET_XML_FILES),"GEN","$(TARGET_DIR)$@")
-
clean: clean-target
rm -f *.a *~ $(PROGS)
rm -f $(shell find . -name '*.[od]')
diff --git a/configure b/configure
index c53df48..ad36082 100755
--- a/configure
+++ b/configure
@@ -5034,9 +5034,13 @@ case "$capstone" in
LIBCAPSTONE=libcapstone.a
fi
libs_cpu="-L$PWD/capstone -lcapstone $libs_cpu"
+ capstone_libs="-L$PWD/capstone -lcapstone"
+ capstone_cflags="-I${source_path}/capstone/include"
;;
system)
+ capstone_libs="$($pkg_config --libs capstone)"
+ capstone_cflags="$($pkg_config --cflags capstone)"
QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
libs_cpu="$($pkg_config --libs capstone) $libs_cpu"
;;
@@ -7230,6 +7234,8 @@ if test "$ivshmem" = "yes" ; then
fi
if test "$capstone" != "no" ; then
echo "CONFIG_CAPSTONE=y" >> $config_host_mak
+ echo "CAPSTONE_CFLAGS=$capstone_cflags" >> $config_host_mak
+ echo "CAPSTONE_LIBS=$capstone_libs" >> $config_host_mak
fi
if test "$debug_mutex" = "yes" ; then
echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
diff --git a/meson.build b/meson.build
index 31c9591..6f2c838 100644
--- a/meson.build
+++ b/meson.build
@@ -319,6 +319,11 @@ 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
+capstone = declare_dependency()
+if 'CONFIG_CAPSTONE' in config_host
+ capstone = declare_dependency(compile_args: config_host['CAPSTONE_CFLAGS'].split(),
+ link_args: config_host['CAPSTONE_LIBS'].split())
+endif
create_config = find_program('scripts/create_config')
minikconf = find_program('scripts/minikconf.py')
@@ -481,6 +486,18 @@ hw_arch = {}
target_arch = {}
target_softmmu_arch = {}
+specific_ss.add(files('disas.c', 'exec.c'), capstone)
+specific_ss.add(when: 'CONFIG_TCG', if_true: files(
+ 'fpu/softfloat.c',
+ 'tcg/optimize.c',
+ 'tcg/tcg-common.c',
+ 'tcg/tcg-op-gvec.c',
+ 'tcg/tcg-op-vec.c',
+ 'tcg/tcg-op.c',
+ 'tcg/tcg.c',
+))
+specific_ss.add(when: 'CONFIG_TCG_INTERPRETER', if_true: files('disas/tci.c', 'tcg/tci.c'))
+
# TODO: add each directory to the subdirs from its own meson.build, once
# we have those
trace_events_subdirs = [
@@ -717,6 +734,8 @@ common_all = static_library('common',
dependencies: common_all.dependencies(),
name_suffix: 'fa')
+feature_to_c = find_program('scripts/feature_to_c.sh')
+
foreach target : target_dirs
config_target = target_config[target]
target_name = config_target['TARGET_NAME']
@@ -762,6 +781,15 @@ foreach target : target_dirs
endif
endif
+ if 'TARGET_XML_FILES' in config_target
+ gdbstub_xml = custom_target(target + '-gdbstub-xml.c',
+ output: target + '-gdbstub-xml.c',
+ input: files(config_target['TARGET_XML_FILES'].split()),
+ command: [feature_to_c, '@INPUT@'],
+ capture: true)
+ arch_srcs += gdbstub_xml
+ endif
+
t = target_arch[arch].apply(config_target, strict: false)
arch_srcs += t.sources()
arch_deps += t.dependencies()
diff --git a/scripts/feature_to_c.sh b/scripts/feature_to_c.sh
index c8ce9b8..b116989 100644
--- a/scripts/feature_to_c.sh
+++ b/scripts/feature_to_c.sh
@@ -19,16 +19,8 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
-output=$1
-shift
-
-if test -z "$output" || test -z "$1"; then
- echo "Usage: $0 OUTPUTFILE INPUTFILE..."
- exit 1
-fi
-
-if test -e "$output"; then
- echo "Output file \"$output\" already exists; refusing to overwrite."
+if test -z "$1"; then
+ echo "Usage: $0 INPUTFILE..."
exit 1
fi
@@ -60,17 +52,17 @@ for input; do
printf "'\''\\n'\'', \n"
} END {
print " 0 };"
- }' < $input >> $output
+ }' < $input
done
-echo >> $output
-echo "const char *const xml_builtin[][2] = {" >> $output
+echo
+echo "const char *const xml_builtin[][2] = {"
for input; do
basename=$(echo $input | sed 's,.*/,,')
arrayname=xml_feature_$(echo $input | sed 's,.*/,,; s/[-.]/_/g')
- echo " { \"$basename\", $arrayname }," >> $output
+ echo " { \"$basename\", $arrayname },"
done
-echo " { (char *)0, (char *)0 }" >> $output
-echo "};" >> $output
+echo " { (char *)0, (char *)0 }"
+echo "};"
--
1.8.3.1
next prev parent reply other threads:[~2019-12-19 12:38 UTC|newest]
Thread overview: 142+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-12 12:50 [RFC PATCH v3 000/132] Proof of concept for Meson integration Paolo Bonzini
2019-12-12 12:50 ` [PATCH 001/132] build-sys hack: ensure target directory is there Paolo Bonzini
2019-12-12 12:50 ` [PATCH 002/132] configure: do not include $(...) variables in config-host.mak Paolo Bonzini
2019-12-12 12:50 ` [PATCH 003/132] configure: expand path variables for meson configure Paolo Bonzini
2019-12-12 12:50 ` [PATCH 004/132] configure: integrate Meson in the build system Paolo Bonzini
2019-12-12 12:50 ` [PATCH 005/132] configure: generate Meson cross file Paolo Bonzini
2019-12-12 12:50 ` [PATCH 006/132] build-sys: add meson submodule Paolo Bonzini
2019-12-12 12:50 ` [PATCH 007/132] meson: enable pie Paolo Bonzini
2019-12-12 12:50 ` [PATCH 008/132] meson: use coverage option Paolo Bonzini
2019-12-12 12:50 ` [PATCH 009/132] libqemuutil: convert to meson Paolo Bonzini
2019-12-12 12:50 ` [PATCH 010/132] meson: add remaining generated tcg trace helpers Paolo Bonzini
2019-12-12 12:50 ` [PATCH 011/132] meson: add version.o Paolo Bonzini
2019-12-12 12:50 ` [PATCH 012/132] contrib/libvhost-user: convert to Meson Paolo Bonzini
2019-12-12 12:50 ` [PATCH 013/132] contrib/vhost-user-blk: " Paolo Bonzini
2019-12-12 12:50 ` [PATCH 014/132] contrib/vhost-user-scsi: " Paolo Bonzini
2019-12-12 12:50 ` [PATCH 015/132] contrib/rdmacm-mux: " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 016/132] contrib/vhost-user-input: convert to meson Paolo Bonzini
2019-12-12 12:51 ` [PATCH 017/132] contrib/vhost-user-gpu: " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 018/132] contrib/ivshmem: " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 019/132] contrib/elf2dmp: " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 020/132] meson: convert qemu-ga Paolo Bonzini
2019-12-12 12:51 ` [PATCH 021/132] meson: convert vss-win32 Paolo Bonzini
2019-12-12 12:51 ` [PATCH 022/132] meson: add msi generation Paolo Bonzini
2019-12-12 12:51 ` [PATCH 023/132] meson: add qemu-bridge-helper Paolo Bonzini
2019-12-12 12:51 ` [PATCH 024/132] meson: add qemu-keymap Paolo Bonzini
2019-12-12 12:51 ` [PATCH 025/132] meson: add qemu-edid Paolo Bonzini
2019-12-12 12:51 ` [PATCH 026/132] meson: add virtfs-proxy-helper Paolo Bonzini
2019-12-12 12:51 ` [PATCH 027/132] meson: keymap-gen Paolo Bonzini
2019-12-12 12:51 ` [PATCH 028/132] meson: generate qemu-version.h Paolo Bonzini
2019-12-12 12:51 ` [PATCH 029/132] meson: generate shader headers Paolo Bonzini
2019-12-12 12:51 ` [PATCH 030/132] meson: generate hxtool files Paolo Bonzini
2019-12-12 12:51 ` [PATCH 031/132] meson: configure 50-qemu-gpu.json Paolo Bonzini
2019-12-12 12:51 ` [PATCH 032/132] meson: uncompress edk2 bios Paolo Bonzini
2020-01-03 10:48 ` Philippe Mathieu-Daudé
2020-01-03 10:52 ` Philippe Mathieu-Daudé
2020-01-07 11:28 ` Paolo Bonzini
2019-12-12 12:51 ` [PATCH 033/132] build-sys hack: link with whole .fa archives Paolo Bonzini
2019-12-12 12:51 ` [PATCH 034/132] meson: convert qom directory to Meson Paolo Bonzini
2019-12-12 12:51 ` [PATCH 035/132] meson: convert authz " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 036/132] meson: convert crypto " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 037/132] meson: convert io " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 038/132] meson: infrastructure for building emulators Paolo Bonzini
2019-12-12 12:51 ` [PATCH 039/132] meson: add macos dependencies Paolo Bonzini
2019-12-12 12:51 ` [PATCH 040/132] meson: add modules infrastructure Paolo Bonzini
2019-12-12 12:51 ` [PATCH 041/132] meson: convert chardev directory to Meson (tools part) Paolo Bonzini
2019-12-12 12:51 ` [PATCH 042/132] meson: convert block Paolo Bonzini
2019-12-12 12:51 ` [PATCH 043/132] meson: qemu-{img,io,nbd} Paolo Bonzini
2019-12-12 12:51 ` [PATCH 044/132] meson: qemu-pr-helper Paolo Bonzini
2019-12-12 12:51 ` [PATCH 045/132] configure, Makefile; remove TOOLS and HELPERS-y variable Paolo Bonzini
2019-12-12 12:51 ` [PATCH 046/132] meson: convert chardev directory to Meson (emulator part) Paolo Bonzini
2019-12-12 12:51 ` [PATCH 047/132] meson: convert audio directory to Meson Paolo Bonzini
2019-12-12 12:51 ` [PATCH 048/132] meson: convert ui " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 049/132] meson: convert root " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 050/132] meson: convert trace/ Paolo Bonzini
2019-12-12 12:51 ` [PATCH 051/132] meson: convert qom/ Paolo Bonzini
2019-12-12 12:51 ` [PATCH 052/132] meson: convert block/ Paolo Bonzini
2019-12-12 12:51 ` [PATCH 053/132] meson: convert dump/ Paolo Bonzini
2019-12-12 12:51 ` [PATCH 054/132] meson: convert monitor directory to Meson Paolo Bonzini
2019-12-12 12:51 ` [PATCH 055/132] meson: convert replay " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 056/132] meson: convert migration " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 057/132] meson: build softmmu-specific migration/ram.c Paolo Bonzini
2019-12-12 12:51 ` [PATCH 058/132] meson: convert net directory to Meson Paolo Bonzini
2019-12-12 12:51 ` [PATCH 059/132] meson: convert backends " Paolo Bonzini
2019-12-12 12:51 ` [PATCH 060/132] meson: convert fsdev/ Paolo Bonzini
2019-12-12 12:51 ` [PATCH 061/132] meson: convert disas directory to Meson Paolo Bonzini
2019-12-12 12:51 ` [PATCH 062/132] meson: convert qapi-specific to meson Paolo Bonzini
2019-12-12 12:51 ` [PATCH 063/132] meson: convert hw/xen Paolo Bonzini
2019-12-12 12:51 ` [PATCH 064/132] meson: convert hw/core Paolo Bonzini
2019-12-12 12:51 ` [PATCH 065/132] meson: convert hw/semihosting Paolo Bonzini
2019-12-12 12:51 ` [PATCH 066/132] meson: convert hw/smbios Paolo Bonzini
2019-12-12 12:51 ` [PATCH 067/132] meson: convert hw/mem Paolo Bonzini
2019-12-12 12:51 ` [PATCH 068/132] meson: convert hw/watchdog Paolo Bonzini
2019-12-12 12:51 ` [PATCH 069/132] meson: convert hw/virtio Paolo Bonzini
2019-12-12 12:51 ` [PATCH 070/132] meson: convert hw/vfio Paolo Bonzini
2019-12-12 12:51 ` [PATCH 071/132] meson: convert hw/usb Paolo Bonzini
2019-12-12 12:51 ` [PATCH 072/132] meson: convert hw/tpm Paolo Bonzini
2019-12-12 12:51 ` [PATCH 073/132] meson: convert hw/timer Paolo Bonzini
2019-12-12 12:51 ` [PATCH 074/132] meson: convert hw/ssi Paolo Bonzini
2019-12-12 12:51 ` [PATCH 075/132] meson: convert hw/sd Paolo Bonzini
2019-12-12 12:52 ` [PATCH 076/132] meson: convert hw/scsi Paolo Bonzini
2019-12-12 12:52 ` [PATCH 077/132] meson: convert hw/pcmcia Paolo Bonzini
2019-12-12 12:52 ` [PATCH 078/132] meson: convert hw/pci-host Paolo Bonzini
2019-12-12 12:52 ` [PATCH 079/132] meson: convert hw/pci-bridge Paolo Bonzini
2019-12-12 12:52 ` [PATCH 080/132] meson: convert hw/pci Paolo Bonzini
2019-12-12 12:52 ` [PATCH 081/132] meson: convert hw/nvram Paolo Bonzini
2019-12-12 12:52 ` [PATCH 082/132] meson: convert hw/rdma Paolo Bonzini
2019-12-12 12:52 ` [PATCH 083/132] meson: convert hw/net Paolo Bonzini
2019-12-12 12:52 ` [PATCH 084/132] meson: convert hw/misc Paolo Bonzini
2019-12-12 12:52 ` [PATCH 085/132] meson: convert hw/isa Paolo Bonzini
2019-12-12 12:52 ` [PATCH 086/132] meson: convert hw/ipmi Paolo Bonzini
2019-12-12 12:52 ` [PATCH 087/132] meson: convert hw/ipack Paolo Bonzini
2019-12-12 12:52 ` [PATCH 088/132] meson: convert hw/intc Paolo Bonzini
2019-12-12 12:52 ` [PATCH 089/132] meson: convert hw/input Paolo Bonzini
2019-12-12 12:52 ` [PATCH 090/132] meson: convert hw/ide Paolo Bonzini
2019-12-12 12:52 ` [PATCH 091/132] meson: convert hw/i2c Paolo Bonzini
2019-12-12 12:52 ` [PATCH 092/132] meson: convert hw/hyperv Paolo Bonzini
2019-12-12 12:52 ` [PATCH 093/132] meson: convert hw/gpio Paolo Bonzini
2019-12-19 7:25 ` [RFC PATCH v3 000/132] Proof of concept for Meson integration Markus Armbruster
2019-12-19 12:32 ` Paolo Bonzini
2019-12-19 12:23 ` [PATCH 092/132] meson: convert hw/hyperv Paolo Bonzini
2019-12-19 12:23 ` [PATCH 093/132] meson: convert hw/gpio Paolo Bonzini
2019-12-19 12:23 ` [PATCH 094/132] meson: convert hw/dma Paolo Bonzini
2019-12-19 12:23 ` [PATCH 095/132] meson: convert hw/display Paolo Bonzini
2019-12-19 12:23 ` [PATCH 096/132] meson: convert hw/cpu Paolo Bonzini
2019-12-19 12:23 ` [PATCH 097/132] meson: convert hw/char Paolo Bonzini
2019-12-19 12:23 ` [PATCH 098/132] meson: convert hw/bt Paolo Bonzini
2019-12-19 12:23 ` [PATCH 099/132] meson: convert hw/block Paolo Bonzini
2019-12-19 12:23 ` [PATCH 100/132] meson: convert hw/audio Paolo Bonzini
2019-12-19 12:23 ` [PATCH 101/132] meson: convert hw/adc Paolo Bonzini
2019-12-19 12:23 ` [PATCH 102/132] meson: convert hw/acpi Paolo Bonzini
2019-12-19 12:23 ` [PATCH 103/132] meson: convert hw/9pfs Paolo Bonzini
2019-12-19 12:23 ` [PATCH 104/132] meson: convert target/s390x/gen-features.h Paolo Bonzini
2019-12-19 12:23 ` [PATCH 105/132] meson: convert hw/arch* Paolo Bonzini
2019-12-19 12:23 ` [PATCH 106/132] meson: target Paolo Bonzini
2019-12-19 12:23 ` [PATCH 107/132] meson: accel Paolo Bonzini
2019-12-19 12:23 ` [PATCH 108/132] meson: linux-user Paolo Bonzini
2019-12-19 16:07 ` Laurent Vivier
2019-12-19 12:23 ` [PATCH 109/132] meson: bsd-user Paolo Bonzini
2019-12-19 12:23 ` Paolo Bonzini [this message]
2019-12-19 12:23 ` [PATCH 111/132] meson: softmmu Paolo Bonzini
2019-12-19 12:23 ` [PATCH 112/132] Aaaaallelujah! Paolo Bonzini
2019-12-19 12:23 ` [PATCH 113/132] systemtap Paolo Bonzini
2019-12-19 12:23 ` [PATCH 114/132] build-sys/rules.mak: remove version.o Paolo Bonzini
2019-12-19 12:23 ` [PATCH 115/132] remove Makefile.target Paolo Bonzini
2019-12-19 12:23 ` [PATCH 116/132] meson: sphinx-build Paolo Bonzini
2019-12-19 12:23 ` [PATCH 117/132] meson: generate version.texi Paolo Bonzini
2019-12-19 12:23 ` [PATCH 118/132] meson: build texi doc Paolo Bonzini
2019-12-19 12:23 ` [PATCH 119/132] meson: add NSIS building Paolo Bonzini
2019-12-19 12:23 ` [PATCH 120/132] meson: install some scripts Paolo Bonzini
2019-12-19 12:23 ` [PATCH 121/132] meson: install edk2 Paolo Bonzini
2020-01-03 10:51 ` Philippe Mathieu-Daudé
2019-12-19 12:23 ` [PATCH 122/132] meson: install blobs Paolo Bonzini
2019-12-19 12:23 ` [PATCH 123/132] meson: install edk2 json descriptors Paolo Bonzini
2019-12-19 12:23 ` [PATCH 124/132] meson: install icons Paolo Bonzini
2019-12-19 12:23 ` [PATCH 125/132] meson: install desktop file Paolo Bonzini
2019-12-19 12:23 ` [PATCH 126/132] meson: install keymaps Paolo Bonzini
2019-12-19 12:23 ` [PATCH 127/132] meson: convert po/ Paolo Bonzini
2019-12-19 12:23 ` [PATCH 128/132] meson: replace pc-bios/keymaps/Makefile Paolo Bonzini
2019-12-19 12:23 ` [PATCH 129/132] meson: replace mostly useless pc-bios/Makefile Paolo Bonzini
2019-12-19 12:23 ` [PATCH 130/132] meson: convert pc-bios/s390-ccw Paolo Bonzini
2019-12-19 12:23 ` [PATCH 131/132] meson: convert pc-bios/optionrom Paolo Bonzini
2019-12-19 12:23 ` [PATCH 132/132] rules.mak: drop unneeded macros Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1576758232-12439-19-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).