-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
118 lines (100 loc) · 2.88 KB
/
Copy pathMakefile
File metadata and controls
118 lines (100 loc) · 2.88 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
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
109
110
111
112
113
114
115
include config.mk
build_dir := build
target := ttimer
hometui_dir:= src/HomeTUI
hometui_lib:= $(hometui_dir)/bin/libhome_tui.a
src=src/main.c \
src/timer/timer.c \
src/ui/view.c \
src/ui/help_view.c \
src/ui/settings_view.c \
src/ui/graph_view.c \
src/ui/timer_view.c \
src/db/db_sqlite.c \
src/app_context.c \
PLATFORM_LFLAGS :=
# OS Detection
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
src += src/os_utils/os_utils_linux.c
PLATFORM_LFLAGS += -lX11 -lXss
else ifeq ($(UNAME_S),Darwin)
src += src/os_utils/os_utils_mac.c
PLATFORM_LFLAGS += -framework CoreGraphics
else
src += src/os_utils/os_utils_stub.c
endif
main: prepare $(build_dir)/libsqlite3.a $(hometui_lib)
$(CC) $(COMPILE_FLAGS) \
-D_POSIX_C_SOURCE=199309L \
-DUSE_UTF8 \
-I ./src/ $(src) \
$(NCURSES_CFLAGS) \
-L$(build_dir) \
-L$(hometui_dir)/bin -lhome_tui \
-lm -lsqlite3 \
$(PLATFORM_LFLAGS) \
$(NCURSES_LIBS) \
-o $(build_dir)/$(target)
prepare:
mkdir -p build
mkdir -p data
$(hometui_lib):
$(MAKE) -C $(hometui_dir) UTF-8_lib
$(build_dir)/libsqlite3.a: $(build_dir)/sqlite3.o
ar rcs $(build_dir)/libsqlite3.a $(build_dir)/sqlite3.o
$(build_dir)/sqlite3.o:
$(CC) -c $(COMPILE_FLAGS) src/db/sqlite3/sqlite3.c -o $(build_dir)/sqlite3.o
profile: $(build_dir)/libsqlite3.a $(hometui_lib) # for gprof
$(CC) $(COMPILE_FLAGS) \
-D_POSIX_C_SOURCE=199309L \
-DUSE_UTF8 \
-I ./src/ $(src) -pg \
$(NCURSES_CFLAGS) \
-L$(build_dir) \
-L$(hometui_dir)/bin -lhome_tui \
-lm -lsqlite3 \
$(PLATFORM_LFLAGS) \
$(NCURSES_LIBS) \
-lpthread
clean:
rm -rdf $(build_dir)
$(MAKE) -C $(hometui_dir) clean
run:
./$(build_dir)/$(target) 2> data/std_err.log
PREFIX ?= $(HOME)/.local
.PHONY: install uninstall
install: main
@if [ -n "$$XDG_STATE_HOME" ]; then \
state_dir="$$XDG_STATE_HOME/TTimer"; \
elif [ -n "$$HOME" ]; then \
state_dir="$$HOME/.local/state/TTimer"; \
fi; \
if [ -n "$$state_dir" ]; then \
if [ -d "$$state_dir" ] && [ -n "$$(ls -A "$$state_dir" 2>/dev/null)" ]; then \
echo "Error: Target directory '$$state_dir' exists and is not empty." >&2; \
echo "Please dump the database and remove '$$state_dir' manually." >&2; \
exit 1; \
fi; \
mkdir -p "$$state_dir"; \
cp -r src/HomeTUI/assets "$$state_dir/"; \
fi
mkdir -p $(PREFIX)/bin
cp $(build_dir)/$(target) $(PREFIX)/bin/
uninstall:
rm -f $(PREFIX)/bin/$(target)
@if [ -n "$$XDG_STATE_HOME" ]; then \
state_dir="$$XDG_STATE_HOME/TTimer"; \
elif [ -n "$$HOME" ]; then \
state_dir="$$HOME/.local/state/TTimer"; \
fi; \
if [ -n "$$state_dir" ]; then \
if [ -d "$$state_dir" ] && [ -n "$$(ls -A "$$state_dir" 2>/dev/null)" ]; then \
echo "Error: Target directory '$$state_dir' exists and is not empty." >&2; \
echo "Please dump the database and remove '$$state_dir' manually." >&2; \
exit 1; \
fi; \
if [ -d "$$state_dir" ]; then \
rmdir "$$state_dir"; \
fi; \
fi