-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
165 lines (137 loc) · 6.37 KB
/
Makefile
File metadata and controls
165 lines (137 loc) · 6.37 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
# 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
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
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 \
run boot install launch run-mac \
format format-lint \
clean
# =============================================================================
# Meta
# =============================================================================
all: build-sim
help:
@echo "Project generation:"
@echo " generate Regenerate $(PROJECT) with Tuist"
@echo ""
@echo "Build:"
@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 (native AppKit)"
@echo ""
@echo "Run:"
@echo " run Boot \$$(SIMULATOR_NAME), install, and launch the app"
@echo " run-mac Build and launch the native macOS app"
@echo " boot Boot \$$(SIMULATOR_NAME) (no-op if already booted)"
@echo " install Install the built app onto the booted simulator"
@echo " launch Launch the installed 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
# =============================================================================
# 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"
# =============================================================================
# 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)