diff --git a/.github/workflows/build-ipa.yml b/.github/workflows/build-ipa.yml index 6e27bbb12..014cf8178 100644 --- a/.github/workflows/build-ipa.yml +++ b/.github/workflows/build-ipa.yml @@ -63,11 +63,12 @@ jobs: run: | brew tap FelixHerrmann/tap brew trust FelixHerrmann/tap - brew install xcodegen swiftgen swift-package-list + brew install make xcodegen swiftgen swift-package-list + echo "$(brew --prefix make)/libexec/gnubin" >> "$GITHUB_PATH" - name: Generate Xcode project if: steps.version_check.outputs.should_build == 'true' || github.event_name == 'workflow_dispatch' - run: xcodegen generate + run: make generate - name: Update acknowledgements if: steps.version_check.outputs.should_build == 'true' || github.event_name == 'workflow_dispatch' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f5396e673..356d95835 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,11 +41,13 @@ jobs: - name: Install dependencies run: | + brew install make + echo "$(brew --prefix make)/libexec/gnubin" >> "$GITHUB_PATH" command -v xcodegen >/dev/null 2>&1 || brew install xcodegen command -v swiftgen >/dev/null 2>&1 || brew install swiftgen - name: Generate Xcode project - run: xcodegen generate + run: make generate - name: Cache Xcode build uses: irgaly/xcode-cache@v1 diff --git a/.github/workflows/testflight.yml b/.github/workflows/testflight.yml index f3742efc3..d836bee5f 100644 --- a/.github/workflows/testflight.yml +++ b/.github/workflows/testflight.yml @@ -31,7 +31,8 @@ jobs: run: | brew tap FelixHerrmann/tap brew trust FelixHerrmann/tap - brew install xcodegen swiftgen swift-package-list + brew install make xcodegen swiftgen swift-package-list + echo "$(brew --prefix make)/libexec/gnubin" >> "$GITHUB_PATH" gem install fastlane -v 2.236.1 - name: Setup SSH for Match diff --git a/.gitignore b/.gitignore index 28657acec..a30c0946f 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ xcuserdata/ ## Xcodegen *.xcodeproj +dev.yml ## Obj-C/Swift specific *.hmap diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b6364b72d..fa6042b4b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -102,7 +102,7 @@ It's usually easier to simply create a feature request GitHub issue with your id 1. **Clone the repository**. 2. **Generate the Xcode project**: ```bash - xcodegen generate + make generate # creates a gitignored dev.yml; set your Apple team ID there for local signing ``` The project is generated by XcodeGen from `project.yml`; never edit `MC1.xcodeproj` directly, as it is overwritten on the next generate. Make project configuration changes in `project.yml`. 3. **Open `MC1.xcodeproj`**. diff --git a/Makefile b/Makefile index 9d2d7e690..8a420994c 100644 --- a/Makefile +++ b/Makefile @@ -72,7 +72,18 @@ help: ## List available targets @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) \ | awk 'BEGIN {FS = ":.*?## "}; {printf " %-14s %s\n", $$1, $$2}' -generate: ## Regenerate MC1.xcodeproj from project.yml (xcodegen) +define DEV_YML_STUB +settings: + base: + DEVELOPMENT_TEAM: "" +endef +export DEV_YML_STUB + +dev.yml: + @echo "dev.yml not found, creating empty stub (set DEVELOPMENT_TEAM for local signing)" + @echo "$$DEV_YML_STUB" > dev.yml + +generate: dev.yml ## Regenerate MC1.xcodeproj from project.yml (xcodegen) xcodegen generate test: test-app test-store ## Run everything: full app suite (iOS 26) + StoreKit suites (iOS 18) diff --git a/README.md b/README.md index 71d50c157..b652edc6b 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ Download from the App Store or sideload using unsigned IPA files under [Releases ## Getting Started 1. Install [XcodeGen](https://github.com/yonaskolb/XcodeGen). -2. Run `xcodegen generate`. +2. Run `make generate` (creates a gitignored `dev.yml` — set your Apple team ID there for local signing). 3. Open `MC1.xcodeproj`. For more details, see the [Development Guide](docs/Development.md). diff --git a/docs/Development.md b/docs/Development.md index 08c3250cb..9df8ca5e6 100644 --- a/docs/Development.md +++ b/docs/Development.md @@ -26,7 +26,7 @@ This guide provides information for developers who want to contribute to the Mes 1. **Clone the repository**. 2. **Generate the Xcode project** from `project.yml`: ```bash - xcodegen generate + make generate # creates a gitignored dev.yml; set your Apple team ID there for local signing ``` > **Note:** Do not edit `MC1.xcodeproj` directly — it is generated from `project.yml` and will be overwritten. Make project configuration changes in `project.yml` and regenerate. 3. **Open `MC1.xcodeproj`**. diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 0feb82177..625c9a7a0 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -9,7 +9,7 @@ platform :ios do desc "Update acknowledgements from SPM dependencies" lane :update_acknowledgements do - sh("cd .. && xcodegen generate") + sh("cd .. && make generate") sh("cd .. && xcodebuild -resolvePackageDependencies -project MC1.xcodeproj -clonedSourcePackagesDirPath ./SourcePackages") sh("cd .. && swift-package-list MC1.xcodeproj --custom-source-packages-path ./SourcePackages --output-type settings-bundle --requires-license --output-path MC1") sh("cd .. && rm -rf SourcePackages") @@ -21,7 +21,7 @@ platform :ios do sync_certs # Generate the Xcode project from XcodeGen - sh("cd .. && xcodegen generate") + sh("cd .. && make generate") # Configure manual code signing for App Store distribution update_code_signing_settings( @@ -86,7 +86,7 @@ platform :ios do lane :release do sync_certs - sh("cd .. && xcodegen generate") + sh("cd .. && make generate") # Configure manual code signing for App Store distribution update_code_signing_settings( @@ -152,7 +152,7 @@ platform :ios do lane :build_only do sync_certs - sh("cd .. && xcodegen generate") + sh("cd .. && make generate") build_app( scheme: "MC1", diff --git a/project.yml b/project.yml index d9e88cda5..8725c2af4 100644 --- a/project.yml +++ b/project.yml @@ -6,12 +6,16 @@ options: xcodeVersion: "26.0" generateEmptyDirectories: true +# dev.yml is gitignored and supplies DEVELOPMENT_TEAM for local signing. +# It is created empty by `make generate` and in CI. +include: + - dev.yml + settings: base: SWIFT_VERSION: "6.2" SWIFT_STRICT_CONCURRENCY: complete ENABLE_USER_SCRIPT_SANDBOXING: YES - DEVELOPMENT_TEAM: "" packages: MeshCore: