Makefile 17.4 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
	@echo $@ is out-of-date, running configure
31 32 33 34 35 36 37 38
	@# 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
39 40
else
config-host.mak:
41
ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
42 43 44
	@echo "Please call configure before running make!"
	@exit 1
endif
45
endif
B
bellard 已提交
46

47 48 49 50
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

51 52 53
GENERATED_HEADERS += trace/generated-events.h
GENERATED_SOURCES += trace/generated-events.c

54
GENERATED_HEADERS += trace/generated-tracers.h
55
ifeq ($(TRACE_BACKEND),dtrace)
56
GENERATED_HEADERS += trace/generated-tracers-dtrace.h
57
endif
58
GENERATED_SOURCES += trace/generated-tracers.c
59

60 61 62 63 64
# Don't try to regenerate Makefile or configure
# We don't generate any of them
Makefile: ;
configure: ;

65
.PHONY: all clean cscope distclean dvi html info install install-doc \
66
	pdf recurse-all speed test dist
67

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

J
Juan Quintela 已提交
70
LIBS+=-lz $(LIBS_TOOLS)
71

72 73
HELPERS-$(CONFIG_LINUX) = qemu-bridge-helper$(EXESUF)

74
ifdef BUILD_DOCS
75
DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1 qemu-nbd.8 qmp-commands.txt
76
ifdef CONFIG_VIRTFS
77
DOCS+=fsdev/virtfs-proxy-helper.1
78
endif
79 80 81
else
DOCS=
endif
B
bellard 已提交
82

83
SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory) BUILD_DIR=$(BUILD_DIR)
84
SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS))
85
SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %-config-devices.mak.d, $(TARGET_DIRS))
86

87 88 89 90
ifeq ($(SUBDIR_DEVICES_MAK),)
config-all-devices.mak:
	$(call quiet-command,echo '# no devices' > $@,"  GEN   $@")
else
91
config-all-devices.mak: $(SUBDIR_DEVICES_MAK)
92 93 94 95
	$(call quiet-command, sed -n \
             's|^\([^=]*\)=\(.*\)$$|\1:=$$(findstring y,$$(\1)\2)|p' \
             $(SUBDIR_DEVICES_MAK) | sort -u > $@, \
             "  GEN   $@")
96
endif
97

P
Paul Brook 已提交
98 99
-include $(SUBDIR_DEVICES_MAK_DEP)

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

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

123 124 125 126 127 128 129 130
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 已提交
131
all: $(DOCS) $(TOOLS) $(HELPERS-y) recurse-all
P
pbrook 已提交
132

133 134
config-host.h: config-host.h-timestamp
config-host.h-timestamp: config-host.mak
B
Blue Swirl 已提交
135
qemu-options.def: $(SRC_PATH)/qemu-options.hx
B
Blue Swirl 已提交
136
	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"  GEN   $@")
137

138
SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
139 140 141
SOFTMMU_SUBDIR_RULES=$(filter %-softmmu,$(SUBDIR_RULES))

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

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

146 147 148 149
subdir-pixman: pixman/Makefile
	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pixman V="$(V)" all,)

pixman/Makefile: $(SRC_PATH)/pixman/configure
150
	(cd pixman; CFLAGS="$(CFLAGS) -fPIC $(extra_cflags) $(extra_ldflags)" $(SRC_PATH)/pixman/configure $(AUTOCONF_HOST) --disable-gtk --disable-shared --enable-static)
151 152 153 154

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

155
DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
156 157
DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
158 159

subdir-dtc:dtc/libfdt dtc/tests
160
	$(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,)
161 162 163 164

dtc/%:
	mkdir -p $@

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

P
Paul Brook 已提交
167 168 169 170 171 172 173
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 已提交
174

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

177
$(BUILD_DIR)/version.o: $(SRC_PATH)/version.rc $(BUILD_DIR)/config-host.h | $(BUILD_DIR)/version.lo
178
	$(call quiet-command,$(WINDRES) -I$(BUILD_DIR) -o $@ $<,"  RC    version.o")
179
$(BUILD_DIR)/version.lo: $(SRC_PATH)/version.rc $(BUILD_DIR)/config-host.h
180
	$(call quiet-command,$(WINDRES) -I$(BUILD_DIR) -o $@ $<,"  RC    version.lo")
181

P
Paolo Bonzini 已提交
182
Makefile: $(version-obj-y) $(version-lobj-y)
183 184

######################################################################
185
# Build libraries
186 187

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

A
Alon Levy 已提交
190
######################################################################
B
bellard 已提交
191

J
Juan Quintela 已提交
192
qemu-img.o: qemu-img-cmds.h
193

194 195
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
196
qemu-io$(EXESUF): qemu-io.o $(block-obj-y) libqemuutil.a libqemustub.a
197

198 199
qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o

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

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

206
qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
207
qemu-ga$(EXESUF): QEMU_CFLAGS += -I qga/qapi-generated
208

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

211 212
qapi-py = $(SRC_PATH)/scripts/qapi.py $(SRC_PATH)/scripts/ordereddict.py

213
qga/qapi-generated/qga-qapi-types.c qga/qapi-generated/qga-qapi-types.h :\
214
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
215 216
	$(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 :\
217
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py)
218 219
	$(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 :\
220
$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
221
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -o qga/qapi-generated -p "qga-" < $<, "  GEN   $@")
222

223
qapi-types.c qapi-types.h :\
224
$(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
225
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py $(gen-out-type) -o "." -b < $<, "  GEN   $@")
226
qapi-visit.c qapi-visit.h :\
227
$(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py)
228
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py $(gen-out-type) -o "." -b < $<, "  GEN   $@")
229
qmp-commands.h qmp-marshal.c :\
230
$(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
231
	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -m -o "." < $<, "  GEN   $@")
232

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

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

239
clean:
240
# avoid old build problems by removing potentially incorrect old files
241
	rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
242
	rm -f qemu-options.def
243 244
	find . -name '*.[oda]' -type f -exec rm -f {} +
	find . -name '*.l[oa]' -type f -exec rm -f {} +
245
	rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
246 247
	rm -f fsdev/*.pod
	rm -rf .libs */.libs
B
Blue Swirl 已提交
248
	rm -f qemu-img-cmds.h
249
	@# May not be present in GENERATED_HEADERS
250 251
	rm -f trace/generated-tracers-dtrace.dtrace*
	rm -f trace/generated-tracers-dtrace.h*
252 253
	rm -f $(foreach f,$(GENERATED_HEADERS),$(f) $(f)-timestamp)
	rm -f $(foreach f,$(GENERATED_SOURCES),$(f) $(f)-timestamp)
S
Stefan Weil 已提交
254
	rm -rf qapi-generated
255
	rm -rf qga/qapi-generated
256
	for d in $(ALL_SUBDIRS); do \
M
Magnus Damm 已提交
257
	if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
258
	rm -f $$d/qemu-options.def; \
B
bellard 已提交
259
        done
260

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

B
bellard 已提交
287 288
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 \
289
common  de-ch  es     fo  fr-ca  hu     ja  mk  nl-be      pt  sl     tr \
J
Jan Krupa 已提交
290
bepo    cz
B
bellard 已提交
291

T
ths 已提交
292
ifdef INSTALL_BLOBS
293
BLOBS=bios.bin bios-256k.bin sgabios.bin vgabios.bin vgabios-cirrus.bin \
G
Gerd Hoffmann 已提交
294
vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin \
295
acpi-dsdt.aml q35-acpi-dsdt.aml \
296
ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin \
297 298
pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom \
pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \
299 300
efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom \
efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom \
A
Anthony Liguori 已提交
301
qemu-icon.bmp qemu_logo_no_text.svg \
302
bamboo.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \
J
Jan Kiszka 已提交
303
multiboot.bin linuxboot.bin kvmvapic.bin \
304
s390-zipl.rom \
305
s390-ccw.img \
306 307
spapr-rtas.bin slof.bin \
palcode-clipper
T
ths 已提交
308 309 310 311
else
BLOBS=
endif

312
install-doc: $(DOCS)
313 314
	$(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)"
	$(INSTALL_DATA) qemu-doc.html  qemu-tech.html "$(DESTDIR)$(qemu_docdir)"
315
	$(INSTALL_DATA) qmp-commands.txt "$(DESTDIR)$(qemu_docdir)"
316
ifdef CONFIG_POSIX
317
	$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
318 319 320
	$(INSTALL_DATA) qemu.1 "$(DESTDIR)$(mandir)/man1"
ifneq ($(TOOLS),)
	$(INSTALL_DATA) qemu-img.1 "$(DESTDIR)$(mandir)/man1"
321 322
	$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man8"
	$(INSTALL_DATA) qemu-nbd.8 "$(DESTDIR)$(mandir)/man8"
323
endif
324
endif
325 326 327 328
ifdef CONFIG_VIRTFS
	$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
	$(INSTALL_DATA) fsdev/virtfs-proxy-helper.1 "$(DESTDIR)$(mandir)/man1"
endif
329 330 331 332

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

333 334 335 336 337 338 339
install-localstatedir:
ifdef CONFIG_POSIX
ifneq (,$(findstring qemu-ga,$(TOOLS)))
	$(INSTALL_DIR) "$(DESTDIR)$(qemu_localstatedir)"/run
endif
endif

340
install-confdir:
341
	$(INSTALL_DIR) "$(DESTDIR)$(qemu_confdir)"
342 343

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

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

B
bellard 已提交
372
# various test targets
B
bellard 已提交
373
test speed: all
A
Anthony Liguori 已提交
374
	$(MAKE) -C tests/tcg $@
375

A
Alexandre Bique 已提交
376
.PHONY: TAGS
377
TAGS:
D
David Gibson 已提交
378 379
	rm -f $@
	find "$(SRC_PATH)" -name '*.[hc]' -exec etags --append {} +
380

B
bellard 已提交
381 382
cscope:
	rm -f ./cscope.*
383
	find "$(SRC_PATH)" -name "*.[chsS]" -print | sed 's,^\./,,' > ./cscope.files
B
bellard 已提交
384 385
	cscope -b

B
bellard 已提交
386
# documentation
387 388
MAKEINFO=makeinfo
MAKEINFOFLAGS=--no-headers --no-split --number-sections
389 390 391 392
TEXIFLAG=$(if $(V),,--quiet)
%.dvi: %.texi
	$(call quiet-command,texi2dvi $(TEXIFLAG) -I . $<,"  GEN   $@")

B
bellard 已提交
393
%.html: %.texi
394
	$(call quiet-command,LC_ALL=C $(MAKEINFO) $(MAKEINFOFLAGS) --html $< -o $@, \
395
	"  GEN   $@")
B
bellard 已提交
396

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

400 401
%.pdf: %.texi
	$(call quiet-command,texi2pdf $(TEXIFLAG) -I . $<,"  GEN   $@")
402 403

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

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

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

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

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

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

427 428 429
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 已提交
430
	  $(POD2MAN) --section=1 --center=" " --release=" " fsdev/virtfs-proxy-helper.pod > $@, \
431 432
	  "  GEN   $@")

B
bellard 已提交
433
qemu-nbd.8: qemu-nbd.texi
434
	$(call quiet-command, \
B
Blue Swirl 已提交
435
	  perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu-nbd.pod && \
M
Michael Tokarev 已提交
436
	  $(POD2MAN) --section=8 --center=" " --release=" " qemu-nbd.pod > $@, \
437
	  "  GEN   $@")
B
bellard 已提交
438

439 440
dvi: qemu-doc.dvi qemu-tech.dvi
html: qemu-doc.html qemu-tech.html
441 442
info: qemu-doc.info qemu-tech.info
pdf: qemu-doc.pdf qemu-tech.pdf
443

444 445 446
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
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 495 496 497 498 499 500 501 502
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

503 504
# Add a dependency on the generated files, so that they are always
# rebuilt before other object files
505
ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
506
Makefile: $(GENERATED_HEADERS)
507
endif
508

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