-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
65 lines (53 loc) · 2.36 KB
/
Makefile
File metadata and controls
65 lines (53 loc) · 2.36 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
SWIFT ?= swift
XCODEBUILD ?= xcodebuild
OPENCLI_VAR ?= /Volumes/Z1/var
OPENCLI_TMP ?= /Volumes/Z1/tmp
OPENCLI_HOME ?= $(OPENCLI_VAR)/home
OPENCLI_CACHE ?= $(OPENCLI_VAR)/cache
OPENCLI_MODULE_CACHE ?= $(OPENCLI_VAR)/clang-module-cache
OPENCLI_SCRATCH ?= $(OPENCLI_VAR)/swift-scratch
XCODE_DERIVED_DATA ?= $(OPENCLI_VAR)/xcode-deriveddata/opencli
XCODE_CONFIGURATION ?= Debug
XCODE_SCHEME ?= opencli
XCODE_DESTINATION ?= platform=macOS
OPENCLI_XCODE_BIN ?= $(XCODE_DERIVED_DATA)/Build/Products/$(XCODE_CONFIGURATION)/opencli
OPENCLI_XCODE_CMLX_BUNDLE ?= $(XCODE_DERIVED_DATA)/Build/Products/$(XCODE_CONFIGURATION)/mlx-swift_Cmlx.bundle
SWIFT_ENV = \
HOME=$(OPENCLI_HOME) \
TMPDIR=$(OPENCLI_TMP) \
TMP=$(OPENCLI_TMP) \
TEMP=$(OPENCLI_TMP) \
XDG_CACHE_HOME=$(OPENCLI_CACHE) \
SWIFTPM_MODULECACHE_OVERRIDE=$(OPENCLI_MODULE_CACHE) \
CLANG_MODULE_CACHE_PATH=$(OPENCLI_MODULE_CACHE)
.PHONY: help prepare-env build test run describe clean xcode-build xcode-run xcode-bin
help:
@echo "Targets:"
@echo " make prepare-env Create temp/cache directories under /Volumes/Z1"
@echo " make build Build opencli"
@echo " make test Run all tests"
@echo " make run Run opencli --help"
@echo " make xcode-build Build opencli via xcodebuild (includes MLX Metal shaders)"
@echo " make xcode-run Run xcodebuild output opencli --help"
@echo " make xcode-bin Print xcodebuild opencli binary and Cmlx bundle paths"
@echo " make describe Show package graph"
@echo " make clean Remove build artifacts"
prepare-env:
mkdir -p "$(OPENCLI_VAR)" "$(OPENCLI_TMP)" "$(OPENCLI_HOME)" "$(OPENCLI_CACHE)" "$(OPENCLI_MODULE_CACHE)" "$(OPENCLI_SCRATCH)"
build: prepare-env
$(SWIFT_ENV) $(SWIFT) build --scratch-path "$(OPENCLI_SCRATCH)" --product opencli
test: prepare-env
$(SWIFT_ENV) $(SWIFT) test --scratch-path "$(OPENCLI_SCRATCH)"
run: prepare-env
$(SWIFT_ENV) $(SWIFT) run --scratch-path "$(OPENCLI_SCRATCH)" opencli --help
xcode-build: prepare-env
$(XCODEBUILD) -scheme "$(XCODE_SCHEME)" -destination "$(XCODE_DESTINATION)" -configuration "$(XCODE_CONFIGURATION)" -derivedDataPath "$(XCODE_DERIVED_DATA)" build
xcode-run: xcode-build
"$(OPENCLI_XCODE_BIN)" --help
xcode-bin:
@echo "opencli_bin=$(OPENCLI_XCODE_BIN)"
@echo "cmlx_bundle=$(OPENCLI_XCODE_CMLX_BUNDLE)"
describe: prepare-env
$(SWIFT_ENV) $(SWIFT) package describe
clean:
$(SWIFT_ENV) $(SWIFT) package clean