1 # # # # # # # # # # # # # # # # # # # # #
2 # environment variables:
3 # $INCLUDE_PATH is a colon-delimited list of include directories
4 # $ORACLE_HOME is the path to the Oracle installation
7 SPACE_CHAR
=$(empty
) $(empty
)
9 EXCLUDE_CHAR_TRAITS
=EXCLUDE
10 ORACLE_HOME
=/opt
/app
/oracle
/product
/9.2.0
12 # # # # # # # # # # # # # # # # # # # # #
14 OUTPUT_FILE
=VChatUnitTest
18 UTILS_BASE
=..
/..
/..
/utils2.0
19 UTILS_DIR
=$(UTILS_BASE
)/utils
20 ORACLE_INCLUDE_DIRS
=$(ORACLE_HOME
)/rdbms
/demo
$(ORACLE_HOME
)/rdbms
/public
$(ORACLE_HOME
)/network
/public
21 XML_DIR
=$(UTILS_DIR
)/XMLLibrary
22 INCLUDE_DIRS
=$(ORACLE_INCLUDE_DIRS
) $(UTILS_DIR
) ..
/VChatAPI
$(XML_DIR
) ..
/ ..
/..
/..
/..
/..
/stlport453
/stlport
26 LIBRARY_DIRS
=$(UTILS_DIR
)/SoeMon3AgentAPI
/monapi
/lib
$(UTILS_DIR
)/SSLLibrary
/openssl
/lib
/Debug
27 LIBRARY_DIRS_DEBUG
=$(ORACLE_HOME
)/lib
$(UTILS_BASE
)/lib
/debug ..
/lib
/debug
$(LIBRARY_DIRS
)
28 LIBRARY_DIRS_RELEASE
=$(ORACLE_HOME
)/lib
$(UTILS_BASE
)/lib
/release ..
/lib
/release
$(LIBRARY_DIRS
)
29 LIBRARY_FILES
=Base_MT Resources_MT TcpLibrary_MT UdpLibrary_MT OracleDB_MT clntsh pthread ssl SSLSocket_MT SoeMonApi3 xml2 VChatAPI_MT AES_MT
30 LIBSRC_DIRS
=$(addprefix $(UTILS_DIR
)/, Base OracleDB SSLLibrary TcpLibrary UdpLibrary AES Resources
) ..
/VChatAPI
32 CFLAGS_USER
=-D_REENTRANT
35 # # # # # # # # # # # # # # # # # # # # #
37 INCLUDE_DIR_LIST
=$(subst $(COLON_CHAR
),$(SPACE_CHAR
),$(INCLUDE_PATH
)) $(INCLUDE_DIRS
)
38 INCLUDE_FLAGS
=$(addprefix -I
,$(INCLUDE_DIR_LIST
))
39 CFLAGS
=$(INCLUDE_FLAGS
) $(CFLAGS_USER
) -D_GNU_SOURCE
-Wall
-Wno-unknown-pragmas
-DAPI_NAMESPACE
="VChatSystem"
40 CFLAGS_DEBUG
=$(CFLAGS
) -D_DEBUG
-g
41 CFLAGS_RELEASE
=$(CFLAGS
) -DNDEBUG
-O2
43 LIBRARY_FLAGS_DEBUG
=$(addprefix -l
,$(LIBRARY_FILES
)) $(addprefix -L
,$(LIBRARY_DIRS_DEBUG
))
44 LIBRARY_FLAGS_RELEASE
=$(addprefix -l
,$(LIBRARY_FILES
)) $(addprefix -L
,$(LIBRARY_DIRS_RELEASE
))
45 LFLAGS_DEBUG
=$(LIBRARY_FLAGS_DEBUG
) $(LFLAGS_USER
)
46 LFLAGS_RELEASE
=$(LIBRARY_FLAGS_RELEASE
) $(LFLAGS_USER
)
51 # # # # # # # # # # # # # # # # # # # # #
53 DEBUG_OBJ_DIR
=$(OBJECT_DIR
)/debug
54 RELEASE_OBJ_DIR
=$(OBJECT_DIR
)/release
56 DEBUG_DIR
=$(OUTPUT_DIR
)/debug
57 RELEASE_DIR
=$(OUTPUT_DIR
)/release
59 #FIND=$(shell ls $(x)/*.cpp)
60 FIND
=$(shell ls
$(x
)/*.
cpp | if
[ "$(EXCLUDED_SOURCE_FILES)" != "" ]; then egrep
-v
"$(EXCLUDED_SOURCE_FILES)"; else egrep
"*"; fi
)
61 SOURCE_LIST
= $(SOURCE_FILES
) $(foreach x
, $(SOURCE_DIRS
), $(FIND
))
63 DEBUG_OBJ_LIST
=$(addprefix $(DEBUG_OBJ_DIR
)/, $(notdir $(SOURCE_LIST
:.
cpp=.o
)))
64 RELEASE_OBJ_LIST
=$(addprefix $(RELEASE_OBJ_DIR
)/, $(notdir $(SOURCE_LIST
:.
cpp=.o
)))
66 MK_DEBUG_DIRS
=$(shell if
[ ! -d
$(DEBUG_OBJ_DIR
) ]; then mkdir
-p
$(DEBUG_OBJ_DIR
) $(DEBUG_DIR
); fi
)
67 MK_RELEASE_DIRS
=$(shell if
[ ! -d
$(RELEASE_OBJ_DIR
) ]; then mkdir
-p
$(RELEASE_OBJ_DIR
) $(RELEASE_DIR
); fi
)
68 # # # # # # # # # # # # # # # # # # # # #
70 release
: echoRelease releaseDirs libsrelease
$(RELEASE_DIR
)/$(OUTPUT_FILE
)
71 @echo Successfully built
$(RELEASE_DIR
)/$(OUTPUT_FILE
)
74 debug
: debugDirs libsdebug
$(DEBUG_DIR
)/$(OUTPUT_FILE
)
75 @echo Successfully built
$(DEBUG_DIR
)/$(OUTPUT_FILE
)
83 # # # # # # # # # # # # # # # # # # # # #
86 @mkdir
-p
$(DEBUG_OBJ_DIR
)
87 @mkdir
-p
$(DEBUG_DIR
)
89 $(DEBUG_OBJ_DIR
)/%.o
: $(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
90 $(CPP
) $(CFLAGS_DEBUG
) -o
$@
-c
$(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
92 $(DEBUG_DIR
)/$(OUTPUT_FILE
): $(DEBUG_OBJ_LIST
)
93 $(LINK
) $(LFLAGS_DEBUG
) -o
$@
$(DEBUG_OBJ_LIST
)
95 $(DEBUG_OBJ_DIR
)/MTDatabaseResourceManager.d
: ..
/..
/..
/utils
/GenericServer
/ReusableResourceManagers
/MTDatabaseResourceManager.
cpp
96 $(SHELL
) -ec
'$(CPP) -MT "$(DEBUG_OBJ_DIR)/$*.o $(DEBUG_OBJ_DIR)/*.d" -MM $(CFLAGS_DEBUG) $<;' > $@
98 # # # # # # # # # # # # # # # # # # # # #
101 @echo Building
$(OUTPUT_FILE
)
102 @echo compiler
: $(CPP
) $(CFLAGS_RELEASE
)
103 @echo linker
: $(LINK
) $(LFLAGS_RELEASE
)
107 # # # # # # # # # # # # # # # # # # # # #
110 @mkdir
-p
$(RELEASE_OBJ_DIR
)
111 @mkdir
-p
$(RELEASE_DIR
)
113 $(RELEASE_OBJ_DIR
)/%.o
: $(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
114 @echo compiling
$(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
115 @
$(CPP
) $(CFLAGS_RELEASE
) -o
$@
-c
$(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
117 $(RELEASE_DIR
)/$(OUTPUT_FILE
): $(RELEASE_OBJ_LIST
)
118 @echo linking
$(RELEASE_DIR
)/$(OUTPUT_FILE
)
119 @
$(LINK
) $(LFLAGS_RELEASE
) -o
$@
$(RELEASE_OBJ_LIST
)
121 $(RELEASE_OBJ_DIR
)/MTDatabaseResourceManager.d
: ..
/..
/..
/utils
/GenericServer
/ReusableResourceManagers
/MTDatabaseResourceManager.
cpp
122 $(SHELL
) -ec
'$(CPP) -MT "$(RELEASE_OBJ_DIR)/$*.o $(RELEASE_OBJ_DIR)/*.d" -MM $(CFLAGS_RELEASE) $<;' > $@
126 # # # # # # # # # # # # # # # # # # # # #
129 # @echo removing "$(OBJECT_DIR)/*.o"
130 rm -rf
$(DEBUG_OBJ_DIR
)/*.o
131 rm -rf
$(RELEASE_OBJ_DIR
)/*.o
132 @echo removing
$(DEBUG_DIR
)/$(OUTPUT_FILE
)
133 @
rm -f
$(DEBUG_DIR
)/$(OUTPUT_FILE
)
134 @echo removing
$(RELEASE_DIR
)/$(OUTPUT_FILE
)
135 @
rm -f
$(RELEASE_DIR
)/$(OUTPUT_FILE
)
139 @echo removing dependancy files
"$(OBJECT_DIR)/*/*.d"
140 @
rm -rf
$(OBJECT_DIR
)/*/*.d
141 # # # # # # # # # # # # # # # # # # # # #
142 # rule to generate the dependency files
143 # there are 2 sets of dependency files
144 #debug object directories and release directories
145 # # # # # # # # # # # # # # # # # # # # #
146 #$(DEBUG_OBJ_DIR)/%.d: %.cpp
147 # $(SHELL) -ec '$(CPP) -MT "$(DEBUG_OBJ_DIR)/$*.o $(DEBUG_OBJ_DIR)/$*.d" -MM $(CFLAGS_DEBUG) $<;' > $@
148 #$(RELEASE_OBJ_DIR)/%.d: %.cpp
149 # $(SHELL) -ec '$(CPP) -MT "$(RELEASE_OBJ_DIR)/$*.o $(RELEASE_OBJ_DIR)/$*.d" -MM $(CFLAGS_DEBUG) $<;' > $@
150 $(DEBUG_OBJ_DIR
)/%.d
: $(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
151 @if
[ ! -d
"$(DEBUG_OBJ_DIR)" ]; then mkdir
-p
$(DEBUG_OBJ_DIR
); fi
152 $(SHELL
) -ec
'$(CPP) -MT "$(DEBUG_OBJ_DIR)/$*.o $(DEBUG_OBJ_DIR)/$*.d" -MM $(CFLAGS_DEBUG) $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST));' > $@
154 $(RELEASE_OBJ_DIR
)/%.d
: $(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
155 @if
[ ! -d
"$(RELEASE_OBJ_DIR)" ]; then mkdir
-p
$(RELEASE_OBJ_DIR
); fi
156 $(SHELL
) -ec
'$(CPP) -MT "$(RELEASE_OBJ_DIR)/$*.o $(RELEASE_OBJ_DIR)/$*.d" -MM $(CFLAGS_DEBUG) $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST));' > $@
160 # # # # # # # # # # # # # # # # # # # # #
161 -include $(DEBUG_OBJ_LIST
:.o
=.d
)
162 -include $(RELEASE_OBJ_LIST
:.o
=.d
)