# Makefile for VM tests

.PHONY: vm-build-all vm-clean-all

IMAGES := freebsd netbsd openbsd centos fedora
ifneq ($(GENISOIMAGE),)
IMAGES += ubuntu.i386 centos
ifneq ($(EFI_AARCH64),)
IMAGES += ubuntu.aarch64 centos.aarch64
endif
endif

IMAGES_DIR := $(HOME)/.cache/qemu-vm/images
IMAGE_FILES := $(patsubst %, $(IMAGES_DIR)/%.img, $(IMAGES))

.PRECIOUS: $(IMAGE_FILES)

# 'vm-help' target was historically named 'vm-test'
vm-help vm-test:
	@echo "vm-help: Test QEMU in preconfigured virtual machines"
	@echo
	@echo "  vm-build-freebsd                - Build QEMU in FreeBSD VM"
	@echo "  vm-build-netbsd                 - Build QEMU in NetBSD VM"
	@echo "  vm-build-openbsd                - Build QEMU in OpenBSD VM"
	@echo "  vm-build-fedora                 - Build QEMU in Fedora VM"
ifneq ($(GENISOIMAGE),)
	@echo "  vm-build-centos                 - Build QEMU in CentOS VM, with Docker"
	@echo "  vm-build-ubuntu.i386            - Build QEMU in ubuntu i386 VM"
ifneq ($(EFI_AARCH64),)
	@echo "  vm-build-ubuntu.aarch64         - Build QEMU in ubuntu aarch64 VM"
	@echo "  vm-build-centos.aarch64         - Build QEMU in CentOS aarch64 VM"
else
	@echo "  (to build centos/ubuntu aarch64 images use configure --efi-aarch64)"
endif
else
	@echo "  (install genisoimage to build centos/ubuntu images)"
endif
	@echo ""
	@echo "  vm-build-all                    - Build QEMU in all VMs"
	@echo "  vm-clean-all                    - Clean up VM images"
	@echo
	@echo "For trouble-shooting:"
	@echo "  vm-boot-serial-<guest>          - Boot guest, serial console on stdio"
	@echo "  vm-boot-ssh-<guest>             - Boot guest and login via ssh"
	@echo
	@echo "Special variables:"
	@echo "    BUILD_TARGET=foo		 - Override the build target"
	@echo "    TARGET_LIST=a,b,c    	 - Override target list in builds"
	@echo '    EXTRA_CONFIGURE_OPTS="..."'
	@echo "    J=[0..9]*            	 - Override the -jN parameter for make commands"
	@echo "    DEBUG=1              	 - Enable verbose output on host and interactive debugging"
	@echo "    LOG_CONSOLE=1        	 - Log console to file in: ~/.cache/qemu-vm "
	@echo "    V=1				 - Enable verbose ouput on host and guest commands"
	@echo "    QEMU_LOCAL=1                 - Use QEMU binary local to this build."
	@echo "    QEMU=/path/to/qemu		 - Change path to QEMU binary"
	@echo "    QEMU_IMG=/path/to/qemu-img	 - Change path to qemu-img tool"
ifeq ($(PYTHON_YAML),yes)
	@echo "    QEMU_CONFIG=/path/conf.yml   - Change path to VM configuration .yml file."
else
	@echo "    (install python3-yaml to enable support for yaml file to configure a VM.)"
endif
	@echo "                                   See conf_example_*.yml for file format details."

vm-build-all: $(addprefix vm-build-, $(IMAGES))

vm-clean-all:
	rm -f $(IMAGE_FILES)

$(IMAGES_DIR)/%.img:	$(SRC_PATH)/tests/vm/% \
			$(SRC_PATH)/tests/vm/basevm.py \
			$(SRC_PATH)/tests/vm/Makefile.include
	@mkdir -p $(IMAGES_DIR)
	$(call quiet-command, \
		$(PYTHON) $< \
		$(if $(V)$(DEBUG), --debug) \
		$(if $(GENISOIMAGE),--genisoimage $(GENISOIMAGE)) \
		$(if $(QEMU_LOCAL),--build-path $(BUILD_DIR)) \
		$(if $(EFI_AARCH64),--efi-aarch64 $(EFI_AARCH64)) \
		$(if $(LOG_CONSOLE),--log-console) \
		--image "$@" \
		--force \
		--build-image $@, \
		"  VM-IMAGE $*")


# Build in VM $(IMAGE)
vm-build-%: $(IMAGES_DIR)/%.img
	$(call quiet-command, \
		$(PYTHON) $(SRC_PATH)/tests/vm/$* \
		$(if $(V)$(DEBUG), --debug) \
		$(if $(DEBUG), --interactive) \
		$(if $(J),--jobs $(J)) \
		$(if $(V),--verbose) \
		$(if $(QEMU_LOCAL),--build-path $(BUILD_DIR)) \
		$(if $(EFI_AARCH64),--efi-aarch64 $(EFI_AARCH64)) \
		$(if $(LOG_CONSOLE),--log-console) \
		--image "$<" \
		$(if $(BUILD_TARGET),--build-target $(BUILD_TARGET)) \
		--snapshot \
		--build-qemu $(SRC_PATH) -- \
		$(if $(TARGET_LIST),--target-list=$(TARGET_LIST)) \
		$(if $(EXTRA_CONFIGURE_OPTS),$(EXTRA_CONFIGURE_OPTS)), \
		"  VM-BUILD $*")

vm-boot-serial-%: $(IMAGES_DIR)/%.img
	qemu-system-x86_64 -enable-kvm -m 4G -smp 2 -nographic \
		-drive if=none,id=vblk,cache=writeback,file="$<" \
		-netdev user,id=vnet \
		-device virtio-blk-pci,drive=vblk \
		-device virtio-net-pci,netdev=vnet \
	|| true

vm-boot-ssh-%: $(IMAGES_DIR)/%.img
	$(call quiet-command, \
		$(PYTHON) $(SRC_PATH)/tests/vm/$* \
		$(if $(J),--jobs $(J)) \
		$(if $(V)$(DEBUG), --debug) \
		$(if $(QEMU_LOCAL),--build-path $(BUILD_DIR)) \
		$(if $(EFI_AARCH64),--efi-aarch64 $(EFI_AARCH64)) \
		$(if $(LOG_CONSOLE),--log-console) \
		--image "$<" \
		--interactive \
		false, \
		"  VM-BOOT-SSH $*") || true
