-
Notifications
You must be signed in to change notification settings - Fork 108
/
Copy pathmakefile
80 lines (64 loc) · 2.89 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
DEBUG_BUILD = -DDEBUG_BUILD -g
FRAMEWORKS = -framework ApplicationServices -framework Carbon -framework Cocoa
DEVELOPER_DIR = $(shell xcode-select -p)
SWIFT_STATIC = $(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift_static/macosx
SDK_ROOT = $(DEVELOPER_DIR)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
KWM_SRCS = kwm/kwm.cpp kwm/container.cpp kwm/node.cpp kwm/tree.cpp kwm/window.cpp kwm/display.cpp \
kwm/daemon.cpp kwm/interpreter.cpp kwm/keys.cpp kwm/space.cpp kwm/border.cpp kwm/cursor.cpp \
kwm/serializer.cpp kwm/tokenizer.cpp kwm/rules.cpp kwm/scratchpad.cpp kwm/command.cpp kwm/config.cpp \
kwm/axlib/axlib.cpp kwm/axlib/element.cpp kwm/axlib/window.cpp kwm/axlib/application.cpp kwm/axlib/observer.cpp \
kwm/axlib/event.cpp kwm/axlib/sharedworkspace.mm kwm/axlib/display.mm kwm/axlib/carbon.cpp
KWM_OBJS_TMP = $(KWM_SRCS:.cpp=.o)
KWM_OBJS = $(KWM_OBJS_TMP:.mm=.o)
KWMC_SRCS = kwmc/kwmc.cpp
KWMC_OBJS = $(KWMC_SRCS:.cpp=.o)
KWMO_SRCS = kwm-overlay/kwm-overlay.swift
KWMO_OBJS_TMP = $(KWMO_SRCS:.swift=.o)
KWMO_OBJS = $(KWMO_OBJS_TMP:.mm=.o)
OBJS_DIR = ./obj
SAMPLE_CONFIG = examples/kwmrc
CONFIG_DIR = $(HOME)/.kwm
BUILD_PATH = ./bin
BUILD_FLAGS = -O3 -Wall
BINS = $(BUILD_PATH)/kwm $(BUILD_PATH)/kwmc $(BUILD_PATH)/kwm-overlay $(CONFIG_DIR)/kwmrc
all: $(BINS)
# The 'install' target forces a rebuild from clean with the DEBUG_BUILD
# variable clear so that we don't emit debug log messages.
install: DEBUG_BUILD=
install: clean $(BINS)
.PHONY: all clean install
# This is an order-only dependency so that we create the directory if it
# doesn't exist, but don't try to rebuild the binaries if they happen to
# be older than the directory's timestamp.
$(BINS): | $(BUILD_PATH)
$(BUILD_PATH):
mkdir -p $(BUILD_PATH) && mkdir -p $(CONFIG_DIR)
clean:
rm -rf $(BUILD_PATH)
rm -rf $(OBJS_DIR)
$(BUILD_PATH)/kwm: $(foreach obj,$(KWM_OBJS),$(OBJS_DIR)/$(obj))
g++ $^ $(DEBUG_BUILD) $(BUILD_FLAGS) -lpthread $(FRAMEWORKS) -o $@
$(OBJS_DIR)/kwm/%.o: kwm/%.cpp
@mkdir -p $(@D)
g++ -c $< $(DEBUG_BUILD) $(BUILD_FLAGS) -o $@
$(OBJS_DIR)/kwm/%.o: kwm/%.mm
@mkdir -p $(@D)
g++ -c $< $(DEBUG_BUILD) $(BUILD_FLAGS) -o $@
$(BUILD_PATH)/kwmc: $(foreach obj,$(KWMC_OBJS),$(OBJS_DIR)/$(obj))
g++ $^ $(BUILD_FLAGS) -o $@
$(OBJS_DIR)/kwmc/%.o: kwmc/%.cpp
@mkdir -p $(@D)
g++ -c $< $(BUILD_FLAGS) -o $@
$(BUILD_PATH)/kwm-overlay: $(foreach obj,$(KWMO_OBJS),$(OBJS_DIR)/$(obj))
swiftc $^ -lc++ -L $(SWIFT_STATIC) -Xlinker -force_load_swift_libs -o $@
$(OBJS_DIR)/kwm-overlay/%.o: kwm-overlay/%.swift
@mkdir -p $(@D)
swiftc -c $^ $(DEBUG_BUILD) -sdk $(SDK_ROOT) -o $@
$(OBJS_DIR)/kwm-overlay/%.o: kwm-overlay/%.mm
@mkdir -p $(@D)
g++ -c $^ $(DEBUG_BUILD) $(BUILD_FLAGS) -o $@
$(BUILD_PATH)/kwm_template.plist: $(KWM_PLIST)
cp $^ $@
$(CONFIG_DIR)/kwmrc: $(SAMPLE_CONFIG)
mkdir -p $(CONFIG_DIR)
if test ! -e $@; then cp -n $^ $@; fi