aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
blob: 516161739244142fec37b86f34402841087ff301 (plain)
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
# Copyright (c) 2021  Teddy Wing
#
# This file is part of Re-Good Catalina Invert Colours.
#
# Re-Good Catalina Invert Colours is free software: you can
# redistribute it and/or modify it under the terms of the GNU General
# Public License as published by the Free Software Foundation, either
# version 3 of the License, or (at your option) any later version.
#
# Re-Good Catalina Invert Colours is distributed in the hope that it
# will be useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
# the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Re-Good Catalina Invert Colours. If not, see
# <https://www.gnu.org/licenses/>.

SOURCES := $(shell ls *.{h,m})

DDHOTKEY_OBJ := $(patsubst %.m,%.o,$(wildcard lib/DDHotKey/*.m))

BUILD_DIR := $(abspath build)
LOCAL_INCLUDE_DIR := $(BUILD_DIR)/include

RELEASE_PRODUCT := invert-catalina-invert
LAUNCHD_PLIST := Library/LaunchAgents/com.teddywing.invert-catalina-invert.plist
VERSION := $(shell awk -F '"' '/static const char \*VERSION/ { print $$2 }' main.m)

DIST := $(abspath dist)
DIST_PRODUCT := $(DIST)/bin/$(RELEASE_PRODUCT)
DIST_LAUNCHD_PLIST := $(DIST)/$(LAUNCHD_PLIST)


.PHONY: all
all: $(RELEASE_PRODUCT)

$(RELEASE_PRODUCT): $(SOURCES) build/libddhotkey.a build/include/*.h
	clang -x objective-c \
		-mmacosx-version-min=10.7 \
		-framework Carbon \
		-framework Cocoa \
		-framework CoreGraphics \
		-framework CoreServices \
		-framework Foundation \
		-fno-objc-arc \
		-I./build/include \
		-L./build \
		-lddhotkey \
		-o invert-catalina-invert \
		$(SOURCES)

build/include/%.h: lib/DDHotKey/%.h | $(LOCAL_INCLUDE_DIR)
	cp $^ build/include/

lib/DDHotKey/%.o: lib/DDHotKey/%.m
	clang -x objective-c \
		-mmacosx-version-min=10.7 \
		-fobjc-arc \
		-c \
		$<

	mv *.o lib/DDHotKey/

build/libddhotkey.a: $(DDHOTKEY_OBJ) | $(BUILD_DIR)
	libtool -static \
		-o $@ \
		$^

$(BUILD_DIR):
	mkdir -p $@

$(LOCAL_INCLUDE_DIR): | $(BUILD_DIR)
	mkdir -p $@


.PHONY: clean
clean:
	rm -rf $(RELEASE_PRODUCT) \
		$(BUILD_DIR) \
		$(DDHOTKEY_OBJ) \
		$(DIST)


.PHONY: dist
dist: $(DIST_PRODUCT) $(DIST_LAUNCHD_PLIST)

$(DIST):
	mkdir -p $@

$(DIST)/bin: | $(DIST)
	mkdir -p $@

$(DIST)/Library/LaunchAgents: | $(DIST)
	mkdir -p $@

$(DIST_PRODUCT): $(DIST)/bin $(RELEASE_PRODUCT)
	cp $(RELEASE_PRODUCT) $<

$(DIST_LAUNCHD_PLIST): $(DIST)/Library/LaunchAgents $(LAUNCHD_PLIST)
	cp $(LAUNCHD_PLIST) $<


.PHONY: pkg
pkg: invert-catalina-invert_$(VERSION)_x86_64.tar.bz2

invert-catalina-invert_$(VERSION)_x86_64.tar.bz2: dist
	tar cjv -s /dist/invert-catalina-invert_$(VERSION)_x86_64/ -f $@ dist