Makefile (6a021536e2390d4f74974381362b3e92ebe71f7e) Makefile (46e19e149f3b129a22c440caba853188df67deab)
1# Makefile for QEMU.
2
3# Always point to the root of the build tree (needs GNU make).
4BUILD_DIR=$(CURDIR)
5
6# Before including a proper config-host.mak, assume we are in the source tree
7SRC_PATH=.
8
9UNCHECKED_GOALS := %clean TAGS cscope ctags docker docker-%
10
11# All following code might depend on configuration variables
12ifneq ($(wildcard config-host.mak),)
13# Put the all: rule here so that config-host.mak can contain dependencies.
14all:
15include config-host.mak
16
1# Makefile for QEMU.
2
3# Always point to the root of the build tree (needs GNU make).
4BUILD_DIR=$(CURDIR)
5
6# Before including a proper config-host.mak, assume we are in the source tree
7SRC_PATH=.
8
9UNCHECKED_GOALS := %clean TAGS cscope ctags docker docker-%
10
11# All following code might depend on configuration variables
12ifneq ($(wildcard config-host.mak),)
13# Put the all: rule here so that config-host.mak can contain dependencies.
14all:
15include config-host.mak
16
17git-submodule-update:
18
19.PHONY: git-submodule-update
20
21ifeq (0,$(MAKELEVEL))
22 git_module_status := $(shell \
23 cd '$(SRC_PATH)' && \
24 ./scripts/git-submodule.sh status $(GIT_SUBMODULES); \
25 echo $$?; \
26 )
27
28ifeq (1,$(git_module_status))
29git-submodule-update:
30 $(call quiet-command, \
31 (cd $(SRC_PATH) && ./scripts/git-submodule.sh update $(GIT_SUBMODULES)), \
32 "GIT","$(GIT_SUBMODULES)")
33endif
34endif
35
36.git-submodule-status: git-submodule-update config-host.mak
37
38# Check that we're not trying to do an out-of-tree build from
39# a tree that's been used for an in-tree build.
40ifneq ($(realpath $(SRC_PATH)),$(realpath .))
41ifneq ($(wildcard $(SRC_PATH)/config-host.mak),)
42$(error This is an out of tree build but your source tree ($(SRC_PATH)) \
43seems to have been used for an in-tree build. You can fix this by running \
44"make distclean && rm -rf *-linux-user *-softmmu" in your source tree)
45endif

--- 54 unchanged lines hidden (view full) ---

100endif
101ifdef CONFIG_TRACE_UST
102TRACE_HEADERS += trace-ust-root.h $(trace-events-subdirs:%=%/trace-ust.h)
103endif
104
105GENERATED_FILES += $(TRACE_HEADERS)
106GENERATED_FILES += $(TRACE_SOURCES)
107GENERATED_FILES += $(BUILD_DIR)/trace-events-all
17# Check that we're not trying to do an out-of-tree build from
18# a tree that's been used for an in-tree build.
19ifneq ($(realpath $(SRC_PATH)),$(realpath .))
20ifneq ($(wildcard $(SRC_PATH)/config-host.mak),)
21$(error This is an out of tree build but your source tree ($(SRC_PATH)) \
22seems to have been used for an in-tree build. You can fix this by running \
23"make distclean && rm -rf *-linux-user *-softmmu" in your source tree)
24endif

--- 54 unchanged lines hidden (view full) ---

79endif
80ifdef CONFIG_TRACE_UST
81TRACE_HEADERS += trace-ust-root.h $(trace-events-subdirs:%=%/trace-ust.h)
82endif
83
84GENERATED_FILES += $(TRACE_HEADERS)
85GENERATED_FILES += $(TRACE_SOURCES)
86GENERATED_FILES += $(BUILD_DIR)/trace-events-all
108GENERATED_FILES += .git-submodule-status
109
110trace-group-name = $(shell dirname $1 | sed -e 's/[^a-zA-Z0-9]/_/g')
111
112tracetool-y = $(SRC_PATH)/scripts/tracetool.py
113tracetool-y += $(shell find $(SRC_PATH)/scripts/tracetool -name "*.py")
114
115%/trace.h: %/trace.h-timestamp
116 @cmp $< $@ >/dev/null 2>&1 || cp $< $@

--- 91 unchanged lines hidden (view full) ---

208 --backends=$(TRACE_BACKENDS) \
209 $< > $@,"GEN","$(@:%-timestamp=%)")
210
211trace-dtrace-root.h: trace-dtrace-root.dtrace
212 $(call quiet-command,dtrace -o $@ -h -s $<, "GEN","$@")
213
214trace-dtrace-root.o: trace-dtrace-root.dtrace
215
87
88trace-group-name = $(shell dirname $1 | sed -e 's/[^a-zA-Z0-9]/_/g')
89
90tracetool-y = $(SRC_PATH)/scripts/tracetool.py
91tracetool-y += $(shell find $(SRC_PATH)/scripts/tracetool -name "*.py")
92
93%/trace.h: %/trace.h-timestamp
94 @cmp $< $@ >/dev/null 2>&1 || cp $< $@

--- 91 unchanged lines hidden (view full) ---

186 --backends=$(TRACE_BACKENDS) \
187 $< > $@,"GEN","$(@:%-timestamp=%)")
188
189trace-dtrace-root.h: trace-dtrace-root.dtrace
190 $(call quiet-command,dtrace -o $@ -h -s $<, "GEN","$@")
191
192trace-dtrace-root.o: trace-dtrace-root.dtrace
193
216KEYCODEMAP_GEN = $(SRC_PATH)/ui/keycodemapdb/tools/keymap-gen
217KEYCODEMAP_CSV = $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv
218
219KEYCODEMAP_FILES = \
220 ui/input-keymap-linux-to-qcode.c \
221 ui/input-keymap-qcode-to-qnum.c \
222 ui/input-keymap-qnum-to-qcode.c \
223 $(NULL)
224
225GENERATED_FILES += $(KEYCODEMAP_FILES)
226
227ui/input-keymap-%.c: $(KEYCODEMAP_GEN) $(KEYCODEMAP_CSV) $(SRC_PATH)/ui/Makefile.objs
228 $(call quiet-command,\
229 src=$$(echo $@ | sed -E -e "s,^ui/input-keymap-(.+)-to-(.+)\.c$$,\1,") && \
230 dst=$$(echo $@ | sed -E -e "s,^ui/input-keymap-(.+)-to-(.+)\.c$$,\2,") && \
231 test -e $(KEYCODEMAP_GEN) && \
232 $(PYTHON) $(KEYCODEMAP_GEN) \
233 --lang glib2 \
234 --varname qemu_input_map_$${src}_to_$${dst} \
235 code-map $(KEYCODEMAP_CSV) $${src} $${dst} \
236 > $@ || rm -f $@, "GEN", "$@")
237
238$(KEYCODEMAP_GEN): .git-submodule-status
239$(KEYCODEMAP_CSV): .git-submodule-status
240
241# Don't try to regenerate Makefile or configure
242# We don't generate any of them
243Makefile: ;
244configure: ;
245
246.PHONY: all clean cscope distclean html info install install-doc \
247 pdf txt recurse-all speed test dist msi FORCE
248

--- 123 unchanged lines hidden (view full) ---

372
373subdir-%:
374 $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
375
376DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
377DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
378DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
379
194# Don't try to regenerate Makefile or configure
195# We don't generate any of them
196Makefile: ;
197configure: ;
198
199.PHONY: all clean cscope distclean html info install install-doc \
200 pdf txt recurse-all speed test dist msi FORCE
201

--- 123 unchanged lines hidden (view full) ---

325
326subdir-%:
327 $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
328
329DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
330DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
331DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
332
380subdir-dtc: .git-submodule-status dtc/libfdt dtc/tests
333subdir-dtc:dtc/libfdt dtc/tests
381 $(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,)
382
383dtc/%:
384 mkdir -p $@
385
386$(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) \
387 $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
388

--- 24 unchanged lines hidden (view full) ---

413qemu-img.o: qemu-img-cmds.h
414
415qemu-img$(EXESUF): qemu-img.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
416qemu-nbd$(EXESUF): qemu-nbd.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
417qemu-io$(EXESUF): qemu-io.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
418
419qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o $(COMMON_LDADDS)
420
334 $(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,)
335
336dtc/%:
337 mkdir -p $@
338
339$(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) \
340 $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
341

--- 24 unchanged lines hidden (view full) ---

366qemu-img.o: qemu-img-cmds.h
367
368qemu-img$(EXESUF): qemu-img.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
369qemu-nbd$(EXESUF): qemu-nbd.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
370qemu-io$(EXESUF): qemu-io.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
371
372qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o $(COMMON_LDADDS)
373
421qemu-keymap$(EXESUF): qemu-keymap.o ui/input-keymap.o $(COMMON_LDADDS)
422
423fsdev/virtfs-proxy-helper$(EXESUF): fsdev/virtfs-proxy-helper.o fsdev/9p-marshal.o fsdev/9p-iov-marshal.o $(COMMON_LDADDS)
424fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
425
426scsi/qemu-pr-helper$(EXESUF): scsi/qemu-pr-helper.o scsi/utils.o $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
427ifdef CONFIG_MPATH
428scsi/qemu-pr-helper$(EXESUF): LIBS += -ludev -lmultipath -lmpathpersist
429endif
430
431qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/scripts/hxtool
432 $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
433
434qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
435qemu-ga$(EXESUF): QEMU_CFLAGS += -I qga/qapi-generated
436
374fsdev/virtfs-proxy-helper$(EXESUF): fsdev/virtfs-proxy-helper.o fsdev/9p-marshal.o fsdev/9p-iov-marshal.o $(COMMON_LDADDS)
375fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
376
377scsi/qemu-pr-helper$(EXESUF): scsi/qemu-pr-helper.o scsi/utils.o $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
378ifdef CONFIG_MPATH
379scsi/qemu-pr-helper$(EXESUF): LIBS += -ludev -lmultipath -lmpathpersist
380endif
381
382qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/scripts/hxtool
383 $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
384
385qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
386qemu-ga$(EXESUF): QEMU_CFLAGS += -I qga/qapi-generated
387
437qemu-keymap$(EXESUF): LIBS += $(XKBCOMMON_LIBS)
438qemu-keymap$(EXESUF): QEMU_CFLAGS += $(XKBCOMMON_CFLAGS)
439
440gen-out-type = $(subst .,-,$(suffix $@))
441
442qapi-py = $(SRC_PATH)/scripts/qapi.py $(SRC_PATH)/scripts/ordereddict.py
443
444qga/qapi-generated/qga-qapi-types.c qga/qapi-generated/qga-qapi-types.h :\
445$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
446 $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py \
447 $(gen-out-type) -o qga/qapi-generated -p "qga-" $<, \

--- 271 unchanged lines hidden (view full) ---

719 "VERT","$@")
720
721ui/shader/%-frag.h: $(SRC_PATH)/ui/shader/%.frag $(SRC_PATH)/scripts/shaderinclude.pl
722 @mkdir -p $(dir $@)
723 $(call quiet-command,\
724 perl $(SRC_PATH)/scripts/shaderinclude.pl $< > $@,\
725 "FRAG","$@")
726
388gen-out-type = $(subst .,-,$(suffix $@))
389
390qapi-py = $(SRC_PATH)/scripts/qapi.py $(SRC_PATH)/scripts/ordereddict.py
391
392qga/qapi-generated/qga-qapi-types.c qga/qapi-generated/qga-qapi-types.h :\
393$(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
394 $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py \
395 $(gen-out-type) -o qga/qapi-generated -p "qga-" $<, \

--- 271 unchanged lines hidden (view full) ---

667 "VERT","$@")
668
669ui/shader/%-frag.h: $(SRC_PATH)/ui/shader/%.frag $(SRC_PATH)/scripts/shaderinclude.pl
670 @mkdir -p $(dir $@)
671 $(call quiet-command,\
672 perl $(SRC_PATH)/scripts/shaderinclude.pl $< > $@,\
673 "FRAG","$@")
674
727ui/console-gl.o: $(SRC_PATH)/ui/console-gl.c \
675ui/shader.o: $(SRC_PATH)/ui/shader.c \
728 ui/shader/texture-blit-vert.h ui/shader/texture-blit-frag.h
729
730# documentation
731MAKEINFO=makeinfo
732MAKEINFOINCLUDES= -I docs -I $(<D) -I $(@D)
733MAKEINFOFLAGS=--no-split --number-sections $(MAKEINFOINCLUDES)
734TEXI2PODFLAGS=$(MAKEINFOINCLUDES) "-DVERSION=$(VERSION)"
735TEXI2PDFFLAGS=$(if $(V),,--quiet) -I $(SRC_PATH) $(MAKEINFOINCLUDES)

--- 179 unchanged lines hidden ---
676 ui/shader/texture-blit-vert.h ui/shader/texture-blit-frag.h
677
678# documentation
679MAKEINFO=makeinfo
680MAKEINFOINCLUDES= -I docs -I $(<D) -I $(@D)
681MAKEINFOFLAGS=--no-split --number-sections $(MAKEINFOINCLUDES)
682TEXI2PODFLAGS=$(MAKEINFOINCLUDES) "-DVERSION=$(VERSION)"
683TEXI2PDFFLAGS=$(if $(V),,--quiet) -I $(SRC_PATH) $(MAKEINFOINCLUDES)

--- 179 unchanged lines hidden ---