-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
65 lines (52 loc) · 2.01 KB
/
Makefile
File metadata and controls
65 lines (52 loc) · 2.01 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
#CC = clang
CFLAGS = -Ipingpong_lib
#CFLAGS = -DDEBUG -g3 -O0 -Ipingpong_lib
BIN_DIR = bin
DATA_DIR = data
LDFLAGS = -L$(BIN_DIR) -lpingpong -lrt
PINGPONG_LIB=$(BIN_DIR)/libpingpong.a
PONG = $(BIN_DIR)/pong_server
UDP_PING = $(BIN_DIR)/udp_ping
TCP_PING = $(BIN_DIR)/tcp_ping
PONG_OBJS = $(BIN_DIR)/pong_server.o
UDP_PING_OBJS = $(BIN_DIR)/udp_ping.o
TCP_PING_OBJS = $(BIN_DIR)/tcp_ping.o
EXECS = $(PONG) $(UDP_PING) $(TCP_PING)
all: $(EXECS)
.PHONY: clean tgz tgz-full
$(EXECS): | $(DATA_DIR)
# Common library
$(PINGPONG_LIB): $(BIN_DIR)/fail.o $(BIN_DIR)/readwrite.o $(BIN_DIR)/statistics.o | $(BIN_DIR)
ar rcs $@ $(BIN_DIR)/*.o
$(BIN_DIR)/fail.o: pingpong_lib/pingpong.h pingpong_lib/fail.c | $(BIN_DIR)
$(CC) $(CFLAGS) -c -o $@ pingpong_lib/fail.c
$(BIN_DIR)/readwrite.o: pingpong_lib/pingpong.h pingpong_lib/readwrite.c | $(BIN_DIR)
$(CC) $(CFLAGS) -c -o $@ pingpong_lib/readwrite.c
$(BIN_DIR)/statistics.o: pingpong_lib/pingpong.h pingpong_lib/statistics.c | $(BIN_DIR)
$(CC) $(CFLAGS) -c -o $@ pingpong_lib/statistics.c
# Pong server
$(PONG): $(PONG_OBJS) $(PINGPONG_LIB) | $(BIN_DIR)
$(CC) -o $@ $(PONG_OBJS) $(LDFLAGS)
$(BIN_DIR)/pong_server.o: pingpong_lib/pingpong.h pong_server/pong_server.c | $(BIN_DIR)
$(CC) $(CFLAGS) -c -o $@ pong_server/pong_server.c
# UDP Ping client
$(UDP_PING): $(UDP_PING_OBJS) $(PINGPONG_LIB) | $(BIN_DIR)
$(CC) -o $@ $(UDP_PING_OBJS) $(LDFLAGS)
$(BIN_DIR)/udp_ping.o: pingpong_lib/pingpong.h udp_ping/udp_ping.c | $(BIN_DIR)
$(CC) $(CFLAGS) -c -o $@ udp_ping/udp_ping.c
# TCP Ping client
$(TCP_PING): $(TCP_PING_OBJS) $(PINGPONG_LIB) | $(BIN_DIR)
$(CC) -o $@ $(TCP_PING_OBJS) $(LDFLAGS)
$(BIN_DIR)/tcp_ping.o: pingpong_lib/pingpong.h tcp_ping/tcp_ping.c | $(BIN_DIR)
$(CC) $(CFLAGS) -c -o $@ tcp_ping/tcp_ping.c
# Directories
$(BIN_DIR):
mkdir $(BIN_DIR)
$(DATA_DIR):
mkdir $(DATA_DIR)
# Utilities
clean:
rm -rf $(BIN_DIR)/*.o $(BIN_DIR)/lib* $(BIN_DIR)/pong* $(BIN_DIR)/tcp* $(BIN_DIR)/udp*
tgz: clean
rm -rf $(DATA_DIR)
cd ..; tar cvzf pingpong.tgz --exclude='pingpong/.idea' pingpong