-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
88 lines (68 loc) · 2.09 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
CPPC=g++
NORMAL_FLAGS := -std=c++14
PEDANTIC_FLAGS := -g
RM=rm
ifeq ($(DEBUG),1)
CPPFLAGS := $(NORMAL_FLAGS) $(PEDANTIC_FLAGS)
else
CPPFLAGS := $(NORMAL_FLAGS) -O3
endif
ifneq ($(OS),Windows_NT)
uname_os := $(shell uname)
ifneq ($(uname_os),Darwin)
CPPFLAGS += -I/usr/include/kqueue
LFLAGS += -lkqueue -lpthread
endif
endif
SRC_SERVER := src/server.cpp
SRC_CLIENT := src/client.cpp
SRC_CLIENTMGR := src/clientmgr.cpp
ifeq ($(PROTO), TCP)
SRC_SERVER += src/client_connection_tcp.cpp src/server_tcp.cpp
SRC_CLIENT += src/client_tcp.cpp
SRC_CLIENTMGR += src/client_tcp.cpp
SERVER := bin/server_tcp
CLIENT := bin/client_tcp
CLIENTMGR := bin/clientmgr_tcp
else
SRC_SERVER += src/client_connection_udp.cpp src/server_udp.cpp
SRC_CLIENT += src/client_udp.cpp
SRC_CLIENTMGR += src/client_udp.cpp
SERVER := bin/server_udp
CLIENT := bin/client_udp
CLIENTMGR := bin/clientmgr_udp
endif
OBJ_SERVER := $(patsubst src/%.cpp, obj/%.o, $(SRC_SERVER))
DEP_SERVER := $(patsubst src/%.cpp, obj/%.d, $(SRC_SERVER))
OBJ_CLIENT := $(patsubst src/%.cpp, obj/%.o, $(SRC_CLIENT))
DEP_CLIENT := $(patsubst src/%.cpp, obj/%.d, $(SRC_CLIENT))
OBJ_CLIENTMGR := $(patsubst src/%.cpp, obj/%.o, $(SRC_CLIENTMGR))
DEP_CLIENTMGR := $(patsubst src/%.cpp, obj/%.d, $(SRC_CLIENTMGR))
INC := #-I./include/
all: $(SERVER) $(CLIENT) $(CLIENTMGR)
server: $(SERVER)
client: $(CLIENT)
package: $(SERVER) $(CLIENT) $(CLIENTMGR)
mkdir -p build
mkdir -p build/trickle_proj
mkdir -p build/trickle_proj/res
cp -r src build/trickle_proj
cp -r res build/trickle_proj
cp Makefile build/trickle_proj
cp writeup/writeup.pdf build/trickle.pdf
cp trickle_demo.sh build/
cd build && zip -r trickle.zip *
$(SERVER): $(OBJ_SERVER)
$(CPPC) $(CPPFLAGS) $(INC) $(LIB) $^ -o $@ $(LFLAGS)
$(CLIENT): $(OBJ_CLIENT)
$(CPPC) $(CPPFLAGS) $(INC) $(LIB) $^ -o $@ $(LFLAGS)
$(CLIENTMGR): $(OBJ_CLIENTMGR)
$(CPPC) $(CPPFLAGS) $(INC) $(LIB) $^ -o $@ $(LFLAGS)
-include $(DEP_SERVER)
-include $(DEP_CLIENT)
obj/%.o: src/%.cpp Makefile
$(CPPC) $(CPPFLAGS) -MMD -MP $(INC) $(LIB) -c $< -o $@ $(LFLAGS)
clean:
$(RM) obj/* bin/*
$(RM) -r build/*
bin/%.o: src/%.cpp