forked from joyieldInc/predixy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
114 lines (97 loc) · 1.85 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
CXX ?= g++
LVL ?= -g -O3
Opts += $(LVL)
ifeq ($(MT), false)
Opts += -D_PREDIXY_SINGLE_THREAD_
endif
ifeq ($(TS), true)
Opts += -D_PREDIXY_TIMER_STATS_
endif
EV ?= auto
LDLIBCPP = -static-libstdc++
ifeq ($(EV), auto)
plt = $(shell uname)
ifeq ($(plt), Linux)
EV = epoll
Opts += -D_PREDIXY_BACKTRACE_
else ifeq ($(plt), Darwin)
EV = kqueue
Opts += -D_PREDIXY_BACKTRACE_
LDLIBCPP = -static-libstdc++
else ifeq ($(plt), FreeBSD)
EV = kqueue
Opts += -D_PREDIXY_BACKTRACE_
LDFLAGS += $(shell pkg info -Dx gcc|grep 'rpath') -lexecinfo
else ifeq ($(plt), OpenBSD)
EV = kqueue
else
EV = poll
endif
endif
ifeq ($(EV), epoll)
multiplexor = EpollMultiplexor
Opts += -D_EPOLL_
else ifeq ($(EV), poll)
multiplexor = PollMultiplexor
Opts += -D_POLL_
else ifeq ($(EV), kqueue)
multiplexor = KqueueMultiplexor
Opts += -D_KQUEUE_
else
$(error Unknown event:$(EV))
endif
CFLAGS = -std=c++11 -Wall -w $(Opts)
INCFLAGS =
LDFLAGS += $(LDLIBCPP) -rdynamic -lpthread
target = predixy
objs = \
Crc16.o \
HashFunc.o \
Timer.o \
Logger.o \
LogFileSink.o \
Alloc.o \
Socket.o \
ListenSocket.o \
AcceptSocket.o \
ConnectSocket.o \
$(multiplexor).o \
Subscribe.o \
Connection.o \
AcceptConnection.o \
ConnectConnection.o \
Buffer.o \
Command.o \
Distribution.o \
Enums.o \
Reply.o \
ConfParser.o \
Conf.o \
Auth.o \
DC.o \
LatencyMonitor.o \
RequestParser.o \
Request.o \
ResponseParser.o \
Response.o \
Server.o \
ServerGroup.o \
ServerPool.o \
ClusterNodesParser.o \
ClusterServerPool.o \
StandaloneServerPool.o \
ConnectConnectionPool.o \
Handler.o \
Proxy.o \
main.o
.PHONY : default debug clean
default: $(target)
$(target): $(objs)
$(CXX) $(CFLAGS) -o $@ $^ $(LDFLAGS)
debug:
@make LVL=-g
clean:
@rm -rf $(objs) $(target)
@echo Done.
%.o : %.cpp
$(CXX) $(CFLAGS) -c $^ $(INCFLAGS)