@ -56,25 +56,136 @@ GENERATED_SOURCES += qmp-marshal.c qapi-types.c qapi-visit.c qapi-event.c
GENERATED_HEADERS += qmp-introspect.h
GENERATED_SOURCES += qmp-introspect.c
GENERATED_HEADERS += trace/generated-tracers.h
i f e q ( $( findstring dtrace ,$ ( TRACE_BACKENDS ) ) , d t r a c e )
GENERATED_HEADERS += trace/generated-tracers-dtrace.h
e n d i f
GENERATED_SOURCES += trace/generated-tracers.c
GENERATED_HEADERS += trace/generated-tcg-tracers.h
GENERATED_HEADERS += trace/generated-helpers-wrappers.h
GENERATED_HEADERS += trace/generated-helpers.h
GENERATED_SOURCES += trace/generated-helpers.c
i f e q ( $( findstring ust ,$ ( TRACE_BACKENDS ) ) , u s t )
GENERATED_HEADERS += trace/generated-ust-provider .h
GENERATED_SOURCES += trace/generated -ust.c
i f d e f C O N F I G _ T R A C E _ U S T
GENERATED_HEADERS += trace-ust-all .h
GENERATED_SOURCES += trace-ust-all .c
e n d i f
GENERATED_HEADERS += module_block.h
TRACE_HEADERS = trace-root.h $( trace-events-subdirs:%= %/trace.h)
TRACE_SOURCES = trace-root.c $( trace-events-subdirs:%= %/trace.c)
TRACE_DTRACE =
i f d e f C O N F I G _ T R A C E _ D T R A C E
TRACE_HEADERS += trace-dtrace-root.h $( trace-events-subdirs:%= %/trace-dtrace.h)
TRACE_DTRACE += trace-dtrace-root.dtrace $( trace-events-subdirs:%= %/trace-dtrace.dtrace)
e n d i f
i f d e f C O N F I G _ T R A C E _ U S T
TRACE_HEADERS += trace-ust-root.h $( trace-events-subdirs:%= %/trace-ust.h)
e n d i f
GENERATED_HEADERS += $( TRACE_HEADERS)
GENERATED_SOURCES += $( TRACE_SOURCES)
trace-group-name = $( shell dirname $1 | sed -e 's/[^a-zA-Z0-9]/_/g' )
%/trace.h : %/trace .h -timestamp
@cmp $< $@ >/dev/null 2>& 1 || cp $< $@
%/trace.h-timestamp : $( SRC_PATH ) /%/trace -events $( tracetool -y )
$( call quiet-command,$( TRACETOOL) \
--group= $( call trace-group-name,$@ ) \
--format= h \
--backends= $( TRACE_BACKENDS) \
$< > $@ ,"GEN" ," $( @:%-timestamp= %) " )
%/trace.c : %/trace .c -timestamp
@cmp $< $@ >/dev/null 2>& 1 || cp $< $@
%/trace.c-timestamp : $( SRC_PATH ) /%/trace -events $( tracetool -y )
$( call quiet-command,$( TRACETOOL) \
--group= $( call trace-group-name,$@ ) \
--format= c \
--backends= $( TRACE_BACKENDS) \
$< > $@ ,"GEN" ," $( @:%-timestamp= %) " )
%/trace-ust.h : %/trace -ust .h -timestamp
@cmp $< $@ >/dev/null 2>& 1 || cp $< $@
%/trace-ust.h-timestamp : $( SRC_PATH ) /%/trace -events $( tracetool -y )
$( call quiet-command,$( TRACETOOL) \
--group= $( call trace-group-name,$@ ) \
--format= ust-events-h \
--backends= $( TRACE_BACKENDS) \
$< > $@ ,"GEN" ," $( @:%-timestamp= %) " )
%/trace-dtrace.dtrace : %/trace -dtrace .dtrace -timestamp
@cmp $< $@ >/dev/null 2>& 1 || cp $< $@
%/trace-dtrace.dtrace-timestamp : $( SRC_PATH ) /%/trace -events $( BUILD_DIR ) /config -host .mak $( tracetool -y )
$( call quiet-command,$( TRACETOOL) \
--group= $( call trace-group-name,$@ ) \
--format= d \
--backends= $( TRACE_BACKENDS) \
$< > $@ ,"GEN" ," $( @:%-timestamp= %) " )
%/trace-dtrace.h : %/trace -dtrace .dtrace $( tracetool -y )
$( call quiet-command,dtrace -o $@ -h -s $<, "GEN" ," $@ " )
%/trace-dtrace.o : %/trace -dtrace .dtrace $( tracetool -y )
trace-root.h : trace -root .h -timestamp
@cmp $< $@ >/dev/null 2>& 1 || cp $< $@
trace-root.h-timestamp : $( SRC_PATH ) /trace -events $( tracetool -y )
$( call quiet-command,$( TRACETOOL) \
--group= root \
--format= h \
--backends= $( TRACE_BACKENDS) \
$< > $@ ,"GEN" ," $( @:%-timestamp= %) " )
trace-root.c : trace -root .c -timestamp
@cmp $< $@ >/dev/null 2>& 1 || cp $< $@
trace-root.c-timestamp : $( SRC_PATH ) /trace -events $( tracetool -y )
$( call quiet-command,$( TRACETOOL) \
--group= root \
--format= c \
--backends= $( TRACE_BACKENDS) \
$< > $@ ,"GEN" ," $( @:%-timestamp= %) " )
trace-ust-root.h : trace -ust -root .h -timestamp
@cmp $< $@ >/dev/null 2>& 1 || cp $< $@
trace-ust-root.h-timestamp : $( SRC_PATH ) /trace -events $( tracetool -y )
$( call quiet-command,$( TRACETOOL) \
--group= root \
--format= ust-events-h \
--backends= $( TRACE_BACKENDS) \
$< > $@ ,"GEN" ," $( @:%-timestamp= %) " )
trace-ust-all.h : trace -ust -all .h -timestamp
@cmp $< $@ >/dev/null 2>& 1 || cp $< $@
trace-ust-all.h-timestamp : $( trace -events -files ) $( tracetool -y )
$( call quiet-command,$( TRACETOOL) \
--group= all \
--format= ust-events-h \
--backends= $( TRACE_BACKENDS) \
$( trace-events-files) > $@ ,"GEN" ," $( @:%-timestamp= %) " )
trace-ust-all.c : trace -ust -all .c -timestamp
@cmp $< $@ >/dev/null 2>& 1 || cp $< $@
trace-ust-all.c-timestamp : $( trace -events -files ) $( tracetool -y )
$( call quiet-command,$( TRACETOOL) \
--group= all \
--format= ust-events-c \
--backends= $( TRACE_BACKENDS) \
$( trace-events-files) > $@ ,"GEN" ," $( @:%-timestamp= %) " )
trace-dtrace-root.dtrace : trace -dtrace -root .dtrace -timestamp
@cmp $< $@ >/dev/null 2>& 1 || cp $< $@
trace-dtrace-root.dtrace-timestamp : $( SRC_PATH ) /trace -events $( BUILD_DIR ) /config -host .mak $( tracetool -y )
$( call quiet-command,$( TRACETOOL) \
--group= root \
--format= d \
--backends= $( TRACE_BACKENDS) \
$< > $@ ,"GEN" ," $( @:%-timestamp= %) " )
trace-dtrace-root.h : trace -dtrace -root .dtrace
$( call quiet-command,dtrace -o $@ -h -s $<, "GEN" ," $@ " )
trace-dtrace-root.o : trace -dtrace -root .dtrace
# Don't try to regenerate Makefile or configure
# We don't generate any of them
Makefile : ;
@ -160,7 +271,8 @@ dummy := $(call unnest-vars,, \
qom-obj-y \
io-obj-y \
common-obj-y \
common-obj-m)
common-obj-m \
trace-obj-y)
i f n e q ( $( wildcard config -host .mak ) , )
i n c l u d e $( SRC_PATH ) / t e s t s / M a k e f i l e . i n c l u d e
@ -223,7 +335,7 @@ subdir-dtc:dtc/libfdt dtc/tests
dtc/% :
mkdir -p $@
$(SUBDIR_RULES) : libqemuutil .a libqemustub .a $( common -obj -y ) $( qom -obj -y ) $( crypto -aes -obj -$ ( CONFIG_USER_ONLY ) )
$(SUBDIR_RULES) : libqemuutil .a libqemustub .a $( common -obj -y ) $( qom -obj -y ) $( crypto -aes -obj -$ ( CONFIG_USER_ONLY ) ) $( trace -obj -y )
ROMSUBDIR_RULES = $( patsubst %,romsubdir-%, $( ROMS) )
# Only keep -O and -g cflags
@ -247,15 +359,17 @@ libqemuutil.a: $(util-obj-y)
######################################################################
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
@ -320,7 +434,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, $^)
i f d e f Q E M U _ G A _ M S I _ E N A B L E D
@ -345,9 +459,9 @@ ifneq ($(EXESUF),)
qemu-ga : qemu -ga $( EXESUF ) $( QGA_VSS_PROVIDER ) $( QEMU_GA_MSI )
e n d i f
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, $^)
module_block.h : $( SRC_PATH ) /scripts /modules /module_block .py config -host .mak
@ -664,6 +778,10 @@ ifneq ($(filter-out $(UNCHECKED_GOALS),$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fa
Makefile : $( GENERATED_HEADERS )
e n d i f
.SECONDARY : $( TRACE_HEADERS ) $( TRACE_HEADERS :%=%-timestamp ) \
$( TRACE_SOURCES) $( TRACE_SOURCES:%= %-timestamp) \
$( TRACE_DTRACE) $( TRACE_DTRACE:%= %-timestamp)
# Include automatically generated dependency files
# Dependencies in Makefile.objs files come from our recursive subdir rules
- i n c l u d e $( wildcard *.d tests /*.d )