1- .PHONY : lint format
1+ # Copyright (C) 2025 Tommy van der Vorst
2+ #
3+ # This Source Code Form is subject to the terms of the Mozilla Public
4+ # License, v. 2.0. If a copy of the MPL was not distributed with this file,
5+ # You can obtain one at https://mozilla.org/MPL/2.0/.
6+ .PHONY : lint format macos ios clean build cleanup
7+
8+ build : macos ios
29
310format : Sushitrain/* .swift
411 swift-format format -r -i .
512
613lint : Sushitrain/* .swift
7- swift-format lint -r .
14+ swift-format lint -r .
15+
16+ BUILD_DIR =$(shell pwd) /Build
17+ KEYCHAIN_PATH =$(BUILD_DIR ) /keychain.db
18+ CODESIGN_IDENTITY ="Apple Development: Tommy van der Vorst (NG3J47D2S7)"
19+ KEYCHAIN_PASSWORD ="not so secret"
20+
21+ # Apple developer team ID (must match certificate and provisioning profile)
22+ TEAM_ID =2N89DJPQ2P
23+
24+ # UUID of Assets/synctrain-ios-ci.mobileprovision
25+ PROVISIONING_PROFILE_UUID_IOS =$(shell security cms -D -i ./Assets/synctrain-ios-ci.mobileprovision | plutil -extract UUID raw -)
26+ PROVISIONING_PROFILE_PATH_IOS =~/Library/MobileDevice/Provisioning\ Profiles/$(PROVISIONING_PROFILE_UUID_IOS ) .mobileprovision
27+ PROVISIONING_PROFILE_UUID_MACOS =$(shell security cms -D -i ./Assets/synctrain-macos-ci.provisionprofile | plutil -extract UUID raw -)
28+ PROVISIONING_PROFILE_PATH_MACOS =~/Library/MobileDevice/Provisioning\ Profiles/$(PROVISIONING_PROFILE_UUID_MACOS ) .provisionprofile
29+
30+ clean :
31+ rm -rf $(BUILD_DIR )
32+ cd SushitrainCore && make clean
33+
34+ core :
35+ cd SushitrainCore && make deps
36+ cd SushitrainCore && make
37+
38+ provisioning :
39+ ifndef P12_PASSWORD
40+ echo You need to set 'P12_PASSWORD' to the password of the .p12 certificate.
41+ exit 1
42+ endif
43+
44+ echo $(PROVISIONING_PROFILE_UUID_IOS) $(PROVISIONING_PROFILE_PATH_IOS)
45+ echo $(PROVISIONING_PROFILE_UUID_MACOS) $(PROVISIONING_PROFILE_PATH_MACOS)
46+ mkdir -p $(BUILD_DIR)
47+
48+ # Set up a keychain
49+ security create-keychain -p $(KEYCHAIN_PASSWORD) $(KEYCHAIN_PATH)
50+ security set-keychain-settings -lut 21600 $(KEYCHAIN_PATH)
51+ security unlock-keychain -p $(KEYCHAIN_PASSWORD) $(KEYCHAIN_PATH)
52+
53+ # Import WWDR root certificate
54+ # See https://www.apple.com/certificateauthority/
55+ security import ./Assets/AppleWWDRCAG3.cer -A -t cert -k $(KEYCHAIN_PATH)
56+
57+ # Import developer certificate
58+ security import ./Assets/developer-certificate.p12 -P $(P12_PASSWORD) -A -t cert -f pkcs12 -k $(KEYCHAIN_PATH)
59+ security list-keychain -d user -s $(KEYCHAIN_PATH)
60+
61+ # Import provisioning profile
62+ mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
63+ cp ./Assets/synctrain-ios-ci.mobileprovision $(PROVISIONING_PROFILE_PATH_IOS)
64+ cp ./Assets/synctrain-macos-ci.provisionprofile $(PROVISIONING_PROFILE_PATH_MACOS)
65+ ls -la ~/Library/MobileDevice/Provisioning\ Profiles
66+
67+ mac : core provisioning
68+ # Build .app
69+ xcodebuild -scheme " Synctrain release" \
70+ -archivePath " $( BUILD_DIR) /synctrain-macos.xcarchive" \
71+ -sdk macosx \
72+ -configuration Release \
73+ -destination generic/platform=macOS \
74+ CODE_SIGN_IDENTITY=$(CODESIGN_IDENTITY ) \
75+ OTHER_CODE_SIGN_FLAGS=" --keychain $( KEYCHAIN_PATH) " \
76+ PROVISIONING_PROFILE_SPECIFIER=$(PROVISIONING_PROFILE_UUID_MACOS ) \
77+ DEVELOPMENT_TEAM=$(TEAM_ID ) \
78+ CODE_SIGN_STYLE=" Manual" \
79+ clean archive
80+
81+ ios : core provisioning
82+ # Build archive
83+ xcodebuild -scheme " Synctrain release" \
84+ -archivePath " $( BUILD_DIR) /synctrain-ios.xcarchive" \
85+ -sdk iphoneos \
86+ -configuration Release \
87+ -destination generic/platform=iOS \
88+ CODE_SIGN_IDENTITY=$(CODESIGN_IDENTITY ) \
89+ OTHER_CODE_SIGN_FLAGS=" --keychain $( KEYCHAIN_PATH) " \
90+ PROVISIONING_PROFILE_SPECIFIER=$(PROVISIONING_PROFILE_UUID_IOS ) \
91+ DEVELOPMENT_TEAM=$(TEAM_ID ) \
92+ CODE_SIGN_STYLE=" Manual" \
93+ clean archive
94+
95+ cleanup :
96+ # Clean up
97+ -rm $(PROVISIONING_PROFILE_PATH_IOS )
98+ security delete-keychain $(KEYCHAIN_PATH )
0 commit comments