aboutsummaryrefslogtreecommitdiff
path: root/trace
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2020-08-19 08:44:56 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2020-08-21 06:30:08 -0400
commita81df1b68b656f2487f556240baf2af83e60ec6c (patch)
treeeb98104c0a66b6a6d7675055d92c36b60d683796 /trace
parent245dac4a1bef719d648e20c84bbf3dcaf50de988 (diff)
libqemuutil, qapi, trace: convert to meson
This shows how to do some "computations" in meson.build using its array and dictionary data structures, and also a basic usage of the sourceset module for conditional compilation. Notice the new "if have_system" part of util/meson.build, which fixes a bug in the old build system was buggy: util/dbus.c was built even for non-softmmu builds, but the dependency on -lgio was lost when the linking was done through libqemuutil.a. Because all of its users required gio otherwise, the bug was hidden. Meson instead propagates libqemuutil's dependencies down to its users, and shows the problem. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'trace')
-rw-r--r--trace/Makefile.objs51
-rw-r--r--trace/meson.build76
2 files changed, 76 insertions, 51 deletions
diff --git a/trace/Makefile.objs b/trace/Makefile.objs
index c544509adf..a429474618 100644
--- a/trace/Makefile.objs
+++ b/trace/Makefile.objs
@@ -1,59 +1,8 @@
# -*- mode: makefile -*-
-$(BUILD_DIR)/trace-events-all: $(trace-events-files)
- $(call quiet-command,cat $^ > $@)
-
##################################################
# Translation level
-$(obj)/generated-helpers-wrappers.h: $(obj)/generated-helpers-wrappers.h-timestamp
- @cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-helpers-wrappers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
- $(call quiet-command,$(TRACETOOL) \
- --group=root \
- --format=tcg-helper-wrapper-h \
- --backend=$(TRACE_BACKENDS) \
- $< > $@,"GEN","$(patsubst %-timestamp,%,$@)")
-
-$(obj)/generated-helpers.h: $(obj)/generated-helpers.h-timestamp
- @cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-helpers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
- $(call quiet-command,$(TRACETOOL) \
- --group=root \
- --format=tcg-helper-h \
- --backend=$(TRACE_BACKENDS) \
- $< > $@,"GEN","$(patsubst %-timestamp,%,$@)")
-
-$(obj)/generated-helpers.c: $(obj)/generated-helpers.c-timestamp
- @cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-helpers.c-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
- $(call quiet-command,$(TRACETOOL) \
- --group=root \
- --format=tcg-helper-c \
- --backend=$(TRACE_BACKENDS) \
- $< > $@,"GEN","$(patsubst %-timestamp,%,$@)")
-
-$(obj)/generated-helpers.o: $(obj)/generated-helpers.c
-
obj-y += generated-helpers.o
-
-
-$(obj)/generated-tcg-tracers.h: $(obj)/generated-tcg-tracers.h-timestamp
- @cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-tcg-tracers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
- $(call quiet-command,$(TRACETOOL) \
- --group=root \
- --format=tcg-h \
- --backend=$(TRACE_BACKENDS) \
- $< > $@,"GEN","$(patsubst %-timestamp,%,$@)")
-
-
-######################################################################
-# Backend code
-
-util-obj-$(CONFIG_TRACE_SIMPLE) += simple.o
-util-obj-$(CONFIG_TRACE_FTRACE) += ftrace.o
-util-obj-y += control.o
obj-y += control-target.o
-util-obj-y += qmp.o
diff --git a/trace/meson.build b/trace/meson.build
new file mode 100644
index 0000000000..f0a8d1c2e2
--- /dev/null
+++ b/trace/meson.build
@@ -0,0 +1,76 @@
+trace_events_files = []
+foreach dir : [ '.' ] + trace_events_subdirs
+ trace_events_file = meson.source_root() / dir / 'trace-events'
+ trace_events_files += [ trace_events_file ]
+ group_name = dir == '.' ? 'root' : dir.underscorify()
+ group = '--group=' + group_name
+ fmt = '@0@-' + group_name + '.@1@'
+
+ trace_h = custom_target(fmt.format('trace', 'h'),
+ output: fmt.format('trace', 'h'),
+ input: trace_events_file,
+ command: [ tracetool, group, '--format=h', '@INPUT@' ],
+ capture: true)
+ genh += trace_h
+ trace_c = custom_target(fmt.format('trace', 'c'),
+ output: fmt.format('trace', 'c'),
+ input: trace_events_file,
+ command: [ tracetool, group, '--format=c', '@INPUT@' ],
+ capture: true)
+ if 'CONFIG_TRACE_UST' in config_host
+ trace_ust_h = custom_target(fmt.format('trace-ust', 'h'),
+ output: fmt.format('trace-ust', 'h'),
+ input: trace_events_file,
+ command: [ tracetool, group, '--format=ust-events-h', '@INPUT@' ],
+ capture: true)
+ trace_ss.add(trace_ust_h, lttng, urcubp)
+ genh += trace_ust_h
+ endif
+ trace_ss.add(trace_h, trace_c)
+ if 'CONFIG_TRACE_DTRACE' in config_host
+ trace_dtrace = custom_target(fmt.format('trace-dtrace', 'dtrace'),
+ output: fmt.format('trace-dtrace', 'dtrace'),
+ input: trace_events_file,
+ command: [ tracetool, group, '--format=d', '@INPUT@' ],
+ capture: true)
+ trace_dtrace_h = custom_target(fmt.format('trace-dtrace', 'h'),
+ output: fmt.format('trace-dtrace', 'h'),
+ input: trace_dtrace,
+ command: [ 'dtrace', '-o', '@OUTPUT@', '-h', '-s', '@INPUT@' ])
+ trace_dtrace_o = custom_target(fmt.format('trace-dtrace', 'o'),
+ output: fmt.format('trace-dtrace', 'o'),
+ input: trace_dtrace,
+ command: [ 'dtrace', '-o', '@OUTPUT@', '-G', '-s', '@INPUT@' ])
+
+ trace_ss.add(trace_dtrace_h, trace_dtrace_o)
+ genh += trace_dtrace_h
+ endif
+endforeach
+
+custom_target('trace-events-all',
+ output: 'trace-events-all',
+ input: trace_events_files,
+ command: [ 'cat', '@INPUT@' ],
+ capture: true,
+ install: true,
+ install_dir: config_host['qemu_datadir'])
+
+if 'CONFIG_TRACE_UST' in config_host
+ trace_ust_all_h = custom_target('trace-ust-all.h',
+ output: 'trace-ust-all.h',
+ input: trace_events_files,
+ command: [ tracetool, '--group=all', '--format=ust-events-h', '@INPUT@' ],
+ capture: true)
+ trace_ust_all_c = custom_target('trace-ust-all.c',
+ output: 'trace-ust-all.c',
+ input: trace_events_files,
+ command: [ tracetool, '--group=all', '--format=ust-events-c', '@INPUT@' ],
+ capture: true)
+ trace_ss.add(trace_ust_all_h, trace_ust_all_c)
+ genh += trace_ust_all_h
+endif
+
+trace_ss.add(when: 'CONFIG_TRACE_SIMPLE', if_true: files('simple.c'))
+trace_ss.add(when: 'CONFIG_TRACE_FTRACE', if_true: files('ftrace.c'))
+trace_ss.add(files('control.c'))
+trace_ss.add(files('qmp.c'))