[6] | 1 | #----------------------------------------------------------
|
---|
| 2 | # platform
|
---|
| 3 | #----------------------------------------------------------
|
---|
[53] | 4 | PLATFORM = 64
|
---|
| 5 | DEBUG = true
|
---|
[6] | 6 |
|
---|
[53] | 7 | #----------------------------------------------------------
|
---|
| 8 | # load system info
|
---|
| 9 | #----------------------------------------------------------
|
---|
| 10 | ifeq ($(PLATFORM), 64)
|
---|
[6] | 11 | PLATFORM = -m64
|
---|
| 12 | else
|
---|
| 13 | PLATFORM = -m32
|
---|
| 14 | endif
|
---|
| 15 |
|
---|
[53] | 16 | UNAME_A := $(shell uname -a)
|
---|
| 17 | EXT_SHARED = so
|
---|
| 18 | EXT_STATIC = a
|
---|
| 19 |
|
---|
| 20 | ifeq ($(findstring CYGWIN,$(UNAME_A)),CYGWIN)
|
---|
| 21 | # forced
|
---|
| 22 | PLATFORM = -m32
|
---|
| 23 | EXT_SHARED = dll
|
---|
| 24 | EXT_STATIC = lib
|
---|
| 25 | endif
|
---|
| 26 |
|
---|
[51] | 27 | ifeq ($(DEBUG), true)
|
---|
| 28 | DEFS = -D_DEBUG
|
---|
[53] | 29 | FLAG = -g
|
---|
[51] | 30 | else
|
---|
| 31 | DEFS =
|
---|
[53] | 32 | FLAG =
|
---|
[51] | 33 | endif
|
---|
| 34 |
|
---|
[6] | 35 | #----------------------------------------------------------
|
---|
| 36 | # env
|
---|
| 37 | #----------------------------------------------------------
|
---|
| 38 | FILES = \
|
---|
[19] | 39 | CRXException \
|
---|
[46] | 40 | CRXHttpHeader \
|
---|
[6] | 41 | CRXHttpRequest \
|
---|
| 42 | CRXHttpResponse \
|
---|
| 43 | CRXSocket \
|
---|
[10] | 44 | CRXMutex \
|
---|
[29] | 45 | CRXFilter \
|
---|
[19] | 46 | CRXProxy \
|
---|
[6] | 47 |
|
---|
[51] | 48 | LIB_NAME = cheroxy
|
---|
| 49 |
|
---|
[6] | 50 | CXX = g++
|
---|
| 51 | LD = g++
|
---|
[51] | 52 | AR = ar
|
---|
| 53 | CXXDEFS = -DLINUX -DUNIX -DMTHREAD -D_REENTRANT $(DEFS)
|
---|
| 54 | CXXFLAGS = $(PLATFORM) -Wall -Wpointer-arith -Wcast-align -fPIC -Wno-non-virtual-dtor \
|
---|
| 55 | -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy \
|
---|
| 56 | -fno-rtti -fno-common -fno-exceptions -fshort-wchar \
|
---|
[53] | 57 | -O2 $(FLAG)
|
---|
[6] | 58 | LDFLAGS = $(PLATFORM)
|
---|
| 59 | SHARED_FLAGS = $(PLATFORM) -shared
|
---|
[51] | 60 | ARFLAGS = rc
|
---|
[6] | 61 |
|
---|
| 62 | SOURCE_TYPE = cpp
|
---|
| 63 | TARGET_PATH = ../_build
|
---|
| 64 | OBJ_PATH = ../_obj
|
---|
[53] | 65 | TARGET = $(TARGET_PATH)/lib$(LIB_NAME).$(EXT_SHARED)
|
---|
[6] | 66 | SRCS = $(addsuffix .$(SOURCE_TYPE),$(FILES))
|
---|
| 67 | OBJS = $(addprefix $(OBJ_PATH)/,$(addsuffix .o,$(FILES)))
|
---|
| 68 |
|
---|
| 69 | INCLUDES = -I../include
|
---|
[51] | 70 | LIBS =
|
---|
[6] | 71 |
|
---|
| 72 | #----------------------------------------------------------
|
---|
| 73 | # label
|
---|
| 74 | #----------------------------------------------------------
|
---|
| 75 | all: $(OBJ_PATH) $(TARGET_PATH) $(TARGET)
|
---|
| 76 | @echo ========== Complete CHEROXY compilation ==========
|
---|
| 77 | $(TARGET_PATH): dummy
|
---|
| 78 | @if [ ! -d $@ ] ; then mkdir $@ ; fi
|
---|
| 79 | $(OBJ_PATH): dummy
|
---|
| 80 | @if [ ! -d $@ ] ; then mkdir $@ ; fi
|
---|
| 81 |
|
---|
| 82 | # link
|
---|
[53] | 83 | $(TARGET_PATH)/%.$(EXT_SHARED): $(OBJS)
|
---|
[51] | 84 | $(LD) $(SHARED_FLAGS) -o $@ $?
|
---|
[6] | 85 |
|
---|
[53] | 86 | $(TARGET_PATH)/%.$(EXT_STATIC): $(OBJS)
|
---|
[51] | 87 | $(AR) $(ARFLAGS) -o $@ $?
|
---|
| 88 |
|
---|
[6] | 89 | # compile
|
---|
| 90 | $(OBJ_PATH)/%.o: %.$(SOURCE_TYPE)
|
---|
[51] | 91 | $(CXX) $(CXXFLAGS) $(CXXDEFS) $(INCLUDES) -o $@ -c $?
|
---|
[6] | 92 |
|
---|
| 93 | clean: dummy
|
---|
| 94 | rm -rf $(TARGET_PATH) $(OBJ_PATH)
|
---|
| 95 |
|
---|
| 96 | dummy:
|
---|
| 97 |
|
---|
[33] | 98 | # test
|
---|
[51] | 99 | test: all
|
---|
| 100 | $(CXX) $(CXXFLAGS) $(INCLUDES) $(CXXDEFS) -o $(OBJ_PATH)/main.o -c main.cpp
|
---|
| 101 | $(LD) $(LDFLAGS) -o $(TARGET_PATH)/cheroxy.ex $(OBJ_PATH)/main.o -L$(TARGET_PATH) -lcheroxy -lpthread
|
---|
| 102 | cd $(TARGET_PATH); LD_LIBRARY_PATH=. ./cheroxy.ex
|
---|
[6] | 103 |
|
---|