Makefile 16.9 KB
Newer Older
1 2
# Makefile for QEMU.

S
Stefan Weil 已提交
3 4
# Always point to the root of the build tree (needs GNU make).
BUILD_DIR=$(CURDIR)
5

6
# All following code might depend on configuration variables
7
ifneq ($(wildcard config-host.mak),)
P
Paul Brook 已提交
8
# Put the all: rule here so that config-host.mak can contain dependencies.
S
Stefan Weil 已提交
9
all:
P
pbrook 已提交
10
include config-host.mak
11 12 13 14 15 16 17 18 19 20 21

# 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

22 23 24 25 26 27
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

A
aliguori 已提交
28
include $(SRC_PATH)/rules.mak
29
config-host.mak: $(SRC_PATH)/configure
30 31
	@echo $@ is out-of-date, running configure
	@sed -n "/.*Configured with/s/[^:]*: //p" $@ | sh
32 33
else
config-host.mak:
34
ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
35 36 37
	@echo "Please call configure before running make!"
	@exit 1
endif
38
endif
B
bellard 已提交
39

40 41 42 43
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

44 45 46
GENERATED_HEADERS += trace/generated-events.h
GENERATED_SOURCES += trace/generated-events.c

47
GENERATED_HEADERS += trace/generated-tracers.h
48
ifeq ($(TRACE_BACKEND),dtrace)
49
GENERATED_HEADERS += trace/generated-tracers-dtrace.h
50
endif
51
GENERATED_SOURCES += trace/generated-tracers.c
52

53 54 55 56 57
# Don't try to regenerate Makefile or configure
# We don't generate any of them
Makefile: ;
configure: ;

58
.PHONY: all clean cscope distclean dvi html info install install-doc \
59
	pdf recurse-all speed test dist
60

P
Paolo Bonzini 已提交
61
$(call set-vpath, $(SRC_PATH))
P
pbrook 已提交
62

J
Juan Quintela 已提交
63
LIBS+=-lz $(LIBS_TOOLS)
64

65 66
HELPERS-$(CONFIG_LINUX) = qemu-bridge-helper$(EXESUF)

67
ifdef BUILD_DOCS
68
DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1 qemu-nbd.8 QMP/qmp-commands.txt
69
ifdef CONFIG_VIRTFS
70
DOCS+=fsdev/virtfs-proxy-helper.1
71
endif
72 73 74
else
DOCS=
endif
B
bellard 已提交
75

76
SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory) BUILD_DIR=$(BUILD_DIR)
77
SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS))
78
SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %-config-devices.mak.d, $(TARGET_DIRS))
79

80 81 82 83
ifeq ($(SUBDIR_DEVICES_MAK),)
config-all-devices.mak:
	$(call quiet-command,echo '# no devices' > $@,"  GEN   $@")
else
84
config-all-devices.mak: $(SUBDIR_DEVICES_MAK)
85 86 87 88
	$(call quiet-command, sed -n \
             's|^\([^=]*\)=\(.*\)$$|\1:=$$(findstring y,$$(\1)\2)|p' \
             $(SUBDIR_DEVICES_MAK) | sort -u > $@, \
             "  GEN   $@")
89
endif
90

P
Paul Brook 已提交
91 92
-include $(SUBDIR_DEVICES_MAK_DEP)

93
%/config-devices.mak: default-configs/%.mak
B
Blue Swirl 已提交
94
	$(call quiet-command,$(SHELL) $(SRC_PATH)/scripts/make_device_config.sh $@ $<, "  GEN   $@")
95
	@if test -f $@; then \
96
	  if cmp -s $@.old $@; then \
P
Paul Brook 已提交
97 98
	    mv $@.tmp $@; \
	    cp -p $@ $@.old; \
99 100 101 102 103 104 105 106 107
	  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; \
108
	 else \
109 110
	  mv $@.tmp $@; \
	  cp -p $@ $@.old; \
111 112 113 114 115
	 fi

defconfig:
	rm -f config-all-devices.mak $(SUBDIR_DEVICES_MAK)

116 117 118 119 120 121 122 123
ifneq ($(wildcard config-host.mak),)
include $(SRC_PATH)/Makefile.objs
include $(SRC_PATH)/tests/Makefile
endif
ifeq ($(CONFIG_SMARTCARD_NSS),y)
include $(SRC_PATH)/libcacard/Makefile
endif

S
Stefan Weil 已提交
124
all: $(DOCS) $(TOOLS) $(HELPERS-y) recurse-all
P
pbrook 已提交
125

126 127
config-host.h: config-host.h-timestamp
config-host.h-timestamp: config-host.mak
B
Blue Swirl 已提交
128
qemu-options.def: $(SRC_PATH)/qemu-options.hx
B
Blue Swirl 已提交
129
	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"  GEN   $@")
130

131
SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
132 133 134
SOFTMMU_SUBDIR_RULES=$(filter %-softmmu,$(SUBDIR_RULES))

$(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
135

136
subdir-%:
P
Paul Brook 已提交
137
	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
P
pbrook 已提交
138

139 140 141 142
subdir-pixman: pixman/Makefile
	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pixman V="$(V)" all,)

pixman/Makefile: $(SRC_PATH)/pixman/configure
143
	(cd pixman; CFLAGS="$(CFLAGS) -fPIC $(extra_cflags) $(extra_ldflags)" $(SRC_PATH)/pixman/configure $(AUTOCONF_HOST) --disable-gtk --disable-shared --enable-static)
144 145 146 147

$(SRC_PATH)/pixman/configure:
	(cd $(SRC_PATH)/pixman; autoreconf -v --install)

148
DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
149 150
DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
151 152

subdir-dtc:dtc/libfdt dtc/tests
153
	$(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,)
154 155 156 157

dtc/%:
	mkdir -p $@

P
Paolo Bonzini 已提交
158
$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y)
159

P
Paul Brook 已提交
160 161 162 163 164 165 166
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)
B
bellard 已提交
167

J
Juan Quintela 已提交
168
bt-host.o: QEMU_CFLAGS += $(BLUEZ_CFLAGS)
B
bellard 已提交
169

170 171
$(BUILD_DIR)/version.o: $(SRC_PATH)/version.rc $(BUILD_DIR)/config-host.h | $(BUILD_DIR)/version.lo
$(BUILD_DIR)/version.lo: $(SRC_PATH)/version.rc $(BUILD_DIR)/config-host.h
172

P
Paolo Bonzini 已提交
173
Makefile: $(version-obj-y) $(version-lobj-y)
174 175

######################################################################
176
# Build libraries
177 178

libqemustub.a: $(stub-obj-y)
179
libqemuutil.a: $(util-obj-y) qapi-types.o qapi-visit.o
180

A
Alon Levy 已提交
181
######################################################################
B
bellard 已提交
182

J
Juan Quintela 已提交
183
qemu-img.o: qemu-img-cmds.h
184

185 186
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
187
qemu-io$(EXESUF): qemu-io.o $(block-obj-y) libqemuutil.a libqemustub.a
188

189 190
qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o

191
fsdev/virtfs-proxy-helper$(EXESUF): fsdev/virtfs-proxy-helper.o fsdev/virtio-9p-marshal.o libqemuutil.a libqemustub.a
192 193
fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap

194
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
B
Blue Swirl 已提交
195
	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"  GEN   $@")
196

197
qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
198
qemu-ga$(EXESUF): QEMU_CFLAGS += -I qga/qapi-generated
199

A
Avi Kivity 已提交
200
gen-out-type = $(subst .,-,$(suffix $@))
201

202 203
qapi-py = $(SRC_PATH)/scripts/qapi.py $(SRC_PATH)/scripts/ordereddict.py

204
qga/qapi-generated/qga-qapi-types.c qga/qapi-generated/qga-qapi-types.h :\
205
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
206 207
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py $(gen-out-type) -o qga/qapi-generated -p "qga-" < $<, "  GEN   $@")
qga/qapi-generated/qga-qapi-visit.c qga/qapi-generated/qga-qapi-visit.h :\
208
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py)
209 210
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py $(gen-out-type) -o qga/qapi-generated -p "qga-" < $<, "  GEN   $@")
qga/qapi-generated/qga-qmp-commands.h qga/qapi-generated/qga-qmp-marshal.c :\
211
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
212
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -o qga/qapi-generated -p "qga-" < $<, "  GEN   $@")
213

214
qapi-types.c qapi-types.h :\
215
$(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
216
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py $(gen-out-type) -o "." -b < $<, "  GEN   $@")
217
qapi-visit.c qapi-visit.h :\
218
$(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py)
219
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py $(gen-out-type) -o "." -b < $<, "  GEN   $@")
220
qmp-commands.h qmp-marshal.c :\
221
$(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
222
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -m -o "." < $<, "  GEN   $@")
223

224
QGALIB_GEN=$(addprefix qga/qapi-generated/, qga-qapi-types.h qga-qapi-visit.h qga-qmp-commands.h)
225
$(qga-obj-y) qemu-ga.o: $(QGALIB_GEN)
226

227
qemu-ga$(EXESUF): $(qga-obj-y) libqemuutil.a libqemustub.a
228
	$(call LINK, $^)
M
Michael Roth 已提交
229

230
clean:
231
# avoid old build problems by removing potentially incorrect old files
232
	rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
233
	rm -f qemu-options.def
234 235 236
	find . -name '*.[oda]' -type f -exec rm -f {} +
	find . -name '*.l[oa]' -type f -exec rm -f {} +
	rm -f $(TOOLS) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
A
Alon Levy 已提交
237
	rm -Rf .libs
B
Blue Swirl 已提交
238
	rm -f qemu-img-cmds.h
239
	@# May not be present in GENERATED_HEADERS
240 241
	rm -f trace/generated-tracers-dtrace.dtrace*
	rm -f trace/generated-tracers-dtrace.h*
242 243
	rm -f $(foreach f,$(GENERATED_HEADERS),$(f) $(f)-timestamp)
	rm -f $(foreach f,$(GENERATED_SOURCES),$(f) $(f)-timestamp)
S
Stefan Weil 已提交
244
	rm -rf qapi-generated
245
	rm -rf qga/qapi-generated
A
Anthony Liguori 已提交
246
	$(MAKE) -C tests/tcg clean
247
	for d in $(ALL_SUBDIRS); do \
M
Magnus Damm 已提交
248
	if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
249
	rm -f $$d/qemu-options.def; \
B
bellard 已提交
250
        done
251

252 253 254 255 256 257 258
VERSION ?= $(shell cat VERSION)

dist: qemu-$(VERSION).tar.bz2

qemu-%.tar.bz2:
	$(SRC_PATH)/scripts/make-release "$(SRC_PATH)" "$(patsubst qemu-%.tar.bz2,%,$@)"

B
bellard 已提交
259
distclean: clean
M
Magnus Damm 已提交
260
	rm -f config-host.mak config-host.h* config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi qemu-monitor.texi
261
	rm -f config-all-devices.mak config-all-disas.mak
M
Magnus Damm 已提交
262
	rm -f roms/seabios/config.mak roms/vgabios/config.mak
B
Brad Hards 已提交
263 264 265 266
	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
267
	rm -f config.log
268
	rm -f linux-headers/asm
269
	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
P
Paolo Bonzini 已提交
270
	for d in $(TARGET_DIRS); do \
B
bellard 已提交
271
	rm -rf $$d || exit 1 ; \
B
updated  
bellard 已提交
272
        done
273
	if test -f pixman/config.log; then make -C pixman distclean; fi
274
	if test -f dtc/version_gen.h; then make $(DTC_MAKE_ARGS) clean; fi
B
bellard 已提交
275

B
bellard 已提交
276 277
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 \
278 279
common  de-ch  es     fo  fr-ca  hu     ja  mk  nl-be      pt  sl     tr \
bepo
B
bellard 已提交
280

T
ths 已提交
281
ifdef INSTALL_BLOBS
P
Paolo Bonzini 已提交
282
BLOBS=bios.bin sgabios.bin vgabios.bin vgabios-cirrus.bin \
G
Gerd Hoffmann 已提交
283
vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin \
284
acpi-dsdt.aml q35-acpi-dsdt.aml \
285
ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc \
286 287
pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom \
pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \
288 289
efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom \
efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom \
A
Anthony Liguori 已提交
290
qemu-icon.bmp qemu_logo_no_text.svg \
291
bamboo.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \
J
Jan Kiszka 已提交
292
multiboot.bin linuxboot.bin kvmvapic.bin \
293
s390-zipl.rom \
294
s390-ccw.img \
295 296
spapr-rtas.bin slof.bin \
palcode-clipper
T
ths 已提交
297 298 299 300
else
BLOBS=
endif

301
install-doc: $(DOCS)
302 303
	$(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)"
	$(INSTALL_DATA) qemu-doc.html  qemu-tech.html "$(DESTDIR)$(qemu_docdir)"
B
Bruce Rogers 已提交
304
	$(INSTALL_DATA) QMP/qmp-commands.txt "$(DESTDIR)$(qemu_docdir)"
305
ifdef CONFIG_POSIX
306
	$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
307 308 309
	$(INSTALL_DATA) qemu.1 "$(DESTDIR)$(mandir)/man1"
ifneq ($(TOOLS),)
	$(INSTALL_DATA) qemu-img.1 "$(DESTDIR)$(mandir)/man1"
310 311
	$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man8"
	$(INSTALL_DATA) qemu-nbd.8 "$(DESTDIR)$(mandir)/man8"
312
endif
313
endif
314 315 316 317
ifdef CONFIG_VIRTFS
	$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
	$(INSTALL_DATA) fsdev/virtfs-proxy-helper.1 "$(DESTDIR)$(mandir)/man1"
endif
318 319 320 321

install-datadir:
	$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)"

322 323 324 325 326 327 328
install-localstatedir:
ifdef CONFIG_POSIX
ifneq (,$(findstring qemu-ga,$(TOOLS)))
	$(INSTALL_DIR) "$(DESTDIR)$(qemu_localstatedir)"/run
endif
endif

329
install-confdir:
330
	$(INSTALL_DIR) "$(DESTDIR)$(qemu_confdir)"
331 332

install-sysconfig: install-datadir install-confdir
333
	$(INSTALL_DATA) $(SRC_PATH)/sysconfigs/target/target-x86_64.conf "$(DESTDIR)$(qemu_confdir)"
334

335 336
install: all $(if $(BUILD_DOCS),install-doc) install-sysconfig \
install-datadir install-localstatedir
337
	$(INSTALL_DIR) "$(DESTDIR)$(bindir)"
338
ifneq ($(TOOLS),)
339
	$(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)"
340
endif
341 342 343 344
ifneq ($(HELPERS-y),)
	$(INSTALL_DIR) "$(DESTDIR)$(libexecdir)"
	$(INSTALL_PROG) $(STRIP_OPT) $(HELPERS-y) "$(DESTDIR)$(libexecdir)"
endif
T
ths 已提交
345 346
ifneq ($(BLOBS),)
	set -e; for x in $(BLOBS); do \
347
		$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \
P
pbrook 已提交
348
	done
349 350 351
endif
ifeq ($(CONFIG_GTK),y)
	$(MAKE) -C po $@
T
ths 已提交
352
endif
353
	$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/keymaps"
354
	set -e; for x in $(KEYMAPS); do \
355
		$(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(qemu_datadir)/keymaps"; \
P
pbrook 已提交
356
	done
B
bellard 已提交
357
	for d in $(TARGET_DIRS); do \
B
bellard 已提交
358
	$(MAKE) -C $$d $@ || exit 1 ; \
B
bellard 已提交
359
        done
B
bellard 已提交
360

B
bellard 已提交
361
# various test targets
B
bellard 已提交
362
test speed: all
A
Anthony Liguori 已提交
363
	$(MAKE) -C tests/tcg $@
364

A
Alexandre Bique 已提交
365
.PHONY: TAGS
366
TAGS:
D
David Gibson 已提交
367 368
	rm -f $@
	find "$(SRC_PATH)" -name '*.[hc]' -exec etags --append {} +
369

B
bellard 已提交
370 371
cscope:
	rm -f ./cscope.*
372
	find "$(SRC_PATH)" -name "*.[chsS]" -print | sed 's,^\./,,' > ./cscope.files
B
bellard 已提交
373 374
	cscope -b

B
bellard 已提交
375
# documentation
376 377
MAKEINFO=makeinfo
MAKEINFOFLAGS=--no-headers --no-split --number-sections
378 379 380 381
TEXIFLAG=$(if $(V),,--quiet)
%.dvi: %.texi
	$(call quiet-command,texi2dvi $(TEXIFLAG) -I . $<,"  GEN   $@")

B
bellard 已提交
382
%.html: %.texi
383
	$(call quiet-command,LC_ALL=C $(MAKEINFO) $(MAKEINFOFLAGS) --html $< -o $@, \
384
	"  GEN   $@")
B
bellard 已提交
385

B
bellard 已提交
386
%.info: %.texi
387
	$(call quiet-command,$(MAKEINFO) $< -o $@,"  GEN   $@")
B
bellard 已提交
388

389 390
%.pdf: %.texi
	$(call quiet-command,texi2pdf $(TEXIFLAG) -I . $<,"  GEN   $@")
391 392

qemu-options.texi: $(SRC_PATH)/qemu-options.hx
B
Blue Swirl 已提交
393
	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@,"  GEN   $@")
B
bellard 已提交
394

395
qemu-monitor.texi: $(SRC_PATH)/hmp-commands.hx
B
Blue Swirl 已提交
396
	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@,"  GEN   $@")
397

398
QMP/qmp-commands.txt: $(SRC_PATH)/qmp-commands.hx
B
Blue Swirl 已提交
399
	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -q < $< > $@,"  GEN   $@")
400

401
qemu-img-cmds.texi: $(SRC_PATH)/qemu-img-cmds.hx
B
Blue Swirl 已提交
402
	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@,"  GEN   $@")
403

404
qemu.1: qemu-doc.texi qemu-options.texi qemu-monitor.texi
405
	$(call quiet-command, \
B
Blue Swirl 已提交
406
	  perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu.pod && \
M
Michael Tokarev 已提交
407
	  $(POD2MAN) --section=1 --center=" " --release=" " qemu.pod > $@, \
408
	  "  GEN   $@")
409

410
qemu-img.1: qemu-img.texi qemu-img-cmds.texi
411
	$(call quiet-command, \
B
Blue Swirl 已提交
412
	  perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu-img.pod && \
M
Michael Tokarev 已提交
413
	  $(POD2MAN) --section=1 --center=" " --release=" " qemu-img.pod > $@, \
414
	  "  GEN   $@")
B
bellard 已提交
415

416 417 418
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 && \
M
Michael Tokarev 已提交
419
	  $(POD2MAN) --section=1 --center=" " --release=" " fsdev/virtfs-proxy-helper.pod > $@, \
420 421
	  "  GEN   $@")

B
bellard 已提交
422
qemu-nbd.8: qemu-nbd.texi
423
	$(call quiet-command, \
B
Blue Swirl 已提交
424
	  perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu-nbd.pod && \
M
Michael Tokarev 已提交
425
	  $(POD2MAN) --section=8 --center=" " --release=" " qemu-nbd.pod > $@, \
426
	  "  GEN   $@")
B
bellard 已提交
427

428 429
dvi: qemu-doc.dvi qemu-tech.dvi
html: qemu-doc.html qemu-tech.html
430 431
info: qemu-doc.info qemu-tech.info
pdf: qemu-doc.pdf qemu-tech.pdf
432

433 434 435
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
436

437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491
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

492 493
# Add a dependency on the generated files, so that they are always
# rebuilt before other object files
494
ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
495
Makefile: $(GENERATED_HEADERS)
496
endif
497

B
bellard 已提交
498
# Include automatically generated dependency files
499 500
# Dependencies in Makefile.objs files come from our recursive subdir rules
-include $(wildcard *.d tests/*.d)