#---------------------------------------------------------- # platform #---------------------------------------------------------- PLATFORM = 64 DEBUG = true #---------------------------------------------------------- # load system info #---------------------------------------------------------- ifeq ($(PLATFORM), 64) PLATFORM = -m64 else PLATFORM = -m32 endif UNAME_A := $(shell uname -a) EXT_SHARED = so EXT_STATIC = a ifeq ($(findstring CYGWIN,$(UNAME_A)),CYGWIN) # forced PLATFORM = -m32 EXT_SHARED = dll EXT_STATIC = lib endif ifeq ($(DEBUG), true) DEFS = -D_DEBUG FLAG = -g else DEFS = FLAG = endif #---------------------------------------------------------- # env #---------------------------------------------------------- FILES = \ CRXException \ CRXHttpHeader \ CRXHttpRequest \ CRXHttpResponse \ CRXSocket \ CRXMutex \ CRXFilter \ CRXProxy \ LIB_NAME = cheroxy CXX = g++ LD = g++ AR = ar CXXDEFS = -DLINUX -DUNIX -DMTHREAD -D_REENTRANT $(DEFS) CXXFLAGS = $(PLATFORM) -Wall -Wpointer-arith -Wcast-align -fPIC -Wno-non-virtual-dtor \ -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy \ -fno-rtti -fno-common -fno-exceptions -fshort-wchar \ -O2 $(FLAG) LDFLAGS = $(PLATFORM) SHARED_FLAGS = $(LDFLAGS) -shared ARFLAGS = rc SOURCE_TYPE = cpp TARGET_PATH = ../_build OBJ_PATH = ../_obj TARGET = $(TARGET_PATH)/lib$(LIB_NAME).$(EXT_SHARED) SRCS = $(addsuffix .$(SOURCE_TYPE),$(FILES)) OBJS = $(addprefix $(OBJ_PATH)/,$(addsuffix .o,$(FILES))) INCLUDES = -I../include LIBS = #---------------------------------------------------------- # label #---------------------------------------------------------- all: $(OBJ_PATH) $(TARGET_PATH) $(TARGET) @echo ========== Complete CHEROXY compilation ========== $(TARGET_PATH): dummy @if [ ! -d $@ ] ; then mkdir $@ ; fi $(OBJ_PATH): dummy @if [ ! -d $@ ] ; then mkdir $@ ; fi # link $(TARGET_PATH)/%.$(EXT_SHARED): $(OBJS) $(LD) $(SHARED_FLAGS) -o $@ $? $(TARGET_PATH)/%.$(EXT_STATIC): $(OBJS) $(AR) $(ARFLAGS) -o $@ $? # compile $(OBJ_PATH)/%.o: %.$(SOURCE_TYPE) $(CXX) $(CXXFLAGS) $(CXXDEFS) $(INCLUDES) -o $@ -c $? clean: dummy rm -rf $(TARGET_PATH) $(OBJ_PATH) dummy: # test test: all $(CXX) $(CXXFLAGS) $(INCLUDES) $(CXXDEFS) -o $(OBJ_PATH)/main.o -c main.cpp $(LD) $(LDFLAGS) -o $(TARGET_PATH)/cheroxy.ex $(OBJ_PATH)/main.o -L$(TARGET_PATH) -lcheroxy -lpthread cd $(TARGET_PATH); LD_LIBRARY_PATH=. ./cheroxy.ex