source: cheroxy/trunk/src/makefile@ 51

Last change on this file since 51 was 51, checked in by cheese, 11 years ago

#1 modify makefile to seperate build script to library and test module

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