SPB Git

spb/zyquo-atlas Public License

The AI-native macOS web browser — every surface, intelligent.

Swift 75.2% JavaScript 22% Shell 2% Makefile 0.9%
4.0 KB · 97 lines make
Raw Blame History
1#2#  Makefile3#  Zyquo Atlas4#5#  Author: Simon-Pierre Boucher6#  Mail: contact@spboucher.ai7#8#  make / make dev  → release build, assemble dist/Zyquo Atlas.app, ad-hoc sign (fast local iteration)9#  make run         → make dev, then launch the app10#  make release     → universal binary, Developer ID sign, notarize, staple (Phase 8)11#  make icon        → regenerate AppIcon.icns from assets/icon/zyquo-atlas.svg (Phase 5)12#  make verify      → Phase 7 API verification with real keys (source .env.keys)13#  make test        → swift test14#  make clean       → remove build products15#1617# CLT-only toolchain: the default SDK (macOS 27 beta) declares @State & co. as18# macros whose SwiftUIMacros plugin ships only with Xcode, so every SwiftUI19# build fails. SDK 26 keeps the property-wrapper forms — pin all builds to it.20export SDKROOT := /Library/Developer/CommandLineTools/SDKs/MacOSX26.sdk2122APP_NAME      := Zyquo Atlas23EXEC_NAME     := ZyquoAtlas24BUNDLE_ID     := com.zyquo.atlas25VERSION       := 1.0.026BUILD_NUM     := 127MIN_MACOS     := 13.028DIST          := dist29APP_DIR       := $(DIST)/$(APP_NAME).app30DMG_PATH      := $(DIST)/ZyquoAtlas.dmg31IDENTITY      := Developer ID Application: Simon-Pierre Boucher (3YM54G49SN)32NOTARY_PROFILE:= MacLustr-Notarize33ENTITLEMENTS  := Resources/ZyquoAtlas.entitlements34VERIFY_ARGS   ?=3536.PHONY: dev build bundle release universal dmg icon test clean run verify3738dev: build bundle39	@echo "=== Ad-hoc signing (dev) ==="40	codesign --force --deep --sign - "$(APP_DIR)"41	codesign --verify --deep --strict "$(APP_DIR)"42	@echo "Packaged: $(APP_DIR) — launch with: open \"$(APP_DIR)\""4344build:45	swift build -c release4647test:48	scripts/test.sh4950run: dev51	open "$(APP_DIR)"5253bundle:54	@echo "=== Assembling $(APP_DIR) ==="55	rm -rf "$(APP_DIR)"56	mkdir -p "$(APP_DIR)/Contents/MacOS" "$(APP_DIR)/Contents/Resources"57	cp .build/release/$(EXEC_NAME) "$(APP_DIR)/Contents/MacOS/$(EXEC_NAME)"58	@for b in .build/release/*.bundle; do [ -e "$$b" ] && cp -R "$$b" "$(APP_DIR)/Contents/Resources/" || true; done59	@if [ -f Resources/AppIcon.icns ]; then cp Resources/AppIcon.icns "$(APP_DIR)/Contents/Resources/AppIcon.icns"; fi60	@for r in Resources/MenuBarIcon.png Resources/MenuBarIcon@2x.png; do [ -f "$$r" ] && cp "$$r" "$(APP_DIR)/Contents/Resources/" || true; done61	scripts/write-info-plist.sh "$(APP_DIR)" "$(APP_NAME)" "$(EXEC_NAME)" "$(BUNDLE_ID)" "$(VERSION)" "$(BUILD_NUM)" "$(MIN_MACOS)"6263# SwiftPM builds a fat binary in one command (arm64 + x86_64); products land in64# .build/apple/Products/Release. Verifies the slices with lipo.65PRODUCTS := .build/apple/Products/Release66universal:67	@echo "=== Building universal binary (arm64 + x86_64) ==="68	swift build -c release --arch arm64 --arch x86_6469	lipo -archs "$(PRODUCTS)/$(EXEC_NAME)"7071release: universal72	@echo "=== Assembling $(APP_DIR) (universal) ==="73	rm -rf "$(APP_DIR)"74	mkdir -p "$(APP_DIR)/Contents/MacOS" "$(APP_DIR)/Contents/Resources"75	cp "$(PRODUCTS)/$(EXEC_NAME)" "$(APP_DIR)/Contents/MacOS/$(EXEC_NAME)"76	@for b in "$(PRODUCTS)"/*.bundle; do [ -e "$$b" ] && cp -R "$$b" "$(APP_DIR)/Contents/Resources/" || true; done77	@if [ -f Resources/AppIcon.icns ]; then cp Resources/AppIcon.icns "$(APP_DIR)/Contents/Resources/AppIcon.icns"; fi78	@for r in Resources/MenuBarIcon.png Resources/MenuBarIcon@2x.png; do [ -f "$$r" ] && cp "$$r" "$(APP_DIR)/Contents/Resources/" || true; done79	scripts/write-info-plist.sh "$(APP_DIR)" "$(APP_NAME)" "$(EXEC_NAME)" "$(BUNDLE_ID)" "$(VERSION)" "$(BUILD_NUM)" "$(MIN_MACOS)"80	scripts/notarize.sh "$(APP_DIR)" "$(IDENTITY)" "$(NOTARY_PROFILE)" "$(ENTITLEMENTS)"8182# Signed + notarized distribution DMG from the notarized app (run `make release` first).83dmg:84	scripts/make-dmg.sh "$(APP_DIR)" "$(IDENTITY)" "$(NOTARY_PROFILE)" "$(DMG_PATH)"8586icon:87	scripts/generate-icon.sh8889# Full API verification with real keys (source .env.keys first, or let make do it).90verify:91	swift build -c release92	@if [ -f .env.keys ]; then set -a && . ./.env.keys && set +a && .build/release/zyquo-verify $(VERIFY_ARGS); \93	else .build/release/zyquo-verify $(VERIFY_ARGS); fi9495clean:96	rm -rf .build $(DIST)97