mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-24 23:25:19 +00:00
- Add check for full Xcode vs command line tools only - Provide clearer error messages with setup instructions - Verify Xcode is installed and properly configured - Add better validation for development environment Fixes issue where 'just run' fails with cryptic error when only command line tools are installed. Now gives clear guidance on installing full Xcode and configuring xcode-select properly. Resolves #760
108 lines
5.6 KiB
Makefile
108 lines
5.6 KiB
Makefile
# BitChat macOS Build Justfile
|
|
# Handles temporary modifications needed to build and run on macOS
|
|
|
|
# Default recipe - shows available commands
|
|
default:
|
|
@echo "BitChat macOS Build Commands:"
|
|
@echo " just run - Build and run the macOS app"
|
|
@echo " just build - Build the macOS app only"
|
|
@echo " just clean - Clean build artifacts and restore original files"
|
|
@echo " just check - Check prerequisites"
|
|
@echo ""
|
|
@echo "Original files are preserved - modifications are temporary for builds only"
|
|
|
|
# Check prerequisites
|
|
check:
|
|
@echo "Checking prerequisites..."
|
|
@command -v xcodebuild >/dev/null 2>&1 || (echo "❌ xcodebuild not found. Install Xcode from App Store" && exit 1)
|
|
@xcode-select -p | grep -q "Xcode.app" || (echo "❌ Full Xcode required, not just command line tools. Install from App Store and run:\n sudo xcode-select -s /Applications/Xcode.app/Contents/Developer" && exit 1)
|
|
@test -d "/Applications/Xcode.app" || (echo "❌ Xcode.app not found in Applications folder. Install from App Store" && exit 1)
|
|
@xcodebuild -version >/dev/null 2>&1 || (echo "❌ Xcode not properly configured. Try:\n sudo xcode-select -s /Applications/Xcode.app/Contents/Developer" && exit 1)
|
|
@security find-identity -v -p codesigning | grep -q "Apple Development\|Developer ID" || (echo "⚠️ No Developer ID found - code signing may fail" && exit 0)
|
|
@echo "✅ All prerequisites met"
|
|
|
|
# Backup original files
|
|
backup:
|
|
@echo "Backing up original project configuration..."
|
|
@if [ -f bitchat.xcodeproj/project.pbxproj ]; then cp bitchat.xcodeproj/project.pbxproj bitchat.xcodeproj/project.pbxproj.backup; fi
|
|
@if [ -f bitchat/Info.plist ]; then cp bitchat/Info.plist bitchat/Info.plist.backup; fi
|
|
|
|
# Restore original files
|
|
restore:
|
|
@echo "Restoring original project configuration..."
|
|
@if [ -f project.yml.backup ]; then mv project.yml.backup project.yml; fi
|
|
@# Restore iOS-specific files
|
|
@if [ -f bitchat/LaunchScreen.storyboard.ios ]; then mv bitchat/LaunchScreen.storyboard.ios bitchat/LaunchScreen.storyboard; fi
|
|
@# Use git to restore all modified files except Justfile
|
|
@git checkout -- project.yml bitchat.xcodeproj/project.pbxproj bitchat/Info.plist 2>/dev/null || echo "⚠️ Could not restore some files with git"
|
|
@# Remove any backup files
|
|
@rm -f bitchat.xcodeproj/project.pbxproj.backup bitchat/Info.plist.backup 2>/dev/null || true
|
|
|
|
# Apply macOS-specific modifications
|
|
patch-for-macos: backup
|
|
@echo "Temporarily hiding iOS-specific files for macOS build..."
|
|
@# Move iOS-specific files out of the way temporarily
|
|
@if [ -f bitchat/LaunchScreen.storyboard ]; then mv bitchat/LaunchScreen.storyboard bitchat/LaunchScreen.storyboard.ios; fi
|
|
|
|
# Build the macOS app
|
|
build: #check generate
|
|
@echo "Building BitChat for macOS..."
|
|
@xcodebuild -project bitchat.xcodeproj -scheme "bitchat_macOS" -configuration Debug CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGN_ENTITLEMENTS="" build
|
|
|
|
# Run the macOS app
|
|
run: build
|
|
@echo "Launching BitChat..."
|
|
@find ~/Library/Developer/Xcode/DerivedData -name "bitchat.app" -path "*/Debug/*" -not -path "*/Index.noindex/*" | head -1 | xargs -I {} open "{}"
|
|
|
|
# Clean build artifacts and restore original files
|
|
clean: restore
|
|
@echo "Cleaning build artifacts..."
|
|
@rm -rf ~/Library/Developer/Xcode/DerivedData/bitchat-* 2>/dev/null || true
|
|
@# Only remove the generated project if we have a backup, otherwise use git
|
|
@if [ -f bitchat.xcodeproj/project.pbxproj.backup ]; then \
|
|
rm -rf bitchat.xcodeproj; \
|
|
else \
|
|
git checkout -- bitchat.xcodeproj/project.pbxproj 2>/dev/null || echo "⚠️ Could not restore project.pbxproj"; \
|
|
fi
|
|
@rm -f project-macos.yml 2>/dev/null || true
|
|
@echo "✅ Cleaned and restored original files"
|
|
|
|
# Quick run without cleaning (for development)
|
|
dev-run: check
|
|
@echo "Quick development build..."
|
|
@xcodebuild -project bitchat.xcodeproj -scheme "bitchat_macOS" -configuration Debug CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGN_ENTITLEMENTS="" build
|
|
@find ~/Library/Developer/Xcode/DerivedData -name "bitchat.app" -path "*/Debug/*" -not -path "*/Index.noindex/*" | head -1 | xargs -I {} open "{}"
|
|
|
|
# Show app info
|
|
info:
|
|
@echo "BitChat - Decentralized Mesh Messaging"
|
|
@echo "======================================"
|
|
@echo "• Native macOS SwiftUI app"
|
|
@echo "• Bluetooth LE mesh networking"
|
|
@echo "• End-to-end encryption"
|
|
@echo "• No internet required"
|
|
@echo "• Works offline with nearby devices"
|
|
@echo ""
|
|
@echo "Requirements:"
|
|
@echo "• macOS 13.0+ (Ventura)"
|
|
@echo "• Bluetooth LE capable Mac"
|
|
@echo "• Physical device (no simulator support)"
|
|
@echo ""
|
|
@echo "Usage:"
|
|
@echo "• Set nickname and start chatting"
|
|
@echo "• Use /join #channel for group chats"
|
|
@echo "• Use /msg @user for private messages"
|
|
@echo "• Triple-tap logo for emergency wipe"
|
|
|
|
# Force clean everything (nuclear option)
|
|
nuke:
|
|
@echo "🧨 Nuclear clean - removing all build artifacts and backups..."
|
|
@rm -rf ~/Library/Developer/Xcode/DerivedData/bitchat-* 2>/dev/null || true
|
|
@rm -rf bitchat.xcodeproj 2>/dev/null || true
|
|
@rm -f bitchat.xcodeproj/project.pbxproj.backup 2>/dev/null || true
|
|
@rm -f bitchat/Info.plist.backup 2>/dev/null || true
|
|
@# Restore iOS-specific files if they were moved
|
|
@if [ -f bitchat/LaunchScreen.storyboard.ios ]; then mv bitchat/LaunchScreen.storyboard.ios bitchat/LaunchScreen.storyboard; fi
|
|
@git checkout bitchat.xcodeproj/project.pbxproj bitchat/Info.plist 2>/dev/null || echo "⚠️ Not a git repo or no changes to restore"
|
|
@echo "✅ Nuclear clean complete"
|