-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
214 lines (179 loc) · 8.69 KB
/
Copy pathMakefile
File metadata and controls
214 lines (179 loc) · 8.69 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
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# LookInsideExample build automation
SHELL := /bin/bash
.SHELLFLAGS := -o pipefail -c
# =============================================================================
# Configuration
# =============================================================================
ROOT_DIR := $(shell pwd)
PROJECT := $(ROOT_DIR)/LookInsideExample.xcodeproj
SCHEME := LookInsideExample
APP_NAME := LookInsideExample
UIKIT_SCHEME := LookInsideExampleUIKit
UIKIT_APP_NAME := LookInsideExampleUIKit
APPKIT_SCHEME := LookInsideExampleAppKit
APPKIT_APP_NAME := LookInsideExampleAppKit
CONFIGURATION := Debug
TUIST ?= tuist
DERIVED_DATA ?= /private/tmp/lookinside-example-deriveddata
BUILD_HOME = $(DERIVED_DATA)/home
XDG_CACHE_HOME = $(DERIVED_DATA)/xdg-cache
MODULE_CACHE = $(DERIVED_DATA)/ModuleCache.noindex
DEVELOPMENT_TEAM ?=
LOOKINSIDE_SERVER_PATH ?=
SIM_DESTINATION := generic/platform=iOS Simulator
DEVICE_DESTINATION := generic/platform=iOS
MAC_DESTINATION := generic/platform=macOS
SIMULATOR_NAME ?= iPhone 16
SIMULATOR_UDID = ${shell xcrun simctl list devices available | sed -nE 's/^[[:space:]]*$(SIMULATOR_NAME)( \([^)]*\))? \(([A-F0-9-]+)\).*/\2/p' | head -1}
BUNDLE_ID := app.lookinside.example
UIKIT_BUNDLE_ID := app.lookinside.example.uikit
SWIFTFORMAT_EXCLUDES := build,.build,DerivedData
XCODEBUILD := xcodebuild \
-project "$(PROJECT)" \
-configuration $(CONFIGURATION) \
-derivedDataPath "$(DERIVED_DATA)" \
-skipMacroValidation \
-skipPackagePluginValidation
# Simulator needs an ad-hoc signature ("-") to launch on iOS 14+.
# Real-device builds stay unsigned.
SIM_SIGN_FLAGS := CODE_SIGNING_ALLOWED=YES CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY=- CODE_SIGN_STYLE=Manual DEVELOPMENT_TEAM=$(DEVELOPMENT_TEAM)
DEVICE_SIGN_FLAGS := CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY=""
MAC_SIGN_FLAGS := CODE_SIGNING_ALLOWED=YES CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY=- CODE_SIGN_STYLE=Manual DEVELOPMENT_TEAM=$(DEVELOPMENT_TEAM)
.PHONY: all help \
generate \
build build-sim build-device build-mac build-uikit build-appkit build-all \
run boot install launch run-mac \
run-uikit install-uikit launch-uikit run-appkit \
format format-lint \
clean
# =============================================================================
# Meta
# =============================================================================
all: build-sim
help:
@echo "Project generation:"
@echo " generate Regenerate $(PROJECT) with Tuist"
@echo ""
@echo "Build (SwiftUI app):"
@echo " build Alias for build-sim"
@echo " build-sim Build for iOS Simulator (generic)"
@echo " build-device Build for iOS device (generic, unsigned)"
@echo " build-mac Build for Mac"
@echo ""
@echo "Build (native apps):"
@echo " build-uikit Build the pure-UIKit iOS app for the Simulator"
@echo " build-appkit Build the pure-AppKit macOS app"
@echo " build-all Build all three apps"
@echo ""
@echo "Run:"
@echo " run Boot \$$(SIMULATOR_NAME), install, and launch the SwiftUI app"
@echo " run-mac Build and launch the SwiftUI app on this Mac"
@echo " run-uikit Boot \$$(SIMULATOR_NAME), install, and launch the UIKit app"
@echo " run-appkit Build and launch the AppKit app on this Mac"
@echo " boot Boot \$$(SIMULATOR_NAME) (no-op if already booted)"
@echo " install Install the built SwiftUI app onto the booted simulator"
@echo " launch Launch the installed SwiftUI app on the booted simulator"
@echo ""
@echo "Formatting:"
@echo " format Run swiftformat (write)"
@echo " format-lint Run swiftformat in check mode"
@echo ""
@echo "Housekeeping:"
@echo " clean Remove derived data"
@echo ""
@echo "Variables:"
@echo " SIMULATOR_NAME Simulator device name (default: iPhone 16)"
@echo " SIMULATOR_UDID Simulator UDID resolved from SIMULATOR_NAME"
@echo " LOOKINSIDE_SERVER_PATH Optional local server package path for Tuist generation"
@echo " DERIVED_DATA Derived data path (default: /private/tmp/lookinside-example-deriveddata)"
generate:
TUIST_LOOKINSIDE_SERVER_PATH="$(LOOKINSIDE_SERVER_PATH)" $(TUIST) generate --no-open
build: build-sim
build-sim:
mkdir -p "$(BUILD_HOME)" "$(XDG_CACHE_HOME)" "$(MODULE_CACHE)"
HOME="$(BUILD_HOME)" XDG_CACHE_HOME="$(XDG_CACHE_HOME)" CLANG_MODULE_CACHE_PATH="$(MODULE_CACHE)" SWIFTPM_MODULECACHE_OVERRIDE="$(MODULE_CACHE)" $(XCODEBUILD) \
-scheme $(SCHEME) \
-destination "$(SIM_DESTINATION)" \
$(SIM_SIGN_FLAGS) \
build
build-device:
mkdir -p "$(BUILD_HOME)" "$(XDG_CACHE_HOME)" "$(MODULE_CACHE)"
HOME="$(BUILD_HOME)" XDG_CACHE_HOME="$(XDG_CACHE_HOME)" CLANG_MODULE_CACHE_PATH="$(MODULE_CACHE)" SWIFTPM_MODULECACHE_OVERRIDE="$(MODULE_CACHE)" $(XCODEBUILD) \
-scheme $(SCHEME) \
-destination "$(DEVICE_DESTINATION)" \
$(DEVICE_SIGN_FLAGS) \
build
build-mac:
mkdir -p "$(BUILD_HOME)" "$(XDG_CACHE_HOME)" "$(MODULE_CACHE)"
HOME="$(BUILD_HOME)" XDG_CACHE_HOME="$(XDG_CACHE_HOME)" CLANG_MODULE_CACHE_PATH="$(MODULE_CACHE)" SWIFTPM_MODULECACHE_OVERRIDE="$(MODULE_CACHE)" $(XCODEBUILD) \
-scheme $(SCHEME) \
-destination "$(MAC_DESTINATION)" \
$(MAC_SIGN_FLAGS) \
build
build-uikit:
mkdir -p "$(BUILD_HOME)" "$(XDG_CACHE_HOME)" "$(MODULE_CACHE)"
HOME="$(BUILD_HOME)" XDG_CACHE_HOME="$(XDG_CACHE_HOME)" CLANG_MODULE_CACHE_PATH="$(MODULE_CACHE)" SWIFTPM_MODULECACHE_OVERRIDE="$(MODULE_CACHE)" $(XCODEBUILD) \
-scheme $(UIKIT_SCHEME) \
-destination "$(SIM_DESTINATION)" \
$(SIM_SIGN_FLAGS) \
build
build-appkit:
mkdir -p "$(BUILD_HOME)" "$(XDG_CACHE_HOME)" "$(MODULE_CACHE)"
HOME="$(BUILD_HOME)" XDG_CACHE_HOME="$(XDG_CACHE_HOME)" CLANG_MODULE_CACHE_PATH="$(MODULE_CACHE)" SWIFTPM_MODULECACHE_OVERRIDE="$(MODULE_CACHE)" $(XCODEBUILD) \
-scheme $(APPKIT_SCHEME) \
-destination "$(MAC_DESTINATION)" \
$(MAC_SIGN_FLAGS) \
build
build-all: build-sim build-uikit build-appkit
# =============================================================================
# Run on simulator
# =============================================================================
boot:
@if [ -z "$(SIMULATOR_UDID)" ]; then echo "Simulator not found: $(SIMULATOR_NAME)" >&2; exit 1; fi
@xcrun simctl boot "$(SIMULATOR_UDID)" 2>/dev/null || true
open -a Simulator
install: build-sim boot
@APP_PATH=$$(find "$(DERIVED_DATA)/Build/Products" -name "$(APP_NAME).app" -type d -path "*Simulator*" | head -1); \
if [ -z "$$APP_PATH" ]; then echo "App bundle not found under $(DERIVED_DATA)" >&2; exit 1; fi; \
echo "Installing $$APP_PATH"; \
xcrun simctl install "$(SIMULATOR_UDID)" "$$APP_PATH"
launch:
@if [ -z "$(SIMULATOR_UDID)" ]; then echo "Simulator not found: $(SIMULATOR_NAME)" >&2; exit 1; fi
xcrun simctl launch "$(SIMULATOR_UDID)" "$(BUNDLE_ID)"
run: install launch
run-mac: build-mac
@APP_PATH=$$(find "$(DERIVED_DATA)/Build/Products" -name "$(APP_NAME).app" -type d -path "*Debug*" | grep -v -i "iphone\|simulator" | head -1); \
if [ -z "$$APP_PATH" ]; then echo "macOS app bundle not found under $(DERIVED_DATA)" >&2; exit 1; fi; \
echo "Launching $$APP_PATH"; \
open "$$APP_PATH"
install-uikit: build-uikit boot
@APP_PATH=$$(find "$(DERIVED_DATA)/Build/Products" -name "$(UIKIT_APP_NAME).app" -type d -path "*Simulator*" | head -1); \
if [ -z "$$APP_PATH" ]; then echo "App bundle not found under $(DERIVED_DATA)" >&2; exit 1; fi; \
echo "Installing $$APP_PATH"; \
xcrun simctl install "$(SIMULATOR_UDID)" "$$APP_PATH"
launch-uikit:
@if [ -z "$(SIMULATOR_UDID)" ]; then echo "Simulator not found: $(SIMULATOR_NAME)" >&2; exit 1; fi
xcrun simctl launch "$(SIMULATOR_UDID)" "$(UIKIT_BUNDLE_ID)"
run-uikit: install-uikit launch-uikit
run-appkit: build-appkit
@APP_PATH=$$(find "$(DERIVED_DATA)/Build/Products" -name "$(APPKIT_APP_NAME).app" -type d -path "*Debug*" | grep -v -i "iphone\|simulator" | head -1); \
if [ -z "$$APP_PATH" ]; then echo "macOS app bundle not found under $(DERIVED_DATA)" >&2; exit 1; fi; \
echo "Launching $$APP_PATH"; \
open "$$APP_PATH"
# =============================================================================
# Formatting
# =============================================================================
format:
swiftformat . \
--swift-version 5.10 \
--exclude $(SWIFTFORMAT_EXCLUDES)
format-lint:
swiftformat . \
--swift-version 5.10 \
--exclude $(SWIFTFORMAT_EXCLUDES) \
--lint
# =============================================================================
# Housekeeping
# =============================================================================
clean:
rm -rf $(DERIVED_DATA)