2006-05-14 20:07:53 +08:00
|
|
|
# Makefile for QEMU.
|
|
|
|
|
2011-09-17 03:50:43 +08:00
|
|
|
# Always point to the root of the build tree (needs GNU make).
|
|
|
|
BUILD_DIR=$(CURDIR)
|
2011-09-16 04:45:35 +08:00
|
|
|
|
2012-03-07 02:50:38 +08:00
|
|
|
# All following code might depend on configuration variables
|
2009-04-15 22:42:57 +08:00
|
|
|
ifneq ($(wildcard config-host.mak),)
|
2009-05-19 23:17:58 +08:00
|
|
|
# Put the all: rule here so that config-host.mak can contain dependencies.
|
2012-07-10 02:36:36 +08:00
|
|
|
all:
|
2006-04-16 20:41:07 +08:00
|
|
|
include config-host.mak
|
2012-10-19 21:54:23 +08: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 \
|
|
|
|
"make distclean && rm -rf *-linux-user *-softmmu" in your source tree)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2013-04-16 16:50:38 +08:00
|
|
|
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
|
|
|
|
-include config-all-disas.mak
|
|
|
|
|
2009-01-22 02:12:52 +08:00
|
|
|
include $(SRC_PATH)/rules.mak
|
2010-01-04 18:02:28 +08:00
|
|
|
config-host.mak: $(SRC_PATH)/configure
|
2009-10-07 08:40:59 +08:00
|
|
|
@echo $@ is out-of-date, running configure
|
2013-10-21 00:39:21 +08:00
|
|
|
@# 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
|
2009-04-15 22:42:57 +08:00
|
|
|
else
|
|
|
|
config-host.mak:
|
2012-09-17 04:07:13 +08:00
|
|
|
ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
|
2009-04-15 22:42:57 +08:00
|
|
|
@echo "Please call configure before running make!"
|
|
|
|
@exit 1
|
|
|
|
endif
|
2012-09-17 04:07:13 +08:00
|
|
|
endif
|
2003-02-19 07:35:48 +08:00
|
|
|
|
2012-12-15 03:13:09 +08:00
|
|
|
GENERATED_HEADERS = config-host.h qemu-options.def
|
|
|
|
GENERATED_HEADERS += qmp-commands.h qapi-types.h qapi-visit.h
|
|
|
|
GENERATED_SOURCES += qmp-marshal.c qapi-types.c qapi-visit.c
|
|
|
|
|
2013-03-05 21:47:32 +08:00
|
|
|
GENERATED_HEADERS += trace/generated-events.h
|
|
|
|
GENERATED_SOURCES += trace/generated-events.c
|
|
|
|
|
2012-12-15 03:13:09 +08:00
|
|
|
GENERATED_HEADERS += trace/generated-tracers.h
|
2014-05-27 21:02:14 +08:00
|
|
|
ifeq ($(findstring dtrace,$(TRACE_BACKENDS)),dtrace)
|
2012-12-15 03:13:09 +08:00
|
|
|
GENERATED_HEADERS += trace/generated-tracers-dtrace.h
|
2012-03-07 02:50:38 +08:00
|
|
|
endif
|
2012-12-15 03:13:09 +08:00
|
|
|
GENERATED_SOURCES += trace/generated-tracers.c
|
2012-03-07 02:50:38 +08:00
|
|
|
|
2014-05-27 21:02:14 +08:00
|
|
|
ifeq ($(findstring ust,$(TRACE_BACKENDS)),ust)
|
2014-01-30 11:47:56 +08:00
|
|
|
GENERATED_HEADERS += trace/generated-ust-provider.h
|
|
|
|
GENERATED_SOURCES += trace/generated-ust.c
|
|
|
|
endif
|
|
|
|
|
2009-10-07 03:11:15 +08:00
|
|
|
# Don't try to regenerate Makefile or configure
|
|
|
|
# We don't generate any of them
|
|
|
|
Makefile: ;
|
|
|
|
configure: ;
|
|
|
|
|
2008-09-24 09:13:40 +08:00
|
|
|
.PHONY: all clean cscope distclean dvi html info install install-doc \
|
2012-07-18 02:33:32 +08:00
|
|
|
pdf recurse-all speed test dist
|
2006-05-14 20:07:53 +08:00
|
|
|
|
2012-05-29 17:49:50 +08:00
|
|
|
$(call set-vpath, $(SRC_PATH))
|
2007-11-19 05:12:37 +08:00
|
|
|
|
2009-08-03 20:47:06 +08:00
|
|
|
LIBS+=-lz $(LIBS_TOOLS)
|
2009-07-27 22:12:51 +08:00
|
|
|
|
2012-01-26 22:42:24 +08:00
|
|
|
HELPERS-$(CONFIG_LINUX) = qemu-bridge-helper$(EXESUF)
|
|
|
|
|
2006-04-24 01:57:59 +08:00
|
|
|
ifdef BUILD_DOCS
|
2013-09-11 04:56:14 +08:00
|
|
|
DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1 qemu-nbd.8 qmp-commands.txt
|
2012-02-24 16:30:42 +08:00
|
|
|
ifdef CONFIG_VIRTFS
|
2011-12-14 16:28:47 +08:00
|
|
|
DOCS+=fsdev/virtfs-proxy-helper.1
|
2012-02-24 16:30:42 +08:00
|
|
|
endif
|
2006-04-24 01:57:59 +08:00
|
|
|
else
|
|
|
|
DOCS=
|
|
|
|
endif
|
2003-05-26 00:41:18 +08:00
|
|
|
|
2011-09-16 04:45:35 +08:00
|
|
|
SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory) BUILD_DIR=$(BUILD_DIR)
|
2009-10-07 08:41:02 +08:00
|
|
|
SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS))
|
2013-02-21 23:26:46 +08:00
|
|
|
SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %-config-devices.mak.d, $(TARGET_DIRS))
|
2009-10-07 08:41:02 +08:00
|
|
|
|
2012-09-15 01:02:30 +08:00
|
|
|
ifeq ($(SUBDIR_DEVICES_MAK),)
|
|
|
|
config-all-devices.mak:
|
|
|
|
$(call quiet-command,echo '# no devices' > $@," GEN $@")
|
|
|
|
else
|
2009-10-07 08:41:02 +08:00
|
|
|
config-all-devices.mak: $(SUBDIR_DEVICES_MAK)
|
2013-04-03 23:53:21 +08:00
|
|
|
$(call quiet-command, sed -n \
|
|
|
|
's|^\([^=]*\)=\(.*\)$$|\1:=$$(findstring y,$$(\1)\2)|p' \
|
|
|
|
$(SUBDIR_DEVICES_MAK) | sort -u > $@, \
|
|
|
|
" GEN $@")
|
2012-09-15 01:02:30 +08:00
|
|
|
endif
|
2009-10-07 08:41:02 +08:00
|
|
|
|
2010-11-27 02:47:45 +08:00
|
|
|
-include $(SUBDIR_DEVICES_MAK_DEP)
|
|
|
|
|
2009-11-23 00:25:30 +08:00
|
|
|
%/config-devices.mak: default-configs/%.mak
|
2011-01-21 04:54:21 +08:00
|
|
|
$(call quiet-command,$(SHELL) $(SRC_PATH)/scripts/make_device_config.sh $@ $<, " GEN $@")
|
2009-12-20 22:39:03 +08:00
|
|
|
@if test -f $@; then \
|
2010-10-02 22:28:08 +08:00
|
|
|
if cmp -s $@.old $@; then \
|
2010-11-27 02:47:45 +08:00
|
|
|
mv $@.tmp $@; \
|
|
|
|
cp -p $@ $@.old; \
|
2009-12-20 22:39:03 +08: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-23 00:25:30 +08:00
|
|
|
else \
|
2009-12-20 22:39:03 +08:00
|
|
|
mv $@.tmp $@; \
|
|
|
|
cp -p $@ $@.old; \
|
2009-11-23 00:25:30 +08:00
|
|
|
fi
|
|
|
|
|
|
|
|
defconfig:
|
|
|
|
rm -f config-all-devices.mak $(SUBDIR_DEVICES_MAK)
|
|
|
|
|
2012-12-21 15:34:49 +08:00
|
|
|
ifneq ($(wildcard config-host.mak),)
|
|
|
|
include $(SRC_PATH)/Makefile.objs
|
2014-02-10 14:48:52 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
dummy := $(call unnest-vars,, \
|
|
|
|
stub-obj-y \
|
|
|
|
util-obj-y \
|
|
|
|
qga-obj-y \
|
2014-03-27 02:28:45 +08:00
|
|
|
qga-vss-dll-obj-y \
|
2014-02-10 14:48:52 +08:00
|
|
|
block-obj-y \
|
2014-02-10 14:48:59 +08:00
|
|
|
block-obj-m \
|
|
|
|
common-obj-y \
|
|
|
|
common-obj-m)
|
2014-02-10 14:48:52 +08:00
|
|
|
|
|
|
|
ifneq ($(wildcard config-host.mak),)
|
2012-12-21 15:34:49 +08:00
|
|
|
include $(SRC_PATH)/tests/Makefile
|
|
|
|
endif
|
|
|
|
ifeq ($(CONFIG_SMARTCARD_NSS),y)
|
|
|
|
include $(SRC_PATH)/libcacard/Makefile
|
|
|
|
endif
|
|
|
|
|
2014-02-10 14:48:56 +08:00
|
|
|
all: $(DOCS) $(TOOLS) $(HELPERS-y) recurse-all modules
|
2006-05-14 00:54:03 +08:00
|
|
|
|
2009-10-07 08:40:58 +08:00
|
|
|
config-host.h: config-host.h-timestamp
|
|
|
|
config-host.h-timestamp: config-host.mak
|
2010-11-02 02:09:38 +08:00
|
|
|
qemu-options.def: $(SRC_PATH)/qemu-options.hx
|
2011-01-21 04:54:21 +08:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $@")
|
2009-10-07 08:40:58 +08:00
|
|
|
|
2008-05-29 00:44:57 +08:00
|
|
|
SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
|
2013-02-21 23:26:47 +08:00
|
|
|
SOFTMMU_SUBDIR_RULES=$(filter %-softmmu,$(SUBDIR_RULES))
|
|
|
|
|
2014-02-28 04:28:03 +08:00
|
|
|
$(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
|
2013-02-21 23:26:47 +08:00
|
|
|
$(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
|
2008-05-29 00:44:57 +08:00
|
|
|
|
2012-05-29 18:41:34 +08:00
|
|
|
subdir-%:
|
2009-05-07 09:00:31 +08:00
|
|
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
|
2006-05-13 21:55:08 +08:00
|
|
|
|
2012-09-25 22:04:58 +08:00
|
|
|
subdir-pixman: pixman/Makefile
|
|
|
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pixman V="$(V)" all,)
|
|
|
|
|
|
|
|
pixman/Makefile: $(SRC_PATH)/pixman/configure
|
2013-01-04 17:15:53 +08:00
|
|
|
(cd pixman; CFLAGS="$(CFLAGS) -fPIC $(extra_cflags) $(extra_ldflags)" $(SRC_PATH)/pixman/configure $(AUTOCONF_HOST) --disable-gtk --disable-shared --enable-static)
|
2012-09-25 22:04:58 +08:00
|
|
|
|
|
|
|
$(SRC_PATH)/pixman/configure:
|
|
|
|
(cd $(SRC_PATH)/pixman; autoreconf -v --install)
|
|
|
|
|
2013-04-18 12:47:31 +08:00
|
|
|
DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
|
2013-06-21 21:00:17 +08:00
|
|
|
DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
|
|
|
|
DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
|
2013-04-18 12:47:31 +08:00
|
|
|
|
|
|
|
subdir-dtc:dtc/libfdt dtc/tests
|
2013-06-21 21:00:17 +08:00
|
|
|
$(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS) CPPFLAGS="$(DTC_CPPFLAGS)" CFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(LDFLAGS)" ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) libfdt/libfdt.a,)
|
2013-04-18 12:47:31 +08:00
|
|
|
|
|
|
|
dtc/%:
|
|
|
|
mkdir -p $@
|
|
|
|
|
2013-01-19 18:06:48 +08:00
|
|
|
$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y)
|
2009-09-28 00:26:02 +08:00
|
|
|
|
2009-07-31 20:18:32 +08: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-02 00:21:11 +08:00
|
|
|
|
2013-08-09 02:18:07 +08:00
|
|
|
$(BUILD_DIR)/version.o: $(SRC_PATH)/version.rc $(BUILD_DIR)/config-host.h | $(BUILD_DIR)/version.lo
|
2013-08-17 03:51:53 +08:00
|
|
|
$(call quiet-command,$(WINDRES) -I$(BUILD_DIR) -o $@ $<," RC version.o")
|
2013-08-09 02:18:07 +08:00
|
|
|
$(BUILD_DIR)/version.lo: $(SRC_PATH)/version.rc $(BUILD_DIR)/config-host.h
|
2013-08-17 03:51:53 +08:00
|
|
|
$(call quiet-command,$(WINDRES) -I$(BUILD_DIR) -o $@ $<," RC version.lo")
|
2013-02-26 06:31:13 +08:00
|
|
|
|
2013-05-02 00:30:15 +08:00
|
|
|
Makefile: $(version-obj-y) $(version-lobj-y)
|
2012-11-17 01:35:27 +08:00
|
|
|
|
|
|
|
######################################################################
|
2012-12-20 22:40:20 +08:00
|
|
|
# Build libraries
|
2012-11-17 01:35:27 +08:00
|
|
|
|
|
|
|
libqemustub.a: $(stub-obj-y)
|
2013-05-11 06:46:03 +08:00
|
|
|
libqemuutil.a: $(util-obj-y) qapi-types.o qapi-visit.o
|
2012-11-17 01:35:27 +08:00
|
|
|
|
2014-02-10 14:48:57 +08:00
|
|
|
block-modules = $(foreach o,$(block-obj-m),"$(basename $(subst /,-,$o))",) NULL
|
|
|
|
util/module.o-cflags = -D'CONFIG_BLOCK_MODULES=$(block-modules)'
|
|
|
|
|
2011-05-15 16:51:28 +08:00
|
|
|
######################################################################
|
2007-11-08 03:24:02 +08:00
|
|
|
|
2010-01-21 03:54:18 +08:00
|
|
|
qemu-img.o: qemu-img-cmds.h
|
2009-06-07 07:42:17 +08:00
|
|
|
|
2012-12-21 16:45:20 +08:00
|
|
|
qemu-img$(EXESUF): qemu-img.o $(block-obj-y) libqemuutil.a libqemustub.a
|
|
|
|
qemu-nbd$(EXESUF): qemu-nbd.o $(block-obj-y) libqemuutil.a libqemustub.a
|
2013-06-05 20:19:41 +08:00
|
|
|
qemu-io$(EXESUF): qemu-io.o $(block-obj-y) libqemuutil.a libqemustub.a
|
2009-04-06 02:41:23 +08:00
|
|
|
|
2012-01-26 22:42:24 +08:00
|
|
|
qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o
|
|
|
|
|
2012-12-21 16:45:20 +08:00
|
|
|
fsdev/virtfs-proxy-helper$(EXESUF): fsdev/virtfs-proxy-helper.o fsdev/virtio-9p-marshal.o libqemuutil.a libqemustub.a
|
2011-12-14 16:28:42 +08:00
|
|
|
fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
|
|
|
|
|
2009-06-07 07:42:17 +08:00
|
|
|
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
|
2011-01-21 04:54:21 +08:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $@")
|
2009-06-07 07:42:17 +08:00
|
|
|
|
2011-08-12 04:38:12 +08:00
|
|
|
qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
|
2012-07-29 03:11:24 +08:00
|
|
|
qemu-ga$(EXESUF): QEMU_CFLAGS += -I qga/qapi-generated
|
2011-07-20 03:50:44 +08:00
|
|
|
|
2011-12-28 18:26:58 +08:00
|
|
|
gen-out-type = $(subst .,-,$(suffix $@))
|
2011-12-27 22:02:16 +08:00
|
|
|
|
2012-08-10 21:08:42 +08:00
|
|
|
qapi-py = $(SRC_PATH)/scripts/qapi.py $(SRC_PATH)/scripts/ordereddict.py
|
|
|
|
|
2012-07-29 03:11:24 +08:00
|
|
|
qga/qapi-generated/qga-qapi-types.c qga/qapi-generated/qga-qapi-types.h :\
|
2012-10-24 17:26:49 +08:00
|
|
|
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
|
2014-05-02 21:52:24 +08:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py \
|
2014-05-02 21:52:35 +08:00
|
|
|
$(gen-out-type) -o qga/qapi-generated -p "qga-" -i $<, \
|
2014-05-02 21:52:24 +08:00
|
|
|
" GEN $@")
|
2012-07-29 03:11:24 +08:00
|
|
|
qga/qapi-generated/qga-qapi-visit.c qga/qapi-generated/qga-qapi-visit.h :\
|
2012-10-24 17:26:49 +08:00
|
|
|
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py)
|
2014-05-02 21:52:24 +08:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py \
|
2014-05-02 21:52:35 +08:00
|
|
|
$(gen-out-type) -o qga/qapi-generated -p "qga-" -i $<, \
|
2014-05-02 21:52:24 +08:00
|
|
|
" GEN $@")
|
2012-07-29 03:11:24 +08:00
|
|
|
qga/qapi-generated/qga-qmp-commands.h qga/qapi-generated/qga-qmp-marshal.c :\
|
2012-10-24 17:26:49 +08:00
|
|
|
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
|
2014-05-02 21:52:24 +08:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py \
|
2014-05-02 21:52:35 +08:00
|
|
|
$(gen-out-type) -o qga/qapi-generated -p "qga-" -i $<, \
|
2014-05-02 21:52:24 +08:00
|
|
|
" GEN $@")
|
2011-07-20 04:41:55 +08:00
|
|
|
|
2011-11-17 05:58:18 +08:00
|
|
|
qapi-types.c qapi-types.h :\
|
2012-08-10 21:08:42 +08:00
|
|
|
$(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
|
2014-05-02 21:52:24 +08:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py \
|
2014-05-02 21:52:35 +08:00
|
|
|
$(gen-out-type) -o "." -b -i $<, \
|
2014-05-02 21:52:24 +08:00
|
|
|
" GEN $@")
|
2011-11-17 05:58:18 +08:00
|
|
|
qapi-visit.c qapi-visit.h :\
|
2012-08-10 21:08:42 +08:00
|
|
|
$(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py)
|
2014-05-02 21:52:24 +08:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py \
|
2014-05-02 21:52:35 +08:00
|
|
|
$(gen-out-type) -o "." -b -i $<, \
|
2014-05-02 21:52:24 +08:00
|
|
|
" GEN $@")
|
2011-11-17 05:58:18 +08:00
|
|
|
qmp-commands.h qmp-marshal.c :\
|
2012-08-10 21:08:42 +08:00
|
|
|
$(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
|
2014-05-02 21:52:24 +08:00
|
|
|
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py \
|
2014-05-02 21:52:35 +08:00
|
|
|
$(gen-out-type) -o "." -m -i $<, \
|
2014-05-02 21:52:24 +08:00
|
|
|
" GEN $@")
|
2011-09-03 01:34:47 +08:00
|
|
|
|
2012-07-29 03:11:24 +08:00
|
|
|
QGALIB_GEN=$(addprefix qga/qapi-generated/, qga-qapi-types.h qga-qapi-visit.h qga-qmp-commands.h)
|
2012-05-29 18:41:34 +08:00
|
|
|
$(qga-obj-y) qemu-ga.o: $(QGALIB_GEN)
|
2011-08-12 04:38:12 +08:00
|
|
|
|
2012-12-21 16:45:20 +08:00
|
|
|
qemu-ga$(EXESUF): $(qga-obj-y) libqemuutil.a libqemustub.a
|
2012-10-24 17:26:49 +08:00
|
|
|
$(call LINK, $^)
|
2011-07-21 04:19:37 +08:00
|
|
|
|
2003-02-19 06:55:36 +08:00
|
|
|
clean:
|
2003-08-12 07:01:33 +08:00
|
|
|
# avoid old build problems by removing potentially incorrect old files
|
2009-10-07 08:41:00 +08: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 23:53:41 +08:00
|
|
|
rm -f qemu-options.def
|
2014-03-17 09:35:22 +08:00
|
|
|
find . \( -name '*.l[oa]' -o -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
|
qemu-ga: Add Windows VSS provider and requester as DLL
Adds VSS provider and requester as a qga-vss.dll, which is loaded by
Windows VSS service as well as by qemu-ga.
"provider.cpp" implements a basic stub of a software VSS provider.
Currently, this module only relays a frozen event from VSS service to the
agent, and thaw event from the agent to VSS service, to block VSS process
to keep the system frozen while snapshots are taken at the host.
To register the provider to the guest system as COM+ application, the type
library (.tlb) for qga-vss.dll is required. To build it from COM IDL (.idl),
VisualC++, MIDL and stdole2.tlb in Windows SDK are required. This patch also
adds pre-compiled .tlb file in the repository in order to enable
cross-compile qemu-ga.exe for Windows with VSS support.
"requester.cpp" provides the VSS requester to kick the VSS snapshot process.
Qemu-ga.exe works without the DLL, although fsfreeze features are disabled.
These functions are only supported in Windows 2003 or later. In older
systems, fsfreeze features are disabled.
In several versions of Windows which don't support attribute
VSS_VOLSNAP_ATTR_NO_AUTORECOVERY, DoSnapshotSet fails with error
VSS_E_OBJECT_NOT_FOUND. In this patch, we just ignore this error.
To solve this fundamentally, we need a framework to handle mount writable
snapshot on guests, which is required by VSS auto-recovery feature
(cleanup phase after a snapshot is taken).
Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2013-08-07 23:40:18 +08:00
|
|
|
rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
|
2013-07-26 00:24:58 +08:00
|
|
|
rm -f fsdev/*.pod
|
|
|
|
rm -rf .libs */.libs
|
2009-06-10 02:45:16 +08:00
|
|
|
rm -f qemu-img-cmds.h
|
2012-04-19 02:15:39 +08:00
|
|
|
@# May not be present in GENERATED_HEADERS
|
2012-12-15 03:13:09 +08:00
|
|
|
rm -f trace/generated-tracers-dtrace.dtrace*
|
|
|
|
rm -f trace/generated-tracers-dtrace.h*
|
2012-04-19 02:15:39 +08:00
|
|
|
rm -f $(foreach f,$(GENERATED_HEADERS),$(f) $(f)-timestamp)
|
|
|
|
rm -f $(foreach f,$(GENERATED_SOURCES),$(f) $(f)-timestamp)
|
2012-06-09 15:08:39 +08:00
|
|
|
rm -rf qapi-generated
|
2012-07-29 03:11:24 +08:00
|
|
|
rm -rf qga/qapi-generated
|
2013-01-15 15:47:26 +08:00
|
|
|
for d in $(ALL_SUBDIRS); do \
|
2009-11-13 17:51:05 +08:00
|
|
|
if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
|
2010-10-26 23:53:41 +08:00
|
|
|
rm -f $$d/qemu-options.def; \
|
2003-08-11 05:39:31 +08:00
|
|
|
done
|
2003-02-19 06:55:36 +08:00
|
|
|
|
2012-07-18 02:33:32 +08:00
|
|
|
VERSION ?= $(shell cat VERSION)
|
|
|
|
|
|
|
|
dist: qemu-$(VERSION).tar.bz2
|
|
|
|
|
|
|
|
qemu-%.tar.bz2:
|
|
|
|
$(SRC_PATH)/scripts/make-release "$(SRC_PATH)" "$(patsubst qemu-%.tar.bz2,%,$@)"
|
|
|
|
|
2003-03-07 07:23:54 +08:00
|
|
|
distclean: clean
|
2009-11-13 17:51:05 +08:00
|
|
|
rm -f config-host.mak config-host.h* config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi qemu-monitor.texi
|
2012-10-24 17:12:21 +08:00
|
|
|
rm -f config-all-devices.mak config-all-disas.mak
|
2013-07-26 00:24:58 +08:00
|
|
|
rm -f po/*.mo
|
2009-11-13 17:51:05 +08:00
|
|
|
rm -f roms/seabios/config.mak roms/vgabios/config.mak
|
2011-04-13 14:42:16 +08: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 11:56:02 +08:00
|
|
|
rm -f config.log
|
2012-02-02 02:50:42 +08:00
|
|
|
rm -f linux-headers/asm
|
2010-07-08 13:26:18 +08: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
|
2012-10-24 17:16:01 +08:00
|
|
|
for d in $(TARGET_DIRS); do \
|
2003-10-28 08:12:52 +08:00
|
|
|
rm -rf $$d || exit 1 ; \
|
2003-08-11 07:41:46 +08:00
|
|
|
done
|
2013-08-07 23:40:03 +08:00
|
|
|
rm -Rf .sdk
|
2012-11-24 17:27:18 +08:00
|
|
|
if test -f pixman/config.log; then make -C pixman distclean; fi
|
2013-04-18 12:47:31 +08:00
|
|
|
if test -f dtc/version_gen.h; then make $(DTC_MAKE_ARGS) clean; fi
|
2003-03-07 07:23:54 +08:00
|
|
|
|
2004-12-13 06:18:34 +08: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 \
|
2012-06-09 02:06:25 +08:00
|
|
|
common de-ch es fo fr-ca hu ja mk nl-be pt sl tr \
|
2013-10-16 20:40:04 +08:00
|
|
|
bepo cz
|
2004-12-13 06:18:34 +08:00
|
|
|
|
2008-11-27 23:45:16 +08:00
|
|
|
ifdef INSTALL_BLOBS
|
2013-12-10 07:33:34 +08:00
|
|
|
BLOBS=bios.bin bios-256k.bin sgabios.bin vgabios.bin vgabios-cirrus.bin \
|
2010-11-30 18:54:33 +08:00
|
|
|
vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin \
|
2013-01-09 02:52:20 +08:00
|
|
|
acpi-dsdt.aml q35-acpi-dsdt.aml \
|
2013-10-16 04:03:04 +08:00
|
|
|
ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin QEMU,cgthree.bin \
|
2011-04-19 01:46:01 +08:00
|
|
|
pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom \
|
|
|
|
pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \
|
2013-04-09 05:08:13 +08:00
|
|
|
efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom \
|
|
|
|
efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom \
|
2013-06-08 02:24:17 +08:00
|
|
|
qemu-icon.bmp qemu_logo_no_text.svg \
|
2011-03-14 18:29:19 +08:00
|
|
|
bamboo.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \
|
2012-02-18 01:31:18 +08:00
|
|
|
multiboot.bin linuxboot.bin kvmvapic.bin \
|
2011-04-01 12:15:23 +08:00
|
|
|
s390-zipl.rom \
|
2013-04-23 03:10:50 +08:00
|
|
|
s390-ccw.img \
|
2011-06-25 02:58:37 +08:00
|
|
|
spapr-rtas.bin slof.bin \
|
|
|
|
palcode-clipper
|
2008-11-27 23:45:16 +08:00
|
|
|
else
|
|
|
|
BLOBS=
|
|
|
|
endif
|
|
|
|
|
2006-05-01 07:54:18 +08:00
|
|
|
install-doc: $(DOCS)
|
2012-04-19 03:55:44 +08:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)"
|
|
|
|
$(INSTALL_DATA) qemu-doc.html qemu-tech.html "$(DESTDIR)$(qemu_docdir)"
|
2013-09-11 04:56:14 +08:00
|
|
|
$(INSTALL_DATA) qmp-commands.txt "$(DESTDIR)$(qemu_docdir)"
|
2009-08-03 20:47:00 +08:00
|
|
|
ifdef CONFIG_POSIX
|
2009-04-18 23:36:02 +08:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
|
2013-06-11 19:13:58 +08:00
|
|
|
$(INSTALL_DATA) qemu.1 "$(DESTDIR)$(mandir)/man1"
|
|
|
|
ifneq ($(TOOLS),)
|
|
|
|
$(INSTALL_DATA) qemu-img.1 "$(DESTDIR)$(mandir)/man1"
|
2009-04-18 23:36:02 +08:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man8"
|
|
|
|
$(INSTALL_DATA) qemu-nbd.8 "$(DESTDIR)$(mandir)/man8"
|
2006-05-01 07:54:18 +08:00
|
|
|
endif
|
2013-06-11 19:13:58 +08:00
|
|
|
endif
|
2011-12-14 16:28:47 +08:00
|
|
|
ifdef CONFIG_VIRTFS
|
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
|
|
|
|
$(INSTALL_DATA) fsdev/virtfs-proxy-helper.1 "$(DESTDIR)$(mandir)/man1"
|
|
|
|
endif
|
2012-05-03 00:07:30 +08:00
|
|
|
|
|
|
|
install-datadir:
|
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)"
|
|
|
|
|
2013-05-18 13:13:14 +08:00
|
|
|
install-localstatedir:
|
|
|
|
ifdef CONFIG_POSIX
|
|
|
|
ifneq (,$(findstring qemu-ga,$(TOOLS)))
|
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(qemu_localstatedir)"/run
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2012-05-03 00:07:30 +08:00
|
|
|
install-confdir:
|
2012-04-19 03:55:43 +08:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(qemu_confdir)"
|
2012-05-03 00:07:30 +08:00
|
|
|
|
|
|
|
install-sysconfig: install-datadir install-confdir
|
2012-04-19 03:55:43 +08:00
|
|
|
$(INSTALL_DATA) $(SRC_PATH)/sysconfigs/target/target-x86_64.conf "$(DESTDIR)$(qemu_confdir)"
|
2010-02-21 01:14:59 +08:00
|
|
|
|
2013-05-18 13:13:14 +08:00
|
|
|
install: all $(if $(BUILD_DOCS),install-doc) install-sysconfig \
|
|
|
|
install-datadir install-localstatedir
|
2009-04-18 23:36:02 +08:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(bindir)"
|
2007-10-21 02:29:34 +08:00
|
|
|
ifneq ($(TOOLS),)
|
2014-05-08 18:56:58 +08:00
|
|
|
$(INSTALL_PROG) $(TOOLS) "$(DESTDIR)$(bindir)"
|
|
|
|
ifneq ($(STRIP),)
|
|
|
|
$(STRIP) $(TOOLS:%="$(DESTDIR)$(bindir)/%")
|
|
|
|
endif
|
2007-10-21 02:29:34 +08:00
|
|
|
endif
|
2014-02-10 14:48:58 +08:00
|
|
|
ifneq ($(CONFIG_MODULES),)
|
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(qemu_moddir)"
|
2014-05-08 18:56:58 +08:00
|
|
|
for s in $(modules-m:.mo=$(DSOSUF)); do \
|
|
|
|
t="$(DESTDIR)$(qemu_moddir)/$$(echo $$s | tr / -)"; \
|
2014-05-08 19:06:03 +08:00
|
|
|
$(INSTALL_LIB) $$s "$$t"; \
|
2014-05-08 18:56:58 +08:00
|
|
|
test -z "$(STRIP)" || $(STRIP) "$$t"; \
|
2014-02-10 14:48:58 +08:00
|
|
|
done
|
|
|
|
endif
|
2012-01-26 22:42:24 +08:00
|
|
|
ifneq ($(HELPERS-y),)
|
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(libexecdir)"
|
2014-05-08 18:56:58 +08:00
|
|
|
$(INSTALL_PROG) $(HELPERS-y) "$(DESTDIR)$(libexecdir)"
|
|
|
|
ifneq ($(STRIP),)
|
|
|
|
$(STRIP) $(HELPERS-y:%="$(DESTDIR)$(libexecdir)/%")
|
|
|
|
endif
|
2012-01-26 22:42:24 +08:00
|
|
|
endif
|
2008-11-27 23:45:16 +08:00
|
|
|
ifneq ($(BLOBS),)
|
|
|
|
set -e; for x in $(BLOBS); do \
|
2012-04-19 03:55:41 +08:00
|
|
|
$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \
|
2006-04-16 20:41:07 +08:00
|
|
|
done
|
2013-02-20 21:43:24 +08:00
|
|
|
endif
|
|
|
|
ifeq ($(CONFIG_GTK),y)
|
|
|
|
$(MAKE) -C po $@
|
2008-11-27 23:45:16 +08:00
|
|
|
endif
|
2012-04-19 03:55:41 +08:00
|
|
|
$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/keymaps"
|
2008-03-06 02:16:09 +08:00
|
|
|
set -e; for x in $(KEYMAPS); do \
|
2012-04-19 03:55:41 +08:00
|
|
|
$(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(qemu_datadir)/keymaps"; \
|
2006-04-16 20:41:07 +08:00
|
|
|
done
|
2003-08-11 05:39:31 +08:00
|
|
|
for d in $(TARGET_DIRS); do \
|
2014-01-20 19:21:54 +08:00
|
|
|
$(MAKE) $(SUBDIR_MAKEFLAGS) TARGET_DIR=$$d/ -C $$d $@ || exit 1 ; \
|
2003-08-11 05:39:31 +08:00
|
|
|
done
|
2003-03-23 01:31:19 +08:00
|
|
|
|
2003-03-02 01:13:26 +08:00
|
|
|
# various test targets
|
2007-11-14 18:34:57 +08:00
|
|
|
test speed: all
|
2012-01-11 03:10:42 +08:00
|
|
|
$(MAKE) -C tests/tcg $@
|
2003-02-19 06:55:36 +08:00
|
|
|
|
2009-08-07 22:43:11 +08:00
|
|
|
.PHONY: TAGS
|
2007-09-17 05:08:06 +08:00
|
|
|
TAGS:
|
2013-03-12 10:57:28 +08:00
|
|
|
rm -f $@
|
|
|
|
find "$(SRC_PATH)" -name '*.[hc]' -exec etags --append {} +
|
2003-02-19 06:55:36 +08:00
|
|
|
|
2005-08-21 17:23:39 +08:00
|
|
|
cscope:
|
|
|
|
rm -f ./cscope.*
|
2011-07-21 11:12:15 +08:00
|
|
|
find "$(SRC_PATH)" -name "*.[chsS]" -print | sed 's,^\./,,' > ./cscope.files
|
2005-08-21 17:23:39 +08:00
|
|
|
cscope -b
|
|
|
|
|
2003-03-24 04:17:16 +08:00
|
|
|
# documentation
|
2010-03-05 05:21:02 +08:00
|
|
|
MAKEINFO=makeinfo
|
|
|
|
MAKEINFOFLAGS=--no-headers --no-split --number-sections
|
2010-01-30 06:16:50 +08:00
|
|
|
TEXIFLAG=$(if $(V),,--quiet)
|
|
|
|
%.dvi: %.texi
|
|
|
|
$(call quiet-command,texi2dvi $(TEXIFLAG) -I . $<," GEN $@")
|
|
|
|
|
2004-04-04 23:21:17 +08:00
|
|
|
%.html: %.texi
|
2012-03-28 01:15:27 +08:00
|
|
|
$(call quiet-command,LC_ALL=C $(MAKEINFO) $(MAKEINFOFLAGS) --html $< -o $@, \
|
2010-03-05 05:21:02 +08:00
|
|
|
" GEN $@")
|
2003-03-24 04:17:16 +08:00
|
|
|
|
2006-05-01 06:51:54 +08:00
|
|
|
%.info: %.texi
|
2010-03-05 05:21:02 +08:00
|
|
|
$(call quiet-command,$(MAKEINFO) $< -o $@," GEN $@")
|
2006-05-01 06:51:54 +08:00
|
|
|
|
2010-01-30 06:16:50 +08:00
|
|
|
%.pdf: %.texi
|
|
|
|
$(call quiet-command,texi2pdf $(TEXIFLAG) -I . $<," GEN $@")
|
2009-03-28 14:44:27 +08:00
|
|
|
|
|
|
|
qemu-options.texi: $(SRC_PATH)/qemu-options.hx
|
2011-01-21 04:54:21 +08:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@," GEN $@")
|
2006-05-01 06:51:54 +08:00
|
|
|
|
2010-10-01 03:00:22 +08:00
|
|
|
qemu-monitor.texi: $(SRC_PATH)/hmp-commands.hx
|
2011-01-21 04:54:21 +08:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@," GEN $@")
|
2009-06-06 16:22:04 +08:00
|
|
|
|
2013-09-11 04:56:14 +08:00
|
|
|
qmp-commands.txt: $(SRC_PATH)/qmp-commands.hx
|
2011-01-21 04:54:21 +08:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -q < $< > $@," GEN $@")
|
2010-06-01 01:43:31 +08:00
|
|
|
|
2009-06-07 07:42:17 +08:00
|
|
|
qemu-img-cmds.texi: $(SRC_PATH)/qemu-img-cmds.hx
|
2011-01-21 04:54:21 +08:00
|
|
|
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@," GEN $@")
|
2009-06-07 07:42:17 +08:00
|
|
|
|
2009-06-06 16:22:04 +08:00
|
|
|
qemu.1: qemu-doc.texi qemu-options.texi qemu-monitor.texi
|
2009-04-06 01:40:46 +08:00
|
|
|
$(call quiet-command, \
|
2011-01-21 04:54:21 +08:00
|
|
|
perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu.pod && \
|
2012-03-20 06:25:57 +08:00
|
|
|
$(POD2MAN) --section=1 --center=" " --release=" " qemu.pod > $@, \
|
2009-04-06 01:40:46 +08:00
|
|
|
" GEN $@")
|
2003-10-01 08:13:48 +08:00
|
|
|
|
2009-06-07 07:42:17 +08:00
|
|
|
qemu-img.1: qemu-img.texi qemu-img-cmds.texi
|
2009-04-06 01:40:46 +08:00
|
|
|
$(call quiet-command, \
|
2011-01-21 04:54:21 +08:00
|
|
|
perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu-img.pod && \
|
2012-03-20 06:25:57 +08:00
|
|
|
$(POD2MAN) --section=1 --center=" " --release=" " qemu-img.pod > $@, \
|
2009-04-06 01:40:46 +08:00
|
|
|
" GEN $@")
|
2004-11-16 06:57:26 +08:00
|
|
|
|
2011-12-14 16:28:47 +08:00
|
|
|
fsdev/virtfs-proxy-helper.1: fsdev/virtfs-proxy-helper.texi
|
|
|
|
$(call quiet-command, \
|
|
|
|
perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< fsdev/virtfs-proxy-helper.pod && \
|
2012-03-20 06:25:57 +08:00
|
|
|
$(POD2MAN) --section=1 --center=" " --release=" " fsdev/virtfs-proxy-helper.pod > $@, \
|
2011-12-14 16:28:47 +08:00
|
|
|
" GEN $@")
|
|
|
|
|
2008-05-28 05:13:40 +08:00
|
|
|
qemu-nbd.8: qemu-nbd.texi
|
2009-04-06 01:40:46 +08:00
|
|
|
$(call quiet-command, \
|
2011-01-21 04:54:21 +08:00
|
|
|
perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu-nbd.pod && \
|
2012-03-20 06:25:57 +08:00
|
|
|
$(POD2MAN) --section=8 --center=" " --release=" " qemu-nbd.pod > $@, \
|
2009-04-06 01:40:46 +08:00
|
|
|
" GEN $@")
|
2008-05-28 05:13:40 +08:00
|
|
|
|
2006-05-14 20:07:53 +08:00
|
|
|
dvi: qemu-doc.dvi qemu-tech.dvi
|
|
|
|
html: qemu-doc.html qemu-tech.html
|
2010-01-30 06:16:50 +08:00
|
|
|
info: qemu-doc.info qemu-tech.info
|
|
|
|
pdf: qemu-doc.pdf qemu-tech.pdf
|
2006-05-14 20:07:53 +08:00
|
|
|
|
2010-01-30 06:16:50 +08: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 09:13:40 +08:00
|
|
|
|
2013-07-16 05:49:57 +08:00
|
|
|
ifdef CONFIG_WIN32
|
|
|
|
|
|
|
|
INSTALLER = qemu-setup-$(VERSION)$(EXESUF)
|
|
|
|
|
|
|
|
nsisflags = -V2 -NOCD
|
|
|
|
|
|
|
|
ifneq ($(wildcard $(SRC_PATH)/dll),)
|
|
|
|
ifeq ($(ARCH),x86_64)
|
|
|
|
# 64 bit executables
|
|
|
|
DLL_PATH = $(SRC_PATH)/dll/w64
|
|
|
|
nsisflags += -DW64
|
|
|
|
else
|
|
|
|
# 32 bit executables
|
|
|
|
DLL_PATH = $(SRC_PATH)/dll/w32
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
.PHONY: installer
|
|
|
|
installer: $(INSTALLER)
|
|
|
|
|
|
|
|
INSTDIR=/tmp/qemu-nsis
|
|
|
|
|
|
|
|
$(INSTALLER): $(SRC_PATH)/qemu.nsi
|
|
|
|
make install prefix=${INSTDIR}
|
|
|
|
ifdef SIGNCODE
|
|
|
|
(cd ${INSTDIR}; \
|
|
|
|
for i in *.exe; do \
|
|
|
|
$(SIGNCODE) $${i}; \
|
|
|
|
done \
|
|
|
|
)
|
|
|
|
endif # SIGNCODE
|
|
|
|
(cd ${INSTDIR}; \
|
|
|
|
for i in qemu-system-*.exe; do \
|
|
|
|
arch=$${i%.exe}; \
|
|
|
|
arch=$${arch#qemu-system-}; \
|
|
|
|
echo Section \"$$arch\" Section_$$arch; \
|
|
|
|
echo SetOutPath \"\$$INSTDIR\"; \
|
|
|
|
echo File \"\$${BINDIR}\\$$i\"; \
|
|
|
|
echo SectionEnd; \
|
|
|
|
done \
|
|
|
|
) >${INSTDIR}/system-emulations.nsh
|
|
|
|
makensis $(nsisflags) \
|
|
|
|
$(if $(BUILD_DOCS),-DCONFIG_DOCUMENTATION="y") \
|
|
|
|
$(if $(CONFIG_GTK),-DCONFIG_GTK="y") \
|
|
|
|
-DBINDIR="${INSTDIR}" \
|
|
|
|
$(if $(DLL_PATH),-DDLLDIR="$(DLL_PATH)") \
|
|
|
|
-DSRCDIR="$(SRC_PATH)" \
|
|
|
|
-DOUTFILE="$(INSTALLER)" \
|
|
|
|
$(SRC_PATH)/qemu.nsi
|
|
|
|
rm -r ${INSTDIR}
|
|
|
|
ifdef SIGNCODE
|
|
|
|
$(SIGNCODE) $(INSTALLER)
|
|
|
|
endif # SIGNCODE
|
|
|
|
endif # CONFIG_WIN
|
|
|
|
|
2012-07-18 07:58:20 +08:00
|
|
|
# Add a dependency on the generated files, so that they are always
|
|
|
|
# rebuilt before other object files
|
2012-09-17 04:07:13 +08:00
|
|
|
ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
|
2012-07-18 07:58:20 +08:00
|
|
|
Makefile: $(GENERATED_HEADERS)
|
2012-09-17 04:07:13 +08:00
|
|
|
endif
|
2012-07-18 07:58:20 +08:00
|
|
|
|
2007-11-08 03:24:02 +08:00
|
|
|
# Include automatically generated dependency files
|
2012-07-11 22:40:21 +08:00
|
|
|
# Dependencies in Makefile.objs files come from our recursive subdir rules
|
|
|
|
-include $(wildcard *.d tests/*.d)
|