-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
75 lines (56 loc) · 2.67 KB
/
Makefile
File metadata and controls
75 lines (56 loc) · 2.67 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
APP_BUNDLE := Loopbacker.app
BUILD_DIR := build
APP_CONTENTS := $(BUILD_DIR)/$(APP_BUNDLE)/Contents
SWIFT_BIN := App/Loopbacker/.build/release/Loopbacker
.DEFAULT_GOAL := help
.PHONY: help all driver app bundle clean install install-app install-driver uninstall uninstall-app uninstall-driver run
help: ## Show this help
@echo "Loopbacker - Virtual audio loopback for macOS"
@echo ""
@echo "Usage: make <target>"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}'
@echo ""
# --- Build targets ---
all: driver bundle ## Build driver + app bundle
driver: ## Build the CoreAudio virtual audio driver
cd Driver && cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build
app: ## Build the SwiftUI app binary
cd App/Loopbacker && swift build -c release
bundle: app driver ## Package as Loopbacker.app with embedded driver
@echo "==> Packaging Loopbacker.app..."
mkdir -p $(APP_CONTENTS)/MacOS
mkdir -p $(APP_CONTENTS)/Resources
cp $(SWIFT_BIN) $(APP_CONTENTS)/MacOS/Loopbacker
cp App/Loopbacker/Resources/Info.plist $(APP_CONTENTS)/Info.plist
cp App/Loopbacker/Resources/AppIcon.icns $(APP_CONTENTS)/Resources/
cp App/Loopbacker/Resources/logo.png $(APP_CONTENTS)/Resources/
cp -R Driver/build/Loopbacker.driver $(APP_CONTENTS)/Resources/
codesign --force --deep --sign "Apple Development: Jacob Coffee (NBMD22TJZJ)" --identifier com.jacobcoffee.loopbacker $(BUILD_DIR)/$(APP_BUNDLE)
@echo "==> $(BUILD_DIR)/$(APP_BUNDLE) ready."
# --- Install targets ---
install: install-driver install-app ## Install driver + app to /Applications
install-driver: driver ## Install audio driver (needs sudo)
sudo cp -R Driver/build/Loopbacker.driver /Library/Audio/Plug-Ins/HAL/
sudo killall -9 coreaudiod || true
@echo "==> Driver installed. Virtual device should appear in Sound settings."
install-app: bundle ## Copy Loopbacker.app to /Applications
cp -R $(BUILD_DIR)/$(APP_BUNDLE) /Applications/
@echo "==> Loopbacker.app installed to /Applications."
# --- Uninstall targets ---
uninstall: uninstall-driver uninstall-app ## Remove driver + app
uninstall-driver: ## Remove audio driver (needs sudo)
sudo rm -rf /Library/Audio/Plug-Ins/HAL/Loopbacker.driver
sudo killall -9 coreaudiod || true
@echo "==> Driver uninstalled."
uninstall-app: ## Remove app from /Applications
rm -rf /Applications/Loopbacker.app
@echo "==> App removed from /Applications."
# --- Dev ---
run: bundle ## Build and open the app
@-killall Loopbacker 2>/dev/null; sleep 0.5
open $(BUILD_DIR)/$(APP_BUNDLE)
clean: ## Remove all build artifacts
rm -rf $(BUILD_DIR)
rm -rf Driver/build
cd App/Loopbacker && swift package clean