-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
121 lines (104 loc) · 4.74 KB
/
Copy pathMakefile
File metadata and controls
121 lines (104 loc) · 4.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
OUTPUT_DIR ?= $(CURDIR)/output
CONFIG ?= $(CURDIR)/config/qemu.toml
MNU_DIR ?= $(abspath $(CURDIR)/../mnu)
MOCHIOS_SYSTEM_DIR ?= $(abspath $(CURDIR)/../boot)
IMAGE ?= $(OUTPUT_DIR)/mochiOS.img
PXE_DIR ?= $(OUTPUT_DIR)/pxe
UEFI_NET_DIR ?= $(OUTPUT_DIR)/uefi-net
MDRIVER_KERNEL ?=
MDRIVER_INITRAMFS ?=
MOCHIOS_INITFS ?=
MOCHIOS_ROOTFS ?=
CARGO ?= $(shell command -v cargo 2>/dev/null)
RUSTC ?= $(shell command -v rustc 2>/dev/null)
MNU_ABI_PATCH = $(if $(wildcard $(MNU_DIR)/crates/abi/Cargo.toml),--config 'patch."https://github.com/mochiOS/mnu".mnu-abi.path="$(MNU_DIR)/crates/abi"')
MBOOT_INPUTS := $(shell find $(CURDIR)/src $(CURDIR)/scripts -type f -print 2>/dev/null) \
$(CURDIR)/Cargo.toml $(CURDIR)/Cargo.lock
MNU_INPUTS := $(shell find $(MNU_DIR)/src $(MNU_DIR)/crates/abi/src \
-type f -print 2>/dev/null) \
$(wildcard $(MNU_DIR)/Cargo.toml $(MNU_DIR)/crates/abi/Cargo.toml)
MOCHIOS_SYSTEM_INPUTS := $(shell find $(MOCHIOS_SYSTEM_DIR)/src $(MOCHIOS_SYSTEM_DIR)/crates \
-type f -print 2>/dev/null) \
$(wildcard $(MOCHIOS_SYSTEM_DIR)/Cargo.toml $(MOCHIOS_SYSTEM_DIR)/Cargo.lock)
IMAGE_INPUTS := $(MBOOT_INPUTS) $(MNU_INPUTS) $(MOCHIOS_SYSTEM_INPUTS) $(CONFIG) \
$(wildcard $(MDRIVER_KERNEL) $(MDRIVER_INITRAMFS) $(MOCHIOS_INITFS) $(MOCHIOS_ROOTFS))
.PHONY: all build clean device-io-test mdriver-test help image image-test qemu-test setup test
.PHONY: hv-build hv-device-io-test hv-mdriver-test hv-image hv-image-test hv-qemu-test hv-test
all: image
SETUP_STAMP := $(CURDIR)/mdriver/.cache/setup-complete
$(SETUP_STAMP): setup.sh mdriver/Makefile mdriver/configs/mdriver_x86_64_defconfig \
mdriver/board/mdriver/linux.config
@MNU_DIR="$(MNU_DIR)" MBOOT_CONFIG="$(CONFIG)" ./setup.sh
setup:
@MNU_DIR="$(MNU_DIR)" MBOOT_CONFIG="$(CONFIG)" ./setup.sh
build: image
test:
@test -n "$(CARGO)" || { echo 'cargo was not found' >&2; exit 1; }
$(CARGO) test --package mboot --lib $(MNU_ABI_PATCH)
image: $(IMAGE)
$(IMAGE): $(SETUP_STAMP) $(IMAGE_INPUTS)
@test -f "$(MNU_DIR)/Cargo.toml" || { \
echo 'mnu repository was not found; set MNU_DIR=/path/to/mnu' >&2; exit 1; \
}
@test -f "$(MOCHIOS_SYSTEM_DIR)/Cargo.toml" || { \
echo 'mochiOS system repository was not found; set MOCHIOS_SYSTEM_DIR=/path/to/mochiOS' >&2; exit 1; \
}
MBOOT_HOST_CARGO="$(CARGO)" \
MBOOT_OUTPUT_DIR="$(OUTPUT_DIR)" \
MBOOT_MDRIVER_KERNEL="$(MDRIVER_KERNEL)" \
MBOOT_MDRIVER_INITRAMFS="$(MDRIVER_INITRAMFS)" \
MBOOT_MOCHIOS_INITFS="$(MOCHIOS_INITFS)" \
MBOOT_MOCHIOS_ROOTFS="$(MOCHIOS_ROOTFS)" \
scripts/build-image.pl \
--config "$(CONFIG)" \
--mnu-dir "$(MNU_DIR)" \
--system-dir "$(MOCHIOS_SYSTEM_DIR)" \
--output "$(IMAGE)" \
--pxe-output "$(PXE_DIR)" \
--uefi-net-output "$(UEFI_NET_DIR)"
image-test: image
HV_CONFIG="$(CONFIG)" HV_DISK_IMAGE="$(IMAGE)" scripts/test-image.sh
device-io-test:
MBOOT_HOST_CARGO="$(CARGO)" MBOOT_HOST_RUSTC="$(RUSTC)" \
MNU_DIR="$(MNU_DIR)" scripts/test-device-io.sh
mdriver-test:
@test -n "$(MDRIVER_KERNEL)" || { echo 'set MDRIVER_KERNEL=/path/to/vmlinux' >&2; exit 1; }
@test -n "$(MDRIVER_INITRAMFS)" || { echo 'set MDRIVER_INITRAMFS=/path/to/initramfs.cpio' >&2; exit 1; }
$(MAKE) image \
CONFIG="$(CURDIR)/config/qemu-mdriver.toml" \
IMAGE="$(OUTPUT_DIR)/mdriver.img" \
MDRIVER_KERNEL="$(MDRIVER_KERNEL)" \
MDRIVER_INITRAMFS="$(MDRIVER_INITRAMFS)"
HV_DISK_IMAGE="$(OUTPUT_DIR)/mdriver.img" scripts/test-mdriver.sh
MDRIVER_STORAGE_CORRUPT=primary \
HV_DISK_IMAGE="$(OUTPUT_DIR)/mdriver.img" scripts/test-mdriver.sh
$(MAKE) image \
CONFIG="$(CURDIR)/config/qemu-mdriver-inspection.toml" \
IMAGE="$(OUTPUT_DIR)/mdriver-inspection.img" \
MDRIVER_KERNEL="$(MDRIVER_KERNEL)" \
MDRIVER_INITRAMFS="$(MDRIVER_INITRAMFS)"
MDRIVER_STORAGE_INSPECT=1 \
HV_DISK_IMAGE="$(OUTPUT_DIR)/mdriver-inspection.img" scripts/test-mdriver.sh
qemu-test:
$(MAKE) image CONFIG="$(CURDIR)/config/qemu.toml" IMAGE="$(OUTPUT_DIR)/qemu.img"
RING_BOOTSTRAP_DOMAIN_ELF="$(MOCHIOS_SYSTEM_DIR)/target/x86_64-unknown-none/release/ring-bootstrap" \
MBOOT_LAUNCH_MANIFEST="$(OUTPUT_DIR)/launch.manifest" scripts/test-qemu.sh
clean:
rm -rf "$(OUTPUT_DIR)"
rm -f "$(SETUP_STAMP)"
# Compatibility aliases for callers that used the temporary hv-* target names.
hv-build: build
hv-test: test
hv-image: image
hv-image-test: image-test
hv-device-io-test: device-io-test
hv-mdriver-test: mdriver-test
hv-qemu-test: qemu-test
help:
@echo 'mBoot targets:'
@echo ' make image Build the bootable Type-1 mBoot image'
@echo ' make test Run hypervisor unit tests'
@echo ' make image-test Build and boot the configured image with QEMU'
@echo ' make qemu-test Test scheduling and Domain recovery with QEMU'
@echo ' make device-io-test Test PCI, DMA, IOMMU, and interrupt routing'
@echo ' make mdriver-test Boot externally supplied mDriver artifacts'