1ALL += $(TARGET) $(PROGRAMS) 2 3all: $(ALL) 4 5OS:=$(shell uname) 6 7CXXFLAGS += -O2 -W -Wall -I$(DIRLEVEL) 8 9ifeq ($(OS),Linux) 10CXX = g++ 11endif 12 13ifeq ($(OS),Darwin) 14CXX ?= c++ 15CXXFLAGS += -x objective-c++ 16LIBS += -framework Foundation -framework ApplicationServices 17endif 18 19ifeq ($(OS),OpenBSD) 20#CXX = ec++ 21CXX = clang++ 22endif 23 24ifeq ($(OS),FreeBSD) 25CXX ?= c++ 26endif 27 28ifeq ($(OS),NetBSD) 29CXX = clang++ 30CXXFLAGS += -I/usr/pkg/include 31LIBS += -Wl,-R/usr/pkg/lib -L/usr/pkg/lib 32endif 33 34CXXFLAGS += -std=c++11 35 36LINK ?= $(CXX) 37 38ifeq ($(STATIC),1) 39LDFLAGS += -static-libstdc++ 40endif 41 42ifeq ($(STATIC),2) 43LDFLAGS += -static -static-libstdc++ 44endif 45 46ifneq ($(findstring clang,$(CXX)),) 47CXXFLAGS += -Weverything -Wno-c++98-compat -Wno-exit-time-destructors \ 48 -Wno-global-constructors -Wno-padded -Wno-disabled-macro-expansion \ 49 -Wno-float-equal 50endif 51 52ifeq ($(CXX),g++) 53CXXFLAGS += --pedantic -Wextra 54endif 55 56ifeq ($(GNUTLS),1) 57CXXFLAGS += -DUSE_GNUTLS -I/usr/local/include 58LIBS += -L/usr/local/lib -lgnutls 59endif 60ifeq ($(THREADS),1) 61CXXFLAGS += -DUSE_THREADS 62LIBS += -lpthread 63endif 64ifeq ($(LOGLEVEL),) 65LOGLEVEL=info 66endif 67ifeq ($(LOGLEVEL),err) 68CXXFLAGS += -DTASKRUNNER_LOGERR 69endif 70ifeq ($(LOGLEVEL),warn) 71CXXFLAGS += -DTASKRUNNER_LOGWARN -DTASKRUNNER_LOGERR 72endif 73ifeq ($(LOGLEVEL),info) 74CXXFLAGS += -DTASKRUNNER_LOGERR -DTASKRUNNER_LOGWARN -DTASKRUNNER_LOGINFO 75endif 76ifeq ($(LOGLEVEL),dbg) 77CXXFLAGS += -DTASKRUNNER_LOGERR -DTASKRUNNER_LOGWARN 78CXXFLAGS += -DTASKRUNNER_LOGINFO -DTASKRUNNER_LOGDBG 79endif 80ifeq ($(SANDBOXED),1) 81CXXFLAGS += -DIS_SANDBOXED 82endif 83 84SOURCES += \ 85 $(DIRLEVEL)/framework/task.cpp \ 86 $(DIRLEVEL)/framework/taskconfig.cpp \ 87 $(DIRLEVEL)/framework/engine.cpp \ 88 $(DIRLEVEL)/framework/eventloop.cpp \ 89 $(DIRLEVEL)/framework/socket.cpp \ 90 $(DIRLEVEL)/framework/socketconnection.cpp \ 91 $(DIRLEVEL)/framework/serversocket.cpp \ 92 $(DIRLEVEL)/framework/socketreceiver.cpp \ 93 $(DIRLEVEL)/framework/logger.cpp \ 94 $(DIRLEVEL)/framework/bridgetask.cpp \ 95 $(DIRLEVEL)/framework/synchronousbridge.cpp 96 97OPT_SOURCES += \ 98 $(DIRLEVEL)/framework/shortmessageconnection.cpp \ 99 $(DIRLEVEL)/framework/threadbridge.cpp \ 100 $(DIRLEVEL)/framework/unixdomainbridge.cpp \ 101 $(DIRLEVEL)/framework/unixdomainclient.cpp \ 102 $(DIRLEVEL)/framework/loadbalancer.cpp 103 104OBJ=$(SOURCES:.cpp=.o) 105EXTRA_OBJ=$(EXTRA_SOURCES:.cpp=.o) 106OPT_OBJ=$(OPT_SOURCES:.cpp=.o) 107 108%.d: %.cpp 109 $(CXX) -MM $(CXXFLAGS) -MT $(@:.d=.o) $< > $@ 110 111%.o: %.cpp 112 $(CXX) $(CXXFLAGS) -c $< -o $@ 113 114$(TARGET): $(OBJ) 115 $(CXX) $(LDFLAGS) -o $@ $^ $(LIBS) 116 117$(PROGRAMS): 118 $(CXX) $(LDFLAGS) -o $@ $^ $(LIBS) 119 120ifneq ($(MAKECMDGOALS),clean) 121include $(SOURCES:.cpp=.d) $(EXTRA_SOURCES:.cpp=.d) 122endif 123 124clean: 125 $(RM) $(CLEAN) $(TARGET) $(OBJ) $(OPT_OBJ) $(EXTRA_OBJ) *~ \ 126 $(SOURCES:.cpp=.d) $(EXTRA_SOURCES:.cpp=.d) $(PROGRAMS) 127