-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
52 lines (38 loc) · 1.22 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
SRC := ./src
OBJ := ./obj
BIN := ./bin
SERVER_SRCS := $(wildcard $(SRC)/server/*.c)
CLIENT_SRCS := $(wildcard $(SRC)/client/*.c)
PROTO_SRCS := $(wildcard $(SRC)/trprotocol/*.c)
SERVER_DEPS := $(wildcard $(SRC)/server/*.h)
CLIENT_DEPS := $(wildcard $(SRC)/client/*.h)
PROTO_DEPS := $(wildcard $(SRC)/trprotocol/*.h)
SERVER_OBJS := $(patsubst $(SRC)/server/%.c, $(OBJ)/server/%.o, $(SERVER_SRCS))
CLIENT_OBJS := $(patsubst $(SRC)/client/%.c, $(OBJ)/client/%.o, $(CLIENT_SRCS))
PROTO_OBJS := $(patsubst $(SRC)/trprotocol/%.c, $(OBJ)/trprotocol/%.o, $(PROTO_SRCS))
SERVER := $(BIN)/server
CLIENT := $(BIN)/client
LINKS = -lncurses
all: SERVER CLIENT
SERVER: $(SERVER_OBJS) $(PROTO_OBJS)
mkdir -p $(BIN)
gcc -g -o $(SERVER) $^
CLIENT: $(CLIENT_OBJS) $(PROTO_OBJS)
mkdir -p $(BIN)
gcc -g -o $(CLIENT) $^ $(LINKS)
$(OBJ)/server/%.o: $(SRC)/server/%.c $(SERVER_DEPS) $(PROTO_DEPS)
mkdir -p $(OBJ)/server
gcc -g -o $@ -c $<
$(OBJ)/client/%.o: $(SRC)/client/%.c $(CLIENT_DEPS) $(PROTO_DEPS)
mkdir -p $(OBJ)/client
gcc -g -o $@ -c $<
$(OBJ)/trprotocol/%.o: $(SRC)/trprotocol/%.c $(PROTO_DEPS)
mkdir -p $(OBJ)/trprotocol
gcc -g -o $@ -c $<
server: $(SERVER)
$(SERVER)
client: $(CLIENT)
$(CLIENT)
clean:
rm -r $(OBJ)
rm -r $(BIN)