-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
96 lines (78 loc) · 1.56 KB
/
Makefile
File metadata and controls
96 lines (78 loc) · 1.56 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
#
# Compiler flags
#
CC = gcc
CPPFLAGS = -g -Wall -Wextra
LDLIBS =
#
# Project files
#
SRCS = \
test.c
OBJS = $(SRCS:.c=.o)
HEADERS = wrslog.h
TESTEXE = testlog
TESTEXEMT = testlogmt
TESTEXENL = testnolog
#
# log build settings
#
OBJDIR = obj
TESTOBJS = $(addprefix $(OBJDIR)/, $(OBJS))
TESTCPPFLAGS = $(CPPFLAGS)
#
# log multithreaded settings
#
OBJDIRMT = objmt
TESTOBJSMT = $(addprefix $(OBJDIRMT)/, $(OBJS))
TESTCPPFLAGSMT = $(CPPFLAGS) -D__WRSLOG_PTHREAD -pthread
#
# nolog build settings
#
OBJDIRNL = objnl
TESTOBJSNL = $(addprefix $(OBJDIRNL)/, $(OBJS))
TESTCPPFLAGSNL = $(CPPFLAGS) -D__WRSLOG_DISABLE
.PHONY: all prep remake clean test testmt testnl
# Default build
all: prep test testmt testnl
#
# log rules
#
test: prep
test: $(TESTEXE)
$(TESTEXE): $(TESTOBJS)
$(CC) $(TESTOBJS) -o $(TESTEXE) $(LDLIBS)
$(OBJDIR)/%.o: prep
$(OBJDIR)/%.o: %.c
$(CC) -c $(TESTCPPFLAGS) -o $@ $<
$(TESTOBJS): $(HEADERS)
#
# log multithreaded rules
#
testmt: prep
testmt: $(TESTEXEMT)
$(TESTEXEMT): $(TESTOBJSMT)
$(CC) $(TESTOBJSMT) -o $(TESTEXEMT) $(LDLIBS) -pthread
$(OBJDIRMT)/%.o: prep
$(OBJDIRMT)/%.o: %.c
$(CC) -c $(TESTCPPFLAGSMT) -o $@ $<
$(TESTOBJSMT): $(HEADERS)
#
# nolog rules
#
testnl: prep
testnl: $(TESTEXENL)
$(TESTEXENL): $(TESTOBJSNL)
$(CC) $(TESTOBJSNL) -o $(TESTEXENL) $(LDLIBS)
$(OBJDIRNL)/%.o: prep
$(OBJDIRNL)/%.o: %.c
$(CC) -c $(TESTCPPFLAGSNL) -o $@ $<
$(TESTOBJSNL): $(HEADERS)
#
# Other rules
#
prep:
@mkdir -p $(OBJDIR) $(OBJDIRMT) $(OBJDIRNL)
remake: clean all
clean:
rm -f $(TESTEXE) $(TESTOBJS) $(TESTEXEMT) $(TESTOBJSMT) $(TESTEXENL) $(TESTOBJSNL)