This repository was archived by the owner on Sep 4, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
78 lines (72 loc) · 1.73 KB
/
Makefile
File metadata and controls
78 lines (72 loc) · 1.73 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
CC = c++
LXXFLAGS =
RUNFLAGS =
# MAKEFLAGS += -j$(NPROCS)
EXE_DIR =
ROOT = irc-serv/
NAME = ircserv
TEST = irctest
LIB = $(ROOT)/lib
CMD_DIR = $(ROOT)/cmd
SRC_DIR = $(ROOT)/src
INC_DIR = $(ROOT)/inc
INCS = $(wildcard $(INC_DIR)/*.tpp) $(wildcard $(INC_DIR)/*.hpp) $(wildcard $(INC_DIR)/*.h)
OBJ_DIR = .
SRCS = $(wildcard $(SRC_DIR)/*.cpp)
OBJS = $(SRCS:%.cpp=%.o)
CMD_IRCSERV = $(CMD_DIR)/$(NAME).o
CMD_IRCTEST = $(CMD_DIR)/$(TEST).o
CMDS = $(CMD_IRCSERV) $(CMD_IRCTEST)
DEPENDENCIES =
CXXFLAGS = -Wc99-designator -std=c++98 -pedantic -I $(INC_DIR)
os = ${shell uname -s}
ifeq '$(os)' 'Darwin'
NPROCS = $(shell sysctl -n hw.ncpu)
else ifeq '$(os)' 'Linux'
NPROCS = $(shell nproc)
endif
# MAKEFLAGS += -j$(NPROCS)
gnu = 0
ifeq '$(gnu)' '1'
CXXFLAGS += $(stdcxx_cxxflags)
LXXFLAGS += $(stdcxx_lxxflags)
endif
w = 1
ifeq '$(w)' '1'
CXXFLAGS += -Wextra -Werror -Wall
endif
debug = 1
ifeq '$(debug)' '1'
CXXFLAGS += -g
endif
asan = 0
ifeq '$(asan)' '1'
RUNFLAGS += ASAN_OPTIONS='detect_leaks=1'
LXXFLAGS += -fsanitize=address #-lasan
# LXXFLAGS += -fsanitize=thread
endif
test = 0
ifeq '$(test)' '1'
./$(attest) .
endif
%.o: %.cpp
$(CC) $(CXXFLAGS) -c $< -o $@
all: $(DEPENDENCIES)
@$(MAKE) $(NAME) $(TEST)
$(NAME): $(OBJS) $(CMD_IRCSERV) $(INCS)
$(CC) $(LXXFLAGS) $(CMD_IRCSERV) $(OBJS) -o $(NAME)
$(TEST): $(OBJS) $(CMD_IRCTEST) $(INCS)
$(CC) $(LXXFLAGS) $(CMD_IRCTEST) $(OBJS) -o $(TEST)
run: all
$(RUNFLAGS) ./$(NAME) 6667 arst $(args)
test: all
$(RUNFLAGS) ./$(TEST) $(args)
down:
lsof -c ircserv -sTCP:LISTEN | grep 'IPv4' | awk '{print $$2}' | xargs -I @ kill -9 @
clean:
$(RM) $(OBJS) $(B_OBJ) $(CMDS)
fclean: clean
$(RM) $(NAME) $(TEST) & wait
re: fclean
$(MAKE) all
.PHONY: all clean fclean re run