Skip to content

Commit f9198d6

Browse files
authored
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`
1 parent 5559dd5 commit f9198d6

File tree

2 files changed

+36
-20
lines changed

2 files changed

+36
-20
lines changed

Makefile

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,33 +40,39 @@ release: BUILD_CONFIGURATION = release
4040
release: all
4141

4242
.PHONY: containerization
43-
containerization:
43+
containerization: bin/cctl bin/containerization-integration
44+
45+
.PHONY: swift-build
46+
swift-build:
4447
@echo Building containerization binaries...
45-
@mkdir -p bin
4648
@$(SWIFT) build -c $(BUILD_CONFIGURATION)
4749

48-
@echo Copying containerization binaries...
49-
@install $(BUILD_BIN_DIR)/cctl ./bin/
50-
@install $(BUILD_BIN_DIR)/containerization-integration ./bin/
50+
$(BUILD_BIN_DIR)/cctl $(BUILD_BIN_DIR)/containerization-integration:
51+
@"$(MAKE)" swift-build
5152

52-
@echo Signing containerization binaries...
53-
@codesign --force --sign - --timestamp=none --entitlements=signing/vz.entitlements bin/cctl
54-
@codesign --force --sign - --timestamp=none --entitlements=signing/vz.entitlements bin/containerization-integration
53+
bin/%: $(BUILD_BIN_DIR)/%
54+
@mkdir -p bin/
55+
@install $< bin/
56+
@codesign --force --sign - --timestamp=none --entitlements=signing/vz.entitlements $@
5557

58+
init := bin/init.rootfs.tar.gz
5659
.PHONY: init
57-
init: vminitd
60+
init: $(init)
61+
62+
$(init): vminitd/bin/vminitd vminitd/bin/vmexec bin/cctl
5863
@echo Creating init.ext4...
59-
@rm -f bin/init.rootfs.tar.gz bin/init.block
60-
@./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
64+
@rm -f $(init) bin/init.block
65+
@./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
6166

6267
.PHONY: cross-prep
6368
cross-prep:
6469
@"$(MAKE)" -C vminitd cross-prep
6570

6671
.PHONY: vminitd
67-
vminitd:
68-
@mkdir -p ./bin
69-
@"$(MAKE)" -C vminitd BUILD_CONFIGURATION=$(BUILD_CONFIGURATION)
72+
vminitd: vminitd/bin/vminitd vminitd/bin/vmexec
73+
74+
vminitd/bin/%:
75+
@"$(MAKE)" -C vminitd BUILD_CONFIGURATION=$(BUILD_CONFIGURATION) bin/$*
7076

7177
.PHONY: update-libarchive-source
7278
update-libarchive-source:
@@ -88,6 +94,10 @@ ifeq (,$(wildcard bin/vmlinux))
8894
@echo No bin/vmlinux kernel found. See fetch-default-kernel target.
8995
@exit 1
9096
endif
97+
@"$(MAKE)" integration-kernel-checked
98+
99+
.PHONY: integration-kernel-checked
100+
integration-kernel-checked: $(init) bin/containerization-integration
91101
@echo Running the integration tests...
92102
@./bin/containerization-integration --bootlog ./bin/boot.log
93103

vminitd/Makefile

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,20 @@ MACOS_RELEASE_TYPE := $(shell sw_vers | grep ReleaseType)
3131
.DEFAULT_GOAL := all
3232

3333
.PHONY: all
34-
all:
34+
all: bin/vminitd bin/vmexec
35+
36+
.PHONY: swift-build
37+
swift-build:
3538
@echo Building vminitd and vmexec...
36-
@mkdir -p ./bin/
37-
@rm -f ./bin/vminitd
38-
@rm -f ./bin/vmexec
3939
@swift build -c $(BUILD_CONFIGURATION) $(SWIFT_CONFIGURATION)
40-
@install $(VMINITD_BIN_PATH)/vminitd ./bin/vminitd
41-
@install $(VMINITD_BIN_PATH)/vmexec ./bin/vmexec
40+
41+
$(VMINITD_BIN_PATH)/vminitd $(VMINITD_BIN_PATH)/vmexec:
42+
@$(MAKE) swift-build
43+
44+
bin/%: $(VMINITD_BIN_PATH)/%
45+
@mkdir -p bin/
46+
@rm -f $@
47+
@install $< bin/
4248

4349
.PHONY: cross-prep
4450
cross-prep: linux-sdk macos-sdk

0 commit comments

Comments
 (0)