forked from KhronosGroup/MoltenVK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
143 lines (116 loc) · 5.84 KB
/
Makefile
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
XC_PROJ := MoltenVKPackaging.xcodeproj
XC_SCHEME := MoltenVK Package
XCODEBUILD := set -o pipefail && $(shell command -v xcodebuild)
# Used to determine if xcpretty is available
XCPRETTY_PATH := $(shell command -v xcpretty 2> /dev/null)
OUTPUT_FMT_CMD =
ifdef XCPRETTY_PATH
# Pipe output to xcpretty, while preserving full log as xcodebuild.log
OUTPUT_FMT_CMD = | tee "xcodebuild.log" | xcpretty -c
else
# Use xcodebuild -quiet parameter
OUTPUT_FMT_CMD = -quiet
endif
# Collect all build settings defined on the command-line (eg: MVK_HIDE_VULKAN_SYMBOLS=1, MVK_CONFIG_LOG_LEVEL=3...)
MAKEARGS := $(strip \
$(foreach v,$(.VARIABLES),\
$(if $(filter command\ line,$(origin $(v))),\
$(v)=$(value $(v)) ,)))
# Specify individually (not as dependencies) so the sub-targets don't run in parallel
# visionos and visionossim are currently excluded from `all` because they require
# Xcode 15+ and will abort a multi-platform build on earlier Xcode versions.
.PHONY: all
all:
@$(MAKE) macos
@$(MAKE) ios
@$(MAKE) iossim
@$(MAKE) maccat
@$(MAKE) tvos
@$(MAKE) tvossim
# @$(MAKE) visionos # Requires Xcode 15+
# @$(MAKE) visionossim # Requires Xcode 15+
.PHONY: all-debug
all-debug:
@$(MAKE) macos-debug
@$(MAKE) ios-debug
@$(MAKE) iossim-debug
@$(MAKE) maccat-debug
@$(MAKE) tvos-debug
@$(MAKE) tvossim-debug
# @$(MAKE) visionos-debug # Requires Xcode 15+
# @$(MAKE) visionossim-debug # Requires Xcode 15+
.PHONY: macos
macos:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (macOS only)" -destination "generic/platform=macOS" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: macos-debug
macos-debug:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (macOS only)" -destination "generic/platform=macOS" -configuration "Debug" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: ios
ios:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=iOS" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: ios-debug
ios-debug:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=iOS" -configuration "Debug" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: iossim
iossim:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=iOS Simulator" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: iossim-debug
iossim-debug:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=iOS Simulator" -configuration "Debug" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: maccat
maccat:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=macOS,variant=Mac Catalyst" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: maccat-debug
maccat-debug:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=macOS,variant=Mac Catalyst" -configuration "Debug" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: tvos
tvos:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (tvOS only)" -destination "generic/platform=tvOS" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: tvos-debug
tvos-debug:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (tvOS only)" -destination "generic/platform=tvOS" -configuration "Debug" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: tvossim
tvossim:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (tvOS only)" -destination "generic/platform=tvOS Simulator" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: tvossim-debug
tvossim-debug:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (tvOS only)" -destination "generic/platform=tvOS Simulator" -configuration "Debug" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: visionos
visionos:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (visionOS only)" -destination "generic/platform=xrOS" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: visionos-debug
visionos-debug:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (visionOS only)" -destination "generic/platform=xrOS" -configuration "Debug" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: visionossim
visionossim:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (visionOS only)" -destination "generic/platform=xrOS Simulator" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: visionossim-debug
visionossim-debug:
$(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (visionOS only)" -destination "generic/platform=xrOS Simulator" -configuration "Debug" GCC_PREPROCESSOR_DEFINITIONS='$${inherited} $(MAKEARGS)' $(OUTPUT_FMT_CMD)
.PHONY: clean
clean:
$(XCODEBUILD) clean -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (macOS only)" -destination "generic/platform=macOS" $(OUTPUT_FMT_CMD)
rm -rf Package
# Usually requires 'sudo make install'
.PHONY: install
install:
rm -rf /Library/Frameworks/MoltenVK.framework
rm -rf /Library/Frameworks/MoltenVK.xcframework
cp -a Package/Latest/MoltenVK/MoltenVK.xcframework /Library/Frameworks/
# Deprecated target names
.PHONY: iosfat
iosfat:
@$(MAKE) ios
@$(MAKE) iossim
.PHONY: iosfat-debug
iosfat-debug:
@$(MAKE) ios-debug
@$(MAKE) iossim-debug
.PHONY: tvosfat
tvosfat:
@$(MAKE) tvos
@$(MAKE) tvossim
.PHONY: tvosfat-debug
tvosfat-debug:
@$(MAKE) tvos-debug
@$(MAKE) tvossim-debug