Provides explicit makefile targets for files (#167)

fixes #165

`init` depends on `vminitd/bin/vminitd`, `vminitd/bin/vmexec`, and
`bin/cctl`
`integration` depends on `bin/containerization-integration`
`bin/*` get generated via `make containerization`
This commit is contained in:
Mike Drob
2025-06-25 13:53:35 -07:00
committed by GitHub
parent 5559dd5a3d
commit f9198d6ff7
2 changed files with 36 additions and 20 deletions
+24 -14
View File
@@ -40,33 +40,39 @@ release: BUILD_CONFIGURATION = release
release: all
.PHONY: containerization
containerization:
containerization: bin/cctl bin/containerization-integration
.PHONY: swift-build
swift-build:
@echo Building containerization binaries...
@mkdir -p bin
@$(SWIFT) build -c $(BUILD_CONFIGURATION)
@echo Copying containerization binaries...
@install $(BUILD_BIN_DIR)/cctl ./bin/
@install $(BUILD_BIN_DIR)/containerization-integration ./bin/
$(BUILD_BIN_DIR)/cctl $(BUILD_BIN_DIR)/containerization-integration:
@"$(MAKE)" swift-build
@echo Signing containerization binaries...
@codesign --force --sign - --timestamp=none --entitlements=signing/vz.entitlements bin/cctl
@codesign --force --sign - --timestamp=none --entitlements=signing/vz.entitlements bin/containerization-integration
bin/%: $(BUILD_BIN_DIR)/%
@mkdir -p bin/
@install $< bin/
@codesign --force --sign - --timestamp=none --entitlements=signing/vz.entitlements $@
init := bin/init.rootfs.tar.gz
.PHONY: init
init: vminitd
init: $(init)
$(init): vminitd/bin/vminitd vminitd/bin/vmexec bin/cctl
@echo Creating init.ext4...
@rm -f bin/init.rootfs.tar.gz bin/init.block
@./bin/cctl rootfs create --vminitd vminitd/bin/vminitd --labels org.opencontainers.image.source=https://github.com/apple/containerization --vmexec vminitd/bin/vmexec bin/init.rootfs.tar.gz vminit:latest
@rm -f $(init) bin/init.block
@./bin/cctl rootfs create --vminitd vminitd/bin/vminitd --labels org.opencontainers.image.source=https://github.com/apple/containerization --vmexec vminitd/bin/vmexec $(init) vminit:latest
.PHONY: cross-prep
cross-prep:
@"$(MAKE)" -C vminitd cross-prep
.PHONY: vminitd
vminitd:
@mkdir -p ./bin
@"$(MAKE)" -C vminitd BUILD_CONFIGURATION=$(BUILD_CONFIGURATION)
vminitd: vminitd/bin/vminitd vminitd/bin/vmexec
vminitd/bin/%:
@"$(MAKE)" -C vminitd BUILD_CONFIGURATION=$(BUILD_CONFIGURATION) bin/$*
.PHONY: update-libarchive-source
update-libarchive-source:
@@ -88,6 +94,10 @@ ifeq (,$(wildcard bin/vmlinux))
@echo No bin/vmlinux kernel found. See fetch-default-kernel target.
@exit 1
endif
@"$(MAKE)" integration-kernel-checked
.PHONY: integration-kernel-checked
integration-kernel-checked: $(init) bin/containerization-integration
@echo Running the integration tests...
@./bin/containerization-integration --bootlog ./bin/boot.log
+12 -6
View File
@@ -31,14 +31,20 @@ MACOS_RELEASE_TYPE := $(shell sw_vers | grep ReleaseType)
.DEFAULT_GOAL := all
.PHONY: all
all:
all: bin/vminitd bin/vmexec
.PHONY: swift-build
swift-build:
@echo Building vminitd and vmexec...
@mkdir -p ./bin/
@rm -f ./bin/vminitd
@rm -f ./bin/vmexec
@swift build -c $(BUILD_CONFIGURATION) $(SWIFT_CONFIGURATION)
@install $(VMINITD_BIN_PATH)/vminitd ./bin/vminitd
@install $(VMINITD_BIN_PATH)/vmexec ./bin/vmexec
$(VMINITD_BIN_PATH)/vminitd $(VMINITD_BIN_PATH)/vmexec:
@$(MAKE) swift-build
bin/%: $(VMINITD_BIN_PATH)/%
@mkdir -p bin/
@rm -f $@
@install $< bin/
.PHONY: cross-prep
cross-prep: linux-sdk macos-sdk