2015-08-21 07:04:50 +00:00
|
|
|
# Makefile for QEMU - modified for Unicorn engine.
|
|
|
|
|
|
|
|
# Always point to the root of the build tree (needs GNU make).
|
|
|
|
BUILD_DIR=$(CURDIR)
|
|
|
|
|
|
|
|
# All following code might depend on configuration variables
|
|
|
|
ifneq ($(wildcard config-host.mak),)
|
|
|
|
# Put the all: rule here so that config-host.mak can contain dependencies.
|
|
|
|
all:
|
|
|
|
include config-host.mak
|
|
|
|
|
qapi: force a UTF-8 locale for running Python
Python2 did not validate locale correctness when reading input data, so
would happily read UTF-8 data in non-UTF-8 locales. Python3 is strict so
if you try to read UTF-8 data in the C locale, it will raise an error
for any UTF-8 bytes that aren't representable in 7-bit ascii encoding.
e.g.
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 54: ordinal not in range(128)
Traceback (most recent call last):
File "/tmp/qemu-test/src/scripts/qapi-commands.py", line 317, in <module>
schema = QAPISchema(input_file)
File "/tmp/qemu-test/src/scripts/qapi.py", line 1468, in __init__
parser = QAPISchemaParser(open(fname, 'r'))
File "/tmp/qemu-test/src/scripts/qapi.py", line 301, in __init__
previously_included)
File "/tmp/qemu-test/src/scripts/qapi.py", line 348, in _include
exprs_include = QAPISchemaParser(fobj, previously_included, info)
File "/tmp/qemu-test/src/scripts/qapi.py", line 271, in __init__
self.src = fp.read()
File "/usr/lib64/python3.5/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
More background on this can be seen in
https://www.python.org/dev/peps/pep-0538/
Many distros support a new C.UTF-8 locale that is like the C locale,
but with UTF-8 instead of 7-bit ASCII. That is not entirely portable
though. This patch thus sets the LANG to "C", but overrides LC_CTYPE
to be en_US.UTF-8 locale. This gets us pretty close to C.UTF-8, but
in a way that should be portable to everywhere QEMU builds.
This patch only forces UTF-8 for QAPI scripts, since that is the one
showing the immediate error under Python3 with C locale, but potentially
we ought to force this for all python scripts used in the build process.
Backports commit d4e5ec877ca698a87dabe68814c6f93668f50c60 from qemu
2018-03-06 16:32:46 +00:00
|
|
|
PYTHON_UTF8 = LC_ALL= LANG=C LC_CTYPE=en_US.UTF-8 $(PYTHON)
|
|
|
|
|
2015-08-21 07:04:50 +00:00
|
|
|
# Check that we're not trying to do an out-of-tree build from
|
|
|
|
# a tree that's been used for an in-tree build.
|
|
|
|
ifneq ($(realpath $(SRC_PATH)),$(realpath .))
|
|
|
|
ifneq ($(wildcard $(SRC_PATH)/config-host.mak),)
|
|
|
|
$(error This is an out of tree build but your source tree ($(SRC_PATH)) \
|
|
|
|
seems to have been used for an in-tree build. You can fix this by running \
|
2018-03-05 19:15:55 +00:00
|
|
|
"$(MAKE) distclean && rm -rf *-linux-user *-softmmu" in your source tree)
|
2015-08-21 07:04:50 +00:00
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
CONFIG_SOFTMMU := $(if $(filter %-softmmu,$(TARGET_DIRS)),y)
|
|
|
|
CONFIG_USER_ONLY := $(if $(filter %-user,$(TARGET_DIRS)),y)
|
|
|
|
CONFIG_ALL=y
|
|
|
|
-include config-all-devices.mak
|
|
|
|
|
|
|
|
config-host.mak: $(SRC_PATH)/configure
|
|
|
|
@echo $@ is out-of-date, running configure
|
|
|
|
@# TODO: The next lines include code which supports a smooth
|
|
|
|
@# transition from old configurations without config.status.
|
|
|
|
@# This code can be removed after QEMU 1.7.
|
|
|
|
@if test -x config.status; then \
|
|
|
|
./config.status; \
|
|
|
|
else \
|
|
|
|
sed -n "/.*Configured with/s/[^:]*: //p" $@ | sh; \
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
config-host.mak:
|
|
|
|
ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
|
|
|
|
@echo "Please call configure before running make!"
|
|
|
|
@exit 1
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2018-03-09 13:12:41 +00:00
|
|
|
include $(SRC_PATH)/rules.mak
|
|
|
|
|
|
|
|
GENERATED_FILES = config-host.h
|
qapi/types qapi/visit: Generate built-in stuff into separate files
Linking code from multiple separate QAPI schemata into the same
program is possible, but involves some weirdness around built-in
types:
* We generate code for built-in types into .c only with option
--builtins. The user is responsible for generating code for exactly
one QAPI schema per program with --builtins.
* We generate code for built-in types into .h regardless of
--builtins, but guarded by #ifndef QAPI_VISIT_BUILTIN. Because all
copies of this code are exactly the same, including any combination
of these headers works.
Replace this contraption by something more conventional: generate code
for built-in types into their very own files: qapi-builtin-types.c,
qapi-builtin-visit.c, qapi-builtin-types.h, qapi-builtin-visit.h, but
only with --builtins. Obey --output-dir, but ignore --prefix for
them.
Make qapi-types.h include qapi-builtin-types.h. With multiple
schemata you now have multiple qapi-types.[ch], but only one
qapi-builtin-types.[ch]. Same for qapi-visit.[ch] and
qapi-builtin-visit.[ch].
Bonus: if all you need is built-in stuff, you can include a much
smaller header. To be exploited shortly.
Backports commit cdb6610ae4283720037bae2af1f78bd40eb5fe71 from qemu
2018-03-09 14:17:54 +00:00
|
|
|
GENERATED_FILES += qapi-builtin-types.h qapi-builtin-types.c
|
|
|
|
GENERATED_FILES += qapi-types.h qapi-types.c
|
qapi: Generate separate .h, .c for each module
Our qapi-schema.json is composed of modules connected by include
directives, but the generated code is monolithic all the same: one
qapi-types.h with all the types, one qapi-visit.h with all the
visitors, and so forth. These monolithic headers get included all
over the place. In my "build everything" tree, adding a QAPI type
recompiles about 4800 out of 5100 objects.
We wouldn't write such monolithic headers by hand. It stands to
reason that we shouldn't generate them, either.
Split up generated qapi-types.h to mirror the schema's modular
structure: one header per module. Name the main module's header
qapi-types.h, and sub-module D/B.json's header D/qapi-types-B.h.
Mirror the schema's includes in the headers, so that qapi-types.h gets
you everything exactly as before. If you need less, you can include
one or more of the sub-module headers. To be exploited shortly.
Split up qapi-types.c, qapi-visit.h, qapi-visit.c, qmp-commands.h,
qmp-commands.c, qapi-event.h, qapi-event.c the same way.
qmp-introspect.h, qmp-introspect.c and qapi.texi remain monolithic.
The split of qmp-commands.c duplicates static helper function
qmp_marshal_output_str() in qapi-commands-char.c and
qapi-commands-misc.c. This happens when commands returning the same
type occur in multiple modules. Not worth avoiding.
Since I'm going to rename qapi-event.[ch] to qapi-events.[ch], and
qmp-commands.[ch] to qapi-commands.[ch], name the shards that way
already, to reduce churn. This requires temporary hacks in
commands.py and events.py. Similarly, c_name() must temporarily
be taught to munge '/' in common.py. They'll go away with the rename.
Backports commit 252dc3105fc494182e236e97fe20f2d6b1d652cb from qemu
2018-03-09 14:38:13 +00:00
|
|
|
GENERATED_FILES += qapi/qapi-types-common.h qapi/qapi-types-common.c
|
2018-03-09 15:13:16 +00:00
|
|
|
GENERATED_FILES += qapi/qapi-types-misc.h qapi/qapi-types-misc.c
|
qapi/types qapi/visit: Generate built-in stuff into separate files
Linking code from multiple separate QAPI schemata into the same
program is possible, but involves some weirdness around built-in
types:
* We generate code for built-in types into .c only with option
--builtins. The user is responsible for generating code for exactly
one QAPI schema per program with --builtins.
* We generate code for built-in types into .h regardless of
--builtins, but guarded by #ifndef QAPI_VISIT_BUILTIN. Because all
copies of this code are exactly the same, including any combination
of these headers works.
Replace this contraption by something more conventional: generate code
for built-in types into their very own files: qapi-builtin-types.c,
qapi-builtin-visit.c, qapi-builtin-types.h, qapi-builtin-visit.h, but
only with --builtins. Obey --output-dir, but ignore --prefix for
them.
Make qapi-types.h include qapi-builtin-types.h. With multiple
schemata you now have multiple qapi-types.[ch], but only one
qapi-builtin-types.[ch]. Same for qapi-visit.[ch] and
qapi-builtin-visit.[ch].
Bonus: if all you need is built-in stuff, you can include a much
smaller header. To be exploited shortly.
Backports commit cdb6610ae4283720037bae2af1f78bd40eb5fe71 from qemu
2018-03-09 14:17:54 +00:00
|
|
|
GENERATED_FILES += qapi-builtin-visit.h qapi-builtin-visit.c
|
|
|
|
GENERATED_FILES += qapi-visit.h qapi-visit.c
|
2018-03-09 15:13:16 +00:00
|
|
|
GENERATED_FILES += qapi/qapi-visit-misc.h qapi/qapi-visit-misc.c
|
qapi: Generate separate .h, .c for each module
Our qapi-schema.json is composed of modules connected by include
directives, but the generated code is monolithic all the same: one
qapi-types.h with all the types, one qapi-visit.h with all the
visitors, and so forth. These monolithic headers get included all
over the place. In my "build everything" tree, adding a QAPI type
recompiles about 4800 out of 5100 objects.
We wouldn't write such monolithic headers by hand. It stands to
reason that we shouldn't generate them, either.
Split up generated qapi-types.h to mirror the schema's modular
structure: one header per module. Name the main module's header
qapi-types.h, and sub-module D/B.json's header D/qapi-types-B.h.
Mirror the schema's includes in the headers, so that qapi-types.h gets
you everything exactly as before. If you need less, you can include
one or more of the sub-module headers. To be exploited shortly.
Split up qapi-types.c, qapi-visit.h, qapi-visit.c, qmp-commands.h,
qmp-commands.c, qapi-event.h, qapi-event.c the same way.
qmp-introspect.h, qmp-introspect.c and qapi.texi remain monolithic.
The split of qmp-commands.c duplicates static helper function
qmp_marshal_output_str() in qapi-commands-char.c and
qapi-commands-misc.c. This happens when commands returning the same
type occur in multiple modules. Not worth avoiding.
Since I'm going to rename qapi-event.[ch] to qapi-events.[ch], and
qmp-commands.[ch] to qapi-commands.[ch], name the shards that way
already, to reduce churn. This requires temporary hacks in
commands.py and events.py. Similarly, c_name() must temporarily
be taught to munge '/' in common.py. They'll go away with the rename.
Backports commit 252dc3105fc494182e236e97fe20f2d6b1d652cb from qemu
2018-03-09 14:38:13 +00:00
|
|
|
GENERATED_FILES += qapi/qapi-visit-common.h qapi/qapi-visit-common.c
|
2015-08-21 07:04:50 +00:00
|
|
|
|
|
|
|
# Don't try to regenerate Makefile or configure
|
|
|
|
# We don't generate any of them
|
|
|
|
Makefile: ;
|
|
|
|
configure: ;
|
|
|
|
|
2018-02-24 22:03:44 +00:00
|
|
|
.PHONY: all clean cscope distclean install recurse-all FORCE
|
2015-08-21 07:04:50 +00:00
|
|
|
|
|
|
|
$(call set-vpath, $(SRC_PATH))
|
|
|
|
|
|
|
|
LIBS+=-lz $(LIBS_TOOLS)
|
|
|
|
|
2018-03-08 13:58:03 +00:00
|
|
|
SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory --quiet) BUILD_DIR=$(BUILD_DIR)
|
2015-08-21 07:04:50 +00:00
|
|
|
SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS))
|
|
|
|
SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %-config-devices.mak.d, $(TARGET_DIRS))
|
|
|
|
|
|
|
|
ifeq ($(SUBDIR_DEVICES_MAK),)
|
|
|
|
config-all-devices.mak:
|
|
|
|
$(call quiet-command,echo '# no devices' > $@," GEN $@")
|
|
|
|
else
|
|
|
|
config-all-devices.mak: $(SUBDIR_DEVICES_MAK)
|
|
|
|
$(call quiet-command, sed -n \
|
|
|
|
's|^\([^=]*\)=\(.*\)$$|\1:=$$(findstring y,$$(\1)\2)|p' \
|
|
|
|
$(SUBDIR_DEVICES_MAK) | sort -u > $@, \
|
|
|
|
" GEN $@")
|
|
|
|
endif
|
|
|
|
|
|
|
|
-include $(SUBDIR_DEVICES_MAK_DEP)
|
|
|
|
|
|
|
|
%/config-devices.mak: default-configs/%.mak
|
|
|
|
$(call quiet-command,$(SHELL) $(SRC_PATH)/scripts/make_device_config.sh $@ $<, " GEN $@")
|
|
|
|
@if test -f $@; then \
|
|
|
|
if cmp -s $@.old $@; then \
|
|
|
|
mv $@.tmp $@; \
|
|
|
|
cp -p $@ $@.old; \
|
|
|
|
else \
|
|
|
|
if test -f $@.old; then \
|
|
|
|
echo "WARNING: $@ (user modified) out of date.";\
|
|
|
|
else \
|
|
|
|
echo "WARNING: $@ out of date.";\
|
|
|
|
fi; \
|
2018-03-05 19:15:55 +00:00
|
|
|
echo "Run \"$(MAKE) defconfig\" to regenerate."; \
|
2015-08-21 07:04:50 +00:00
|
|
|
rm $@.tmp; \
|
|
|
|
fi; \
|
|
|
|
else \
|
|
|
|
mv $@.tmp $@; \
|
|
|
|
cp -p $@ $@.old; \
|
|
|
|
fi
|
|
|
|
|
|
|
|
defconfig:
|
|
|
|
rm -f config-all-devices.mak $(SUBDIR_DEVICES_MAK)
|
|
|
|
|
|
|
|
ifneq ($(wildcard config-host.mak),)
|
|
|
|
include $(SRC_PATH)/Makefile.objs
|
|
|
|
endif
|
|
|
|
|
|
|
|
dummy := $(call unnest-vars,, \
|
|
|
|
util-obj-y \
|
|
|
|
block-obj-y \
|
|
|
|
block-obj-m \
|
2018-02-15 18:36:09 +00:00
|
|
|
crypto-obj-y \
|
|
|
|
crypto-aes-obj-y \
|
2015-08-21 07:04:50 +00:00
|
|
|
common-obj-y \
|
|
|
|
common-obj-m)
|
|
|
|
|
|
|
|
all: $(TOOLS) $(HELPERS-y) recurse-all modules
|
|
|
|
|
|
|
|
config-host.h: config-host.h-timestamp
|
|
|
|
config-host.h-timestamp: config-host.mak
|
|
|
|
|
|
|
|
SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
|
|
|
|
SOFTMMU_SUBDIR_RULES=$(filter %-softmmu,$(SUBDIR_RULES))
|
|
|
|
|
|
|
|
$(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
|
2018-02-15 18:36:09 +00:00
|
|
|
$(SOFTMMU_SUBDIR_RULES): $(crypto-obj-y)
|
2015-08-21 07:04:50 +00:00
|
|
|
$(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
|
|
|
|
|
|
|
|
subdir-%:
|
|
|
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
|
|
|
|
|
|
|
|
$(SUBDIR_RULES): qapi-types.c qapi-types.h qapi-visit.c qapi-visit.h $(common-obj-y) $(util-obj-y)
|
|
|
|
|
|
|
|
ALL_SUBDIRS=$(TARGET_DIRS)
|
|
|
|
|
|
|
|
recurse-all: $(SUBDIR_RULES)
|
|
|
|
|
|
|
|
######################################################################
|
|
|
|
# Build libraries
|
|
|
|
|
|
|
|
util/module.o-cflags = -D'CONFIG_BLOCK_MODULES=$(block-modules)'
|
|
|
|
|
|
|
|
######################################################################
|
|
|
|
|
2018-03-09 13:12:41 +00:00
|
|
|
qapi-py = \
|
|
|
|
$(SRC_PATH)/scripts/qapi/types.py \
|
|
|
|
$(SRC_PATH)/scripts/qapi/visit.py \
|
|
|
|
$(SRC_PATH)/scripts/qapi/common.py \
|
|
|
|
$(SRC_PATH)/scripts/ordereddict.py \
|
|
|
|
$(SRC_PATH)/scripts/qapi-gen.py
|
2015-08-21 07:04:50 +00:00
|
|
|
|
2018-03-09 15:13:16 +00:00
|
|
|
qapi-modules = \
|
|
|
|
$(SRC_PATH)/qapi-schema.json \
|
|
|
|
$(SRC_PATH)/qapi/common.json \
|
|
|
|
$(SRC_PATH)/qapi/misc.json
|
|
|
|
|
2015-08-21 07:04:50 +00:00
|
|
|
|
qapi/types qapi/visit: Generate built-in stuff into separate files
Linking code from multiple separate QAPI schemata into the same
program is possible, but involves some weirdness around built-in
types:
* We generate code for built-in types into .c only with option
--builtins. The user is responsible for generating code for exactly
one QAPI schema per program with --builtins.
* We generate code for built-in types into .h regardless of
--builtins, but guarded by #ifndef QAPI_VISIT_BUILTIN. Because all
copies of this code are exactly the same, including any combination
of these headers works.
Replace this contraption by something more conventional: generate code
for built-in types into their very own files: qapi-builtin-types.c,
qapi-builtin-visit.c, qapi-builtin-types.h, qapi-builtin-visit.h, but
only with --builtins. Obey --output-dir, but ignore --prefix for
them.
Make qapi-types.h include qapi-builtin-types.h. With multiple
schemata you now have multiple qapi-types.[ch], but only one
qapi-builtin-types.[ch]. Same for qapi-visit.[ch] and
qapi-builtin-visit.[ch].
Bonus: if all you need is built-in stuff, you can include a much
smaller header. To be exploited shortly.
Backports commit cdb6610ae4283720037bae2af1f78bd40eb5fe71 from qemu
2018-03-09 14:17:54 +00:00
|
|
|
qapi-builtin-types.c qapi-builtin-types.h \
|
2018-03-09 13:12:41 +00:00
|
|
|
qapi-types.c qapi-types.h \
|
qapi: Generate separate .h, .c for each module
Our qapi-schema.json is composed of modules connected by include
directives, but the generated code is monolithic all the same: one
qapi-types.h with all the types, one qapi-visit.h with all the
visitors, and so forth. These monolithic headers get included all
over the place. In my "build everything" tree, adding a QAPI type
recompiles about 4800 out of 5100 objects.
We wouldn't write such monolithic headers by hand. It stands to
reason that we shouldn't generate them, either.
Split up generated qapi-types.h to mirror the schema's modular
structure: one header per module. Name the main module's header
qapi-types.h, and sub-module D/B.json's header D/qapi-types-B.h.
Mirror the schema's includes in the headers, so that qapi-types.h gets
you everything exactly as before. If you need less, you can include
one or more of the sub-module headers. To be exploited shortly.
Split up qapi-types.c, qapi-visit.h, qapi-visit.c, qmp-commands.h,
qmp-commands.c, qapi-event.h, qapi-event.c the same way.
qmp-introspect.h, qmp-introspect.c and qapi.texi remain monolithic.
The split of qmp-commands.c duplicates static helper function
qmp_marshal_output_str() in qapi-commands-char.c and
qapi-commands-misc.c. This happens when commands returning the same
type occur in multiple modules. Not worth avoiding.
Since I'm going to rename qapi-event.[ch] to qapi-events.[ch], and
qmp-commands.[ch] to qapi-commands.[ch], name the shards that way
already, to reduce churn. This requires temporary hacks in
commands.py and events.py. Similarly, c_name() must temporarily
be taught to munge '/' in common.py. They'll go away with the rename.
Backports commit 252dc3105fc494182e236e97fe20f2d6b1d652cb from qemu
2018-03-09 14:38:13 +00:00
|
|
|
qapi/qapi-types-common.c qapi/qapi-types-common.h \
|
2018-03-09 15:13:16 +00:00
|
|
|
qapi/qapi-types-misc.c qapi/qapi-types-misc.h \
|
qapi/types qapi/visit: Generate built-in stuff into separate files
Linking code from multiple separate QAPI schemata into the same
program is possible, but involves some weirdness around built-in
types:
* We generate code for built-in types into .c only with option
--builtins. The user is responsible for generating code for exactly
one QAPI schema per program with --builtins.
* We generate code for built-in types into .h regardless of
--builtins, but guarded by #ifndef QAPI_VISIT_BUILTIN. Because all
copies of this code are exactly the same, including any combination
of these headers works.
Replace this contraption by something more conventional: generate code
for built-in types into their very own files: qapi-builtin-types.c,
qapi-builtin-visit.c, qapi-builtin-types.h, qapi-builtin-visit.h, but
only with --builtins. Obey --output-dir, but ignore --prefix for
them.
Make qapi-types.h include qapi-builtin-types.h. With multiple
schemata you now have multiple qapi-types.[ch], but only one
qapi-builtin-types.[ch]. Same for qapi-visit.[ch] and
qapi-builtin-visit.[ch].
Bonus: if all you need is built-in stuff, you can include a much
smaller header. To be exploited shortly.
Backports commit cdb6610ae4283720037bae2af1f78bd40eb5fe71 from qemu
2018-03-09 14:17:54 +00:00
|
|
|
qapi-builtin-visit.c qapi-builtin-visit.h \
|
2018-03-09 13:12:41 +00:00
|
|
|
qapi-visit.c qapi-visit.h \
|
qapi: Generate separate .h, .c for each module
Our qapi-schema.json is composed of modules connected by include
directives, but the generated code is monolithic all the same: one
qapi-types.h with all the types, one qapi-visit.h with all the
visitors, and so forth. These monolithic headers get included all
over the place. In my "build everything" tree, adding a QAPI type
recompiles about 4800 out of 5100 objects.
We wouldn't write such monolithic headers by hand. It stands to
reason that we shouldn't generate them, either.
Split up generated qapi-types.h to mirror the schema's modular
structure: one header per module. Name the main module's header
qapi-types.h, and sub-module D/B.json's header D/qapi-types-B.h.
Mirror the schema's includes in the headers, so that qapi-types.h gets
you everything exactly as before. If you need less, you can include
one or more of the sub-module headers. To be exploited shortly.
Split up qapi-types.c, qapi-visit.h, qapi-visit.c, qmp-commands.h,
qmp-commands.c, qapi-event.h, qapi-event.c the same way.
qmp-introspect.h, qmp-introspect.c and qapi.texi remain monolithic.
The split of qmp-commands.c duplicates static helper function
qmp_marshal_output_str() in qapi-commands-char.c and
qapi-commands-misc.c. This happens when commands returning the same
type occur in multiple modules. Not worth avoiding.
Since I'm going to rename qapi-event.[ch] to qapi-events.[ch], and
qmp-commands.[ch] to qapi-commands.[ch], name the shards that way
already, to reduce churn. This requires temporary hacks in
commands.py and events.py. Similarly, c_name() must temporarily
be taught to munge '/' in common.py. They'll go away with the rename.
Backports commit 252dc3105fc494182e236e97fe20f2d6b1d652cb from qemu
2018-03-09 14:38:13 +00:00
|
|
|
qapi/qapi-visit-common.c qapi/qapi-visit-common.h \
|
2018-03-09 15:13:16 +00:00
|
|
|
qapi/qapi-visit-misc.c qapi/qapi-visit-misc.h \
|
2018-03-09 13:12:41 +00:00
|
|
|
qapi-doc.texi: \
|
|
|
|
qapi-gen-timestamp ;
|
|
|
|
qapi-gen-timestamp: $(qapi-modules) $(qapi-py)
|
|
|
|
$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-gen.py \
|
|
|
|
-o "." -b $<, \
|
|
|
|
"GEN","$(@:%-timestamp=%)")
|
|
|
|
@>$@
|
2015-08-21 07:04:50 +00:00
|
|
|
|
|
|
|
clean:
|
|
|
|
# avoid old build problems by removing potentially incorrect old files
|
|
|
|
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
|
|
|
|
find . \( -name '*.l[oa]' -o -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
|
|
|
|
rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
|
|
|
|
rm -rf .libs */.libs
|
2018-03-09 13:12:41 +00:00
|
|
|
@# May not be present in GENERATED_FILES
|
|
|
|
rm -f $(foreach f,$(GENERATED_FILES),$(f) $(f)-timestamp)
|
|
|
|
rm -f qapi-gen-timestamp
|
2015-08-21 07:04:50 +00:00
|
|
|
rm -rf qapi-generated
|
|
|
|
for d in $(ALL_SUBDIRS); do \
|
|
|
|
if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
|
|
|
|
done
|
|
|
|
|
|
|
|
distclean: clean
|
|
|
|
rm -f config-host.mak config-host.h* config-host.ld qemu-img-cmds.texi qemu-monitor.texi
|
|
|
|
rm -f config-all-devices.mak config-all-disas.mak
|
|
|
|
rm -f config.log
|
|
|
|
for d in $(TARGET_DIRS); do \
|
|
|
|
rm -rf $$d || exit 1 ; \
|
|
|
|
done
|
|
|
|
rm -Rf .sdk
|
|
|
|
|
|
|
|
|
|
|
|
cscope:
|
|
|
|
rm -f ./cscope.*
|
|
|
|
find "$(SRC_PATH)" -name "*.[chsS]" -print | sed 's,^\./,,' > ./cscope.files
|
|
|
|
cscope -b
|
|
|
|
|
|
|
|
|
|
|
|
# Add a dependency on the generated files, so that they are always
|
|
|
|
# rebuilt before other object files
|
|
|
|
ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
|
2018-03-09 13:12:41 +00:00
|
|
|
Makefile: $(GENERATED_FILES)
|
2015-08-21 07:04:50 +00:00
|
|
|
endif
|
|
|
|
|