forked from Beingpax/VoiceInk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
111 lines (99 loc) · 4.05 KB
/
Makefile
File metadata and controls
111 lines (99 loc) · 4.05 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
# Define a directory for dependencies in the user's home folder
DEPS_DIR := $(HOME)/VoiceInk-Dependencies
WHISPER_CPP_DIR := $(DEPS_DIR)/whisper.cpp
FRAMEWORK_PATH := $(WHISPER_CPP_DIR)/build-apple/whisper.xcframework
.PHONY: all clean whisper setup build local check healthcheck help dev run
# Default target
all: check build
# Development workflow
dev: build run
# Prerequisites
check:
@echo "Checking prerequisites..."
@command -v git >/dev/null 2>&1 || { echo "git is not installed"; exit 1; }
@command -v xcodebuild >/dev/null 2>&1 || { echo "xcodebuild is not installed (need Xcode)"; exit 1; }
@command -v swift >/dev/null 2>&1 || { echo "swift is not installed"; exit 1; }
@echo "Prerequisites OK"
healthcheck: check
# Build process
whisper:
@mkdir -p $(DEPS_DIR)
@if [ ! -d "$(FRAMEWORK_PATH)" ]; then \
echo "Building whisper.xcframework in $(DEPS_DIR)..."; \
if [ ! -d "$(WHISPER_CPP_DIR)" ]; then \
git clone https://github.com/ggerganov/whisper.cpp.git $(WHISPER_CPP_DIR); \
else \
(cd $(WHISPER_CPP_DIR) && git pull); \
fi; \
cd $(WHISPER_CPP_DIR) && ./build-xcframework.sh; \
else \
echo "whisper.xcframework already built in $(DEPS_DIR), skipping build"; \
fi
setup: whisper
@echo "Whisper framework is ready at $(FRAMEWORK_PATH)"
@echo "Please ensure your Xcode project references the framework from this new location."
build: setup
xcodebuild -project VoiceInk.xcodeproj -scheme VoiceInk -configuration Debug CODE_SIGN_IDENTITY="" build
# Build for local use without Apple Developer certificate
local: check setup
@echo "Building VoiceInk for local use (no Apple Developer certificate required)..."
xcodebuild -project VoiceInk.xcodeproj -scheme VoiceInk -configuration Debug \
-xcconfig LocalBuild.xcconfig \
CODE_SIGN_IDENTITY="-" \
CODE_SIGNING_REQUIRED=NO \
CODE_SIGNING_ALLOWED=YES \
DEVELOPMENT_TEAM="" \
CODE_SIGN_ENTITLEMENTS=$(CURDIR)/VoiceInk/VoiceInk.local.entitlements \
SWIFT_ACTIVE_COMPILATION_CONDITIONS='$$(inherited) LOCAL_BUILD' \
build
@APP_PATH=$$(find "$$HOME/Library/Developer/Xcode/DerivedData" -name "VoiceInk.app" -path "*/Debug/*" -type d | head -1) && \
if [ -n "$$APP_PATH" ]; then \
echo "Copying VoiceInk.app to ~/Downloads..."; \
rm -rf "$$HOME/Downloads/VoiceInk.app"; \
ditto "$$APP_PATH" "$$HOME/Downloads/VoiceInk.app"; \
xattr -cr "$$HOME/Downloads/VoiceInk.app"; \
echo ""; \
echo "Build complete! App saved to: ~/Downloads/VoiceInk.app"; \
echo "Run with: open ~/Downloads/VoiceInk.app"; \
echo ""; \
echo "Limitations of local builds:"; \
echo " - No iCloud dictionary sync"; \
echo " - No automatic updates (pull new code and rebuild to update)"; \
else \
echo "Error: Could not find built VoiceInk.app in DerivedData."; \
exit 1; \
fi
# Run application
run:
@if [ -d "$$HOME/Downloads/VoiceInk.app" ]; then \
echo "Opening ~/Downloads/VoiceInk.app..."; \
open "$$HOME/Downloads/VoiceInk.app"; \
else \
echo "Looking for VoiceInk.app in DerivedData..."; \
APP_PATH=$$(find "$$HOME/Library/Developer/Xcode/DerivedData" -name "VoiceInk.app" -type d | head -1) && \
if [ -n "$$APP_PATH" ]; then \
echo "Found app at: $$APP_PATH"; \
open "$$APP_PATH"; \
else \
echo "VoiceInk.app not found. Please run 'make build' or 'make local' first."; \
exit 1; \
fi; \
fi
# Cleanup
clean:
@echo "Cleaning build artifacts..."
@rm -rf $(DEPS_DIR)
@echo "Clean complete"
# Help
help:
@echo "Available targets:"
@echo " check/healthcheck Check if required CLI tools are installed"
@echo " whisper Clone and build whisper.cpp XCFramework"
@echo " setup Copy whisper XCFramework to VoiceInk project"
@echo " build Build the VoiceInk Xcode project"
@echo " local Build for local use (no Apple Developer certificate needed)"
@echo " run Launch the built VoiceInk app"
@echo " dev Build and run the app (for development)"
@echo " all Run full build process (default)"
@echo " clean Remove build artifacts"
@echo " help Show this help message"