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 \ 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 \ SentinelServerPool.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)