-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMakefile
More file actions
57 lines (39 loc) · 2.17 KB
/
Copy pathMakefile
File metadata and controls
57 lines (39 loc) · 2.17 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
# SpiceMac — thin task runner over scripts/. Run `make` (or `make help`) for the list.
# Sets DEVELOPER_DIR so you never have to remember the prefix. The scripts in
# scripts/ stay the source of truth.
DEVELOPER_DIR ?= /Applications/Xcode.app/Contents/Developer
export DEVELOPER_DIR
.DEFAULT_GOAL := help
.PHONY: help doctor setup build run test all openssl icon debug root release check-version clean distclean
help: ## Show this help
@awk 'BEGIN{FS=":.*## "} /^[a-zA-Z0-9_-]+:.*## /{printf " \033[36m%-14s\033[0m %s\n",$$1,$$2}' $(MAKEFILE_LIST)
doctor: ## Check the build environment (Xcode, Metal toolchain, frameworks)
@./scripts/doctor.sh
setup: ## Stage the native SPICE frameworks (pinned, checksummed sysroot)
@./scripts/fetch-sysroot.sh
build: ## Build and assemble build/SpiceMac.app
@./scripts/build-app.sh
run: ## Open build/SpiceMac.app
@open build/SpiceMac.app
test: ## Run the dependency-free check runners (vvcheck + inputcheck + scalecheck)
@( cd Packages/VVConfig && swift run vvcheck )
@( cd Packages/SpiceInputMap && swift run inputcheck )
@( cd Packages/DisplayScale && swift run scalecheck )
all: doctor setup build ## Doctor, fetch the sysroot, and build (first-time setup)
openssl: ## Upgrade the bundled OpenSSL (only needed on a raw UTM sysroot)
@./scripts/upgrade-openssl.sh
icon: ## Regenerate Resources/AppIcon.icns from design/icon/source.png
@./scripts/make-icon.sh
debug: ## Launch with verbose SPICE/CocoaSpice logging: make debug VV=conn.vv
@./scripts/debug-run.sh $(VV)
root: ## Launch as root for USB capture (kernel-claimed devices): make root VV=conn.vv
@./scripts/run-as-root.sh $(VV)
release: ## Cut a release (prompts before publishing): make release VERSION=0.1.7
@test -n "$(VERSION)" || { echo "usage: make release VERSION=X.Y.Z"; exit 1; }
@./scripts/release.sh $(VERSION)
check-version: ## Assert Info.plist / CHANGELOG / tag versions agree
@./scripts/check-version.sh
clean: ## Remove build output (build/)
@rm -rf build/ && echo "removed build/"
distclean: clean ## Also remove the staged native frameworks (Frameworks/)
@find Frameworks -mindepth 1 ! -name '.gitkeep' -maxdepth 1 -exec rm -rf {} + && echo "removed Frameworks/*"