This repository was archived by the owner on Jul 12, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
100 lines (78 loc) · 3.74 KB
/
Makefile
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
.PHONY: default
default: all
DRIVER_NAME = CaptainJack.driver
CC := $(CC)
CFLAGS = -std=c99 -g3 -Wall -Wextra -Werror -Wno-unused-parameter -mmacosx-version-min=10.9
CPPFLAGS =
LDFLAGS =
LDFLAGS_DM = -ljack
LDFLAGS_DV =
CFLAGS_CJ = -bundle -framework CoreAudio -framework CoreFoundation
CFLAGS_CJD = -framework CoreFoundation
DESTDIR =
PREFIX = /usr/local
PLUGINDIR = /Library/Audio/Plug-Ins/HAL
BUILDDIR = build
SRCS = $(wildcard **/*.c)
DEPS = $(patsubst src/%,$(BUILDDIR)/%,$(addsuffix .d,$(SRCS)))
-include $(BUILDDIR)/Makefile.dep
# Dependencies
$(BUILDDIR)/Makefile.dep: $(DEPS)
@mkdir -p $(dir $(@))
@cat $^ > $@
$(BUILDDIR)/%.d: src/%
@mkdir -p $(dir $(@))
@$(CC) $(CPPFLAGS) -MG -MM $^ -MF $@ -MQ $(subst .c.d,.o,$@)
$(BUILDDIR)/%.o: src/%.c
@mkdir -p $(dir $(@))
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
# Targets
$(BUILDDIR)/captain-jack-daemon: $(BUILDDIR)/captain-jack-daemon.o $(BUILDDIR)/xmit.o
$(CC) $(LDFLAGS) $(LDFLAGS_DM) $(CFLAGS_CJD) $^ -o $@
$(BUILDDIR)/captain-jack: $(BUILDDIR)/captain-jack-device.o $(BUILDDIR)/xmit.o
$(CC) $(LDFLAGS) $(LDFLAGS_DV) $(CFLAGS_CJ) $^ -o $@
.PHONY: all
all: $(BUILDDIR)/captain-jack-daemon $(BUILDDIR)/captain-jack
.PHONY: clean
clean:
rm -rf $(BUILDDIR)
# Install
.PHONY: stage
stage: $(BUILDDIR)/captain-jack
install -d -m 0755 $(DRIVER_NAME)/Contents/MacOS/
install -m 0755 $(BUILDDIR)/captain-jack $(DRIVER_NAME)/Contents/MacOS/CaptainJack
.PHONY: install
install: $(BUILDDIR)/captain-jack-daemon stage
sudo install -d -m 0755 -o root -g wheel $(DESTDIR)$(PREFIX)/sbin/
sudo install -d -m 0755 -o root -g wheel $(DESTDIR)$(PLUGINDIR)/$(DRIVER_NAME)/Contents/
sudo install -d -m 0755 -o root -g wheel $(DESTDIR)$(PLUGINDIR)/$(DRIVER_NAME)/Contents/MacOS/
sudo install -d -m 0755 -o root -g wheel $(DESTDIR)$(PLUGINDIR)/$(DRIVER_NAME)/Contents/Resources/
sudo install -d -m 0755 -o root -g wheel $(DESTDIR)$(PLUGINDIR)/$(DRIVER_NAME)/Contents/Resources/English.lproj/
sudo install -d -m 0755 -o root -g wheel $(DESTDIR)/Library/LaunchDaemons/
sudo install -m 0755 -o root -g wheel $(BUILDDIR)/captain-jack-daemon $(DESTDIR)$(PREFIX)/sbin/captain-jack-daemon
sudo install -m 0644 -o root -g wheel $(DRIVER_NAME)/Contents/Info.plist $(DESTDIR)$(PLUGINDIR)/$(DRIVER_NAME)/Contents/Info.plist
sudo install -m 0755 -o root -g wheel $(DRIVER_NAME)/Contents/MacOS/CaptainJack $(DESTDIR)$(PLUGINDIR)/$(DRIVER_NAME)/Contents/MacOS/CaptainJack
sudo install -m 0644 -o root -g wheel $(DRIVER_NAME)/Contents/Resources/DeviceIcon.icns $(DESTDIR)$(PLUGINDIR)/$(DRIVER_NAME)/Contents/Resources/DeviceIcon.icns
sudo install -m 0644 -o root -g wheel $(DRIVER_NAME)/Contents/Resources/English.lproj/Localizable.strings $(DESTDIR)$(PLUGINDIR)/$(DRIVER_NAME)/Contents/Resources/English.lproj/Localizable.strings
sudo install -m 0600 -o root -g wheel me.junon.CaptainJack.plist $(DESTDIR)/Library/LaunchDaemons/me.junon.CaptainJack.plist
.PHONY: install
uninstall: stop
sudo rm -vf $(DESTDIR)$(PREFIX)/sbin/captain-jack-daemon
sudo rm -vf $(DESTDIR)/Library/LaunchDaemons/me.junon.CaptainJack.plist
sudo rm -vrf $(DESTDIR)$(PLUGINDIR)/CaptainJack.driver
.PHONY: kill_audio
kill_audio:
ps aux | grep _coreaudiod | grep -v grep | awk '{print $$2}' | xargs sudo kill -9
.PHONY: stop
stop: kill_audio
@echo "stopping any Captain Jack daemons"
sudo launchctl stop me.junon.CaptainJack || echo "no daemons were running"
@echo "removing old version of launch daemon"
sudo launchctl bootout system /Library/LaunchDaemons/me.junon.CaptainJack.plist || echo "there was no previous launch daemon bootstrapped"
$(MAKE) kill_audio
.PHONY: start
start: kill_audio
sudo launchctl bootstrap system /Library/LaunchDaemons/me.junon.CaptainJack.plist
$(MAKE) kill_audio
.PHONY: restart
restart: stop start