]> git.proxmox.com Git - mirror_qemu.git/blame - tests/vm/Makefile.include
Merge tag 'pull-maintainer-may24-160524-2' of https://gitlab.com/stsquad/qemu into...
[mirror_qemu.git] / tests / vm / Makefile.include
CommitLineData
b1fb9a63
FZ
1# Makefile for VM tests
2
39735a91 3# Hack to allow running in an unconfigured build tree
b1399b0c 4ifeq ($(realpath $(SRC_PATH)),$(realpath .))
39735a91
PB
5VM_PYTHON = PYTHONPATH=$(SRC_PATH)/python /usr/bin/env python3
6VM_VENV =
39735a91 7else
c03f57fd 8VM_PYTHON = $(PYTHON)
39735a91 9VM_VENV = check-venv
39735a91 10endif
b1fb9a63 11
39735a91 12.PHONY: vm-build-all vm-clean-all
ebd654aa 13
f5c73069
PB
14EFI_AARCH64 = $(wildcard $(BUILD_DIR)/pc-bios/edk2-aarch64-code.fd)
15
3c696fdc 16X86_IMAGES := freebsd netbsd openbsd haiku.x86_64
39d87c8c 17ifneq ($(GENISOIMAGE),)
5e658729 18X86_IMAGES += centos
13336606 19ifneq ($(EFI_AARCH64),)
ebd654aa
AB
20ARM64_IMAGES += ubuntu.aarch64 centos.aarch64
21endif
13336606 22endif
ebd654aa 23
b1399b0c 24HOST_ARCH = $(shell uname -m)
ebd654aa
AB
25ifeq ($(HOST_ARCH),x86_64)
26IMAGES=$(X86_IMAGES) $(if $(USE_TCG),$(ARM64_IMAGES))
27else ifeq ($(HOST_ARCH),aarch64)
28IMAGES=$(ARM64_IMAGES) $(if $(USE_TCG),$(X86_IMAGES))
39d87c8c
AB
29endif
30
bd1497dc
GH
31IMAGES_DIR := $(HOME)/.cache/qemu-vm/images
32IMAGE_FILES := $(patsubst %, $(IMAGES_DIR)/%.img, $(IMAGES))
b1fb9a63
FZ
33
34.PRECIOUS: $(IMAGE_FILES)
35
00eb3db0
PB
36ifneq ($(PYTHON),)
37HAVE_PYTHON_YAML = $(shell $(PYTHON) -c "import yaml" 2> /dev/null && echo yes)
38endif
39
4f2f6276
PMD
40# 'vm-help' target was historically named 'vm-test'
41vm-help vm-test:
42 @echo "vm-help: Test QEMU in preconfigured virtual machines"
b1fb9a63 43 @echo
b1fb9a63
FZ
44 @echo " vm-build-freebsd - Build QEMU in FreeBSD VM"
45 @echo " vm-build-netbsd - Build QEMU in NetBSD VM"
46 @echo " vm-build-openbsd - Build QEMU in OpenBSD VM"
39d87c8c
AB
47ifneq ($(GENISOIMAGE),)
48 @echo " vm-build-centos - Build QEMU in CentOS VM, with Docker"
13336606
RF
49ifneq ($(EFI_AARCH64),)
50 @echo " vm-build-ubuntu.aarch64 - Build QEMU in ubuntu aarch64 VM"
d322fe2d 51 @echo " vm-build-centos.aarch64 - Build QEMU in CentOS aarch64 VM"
13336606
RF
52else
53 @echo " (to build centos/ubuntu aarch64 images use configure --efi-aarch64)"
54endif
39d87c8c
AB
55else
56 @echo " (install genisoimage to build centos/ubuntu images)"
57endif
9fc33bf4 58 @echo " vm-build-haiku.x86_64 - Build QEMU in Haiku VM"
af7e9168 59 @echo ""
ebd654aa 60 @echo " vm-build-all - Build QEMU in: $(IMAGES)"
af7e9168 61 @echo " vm-clean-all - Clean up VM images"
ddafa31f 62 @echo
b1210f02
GH
63 @echo "For trouble-shooting:"
64 @echo " vm-boot-serial-<guest> - Boot guest, serial console on stdio"
65 @echo " vm-boot-ssh-<guest> - Boot guest and login via ssh"
66 @echo
ddafa31f 67 @echo "Special variables:"
eec4b30a 68 @echo " BUILD_TARGET=foo - Override the build target"
eec4b30a 69 @echo " DEBUG=1 - Enable verbose output on host and interactive debugging"
81c9b06e
AB
70 @echo ' EXTRA_CONFIGURE_OPTS="..." - Pass to configure step'
71 @echo " J=[0..9]* - Override the -jN parameter for make commands"
ff14ab0c 72 @echo " LOG_CONSOLE=1 - Log console to file in: ~/.cache/qemu-vm "
ebd654aa 73 @echo " USE_TCG=1 - Use TCG for cross-arch images"
eec4b30a 74 @echo " QEMU=/path/to/qemu - Change path to QEMU binary"
00eb3db0 75ifeq ($(HAVE_PYTHON_YAML),yes)
3f1e8137
RF
76 @echo " QEMU_CONFIG=/path/conf.yml - Change path to VM configuration .yml file."
77else
78 @echo " (install python3-yaml to enable support for yaml file to configure a VM.)"
79endif
80 @echo " See conf_example_*.yml for file format details."
81c9b06e
AB
81 @echo " QEMU_IMG=/path/to/qemu-img - Change path to qemu-img tool"
82 @echo " QEMU_LOCAL=1 - Use QEMU binary local to this build."
83 @echo " TARGET_LIST=a,b,c - Override target list in builds"
96420a30 84 @echo " V=1 - Enable verbose output on host and guest commands"
b1fb9a63
FZ
85
86vm-build-all: $(addprefix vm-build-, $(IMAGES))
87
ebe95fa0
FZ
88vm-clean-all:
89 rm -f $(IMAGE_FILES)
90
bd1497dc
GH
91$(IMAGES_DIR)/%.img: $(SRC_PATH)/tests/vm/% \
92 $(SRC_PATH)/tests/vm/basevm.py \
f4c66f17 93 $(SRC_PATH)/tests/vm/Makefile.include \
39735a91 94 $(VM_VENV)
bd1497dc 95 @mkdir -p $(IMAGES_DIR)
b1fb9a63 96 $(call quiet-command, \
39735a91 97 $(VM_PYTHON) $< \
b1fb9a63 98 $(if $(V)$(DEBUG), --debug) \
92fecad3 99 $(if $(GENISOIMAGE),--genisoimage $(GENISOIMAGE)) \
e56c4504 100 $(if $(QEMU_LOCAL),--build-path $(BUILD_DIR)) \
13336606 101 $(if $(EFI_AARCH64),--efi-aarch64 $(EFI_AARCH64)) \
ff14ab0c 102 $(if $(LOG_CONSOLE),--log-console) \
7bb17a92 103 --source-path $(SRC_PATH) \
b1fb9a63 104 --image "$@" \
151b7dba 105 $(if $(filter-out check-venv, $?), --force) \
b1fb9a63
FZ
106 --build-image $@, \
107 " VM-IMAGE $*")
108
b1fb9a63 109# Build in VM $(IMAGE)
39735a91 110vm-build-%: $(IMAGES_DIR)/%.img $(VM_VENV)
b1fb9a63 111 $(call quiet-command, \
39735a91 112 $(VM_PYTHON) $(SRC_PATH)/tests/vm/$* \
b1fb9a63
FZ
113 $(if $(V)$(DEBUG), --debug) \
114 $(if $(DEBUG), --interactive) \
115 $(if $(J),--jobs $(J)) \
41e3340a 116 $(if $(V),--verbose) \
e56c4504 117 $(if $(QEMU_LOCAL),--build-path $(BUILD_DIR)) \
13336606 118 $(if $(EFI_AARCH64),--efi-aarch64 $(EFI_AARCH64)) \
ff14ab0c 119 $(if $(LOG_CONSOLE),--log-console) \
b1fb9a63 120 --image "$<" \
ddafa31f 121 $(if $(BUILD_TARGET),--build-target $(BUILD_TARGET)) \
7f71d505 122 --snapshot \
ddafa31f
AB
123 --build-qemu $(SRC_PATH) -- \
124 $(if $(TARGET_LIST),--target-list=$(TARGET_LIST)) \
125 $(if $(EXTRA_CONFIGURE_OPTS),$(EXTRA_CONFIGURE_OPTS)), \
b1fb9a63
FZ
126 " VM-BUILD $*")
127
b1210f02
GH
128vm-boot-serial-%: $(IMAGES_DIR)/%.img
129 qemu-system-x86_64 -enable-kvm -m 4G -smp 2 -nographic \
130 -drive if=none,id=vblk,cache=writeback,file="$<" \
131 -netdev user,id=vnet \
132 -device virtio-blk-pci,drive=vblk \
133 -device virtio-net-pci,netdev=vnet \
134 || true
135
39735a91 136vm-boot-ssh-%: $(IMAGES_DIR)/%.img $(VM_VENV)
b1210f02 137 $(call quiet-command, \
39735a91 138 $(VM_PYTHON) $(SRC_PATH)/tests/vm/$* \
46313326 139 $(if $(J),--jobs $(J)) \
d5326a24 140 $(if $(V)$(DEBUG), --debug) \
e56c4504 141 $(if $(QEMU_LOCAL),--build-path $(BUILD_DIR)) \
13336606 142 $(if $(EFI_AARCH64),--efi-aarch64 $(EFI_AARCH64)) \
ff14ab0c 143 $(if $(LOG_CONSOLE),--log-console) \
b1210f02
GH
144 --image "$<" \
145 --interactive \
146 false, \
147 " VM-BOOT-SSH $*") || true