Makefile: .git-submodule-status
.PHONY: git-submodule-update
-
-git_module_status := $(shell \
- cd '$(SRC_PATH)' && \
- GIT="$(GIT)" ./scripts/git-submodule.sh status $(GIT_SUBMODULES); \
- echo $$?; \
-)
-
-ifeq (1,$(git_module_status))
-ifeq (no,$(GIT_UPDATE))
-git-submodule-update:
- $(call quiet-command, \
- echo && \
- echo "GIT submodule checkout is out of date. Please run" && \
- echo " scripts/git-submodule.sh update $(GIT_SUBMODULES)" && \
- echo "from the source directory checkout $(SRC_PATH)" && \
- echo && \
- exit 1)
-else
git-submodule-update:
$(call quiet-command, \
- (cd $(SRC_PATH) && GIT="$(GIT)" ./scripts/git-submodule.sh update $(GIT_SUBMODULES)), \
- "GIT","$(GIT_SUBMODULES)")
-endif
-endif
+ (GIT="$(GIT)" "$(SRC_PATH)/scripts/git-submodule.sh" $(GIT_SUBMODULES_ACTION) $(GIT_SUBMODULES)), \
+ "GIT","$(GIT_SUBMODULES)")
# 0. ensure the build tree is okay
# A separate rule is needed for Makefile dependencies to avoid -n
build.ninja: build.ninja.stamp
+$(build-files):
build.ninja.stamp: meson.stamp $(build-files)
$(NINJA) $(if $V,-v,) build.ninja && touch $@
endif
# --output-sync line.
run-ninja: config-host.mak
ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),)
- +$(quiet-@)$(if $(MAKE.nq),@:, $(NINJA) \
+ +$(quiet-@)$(if $(MAKE.nq),@:, $(NINJA) -d keepdepfile \
$(NINJAFLAGS) $(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat)
endif
endif
######################################################################
clean: recurse-clean
- -@test -f build.ninja && $(quiet-@)$(NINJA) $(NINJAFLAGS) -t clean || :
- -@test -f build.ninja && $(NINJA) $(NINJAFLAGS) clean-ctlist || :
+ -$(quiet-@)test -f build.ninja && $(NINJA) $(NINJAFLAGS) -t clean || :
+ -$(quiet-@)test -f build.ninja && $(NINJA) $(NINJAFLAGS) clean-ctlist || :
# avoid old build problems by removing potentially incorrect old files
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
find . \( -name '*.so' -o -name '*.dll' -o -name '*.[oda]' \) -type f \
$(SRC_PATH)/scripts/make-release "$(SRC_PATH)" "$(patsubst qemu-%.tar.bz2,%,$@)"
distclean: clean
- -@test -f build.ninja && $(quiet-@)$(NINJA) $(NINJAFLAGS) -t clean -g || :
+ -$(quiet-@)test -f build.ninja && $(NINJA) $(NINJAFLAGS) -t clean -g || :
rm -f config-host.mak config-host.h*
rm -f tests/tcg/config-*.mak
rm -f config-all-disas.mak config.status
- rm -f tests/qemu-iotests/common.env
rm -f roms/seabios/config.mak roms/vgabios/config.mak
rm -f qemu-plugins-ld.symbols qemu-plugins-ld64.symbols
rm -f *-config-target.h *-config-devices.mak *-config-devices.h
rm -f linux-headers/asm
rm -Rf .sdk
-find-src-path = find "$(SRC_PATH)/" -path "$(SRC_PATH)/meson" -prune -o -name "*.[chsS]"
+find-src-path = find "$(SRC_PATH)/" -path "$(SRC_PATH)/meson" -prune -o \( -name "*.[chsS]" -o -name "*.[ch].inc" \)
.PHONY: ctags
ctags:
- rm -f "$(SRC_PATH)/"tags
- $(find-src-path) -exec ctags -f "$(SRC_PATH)/"tags --append {} +
+ $(call quiet-command, \
+ rm -f "$(SRC_PATH)/"tags, \
+ "CTAGS", "Remove old tags")
+ $(call quiet-command, \
+ $(find-src-path) -exec ctags \
+ -f "$(SRC_PATH)/"tags --append {} +, \
+ "CTAGS", "Re-index $(SRC_PATH)")
+
+.PHONY: gtags
+gtags:
+ $(call quiet-command, \
+ rm -f "$(SRC_PATH)/"GTAGS; \
+ rm -f "$(SRC_PATH)/"GRTAGS; \
+ rm -f "$(SRC_PATH)/"GPATH, \
+ "GTAGS", "Remove old $@ files")
+ $(call quiet-command, \
+ (cd $(SRC_PATH) && \
+ $(find-src-path) | gtags -f -), \
+ "GTAGS", "Re-index $(SRC_PATH)")
.PHONY: TAGS
TAGS:
- rm -f "$(SRC_PATH)/"TAGS
- $(find-src-path) -exec etags -f "$(SRC_PATH)/"TAGS --append {} +
+ $(call quiet-command, \
+ rm -f "$(SRC_PATH)/"TAGS, \
+ "TAGS", "Remove old $@")
+ $(call quiet-command, \
+ $(find-src-path) -exec etags \
+ -f "$(SRC_PATH)/"TAGS --append {} +, \
+ "TAGS", "Re-index $(SRC_PATH)")
.PHONY: cscope
cscope:
- rm -f "$(SRC_PATH)"/cscope.*
- $(find-src-path) -print | sed -e 's,^\./,,' > "$(SRC_PATH)/cscope.files"
- cscope -b -i"$(SRC_PATH)/cscope.files" -f"$(SRC_PATH)"/cscope.out
+ $(call quiet-command, \
+ rm -f "$(SRC_PATH)/"cscope.* , \
+ "cscope", "Remove old $@ files")
+ $(call quiet-command, \
+ ($(find-src-path) -print | sed -e 's,^\./,,' \
+ > "$(SRC_PATH)/cscope.files"), \
+ "cscope", "Create file list")
+ $(call quiet-command, \
+ cscope -b -i"$(SRC_PATH)/cscope.files" \
+ -f"$(SRC_PATH)"/cscope.out, \
+ "cscope", "Re-index $(SRC_PATH)")
# Needed by "meson install"
export DESTDIR
include $(SRC_PATH)/tests/vm/Makefile.include
print-help-run = printf " %-30s - %s\\n" "$1" "$2"
-print-help = $(quiet-@)$(call print-help-run,$1,$2)
+print-help = @$(call print-help-run,$1,$2)
.PHONY: help
help:
$(call print-help,all,Build all)
$(call print-help,dir/file.o,Build specified target only)
$(call print-help,install,Install QEMU, documentation and tools)
- $(call print-help,ctags/TAGS,Generate tags file for editors)
+ $(call print-help,ctags/gtags/TAGS,Generate tags file for editors)
$(call print-help,cscope,Generate cscope index)
$(call print-help,sparse,Run sparse on the QEMU source)
@echo ''
@echo 'Test targets:'
$(call print-help,check,Run all tests (check-help for details))
$(call print-help,bench,Run all benchmarks)
- $(call print-help,docker,Help about targets running tests inside containers)
+ $(call print-help,docker-help,Help about targets running tests inside containers)
$(call print-help,vm-help,Help about targets running tests inside VM)
@echo ''
@echo 'Documentation targets:'
ifdef CONFIG_WIN32
@echo 'Windows targets:'
$(call print-help,installer,Build NSIS-based installer for QEMU)
-ifdef CONFIG_QGA_MSI
$(call print-help,msi,Build MSI-based installer for qemu-ga)
-endif
@echo ''
endif
$(call print-help,$(MAKE) [targets],(quiet build, default))