1 | #----------------------------------------------------------
|
---|
2 | # platform
|
---|
3 | #----------------------------------------------------------
|
---|
4 | PLATFORM = 64
|
---|
5 | DEBUG = true
|
---|
6 |
|
---|
7 | #----------------------------------------------------------
|
---|
8 | # load system info
|
---|
9 | #----------------------------------------------------------
|
---|
10 | ifeq ($(PLATFORM), 64)
|
---|
11 | PLATFORM = -m64
|
---|
12 | else
|
---|
13 | PLATFORM = -m32
|
---|
14 | endif
|
---|
15 |
|
---|
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 |
|
---|
27 | ifeq ($(DEBUG), true)
|
---|
28 | DEFS = -D_DEBUG
|
---|
29 | FLAG = -g
|
---|
30 | else
|
---|
31 | DEFS =
|
---|
32 | FLAG =
|
---|
33 | endif
|
---|
34 |
|
---|
35 | #----------------------------------------------------------
|
---|
36 | # env
|
---|
37 | #----------------------------------------------------------
|
---|
38 | FILES = \
|
---|
39 | CRXException \
|
---|
40 | CRXHttpHeader \
|
---|
41 | CRXHttpRequest \
|
---|
42 | CRXHttpResponse \
|
---|
43 | CRXSocket \
|
---|
44 | CRXMutex \
|
---|
45 | CRXFilter \
|
---|
46 | CRXProxy \
|
---|
47 |
|
---|
48 | LIB_NAME = cheroxy
|
---|
49 |
|
---|
50 | CXX = g++
|
---|
51 | LD = g++
|
---|
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 \
|
---|
57 | -O2 $(FLAG)
|
---|
58 | LDFLAGS = $(PLATFORM)
|
---|
59 | SHARED_FLAGS = $(LDFLAGS) -shared
|
---|
60 | ARFLAGS = rc
|
---|
61 |
|
---|
62 | SOURCE_TYPE = cpp
|
---|
63 | TARGET_PATH = ../_build
|
---|
64 | OBJ_PATH = ../_obj
|
---|
65 | TARGET = $(TARGET_PATH)/lib$(LIB_NAME).$(EXT_SHARED)
|
---|
66 | SRCS = $(addsuffix .$(SOURCE_TYPE),$(FILES))
|
---|
67 | OBJS = $(addprefix $(OBJ_PATH)/,$(addsuffix .o,$(FILES)))
|
---|
68 |
|
---|
69 | INCLUDES = -I../include
|
---|
70 | LIBS =
|
---|
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
|
---|
83 | $(TARGET_PATH)/%.$(EXT_SHARED): $(OBJS)
|
---|
84 | $(LD) $(SHARED_FLAGS) -o $@ $?
|
---|
85 |
|
---|
86 | $(TARGET_PATH)/%.$(EXT_STATIC): $(OBJS)
|
---|
87 | $(AR) $(ARFLAGS) -o $@ $?
|
---|
88 |
|
---|
89 | # compile
|
---|
90 | $(OBJ_PATH)/%.o: %.$(SOURCE_TYPE)
|
---|
91 | $(CXX) $(CXXFLAGS) $(CXXDEFS) $(INCLUDES) -o $@ -c $?
|
---|
92 |
|
---|
93 | clean: dummy
|
---|
94 | rm -rf $(TARGET_PATH) $(OBJ_PATH)
|
---|
95 |
|
---|
96 | dummy:
|
---|
97 |
|
---|
98 | # test
|
---|
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
|
---|
103 |
|
---|