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
version.o: $(SRC_PATH)/version.rc config-host.h | version.lo
version.lo: $(SRC_PATH)/version.rc config-host.h
172 173

version-obj-$(CONFIG_WIN32) += version.o
174
version-lobj-$(CONFIG_WIN32) += version.lo
175

P
Paolo Bonzini 已提交
176
Makefile: $(version-obj-y) $(version-lobj-y)
177 178

######################################################################
179
# Build libraries
180 181

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

A
Alon Levy 已提交
184
######################################################################
B
bellard 已提交
185

J
Juan Quintela 已提交
186
qemu-img.o: qemu-img-cmds.h
187

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

192 193
qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o

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

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

200
qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
201
qemu-ga$(EXESUF): QEMU_CFLAGS += -I qga/qapi-generated
202

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

205 206
qapi-py = $(SRC_PATH)/scripts/qapi.py $(SRC_PATH)/scripts/ordereddict.py

207
qga/qapi-generated/qga-qapi-types.c qga/qapi-generated/qga-qapi-types.h :\
208
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
209 210
	$(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 :\
211
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py)
212 213
	$(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 :\
214
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
215
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -o qga/qapi-generated -p "qga-" < $<, "  GEN   $@")
216

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

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

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

233
clean:
234
# avoid old build problems by removing potentially incorrect old files
235
	rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
236
	rm -f qemu-options.def
237 238 239
	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 已提交
240
	rm -Rf .libs
B
Blue Swirl 已提交
241
	rm -f qemu-img-cmds.h
242
	@# May not be present in GENERATED_HEADERS
243 244
	rm -f trace/generated-tracers-dtrace.dtrace*
	rm -f trace/generated-tracers-dtrace.h*
245 246
	rm -f $(foreach f,$(GENERATED_HEADERS),$(f) $(f)-timestamp)
	rm -f $(foreach f,$(GENERATED_SOURCES),$(f) $(f)-timestamp)
S
Stefan Weil 已提交
247
	rm -rf qapi-generated
248
	rm -rf qga/qapi-generated
A
Anthony Liguori 已提交
249
	$(MAKE) -C tests/tcg clean
250
	for d in $(ALL_SUBDIRS); do \
M
Magnus Damm 已提交
251
	if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
252
	rm -f $$d/qemu-options.def; \
B
bellard 已提交
253
        done
254

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

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

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

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

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

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

332
install-confdir:
333
	$(INSTALL_DIR) "$(DESTDIR)$(qemu_confdir)"
334 335

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

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

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

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

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

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

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

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

392 393
%.pdf: %.texi
	$(call quiet-command,texi2pdf $(TEXIFLAG) -I . $<,"  GEN   $@")
394 395

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

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

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

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

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

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

419 420 421
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 已提交
422
	  $(POD2MAN) --section=1 --center=" " --release=" " fsdev/virtfs-proxy-helper.pod > $@, \
423 424
	  "  GEN   $@")

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

431 432
dvi: qemu-doc.dvi qemu-tech.dvi
html: qemu-doc.html qemu-tech.html
433 434
info: qemu-doc.info qemu-tech.info
pdf: qemu-doc.pdf qemu-tech.pdf
435

436 437 438
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
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 492 493 494
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

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

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