2006-05-14 16:07:53 +04:00
|
|
|
# Makefile for QEMU.
|
|
|
|
|
2011-09-16 23:50:43 +04:00
|
|
|
# Always point to the root of the build tree (needs GNU make).
|
|
|
|
BUILD_DIR=$(CURDIR)
|
2011-09-16 00:45:35 +04:00
|
|
|
|
2010-10-26 19:53:41 +04:00
|
|
|
GENERATED_HEADERS = config-host.h trace.h qemu-options.def
|
2010-11-12 16:20:24 +03:00
|
|
|
ifeq ($(TRACE_BACKEND),dtrace)
|
|
|
|
GENERATED_HEADERS += trace-dtrace.h
|
|
|
|
endif
|
2011-09-02 21:34:47 +04:00
|
|
|
GENERATED_HEADERS += qmp-commands.h qapi-types.h qapi-visit.h
|
2009-11-05 19:19:57 +03:00
|
|
|
|
2009-04-15 18:42:57 +04:00
|
|
|
ifneq ($(wildcard config-host.mak),)
|
2009-05-19 19:17:58 +04:00
|
|
|
# Put the all: rule here so that config-host.mak can contain dependencies.
|
|
|
|
all: build-all
|
2006-04-16 16:41:07 +04:00
|
|
|
include config-host.mak
|
2009-01-21 21:12:52 +03:00
|
|
|
include $(SRC_PATH)/rules.mak
|
2010-01-04 13:02:28 +03:00
|
|
|
config-host.mak: $(SRC_PATH)/configure
|
2009-10-07 04:40:59 +04:00
|
|
|
@echo $@ is out-of-date, running configure
|
|
|
|
@sed -n "/.*Configured with/s/[^:]*: //p" $@ | sh
|
2009-04-15 18:42:57 +04:00
|
|
|
else
|
|
|
|
config-host.mak:
|
|
|
|
@echo "Please call configure before running make!"
|
|
|
|
@exit 1
|
|
|
|
endif
|
2003-02-19 02:35:48 +03:00
|
|
|
|
2009-10-06 23:11:15 +04:00
|
|
|
# Don't try to regenerate Makefile or configure
|
|
|
|
# We don't generate any of them
|
|
|
|
Makefile: ;
|
|
|
|
configure: ;
|
|
|
|
|
2008-09-24 05:13:40 +04:00
|
|
|
.PHONY: all clean cscope distclean dvi html info install install-doc \
|
2010-01-30 01:16:50 +03:00
|
|
|
pdf recurse-all speed tar tarbin test build-all
|
2006-05-14 16:07:53 +04:00
|
|
|
|
2009-12-21 12:06:55 +03:00
|
|
|
$(call set-vpath, $(SRC_PATH):$(SRC_PATH)/hw)
|
2007-11-19 00:12:37 +03:00
|
|
|
|
2009-08-03 16:47:06 +04:00
|
|
|
LIBS+=-lz $(LIBS_TOOLS)
|
2009-07-27 18:12:51 +04:00
|
|
|
|
2006-04-23 21:57:59 +04:00
|
|
|
ifdef BUILD_DOCS
|
2010-05-31 21:43:31 +04:00
|
|
|
DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1 qemu-nbd.8 QMP/qmp-commands.txt
|
2006-04-23 21:57:59 +04:00
|
|
|
else
|
|
|
|
DOCS=
|
|
|
|
endif
|
2003-05-25 20:41:18 +04:00
|
|
|
|
2011-09-16 00:45:35 +04:00
|
|
|
SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory) BUILD_DIR=$(BUILD_DIR)
|
2009-10-07 04:41:02 +04:00
|
|
|
SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS))
|
2010-11-26 21:47:45 +03:00
|
|
|
SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %/config-devices.mak.d, $(TARGET_DIRS))
|
2009-10-07 04:41:02 +04:00
|
|
|
|
|
|
|
config-all-devices.mak: $(SUBDIR_DEVICES_MAK)
|
2009-11-19 22:19:56 +03:00
|
|
|
$(call quiet-command,cat $(SUBDIR_DEVICES_MAK) | grep =y | sort -u > $@," GEN $@")
|
2009-10-07 04:41:02 +04:00
|
|
|
|
2010-11-26 21:47:45 +03:00
|
|
|
-include $(SUBDIR_DEVICES_MAK_DEP)
|
|
|
|
|
2009-11-22 19:25:30 +03:00
|
|
|
%/config-devices.mak: default-configs/%.mak
|
2011-01-20 23:54:21 +03:00
|
|
|
$(call quiet-command,$(SHELL) $(SRC_PATH)/scripts/make_device_config.sh $@ $<, " GEN $@")
|
2009-12-20 17:39:03 +03:00
|
|
|
@if test -f $@; then \
|
2010-10-02 18:28:08 +04:00
|
|
|
if cmp -s $@.old $@; then \
|
2010-11-26 21:47:45 +03:00
|
|
|
mv $@.tmp $@; \
|
|
|
|
cp -p $@ $@.old; \
|
2009-12-20 17:39:03 +03:00
|
|
|
else \
|
|
|
|
if test -f $@.old; then \
|
|
|
|
echo "WARNING: $@ (user modified) out of date.";\
|
|
|
|
else \
|
|
|
|
echo "WARNING: $@ out of date.";\
|
|
|
|
fi; \
|
|
|
|
echo "Run \"make defconfig\" to regenerate."; \
|
|
|
|
rm $@.tmp; \
|
|
|
|
fi; \
|
2009-11-22 19:25:30 +03:00
|
|
|
else \
|
2009-12-20 17:39:03 +03:00
|
|
|
mv $@.tmp $@; \
|
|
|
|
cp -p $@ $@.old; \
|
2009-11-22 19:25:30 +03:00
|
|
|
fi
|
|
|
|
|
|
|
|
defconfig:
|
|
|
|
rm -f config-all-devices.mak $(SUBDIR_DEVICES_MAK)
|
|
|
|
|
2009-10-07 04:41:02 +04:00
|
|
|
-include config-all-devices.mak
|
2009-10-07 04:40:58 +04:00
|
|
|
|
2009-11-05 19:19:57 +03:00
|
|
|
build-all: $(DOCS) $(TOOLS) recurse-all
|
2006-05-13 20:54:03 +04:00
|
|
|
|
2009-10-07 04:40:58 +04:00
|
|
|
config-host.h: config-host.h-timestamp
|
|
|
|
config-host.h-timestamp: config-host.mak
|
2010-11-01 21:09:38 +03:00
|
|
|
qemu-options.def: $(SRC_PATH)/qemu-options.hx
|
2011-01-20 23:54:21 +03:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $@")
|
2009-10-07 04:40:58 +04:00
|
|
|
|
2008-05-28 20:44:57 +04:00
|
|
|
SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
|
|
|
|
|
2009-11-05 19:19:57 +03:00
|
|
|
subdir-%: $(GENERATED_HEADERS)
|
2009-05-07 05:00:31 +04:00
|
|
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
|
2006-05-13 17:55:08 +04:00
|
|
|
|
2010-01-14 20:11:43 +03:00
|
|
|
ifneq ($(wildcard config-host.mak),)
|
2010-01-06 22:24:05 +03:00
|
|
|
include $(SRC_PATH)/Makefile.objs
|
2010-01-14 20:11:43 +03:00
|
|
|
endif
|
2010-01-06 22:24:05 +03:00
|
|
|
|
|
|
|
$(common-obj-y): $(GENERATED_HEADERS)
|
2011-08-21 07:23:03 +04:00
|
|
|
subdir-libcacard: $(oslib-obj-y) $(trace-obj-y) qemu-timer-common.o
|
2011-05-02 11:54:03 +04:00
|
|
|
|
2010-09-12 19:21:36 +04:00
|
|
|
$(filter %-softmmu,$(SUBDIR_RULES)): $(trace-obj-y) $(common-obj-y) subdir-libdis
|
2009-07-31 16:18:32 +04:00
|
|
|
|
2010-09-12 19:21:36 +04:00
|
|
|
$(filter %-user,$(SUBDIR_RULES)): $(GENERATED_HEADERS) $(trace-obj-y) subdir-libdis-user subdir-libuser
|
2009-09-27 20:26:02 +04:00
|
|
|
|
2009-07-31 16:18:32 +04:00
|
|
|
ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
|
|
|
|
romsubdir-%:
|
|
|
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pc-bios/$* V="$(V)" TARGET_DIR="$*/",)
|
|
|
|
|
|
|
|
ALL_SUBDIRS=$(TARGET_DIRS) $(patsubst %,pc-bios/%, $(ROMS))
|
|
|
|
|
|
|
|
recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES)
|
2006-08-01 20:21:11 +04:00
|
|
|
|
2009-08-03 16:46:57 +04:00
|
|
|
audio/audio.o audio/fmodaudio.o: QEMU_CFLAGS += $(FMOD_CFLAGS)
|
2009-06-25 02:08:09 +04:00
|
|
|
|
2009-08-03 16:46:21 +04:00
|
|
|
QEMU_CFLAGS+=$(CURL_CFLAGS)
|
2009-05-11 19:41:42 +04:00
|
|
|
|
2011-07-19 23:50:29 +04:00
|
|
|
QEMU_CFLAGS+=$(GLIB_CFLAGS)
|
|
|
|
|
2010-07-07 22:57:52 +04:00
|
|
|
ui/cocoa.o: ui/cocoa.m
|
2007-11-07 22:24:02 +03:00
|
|
|
|
2010-07-07 22:57:52 +04:00
|
|
|
ui/sdl.o audio/sdlaudio.o ui/sdl_zoom.o baum.o: QEMU_CFLAGS += $(SDL_CFLAGS)
|
2009-03-06 23:27:10 +03:00
|
|
|
|
2010-07-07 22:57:52 +04:00
|
|
|
ui/vnc.o: QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
|
2008-09-29 03:49:55 +04:00
|
|
|
|
2009-08-03 16:46:21 +04:00
|
|
|
bt-host.o: QEMU_CFLAGS += $(BLUEZ_CFLAGS)
|
2007-11-07 22:24:02 +03:00
|
|
|
|
2011-09-04 13:32:55 +04:00
|
|
|
version.o: $(SRC_PATH)/version.rc config-host.h
|
2010-09-26 20:07:57 +04:00
|
|
|
$(call quiet-command,$(WINDRES) -I. -o $@ $<," RC $(TARGET_DIR)$@")
|
|
|
|
|
|
|
|
version-obj-$(CONFIG_WIN32) += version.o
|
2007-11-07 22:24:02 +03:00
|
|
|
######################################################################
|
2011-05-15 12:51:28 +04:00
|
|
|
# Support building shared library libcacard
|
|
|
|
|
|
|
|
.PHONY: libcacard.la install-libcacard
|
|
|
|
ifeq ($(LIBTOOL),)
|
|
|
|
libcacard.la:
|
|
|
|
@echo "libtool is missing, please install and rerun configure"; exit 1
|
|
|
|
|
|
|
|
install-libcacard:
|
|
|
|
@echo "libtool is missing, please install and rerun configure"; exit 1
|
|
|
|
else
|
2011-08-21 17:36:21 +04:00
|
|
|
libcacard.la: $(GENERATED_HEADERS) $(oslib-obj-y) qemu-timer-common.o $(addsuffix .lo, $(basename $(trace-obj-y)))
|
2011-05-15 12:51:28 +04:00
|
|
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C libcacard V="$(V)" TARGET_DIR="$*/" libcacard.la,)
|
|
|
|
|
|
|
|
install-libcacard: libcacard.la
|
|
|
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C libcacard V="$(V)" TARGET_DIR="$*/" install-libcacard,)
|
|
|
|
endif
|
|
|
|
######################################################################
|
2007-11-07 22:24:02 +03:00
|
|
|
|
2010-01-20 22:54:18 +03:00
|
|
|
qemu-img.o: qemu-img-cmds.h
|
2011-07-21 00:19:37 +04:00
|
|
|
qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o cmd.o qemu-ga.o: $(GENERATED_HEADERS)
|
2009-06-07 03:42:17 +04:00
|
|
|
|
2010-10-26 12:39:19 +04:00
|
|
|
qemu-img$(EXESUF): qemu-img.o qemu-tool.o qemu-error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) qemu-timer-common.o
|
2010-01-06 22:24:05 +03:00
|
|
|
|
2010-10-26 12:39:19 +04:00
|
|
|
qemu-nbd$(EXESUF): qemu-nbd.o qemu-tool.o qemu-error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) qemu-timer-common.o
|
2010-01-06 22:24:05 +03:00
|
|
|
|
2010-10-26 12:39:19 +04:00
|
|
|
qemu-io$(EXESUF): qemu-io.o cmd.o qemu-tool.o qemu-error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) qemu-timer-common.o
|
2009-04-05 22:41:23 +04:00
|
|
|
|
2009-06-07 03:42:17 +04:00
|
|
|
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
|
2011-01-20 23:54:21 +03:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $@")
|
2009-06-07 03:42:17 +04:00
|
|
|
|
2011-05-10 13:21:18 +04:00
|
|
|
check-qint.o check-qstring.o check-qdict.o check-qlist.o check-qfloat.o check-qjson.o test-coroutine.o: $(GENERATED_HEADERS)
|
2010-05-20 11:18:52 +04:00
|
|
|
|
2011-08-21 17:36:21 +04:00
|
|
|
CHECK_PROG_DEPS = $(oslib-obj-y) $(trace-obj-y) qemu-tool.o
|
2010-11-12 17:55:46 +03:00
|
|
|
|
|
|
|
check-qint: check-qint.o qint.o $(CHECK_PROG_DEPS)
|
|
|
|
check-qstring: check-qstring.o qstring.o $(CHECK_PROG_DEPS)
|
|
|
|
check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o qlist.o $(CHECK_PROG_DEPS)
|
|
|
|
check-qlist: check-qlist.o qlist.o qint.o $(CHECK_PROG_DEPS)
|
|
|
|
check-qfloat: check-qfloat.o qfloat.o $(CHECK_PROG_DEPS)
|
2011-06-01 21:14:50 +04:00
|
|
|
check-qjson: check-qjson.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o qjson.o json-streamer.o json-lexer.o json-parser.o error.o qerror.o qemu-error.o $(CHECK_PROG_DEPS)
|
2011-05-10 13:21:18 +04:00
|
|
|
test-coroutine: test-coroutine.o qemu-timer-common.o async.o $(coroutine-obj-y) $(CHECK_PROG_DEPS)
|
2009-08-28 22:27:29 +04:00
|
|
|
|
2011-07-19 23:50:44 +04:00
|
|
|
$(qapi-obj-y): $(GENERATED_HEADERS)
|
|
|
|
qapi-dir := qapi-generated
|
2011-07-20 00:41:55 +04:00
|
|
|
test-visitor.o test-qmp-commands.o qemu-ga$(EXESUF): QEMU_CFLAGS += -I $(qapi-dir)
|
2011-08-12 00:38:12 +04:00
|
|
|
qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
|
2011-07-19 23:50:44 +04:00
|
|
|
|
|
|
|
$(qapi-dir)/test-qapi-types.c: $(qapi-dir)/test-qapi-types.h
|
|
|
|
$(qapi-dir)/test-qapi-types.h: $(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-types.py
|
2011-07-23 01:08:09 +04:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
|
2011-07-19 23:50:44 +04:00
|
|
|
$(qapi-dir)/test-qapi-visit.c: $(qapi-dir)/test-qapi-visit.h
|
|
|
|
$(qapi-dir)/test-qapi-visit.h: $(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-visit.py
|
2011-07-23 01:08:09 +04:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
|
2011-07-19 23:50:45 +04:00
|
|
|
$(qapi-dir)/test-qmp-commands.h: $(qapi-dir)/test-qmp-marshal.c
|
|
|
|
$(qapi-dir)/test-qmp-marshal.c: $(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-commands.py
|
2011-07-23 01:08:09 +04:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
|
2011-07-19 23:50:44 +04:00
|
|
|
|
2011-07-20 00:41:55 +04:00
|
|
|
$(qapi-dir)/qga-qapi-types.c: $(qapi-dir)/qga-qapi-types.h
|
|
|
|
$(qapi-dir)/qga-qapi-types.h: $(SRC_PATH)/qapi-schema-guest.json $(SRC_PATH)/scripts/qapi-types.py
|
2011-07-23 01:08:09 +04:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py -o "$(qapi-dir)" -p "qga-" < $<, " GEN $@")
|
2011-07-20 00:41:55 +04:00
|
|
|
$(qapi-dir)/qga-qapi-visit.c: $(qapi-dir)/qga-qapi-visit.h
|
|
|
|
$(qapi-dir)/qga-qapi-visit.h: $(SRC_PATH)/qapi-schema-guest.json $(SRC_PATH)/scripts/qapi-visit.py
|
2011-07-23 01:08:09 +04:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py -o "$(qapi-dir)" -p "qga-" < $<, " GEN $@")
|
2011-09-02 21:34:47 +04:00
|
|
|
$(qapi-dir)/qga-qmp-commands.h: $(qapi-dir)/qga-qmp-marshal.c
|
2011-07-20 00:41:55 +04:00
|
|
|
$(qapi-dir)/qga-qmp-marshal.c: $(SRC_PATH)/qapi-schema-guest.json $(SRC_PATH)/scripts/qapi-commands.py
|
2011-07-23 01:08:09 +04:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py -o "$(qapi-dir)" -p "qga-" < $<, " GEN $@")
|
2011-07-20 00:41:55 +04:00
|
|
|
|
2011-09-02 21:34:47 +04:00
|
|
|
qapi-types.c: qapi-types.h
|
|
|
|
qapi-types.h: $(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py
|
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py -o "." < $<, " GEN $@")
|
|
|
|
qapi-visit.c: qapi-visit.h
|
|
|
|
qapi-visit.h: $(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-visit.py
|
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py -o "." < $<, " GEN $@")
|
|
|
|
qmp-commands.h: qmp-marshal.c
|
|
|
|
qmp-marshal.c: $(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py
|
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py -m -o "." < $<, " GEN $@")
|
|
|
|
|
2011-07-19 23:50:44 +04:00
|
|
|
test-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
|
2011-08-21 17:36:21 +04:00
|
|
|
test-visitor: test-visitor.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o $(qapi-obj-y) error.o osdep.o $(oslib-obj-y) qjson.o json-streamer.o json-lexer.o json-parser.o qerror.o qemu-error.o qemu-tool.o $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
|
2011-07-19 23:50:44 +04:00
|
|
|
|
2011-07-19 23:50:45 +04:00
|
|
|
test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
|
2011-08-21 17:36:21 +04:00
|
|
|
test-qmp-commands: test-qmp-commands.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o $(qapi-obj-y) error.o osdep.o $(oslib-obj-y) qjson.o json-streamer.o json-lexer.o json-parser.o qerror.o qemu-error.o qemu-tool.o $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
|
2011-07-19 23:50:45 +04:00
|
|
|
|
2011-07-26 20:39:24 +04:00
|
|
|
QGALIB_GEN=$(addprefix $(qapi-dir)/, qga-qapi-types.c qga-qapi-types.h qga-qapi-visit.c qga-qmp-marshal.c)
|
|
|
|
$(QGALIB_GEN): $(GENERATED_HEADERS)
|
2011-08-12 00:38:12 +04:00
|
|
|
$(qga-obj-y) qemu-ga.o: $(QGALIB_GEN)
|
|
|
|
|
|
|
|
qemu-ga$(EXESUF): qemu-ga.o $(qga-obj-y) $(qapi-obj-y) $(trace-obj-y) $(qobject-obj-y) $(version-obj-y) $(addprefix $(qapi-dir)/, qga-qapi-visit.o qga-qapi-types.o qga-qmp-marshal.o)
|
2011-07-21 00:19:37 +04:00
|
|
|
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 17:36:38 +03:00
|
|
|
QEMULIBS=libhw32 libhw64 libuser libdis libdis-user
|
|
|
|
|
2003-02-19 01:55:36 +03:00
|
|
|
clean:
|
2003-08-12 03:01:33 +04:00
|
|
|
# avoid old build problems by removing potentially incorrect old files
|
2009-10-07 04:41:00 +04:00
|
|
|
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
|
2010-10-26 19:53:41 +04:00
|
|
|
rm -f qemu-options.def
|
2011-07-21 00:19:37 +04:00
|
|
|
rm -f *.o *.d *.a *.lo $(TOOLS) qemu-ga TAGS cscope.* *.pod *~ */*~
|
2011-05-15 12:51:28 +04:00
|
|
|
rm -Rf .libs
|
2011-07-20 00:41:53 +04:00
|
|
|
rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d block/*.o block/*.d net/*.o net/*.d fsdev/*.o fsdev/*.d ui/*.o ui/*.d qapi/*.o qapi/*.d qga/*.o qga/*.d
|
2009-06-09 22:45:16 +04:00
|
|
|
rm -f qemu-img-cmds.h
|
2011-08-31 22:30:57 +04:00
|
|
|
rm -f trace/*.o trace/*.d
|
2010-10-09 12:24:17 +04:00
|
|
|
rm -f trace.c trace.h trace.c-timestamp trace.h-timestamp
|
2010-11-12 16:20:24 +03:00
|
|
|
rm -f trace-dtrace.dtrace trace-dtrace.dtrace-timestamp
|
|
|
|
rm -f trace-dtrace.h trace-dtrace.h-timestamp
|
2011-07-19 23:50:44 +04:00
|
|
|
rm -rf $(qapi-dir)
|
2004-05-12 23:32:15 +04:00
|
|
|
$(MAKE) -C tests clean
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 17:36:38 +03:00
|
|
|
for d in $(ALL_SUBDIRS) $(QEMULIBS) libcacard; do \
|
2009-11-13 12:51:05 +03:00
|
|
|
if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
|
2010-10-26 19:53:41 +04:00
|
|
|
rm -f $$d/qemu-options.def; \
|
2003-08-11 01:39:31 +04:00
|
|
|
done
|
2003-02-19 01:55:36 +03:00
|
|
|
|
2003-03-07 02:23:54 +03:00
|
|
|
distclean: clean
|
2009-11-13 12:51:05 +03:00
|
|
|
rm -f config-host.mak config-host.h* config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi qemu-monitor.texi
|
2009-11-22 19:25:30 +03:00
|
|
|
rm -f config-all-devices.mak
|
2009-11-13 12:51:05 +03:00
|
|
|
rm -f roms/seabios/config.mak roms/vgabios/config.mak
|
2011-04-13 10:42:16 +04:00
|
|
|
rm -f qemu-doc.info qemu-doc.aux qemu-doc.cp qemu-doc.cps qemu-doc.dvi
|
|
|
|
rm -f qemu-doc.fn qemu-doc.fns qemu-doc.info qemu-doc.ky qemu-doc.kys
|
|
|
|
rm -f qemu-doc.log qemu-doc.pdf qemu-doc.pg qemu-doc.toc qemu-doc.tp
|
|
|
|
rm -f qemu-doc.vr
|
2011-07-26 07:56:02 +04:00
|
|
|
rm -f config.log
|
2010-07-08 09:26:18 +04:00
|
|
|
rm -f qemu-tech.info qemu-tech.aux qemu-tech.cp qemu-tech.dvi qemu-tech.fn qemu-tech.info qemu-tech.ky qemu-tech.log qemu-tech.pdf qemu-tech.pg qemu-tech.toc qemu-tech.tp qemu-tech.vr
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 17:36:38 +03:00
|
|
|
for d in $(TARGET_DIRS) $(QEMULIBS); do \
|
2003-10-28 03:12:52 +03:00
|
|
|
rm -rf $$d || exit 1 ; \
|
2003-08-11 03:41:46 +04:00
|
|
|
done
|
2003-03-07 02:23:54 +03:00
|
|
|
|
2004-12-13 01:18:34 +03:00
|
|
|
KEYMAPS=da en-gb et fr fr-ch is lt modifiers no pt-br sv \
|
|
|
|
ar de en-us fi fr-be hr it lv nl pl ru th \
|
|
|
|
common de-ch es fo fr-ca hu ja mk nl-be pt sl tr
|
|
|
|
|
2008-11-27 18:45:16 +03:00
|
|
|
ifdef INSTALL_BLOBS
|
2010-08-23 14:10:46 +04:00
|
|
|
BLOBS=bios.bin vgabios.bin vgabios-cirrus.bin \
|
2010-11-30 13:54:33 +03:00
|
|
|
vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin \
|
2010-08-23 14:10:46 +04:00
|
|
|
ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc \
|
2011-04-18 21:46:01 +04:00
|
|
|
pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom \
|
|
|
|
pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \
|
2011-03-14 13:29:19 +03:00
|
|
|
bamboo.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \
|
2011-05-26 01:49:41 +04:00
|
|
|
mpc8544ds.dtb \
|
2010-04-20 21:37:13 +04:00
|
|
|
multiboot.bin linuxboot.bin \
|
2011-04-01 08:15:23 +04:00
|
|
|
s390-zipl.rom \
|
Add SLOF-based partition firmware for pSeries machine, allowing more boot options
Currently, the emulated pSeries machine requires the use of the
-kernel parameter in order to explicitly load a guest kernel. This
means booting from the virtual disk, cdrom or network is not possible.
This patch addresses this limitation by inserting a within-partition
firmware image (derived from the "SLOF" free Open Firmware project).
If -kernel is not specified, qemu will now load the SLOF image, which
has access to the qemu boot device list through the device tree, and
can boot from any of the usual virtual devices.
In order to support the new firmware, an extension to the emulated
machine/hypervisor is necessary. Unlike Linux, which expects
multi-CPU entry to be handled kexec() style, the SLOF firmware expects
only one CPU to be active at entry, and to use a hypervisor RTAS
method to enable the other CPUs one by one.
This patch also implements this 'start-cpu' method, so that SLOF can
start the secondary CPUs and marshal them into the kexec() holding
pattern ready for entry into the guest OS. Linux should, and in the
future might directly use the start-cpu method to enable initially
disabled CPUs, but for now it does require kexec() entry.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
2011-04-01 08:15:34 +04:00
|
|
|
spapr-rtas.bin slof.bin
|
2008-11-27 18:45:16 +03:00
|
|
|
else
|
|
|
|
BLOBS=
|
|
|
|
endif
|
|
|
|
|
2006-05-01 03:54:18 +04:00
|
|
|
install-doc: $(DOCS)
|
2009-04-18 19:36:02 +04:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(docdir)"
|
|
|
|
$(INSTALL_DATA) qemu-doc.html qemu-tech.html "$(DESTDIR)$(docdir)"
|
2009-08-03 16:47:00 +04:00
|
|
|
ifdef CONFIG_POSIX
|
2009-04-18 19:36:02 +04:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
|
|
|
|
$(INSTALL_DATA) qemu.1 qemu-img.1 "$(DESTDIR)$(mandir)/man1"
|
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man8"
|
|
|
|
$(INSTALL_DATA) qemu-nbd.8 "$(DESTDIR)$(mandir)/man8"
|
2006-05-01 03:54:18 +04:00
|
|
|
endif
|
|
|
|
|
2010-02-20 20:14:59 +03:00
|
|
|
install-sysconfig:
|
2010-03-08 17:43:41 +03:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(sysconfdir)/qemu"
|
|
|
|
$(INSTALL_DATA) $(SRC_PATH)/sysconfigs/target/target-x86_64.conf "$(DESTDIR)$(sysconfdir)/qemu"
|
2010-02-20 20:14:59 +03:00
|
|
|
|
|
|
|
install: all $(if $(BUILD_DOCS),install-doc) install-sysconfig
|
2009-04-18 19:36:02 +04:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(bindir)"
|
2007-10-20 22:29:34 +04:00
|
|
|
ifneq ($(TOOLS),)
|
2009-04-18 19:36:02 +04:00
|
|
|
$(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)"
|
2007-10-20 22:29:34 +04:00
|
|
|
endif
|
2008-11-27 18:45:16 +03:00
|
|
|
ifneq ($(BLOBS),)
|
2009-04-18 19:36:02 +04:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(datadir)"
|
2008-11-27 18:45:16 +03:00
|
|
|
set -e; for x in $(BLOBS); do \
|
2009-04-18 19:36:02 +04:00
|
|
|
$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(datadir)"; \
|
2006-04-16 16:41:07 +04:00
|
|
|
done
|
2008-11-27 18:45:16 +03:00
|
|
|
endif
|
2009-04-18 19:36:02 +04:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(datadir)/keymaps"
|
2008-03-05 21:16:09 +03:00
|
|
|
set -e; for x in $(KEYMAPS); do \
|
2009-05-28 12:11:42 +04:00
|
|
|
$(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(datadir)/keymaps"; \
|
2006-04-16 16:41:07 +04:00
|
|
|
done
|
2003-08-11 01:39:31 +04:00
|
|
|
for d in $(TARGET_DIRS); do \
|
2004-05-12 23:32:15 +04:00
|
|
|
$(MAKE) -C $$d $@ || exit 1 ; \
|
2003-08-11 01:39:31 +04:00
|
|
|
done
|
2003-03-22 20:31:19 +03:00
|
|
|
|
2003-03-01 20:13:26 +03:00
|
|
|
# various test targets
|
2007-11-14 13:34:57 +03:00
|
|
|
test speed: all
|
2004-05-12 23:32:15 +04:00
|
|
|
$(MAKE) -C tests $@
|
2003-02-19 01:55:36 +03:00
|
|
|
|
2009-08-07 18:43:11 +04:00
|
|
|
.PHONY: TAGS
|
2007-09-17 01:08:06 +04:00
|
|
|
TAGS:
|
2009-08-07 18:43:11 +04:00
|
|
|
find "$(SRC_PATH)" -name '*.[hc]' -print0 | xargs -0 etags
|
2003-02-19 01:55:36 +03:00
|
|
|
|
2005-08-21 13:23:39 +04:00
|
|
|
cscope:
|
|
|
|
rm -f ./cscope.*
|
2011-07-21 07:12:15 +04:00
|
|
|
find "$(SRC_PATH)" -name "*.[chsS]" -print | sed 's,^\./,,' > ./cscope.files
|
2005-08-21 13:23:39 +04:00
|
|
|
cscope -b
|
|
|
|
|
2003-03-23 23:17:16 +03:00
|
|
|
# documentation
|
2010-03-05 00:21:02 +03:00
|
|
|
MAKEINFO=makeinfo
|
|
|
|
MAKEINFOFLAGS=--no-headers --no-split --number-sections
|
2010-01-30 01:16:50 +03:00
|
|
|
TEXIFLAG=$(if $(V),,--quiet)
|
|
|
|
%.dvi: %.texi
|
|
|
|
$(call quiet-command,texi2dvi $(TEXIFLAG) -I . $<," GEN $@")
|
|
|
|
|
2004-04-04 19:21:17 +04:00
|
|
|
%.html: %.texi
|
2010-03-05 00:21:02 +03:00
|
|
|
$(call quiet-command,$(MAKEINFO) $(MAKEINFOFLAGS) --html $< -o $@, \
|
|
|
|
" GEN $@")
|
2003-03-23 23:17:16 +03:00
|
|
|
|
2006-05-01 02:51:54 +04:00
|
|
|
%.info: %.texi
|
2010-03-05 00:21:02 +03:00
|
|
|
$(call quiet-command,$(MAKEINFO) $< -o $@," GEN $@")
|
2006-05-01 02:51:54 +04:00
|
|
|
|
2010-01-30 01:16:50 +03:00
|
|
|
%.pdf: %.texi
|
|
|
|
$(call quiet-command,texi2pdf $(TEXIFLAG) -I . $<," GEN $@")
|
2009-03-28 09:44:27 +03:00
|
|
|
|
|
|
|
qemu-options.texi: $(SRC_PATH)/qemu-options.hx
|
2011-01-20 23:54:21 +03:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@," GEN $@")
|
2006-05-01 02:51:54 +04:00
|
|
|
|
2010-09-30 23:00:22 +04:00
|
|
|
qemu-monitor.texi: $(SRC_PATH)/hmp-commands.hx
|
2011-01-20 23:54:21 +03:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@," GEN $@")
|
2009-06-06 12:22:04 +04:00
|
|
|
|
2010-09-13 19:26:00 +04:00
|
|
|
QMP/qmp-commands.txt: $(SRC_PATH)/qmp-commands.hx
|
2011-01-20 23:54:21 +03:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -q < $< > $@," GEN $@")
|
2010-05-31 21:43:31 +04:00
|
|
|
|
2009-06-07 03:42:17 +04:00
|
|
|
qemu-img-cmds.texi: $(SRC_PATH)/qemu-img-cmds.hx
|
2011-01-20 23:54:21 +03:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@," GEN $@")
|
2009-06-07 03:42:17 +04:00
|
|
|
|
2009-06-06 12:22:04 +04:00
|
|
|
qemu.1: qemu-doc.texi qemu-options.texi qemu-monitor.texi
|
2009-04-05 21:40:46 +04:00
|
|
|
$(call quiet-command, \
|
2011-01-20 23:54:21 +03:00
|
|
|
perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu.pod && \
|
2009-04-05 21:40:46 +04:00
|
|
|
pod2man --section=1 --center=" " --release=" " qemu.pod > $@, \
|
|
|
|
" GEN $@")
|
2003-10-01 04:13:48 +04:00
|
|
|
|
2009-06-07 03:42:17 +04:00
|
|
|
qemu-img.1: qemu-img.texi qemu-img-cmds.texi
|
2009-04-05 21:40:46 +04:00
|
|
|
$(call quiet-command, \
|
2011-01-20 23:54:21 +03:00
|
|
|
perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu-img.pod && \
|
2009-04-05 21:40:46 +04:00
|
|
|
pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@, \
|
|
|
|
" GEN $@")
|
2004-11-16 01:57:26 +03:00
|
|
|
|
2008-05-28 01:13:40 +04:00
|
|
|
qemu-nbd.8: qemu-nbd.texi
|
2009-04-05 21:40:46 +04:00
|
|
|
$(call quiet-command, \
|
2011-01-20 23:54:21 +03:00
|
|
|
perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu-nbd.pod && \
|
2009-04-05 21:40:46 +04:00
|
|
|
pod2man --section=8 --center=" " --release=" " qemu-nbd.pod > $@, \
|
|
|
|
" GEN $@")
|
2008-05-28 01:13:40 +04:00
|
|
|
|
2006-05-14 16:07:53 +04:00
|
|
|
dvi: qemu-doc.dvi qemu-tech.dvi
|
|
|
|
html: qemu-doc.html qemu-tech.html
|
2010-01-30 01:16:50 +03:00
|
|
|
info: qemu-doc.info qemu-tech.info
|
|
|
|
pdf: qemu-doc.pdf qemu-tech.pdf
|
2006-05-14 16:07:53 +04:00
|
|
|
|
2010-01-30 01:16:50 +03:00
|
|
|
qemu-doc.dvi qemu-doc.html qemu-doc.info qemu-doc.pdf: \
|
|
|
|
qemu-img.texi qemu-nbd.texi qemu-options.texi \
|
|
|
|
qemu-monitor.texi qemu-img-cmds.texi
|
2008-09-24 05:13:40 +04:00
|
|
|
|
2007-01-25 01:56:36 +03:00
|
|
|
VERSION ?= $(shell cat VERSION)
|
|
|
|
FILE = qemu-$(VERSION)
|
2003-03-03 18:02:29 +03:00
|
|
|
|
2003-10-01 00:54:24 +04:00
|
|
|
# tar release (use 'make -k tar' on a checkouted tree)
|
2003-03-03 18:02:29 +03:00
|
|
|
tar:
|
|
|
|
rm -rf /tmp/$(FILE)
|
2003-10-01 00:54:24 +04:00
|
|
|
cp -r . /tmp/$(FILE)
|
2008-04-23 00:45:30 +04:00
|
|
|
cd /tmp && tar zcvf ~/$(FILE).tar.gz $(FILE) --exclude CVS --exclude .git --exclude .svn
|
2003-03-03 18:02:29 +03:00
|
|
|
rm -rf /tmp/$(FILE)
|
|
|
|
|
2007-11-07 22:24:02 +03:00
|
|
|
# Include automatically generated dependency files
|
2011-07-21 00:19:37 +04:00
|
|
|
-include $(wildcard *.d audio/*.d slirp/*.d block/*.d net/*.d ui/*.d qapi/*.d qga/*.d)
|