[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-2.8 v1 17/60] trace: introduce some Makefile rul
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH for-2.8 v1 17/60] trace: introduce some Makefile rules for module code gen |
Date: |
Tue, 9 Aug 2016 16:31:45 +0100 |
Introduce rules that are able to generate trace.[ch] files
in every subdirectory which has a trace-events file.
Signed-off-by: Daniel P. Berrange <address@hidden>
---
.gitignore | 6 +++
Makefile | 69 +++++++++++++++++++++++++++-----
Makefile.objs | 5 +++
Makefile.target | 7 +++-
scripts/tracetool/backend/dtrace.py | 7 +++-
scripts/tracetool/backend/ust.py | 7 +++-
scripts/tracetool/format/ust_events_c.py | 2 +-
scripts/tracetool/format/ust_events_h.py | 7 +++-
trace/Makefile.objs | 23 ++++++++---
9 files changed, 112 insertions(+), 21 deletions(-)
diff --git a/.gitignore b/.gitignore
index 88ec249..7249070 100644
--- a/.gitignore
+++ b/.gitignore
@@ -115,3 +115,9 @@ tags
TAGS
docker-src.*
*~
+trace.h
+trace.c
+trace-events-common
+trace-ust.h
+trace-dtrace.h
+trace-dtrace.dtrace
diff --git a/Makefile b/Makefile
index 48673cb..2b9ba60 100644
--- a/Makefile
+++ b/Makefile
@@ -70,9 +70,55 @@ GENERATED_SOURCES += trace/generated-helpers.c
ifeq ($(findstring ust,$(TRACE_BACKENDS)),ust)
GENERATED_HEADERS += trace/generated-ust-provider.h
+GENERATED_HEADERS += trace/generated-ust-provider-all.h
GENERATED_SOURCES += trace/generated-ust.c
endif
+GENERATED_HEADERS += $(trace-events-subdirs:%=%/trace.h)
+GENERATED_SOURCES += $(trace-events-subdirs:%=%/trace.c)
+GENERATED_DTRACE =
+ifdef CONFIG_TRACE_DTRACE
+GENERATED_HEADERS += $(trace-events-subdirs:%=%/trace-dtrace.h)
+GENERATED_DTRACE += $(trace-events-subdirs:%=%/trace-dtrace.dtrace)
+endif
+ifdef CONFIG_TRACE_UST
+GENERATED_HEADERS += $(trace-events-subdirs:%=%/trace-ust.h)
+endif
+
+%/trace.h: $(SRC_PATH)/%/trace-events $(tracetool-y)
+ $(call quiet-command,$(TRACETOOL) \
+ --format=h \
+ --backends=$(TRACE_BACKENDS) \
+ --group=$(shell dirname $@ | tr /- _) \
+ < $< > $@," GEN $@")
+
+%/trace.c: $(SRC_PATH)/%/trace-events $(tracetool-y)
+ $(call quiet-command,$(TRACETOOL) \
+ --format=c \
+ --backends=$(TRACE_BACKENDS) \
+ --group=$(shell dirname $@ | tr /- _) \
+ < $< > $@," GEN $@")
+
+%/trace-ust.h: $(SRC_PATH)/%/trace-events $(tracetool-y)
+ $(call quiet-command,$(TRACETOOL) \
+ --format=ust-events-h \
+ --backends=$(TRACE_BACKENDS) \
+ --group=$(shell dirname $@ | tr /- _) \
+ < $< > $@," GEN $@")
+
+%/trace-dtrace.dtrace: $(SRC_PATH)/%/trace-events $(BUILD_DIR)/config-host.mak
$(tracetool-y)
+ $(call quiet-command,$(TRACETOOL) \
+ --format=d \
+ --backends=$(TRACE_BACKENDS) \
+ --group=$(shell dirname $@ | tr /- _) \
+ < $< > $@," GEN $@")
+
+%/trace-dtrace.h: %/trace-dtrace.dtrace $(tracetool-y)
+ $(call quiet-command,dtrace -o $@ -h -s $<, " GEN $@")
+
+%/trace-dtrace.o: %/trace-dtrace.dtrace $(tracetool-y)
+
+
# Don't try to regenerate Makefile or configure
# We don't generate any of them
Makefile: ;
@@ -156,7 +202,8 @@ dummy := $(call unnest-vars,, \
qom-obj-y \
io-obj-y \
common-obj-y \
- common-obj-m)
+ common-obj-m \
+ trace-obj-y)
ifneq ($(wildcard config-host.mak),)
include $(SRC_PATH)/tests/Makefile.include
@@ -247,15 +294,17 @@ util/module.o-cflags =
-D'CONFIG_BLOCK_MODULES=$(block-modules)'
######################################################################
+COMMON_LDADDS = $(trace-obj-y) libqemuutil.a libqemustub.a
+
qemu-img.o: qemu-img-cmds.h
-qemu-img$(EXESUF): qemu-img.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y)
$(qom-obj-y) libqemuutil.a libqemustub.a
-qemu-nbd$(EXESUF): qemu-nbd.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y)
$(qom-obj-y) libqemuutil.a libqemustub.a
-qemu-io$(EXESUF): qemu-io.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y)
$(qom-obj-y) libqemuutil.a libqemustub.a
+qemu-img$(EXESUF): qemu-img.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y)
$(qom-obj-y) $(COMMON_LDADDS)
+qemu-nbd$(EXESUF): qemu-nbd.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y)
$(qom-obj-y) $(COMMON_LDADDS)
+qemu-io$(EXESUF): qemu-io.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y)
$(qom-obj-y) $(COMMON_LDADDS)
-qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o libqemuutil.a libqemustub.a
+qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o $(COMMON_LDADDS)
-fsdev/virtfs-proxy-helper$(EXESUF): fsdev/virtfs-proxy-helper.o
fsdev/9p-marshal.o fsdev/9p-iov-marshal.o libqemuutil.a libqemustub.a
+fsdev/virtfs-proxy-helper$(EXESUF): fsdev/virtfs-proxy-helper.o
fsdev/9p-marshal.o fsdev/9p-iov-marshal.o $(COMMON_LDADDS)
fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/scripts/hxtool
@@ -319,7 +368,7 @@ $(qapi-modules) $(SRC_PATH)/scripts/qapi-introspect.py
$(qapi-py)
QGALIB_GEN=$(addprefix qga/qapi-generated/, qga-qapi-types.h qga-qapi-visit.h
qga-qmp-commands.h)
$(qga-obj-y) qemu-ga.o: $(QGALIB_GEN)
-qemu-ga$(EXESUF): $(qga-obj-y) libqemuutil.a libqemustub.a
+qemu-ga$(EXESUF): $(qga-obj-y) $(COMMON_LDADDS)
$(call LINK, $^)
ifdef QEMU_GA_MSI_ENABLED
@@ -344,9 +393,9 @@ ifneq ($(EXESUF),)
qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
endif
-ivshmem-client$(EXESUF): $(ivshmem-client-obj-y) libqemuutil.a libqemustub.a
+ivshmem-client$(EXESUF): $(ivshmem-client-obj-y) $(COMMON_LDADDS)
$(call LINK, $^)
-ivshmem-server$(EXESUF): $(ivshmem-server-obj-y) libqemuutil.a libqemustub.a
+ivshmem-server$(EXESUF): $(ivshmem-server-obj-y) $(COMMON_LDADDS)
$(call LINK, $^)
clean:
@@ -660,6 +709,8 @@ ifneq ($(filter-out
$(UNCHECKED_GOALS),$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fa
Makefile: $(GENERATED_HEADERS)
endif
+.SECONDARY: $(GENERATED_HEADERS) $(GENERATED_SOURCES) $(GENERATED_DTRACE)
+
# Include automatically generated dependency files
# Dependencies in Makefile.objs files come from our recursive subdir rules
-include $(wildcard *.d tests/*.d)
diff --git a/Makefile.objs b/Makefile.objs
index b371ebb..ede6dd3 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -118,6 +118,7 @@ ivshmem-server-obj-y = contrib/ivshmem-server/
######################################################################
+trace-events-subdirs =
trace-events-y = trace-events
trace-events-y += util/trace-events
trace-events-y += crypto/trace-events
@@ -160,3 +161,7 @@ trace-events-y += target-s390x/trace-events
trace-events-y += target-ppc/trace-events
trace-events-y += qom/trace-events
trace-events-y += linux-user/trace-events
+
+trace-events-files = trace-events $(trace-events-subdirs:%=%/trace-events)
+
+trace-obj-y = $(trace-events-subdirs:%=%/)
diff --git a/Makefile.target b/Makefile.target
index a440bcb..46b5ccf 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -180,7 +180,8 @@ dummy := $(call unnest-vars,.., \
qom-obj-y \
io-obj-y \
common-obj-y \
- common-obj-m)
+ common-obj-m \
+ trace-obj-y)
target-obj-y := $(target-obj-y-save)
all-obj-y += $(common-obj-y)
all-obj-y += $(target-obj-y)
@@ -192,8 +193,10 @@ all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y)
$(QEMU_PROG_BUILD): config-devices.mak
+COMMON_LDADDS = $(trace-obj-y) ../libqemuutil.a ../libqemustub.a
+
# build either PROG or PROGW
-$(QEMU_PROG_BUILD): $(all-obj-y) ../libqemuutil.a ../libqemustub.a
+$(QEMU_PROG_BUILD): $(all-obj-y) $(COMMON_LDADDS)
$(call LINK, $(filter-out %.mak, $^))
ifdef CONFIG_DARWIN
$(call quiet-command,Rez -append $(SRC_PATH)/pc-bios/qemu.rsrc -o $@,"
REZ $(TARGET_DIR)$@")
diff --git a/scripts/tracetool/backend/dtrace.py
b/scripts/tracetool/backend/dtrace.py
index 79505c6..1319990 100644
--- a/scripts/tracetool/backend/dtrace.py
+++ b/scripts/tracetool/backend/dtrace.py
@@ -36,7 +36,12 @@ def binary():
def generate_h_begin(events, group):
- out('#include "trace/generated-tracers-dtrace.h"',
+ if group == "common":
+ include = "trace/generated-tracers-dtrace.h"
+ else:
+ include = "trace-dtrace.h"
+
+ out('#include "%s"' % include,
'')
diff --git a/scripts/tracetool/backend/ust.py b/scripts/tracetool/backend/ust.py
index 4594db6..599c12e 100644
--- a/scripts/tracetool/backend/ust.py
+++ b/scripts/tracetool/backend/ust.py
@@ -20,8 +20,13 @@ PUBLIC = True
def generate_h_begin(events, group):
+ if group == "common":
+ include = "trace/generated-ust-provider.h"
+ else:
+ include = "trace-ust.h"
+
out('#include <lttng/tracepoint.h>',
- '#include "trace/generated-ust-provider.h"',
+ '#include "%s"' % include,
'')
diff --git a/scripts/tracetool/format/ust_events_c.py
b/scripts/tracetool/format/ust_events_c.py
index cd87d8a..8be8116 100644
--- a/scripts/tracetool/format/ust_events_c.py
+++ b/scripts/tracetool/format/ust_events_c.py
@@ -32,4 +32,4 @@ def generate(events, backend, group):
' */',
'#pragma GCC diagnostic ignored "-Wredundant-decls"',
'',
- '#include "generated-ust-provider.h"')
+ '#include "generated-ust-provider-all.h"')
diff --git a/scripts/tracetool/format/ust_events_h.py
b/scripts/tracetool/format/ust_events_h.py
index 00b69d9..f4258e5 100644
--- a/scripts/tracetool/format/ust_events_h.py
+++ b/scripts/tracetool/format/ust_events_h.py
@@ -20,13 +20,18 @@ def generate(events, backend, group):
events = [e for e in events
if "disabled" not in e.properties]
+ if group == "common":
+ include = "generated-ust-provider.h"
+ else:
+ include = "trace-ust.h"
+
out('/* This file is autogenerated by tracetool, do not edit. */',
'',
'#undef TRACEPOINT_PROVIDER',
'#define TRACEPOINT_PROVIDER qemu',
'',
'#undef TRACEPOINT_INCLUDE_FILE',
- '#define TRACEPOINT_INCLUDE_FILE ./generated-ust-provider.h',
+ '#define TRACEPOINT_INCLUDE_FILE ./%s' % include,
'',
'#if !defined (TRACE_%s_GENERATED_UST_H) ||
defined(TRACEPOINT_HEADER_MULTI_READ)' % group.upper(),
'#define TRACE_%s_GENERATED_UST_H' % group.upper(),
diff --git a/trace/Makefile.objs b/trace/Makefile.objs
index 83f754e..00ebe3a 100644
--- a/trace/Makefile.objs
+++ b/trace/Makefile.objs
@@ -8,7 +8,10 @@
tracetool-y = $(SRC_PATH)/scripts/tracetool.py
tracetool-y += $(shell find $(SRC_PATH)/scripts/tracetool -name "*.py")
-$(BUILD_DIR)/trace-events-all: $(trace-events-y:%=$(SRC_PATH)/%)
+$(BUILD_DIR)/trace-events-all: $(trace-events-files:%=$(SRC_PATH)/%)
+ $(call quiet-command,cat $^ > $@)
+
+$(BUILD_DIR)/trace-events-common: $(trace-events-y:%=$(SRC_PATH)/%)
$(call quiet-command,cat $^ > $@)
######################################################################
@@ -18,7 +21,15 @@ ifeq ($(findstring ust,$(TRACE_BACKENDS)),ust)
$(obj)/generated-ust-provider.h: $(obj)/generated-ust-provider.h-timestamp
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-ust-provider.h-timestamp: $(BUILD_DIR)/trace-events-all
$(tracetool-y)
+$(obj)/generated-ust-provider.h-timestamp: $(BUILD_DIR)/trace-events-common
$(tracetool-y)
+ $(call quiet-command,$(TRACETOOL) \
+ --format=ust-events-h \
+ --backends=$(TRACE_BACKENDS) \
+ < $< > $@," GEN $(patsubst %-timestamp,%,$@)")
+
+$(obj)/generated-ust-provider-all.h:
$(obj)/generated-ust-provider-all.h-timestamp
+ @cmp $< $@ >/dev/null 2>&1 || cp $< $@
+$(obj)/generated-ust-provider-all.h-timestamp: $(BUILD_DIR)/trace-events-all
$(tracetool-y)
$(call quiet-command,$(TRACETOOL) \
--format=ust-events-h \
--backends=$(TRACE_BACKENDS) \
@@ -32,7 +43,7 @@ $(obj)/generated-ust.c-timestamp:
$(BUILD_DIR)/trace-events-all $(tracetool-y)
--backends=$(TRACE_BACKENDS) \
< $< > $@," GEN $(patsubst %-timestamp,%,$@)")
-$(obj)/generated-tracers.h: $(obj)/generated-ust-provider.h
+$(obj)/generated-tracers.h: $(obj)/generated-ust-provider.h
$(obj)/generated-ust-provider-all.h
$(obj)/generated-tracers.c: $(obj)/generated-ust.c
endif
@@ -46,7 +57,7 @@ endif
$(obj)/generated-tracers.h: $(obj)/generated-tracers.h-timestamp
@cmp -s $< $@ || cp $< $@
-$(obj)/generated-tracers.h-timestamp: $(BUILD_DIR)/trace-events-all
$(BUILD_DIR)/config-host.mak $(tracetool-y)
+$(obj)/generated-tracers.h-timestamp: $(BUILD_DIR)/trace-events-common
$(BUILD_DIR)/config-host.mak $(tracetool-y)
$(call quiet-command,$(TRACETOOL) \
--format=h \
--backends=$(TRACE_BACKENDS) \
@@ -57,7 +68,7 @@ $(obj)/generated-tracers.h-timestamp:
$(BUILD_DIR)/trace-events-all $(BUILD_DIR)
$(obj)/generated-tracers.c: $(obj)/generated-tracers.c-timestamp
@cmp -s $< $@ || cp $< $@
-$(obj)/generated-tracers.c-timestamp: $(BUILD_DIR)/trace-events-all
$(BUILD_DIR)/config-host.mak $(tracetool-y)
+$(obj)/generated-tracers.c-timestamp: $(BUILD_DIR)/trace-events-common
$(BUILD_DIR)/config-host.mak $(tracetool-y)
$(call quiet-command,$(TRACETOOL) \
--format=c \
--backends=$(TRACE_BACKENDS) \
@@ -75,7 +86,7 @@ ifeq ($(findstring dtrace,$(TRACE_BACKENDS)),dtrace)
$(obj)/generated-tracers-dtrace.dtrace:
$(obj)/generated-tracers-dtrace.dtrace-timestamp
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-tracers-dtrace.dtrace-timestamp:
$(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
+$(obj)/generated-tracers-dtrace.dtrace-timestamp:
$(BUILD_DIR)/trace-events-common $(BUILD_DIR)/config-host.mak $(tracetool-y)
$(call quiet-command,$(TRACETOOL) \
--format=d \
--backends=$(TRACE_BACKENDS) \
--
2.7.4
- Re: [Qemu-devel] [PATCH for-2.8 v1 11/60] trace: remove use of event ID enums from APIs, (continued)
[Qemu-devel] [PATCH for-2.8 v1 10/60] trace: remove fixed global event state arrays, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 12/60] trace: use -1 instead of TRACE_VCPU_EVENT_COUNT as magic value, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 14/60] trace: get rid of generated-events.h/generated-events.c, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 13/60] trace: remove generated-events.h from many includes, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 19/60] trace: switch util/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 15/60] trace: introduce a formal group name for trace events, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 17/60] trace: introduce some Makefile rules for module code gen,
Daniel P. Berrange <=
[Qemu-devel] [PATCH for-2.8 v1 20/60] trace: switch crypto/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 16/60] trace: introduce ID range offsets per trace-events file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 22/60] trace: switch block/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 24/60] trace: switch hw/char/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 18/60] trace: switch io/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 26/60] trace: switch hw/net/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 25/60] trace: switch hw/intc/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 28/60] trace: switch hw/audio/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09