1b1fb9a63SFam Zheng# Makefile for VM tests 2b1fb9a63SFam Zheng 3ebe95fa0SFam Zheng.PHONY: vm-build-all vm-clean-all 4b1fb9a63SFam Zheng 5*60136e06SGerd HoffmannIMAGES := ubuntu.i386 freebsd netbsd openbsd centos fedora 6bd1497dcSGerd HoffmannIMAGES_DIR := $(HOME)/.cache/qemu-vm/images 7bd1497dcSGerd HoffmannIMAGE_FILES := $(patsubst %, $(IMAGES_DIR)/%.img, $(IMAGES)) 8b1fb9a63SFam Zheng 9b1fb9a63SFam Zheng.PRECIOUS: $(IMAGE_FILES) 10b1fb9a63SFam Zheng 11b1fb9a63SFam Zhengvm-test: 12b1fb9a63SFam Zheng @echo "vm-test: Test QEMU in preconfigured virtual machines" 13b1fb9a63SFam Zheng @echo 14b1fb9a63SFam Zheng @echo " vm-build-ubuntu.i386 - Build QEMU in ubuntu i386 VM" 15b1fb9a63SFam Zheng @echo " vm-build-freebsd - Build QEMU in FreeBSD VM" 16b1fb9a63SFam Zheng @echo " vm-build-netbsd - Build QEMU in NetBSD VM" 17b1fb9a63SFam Zheng @echo " vm-build-openbsd - Build QEMU in OpenBSD VM" 181bd26988SFam Zheng @echo " vm-build-centos - Build QEMU in CentOS VM, with Docker" 19*60136e06SGerd Hoffmann @echo " vm-build-fedora - Build QEMU in Fedora VM" 20af7e9168SFam Zheng @echo "" 21af7e9168SFam Zheng @echo " vm-build-all - Build QEMU in all VMs" 22af7e9168SFam Zheng @echo " vm-clean-all - Clean up VM images" 23ddafa31fSAlex Bennée @echo 24b1210f02SGerd Hoffmann @echo "For trouble-shooting:" 25b1210f02SGerd Hoffmann @echo " vm-boot-serial-<guest> - Boot guest, serial console on stdio" 26b1210f02SGerd Hoffmann @echo " vm-boot-ssh-<guest> - Boot guest and login via ssh" 27b1210f02SGerd Hoffmann @echo 28ddafa31fSAlex Bennée @echo "Special variables:" 29eec4b30aSWainer dos Santos Moschetta @echo " BUILD_TARGET=foo - Override the build target" 30eec4b30aSWainer dos Santos Moschetta @echo " TARGET_LIST=a,b,c - Override target list in builds" 31ddafa31fSAlex Bennée @echo ' EXTRA_CONFIGURE_OPTS="..."' 32eec4b30aSWainer dos Santos Moschetta @echo " J=[0..9]* - Override the -jN parameter for make commands" 33eec4b30aSWainer dos Santos Moschetta @echo " DEBUG=1 - Enable verbose output on host and interactive debugging" 34eec4b30aSWainer dos Santos Moschetta @echo " V=1 - Enable verbose ouput on host and guest commands" 35eec4b30aSWainer dos Santos Moschetta @echo " QEMU=/path/to/qemu - Change path to QEMU binary" 36b1fb9a63SFam Zheng 37b1fb9a63SFam Zhengvm-build-all: $(addprefix vm-build-, $(IMAGES)) 38b1fb9a63SFam Zheng 39ebe95fa0SFam Zhengvm-clean-all: 40ebe95fa0SFam Zheng rm -f $(IMAGE_FILES) 41ebe95fa0SFam Zheng 42bd1497dcSGerd Hoffmann$(IMAGES_DIR)/%.img: $(SRC_PATH)/tests/vm/% \ 43b1fb9a63SFam Zheng $(SRC_PATH)/tests/vm/basevm.py \ 44b1fb9a63SFam Zheng $(SRC_PATH)/tests/vm/Makefile.include 45bd1497dcSGerd Hoffmann @mkdir -p $(IMAGES_DIR) 46b1fb9a63SFam Zheng $(call quiet-command, \ 47b0040fa1SWainer dos Santos Moschetta $(PYTHON) $< \ 48b1fb9a63SFam Zheng $(if $(V)$(DEBUG), --debug) \ 49b1fb9a63SFam Zheng --image "$@" \ 50b1fb9a63SFam Zheng --force \ 51b1fb9a63SFam Zheng --build-image $@, \ 52b1fb9a63SFam Zheng " VM-IMAGE $*") 53b1fb9a63SFam Zheng 54b1fb9a63SFam Zheng 55b1fb9a63SFam Zheng# Build in VM $(IMAGE) 56bd1497dcSGerd Hoffmannvm-build-%: $(IMAGES_DIR)/%.img 57b1fb9a63SFam Zheng $(call quiet-command, \ 58b0040fa1SWainer dos Santos Moschetta $(PYTHON) $(SRC_PATH)/tests/vm/$* \ 59b1fb9a63SFam Zheng $(if $(V)$(DEBUG), --debug) \ 60b1fb9a63SFam Zheng $(if $(DEBUG), --interactive) \ 61b1fb9a63SFam Zheng $(if $(J),--jobs $(J)) \ 6241e3340aSPeter Maydell $(if $(V),--verbose) \ 63b1fb9a63SFam Zheng --image "$<" \ 64ddafa31fSAlex Bennée $(if $(BUILD_TARGET),--build-target $(BUILD_TARGET)) \ 657f71d505SGerd Hoffmann --snapshot \ 66ddafa31fSAlex Bennée --build-qemu $(SRC_PATH) -- \ 67ddafa31fSAlex Bennée $(if $(TARGET_LIST),--target-list=$(TARGET_LIST)) \ 68ddafa31fSAlex Bennée $(if $(EXTRA_CONFIGURE_OPTS),$(EXTRA_CONFIGURE_OPTS)), \ 69b1fb9a63SFam Zheng " VM-BUILD $*") 70b1fb9a63SFam Zheng 71b1210f02SGerd Hoffmannvm-boot-serial-%: $(IMAGES_DIR)/%.img 72b1210f02SGerd Hoffmann qemu-system-x86_64 -enable-kvm -m 4G -smp 2 -nographic \ 73b1210f02SGerd Hoffmann -drive if=none,id=vblk,cache=writeback,file="$<" \ 74b1210f02SGerd Hoffmann -netdev user,id=vnet \ 75b1210f02SGerd Hoffmann -device virtio-blk-pci,drive=vblk \ 76b1210f02SGerd Hoffmann -device virtio-net-pci,netdev=vnet \ 77b1210f02SGerd Hoffmann || true 78b1210f02SGerd Hoffmann 79b1210f02SGerd Hoffmannvm-boot-ssh-%: $(IMAGES_DIR)/%.img 80b1210f02SGerd Hoffmann $(call quiet-command, \ 81b1210f02SGerd Hoffmann $(SRC_PATH)/tests/vm/$* \ 82b1210f02SGerd Hoffmann --image "$<" \ 83b1210f02SGerd Hoffmann --interactive \ 84b1210f02SGerd Hoffmann false, \ 85b1210f02SGerd Hoffmann " VM-BOOT-SSH $*") || true 86