-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
88 lines (72 loc) · 1.85 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
SHELL=/bin/sh
PROGRAM=kbm
BINARY=kbm
CC=gcc
RM=rm -f
CP=cp
MKDIR=mkdir -p
WINDRES=
IBTOOL=
CFLAGS=-Wall -Wextra -g -DKBM_DEBUG
LDFLAGS=
RESFLAGS=
IBFLAGS=
SRCDIR=src
RESDIR=misc
_SRC=main.c display.c keymap.c hotkey.c parser.c error.c
SRC=$(patsubst %,$(SRCDIR)/%,$(_SRC))
_OBJC=application.m delegate.m
OBJC=$(patsubst %,$(SRCDIR)/%,$(_OBJC))
_HEAD=kbm.h display.h keymap.h hotkey.h parser.h error.h
HEAD=$(patsubst %,$(SRCDIR)/%,$(_HEAD))
OBJ=$(SRC:.c=.o)
NIB=
RESFILE=
APP=
APPCLEAN=
UNAME=$(shell uname -s)
ifeq ($(UNAME),Linux)
CFLAGS+=$(shell pkg-config --cflags libnotify)
LDFLAGS+=-lxcb -lxcb-keysyms -lxcb-util -lxcb-xtest \
$(shell pkg-config --libs libnotify)
endif
ifeq ($(UNAME),Darwin)
LDFLAGS+=-framework AppKit -framework ApplicationServices \
-framework Foundation
OBJ+=$(subst .m,.o,$(OBJC))
HEAD+=$(SRCDIR)/delegate.h $(SRCDIR)/application.h
NIB=$(RESDIR)/MainMenu.nib
APP=createapp
APPCLEAN=cleanapp
IBTOOL=ibtool
IBFLAGS=--compile
endif
ifneq (,$(findstring _NT-,$(UNAME)))
WINDRES=windres
RESFLAGS=-O coff
LDFLAGS+=-mwindows -mconsole
BINARY=kbm.exe
RESFILE=$(RESDIR)/$(PROGRAM).res
OBJ+=$(RESFILE)
endif
.PHONY: all
all: $(PROGRAM) $(APP)
$(PROGRAM): $(OBJ) $(HEAD) $(NIB)
$(CC) -o $@ $(OBJ) $(LDFLAGS)
$(SRCDIR)/%.o: $(SRCDIR)/%.m
$(CC) $(CFLAGS) -c -o $@ $^
$(RESFILE): $(RESDIR)/$(PROGRAM).rc
$(WINDRES) $^ -o $@ $(RESFLAGS)
$(RESDIR)/MainMenu.nib: $(RESDIR)/MainMenu.xib
$(IBTOOL) $^ $(IBFLAGS) $@
$(APP): $(PROGRAM)
$(MKDIR) $(PROGRAM).app/Contents/{MacOS,Resources}
$(CP) $(RESDIR)/Info.plist $(PROGRAM).app/Contents
$(CP) $(PROGRAM) $(PROGRAM).app/Contents/MacOS
$(CP) $(RESDIR)/MainMenu.nib $(PROGRAM).app/Contents/Resources
$(CP) $(RESDIR)/$(PROGRAM).png $(PROGRAM).app/Contents/Resources
.PHONY: clean $(APPCLEAN)
clean: $(APPCLEAN)
$(RM) $(SRCDIR)/*.o $(BINARY) $(RESFILE)
$(APPCLEAN):
$(RM) -r $(PROGRAM).app