1 # environment variables:
2 # $INCLUDE_PATH is a colon-delimited list of include directories
5 SPACE_CHAR
=$(empty
) $(empty
)
8 # # # # # # # # # # # # # # # # # # # # #
10 OUTPUT_FILE_ST
=libUdpLibrary.a
11 OUTPUT_FILE_MT
=libUdpLibrary_MT.a
13 OBJECT_DIR_ST
=.
/obj_st
14 OBJECT_DIR_MT
=.
/obj_mt
16 ORACLE_INCLUDE_DIRS
=$(ORACLE_HOME
)/rdbms
/demo
$(ORACLE_HOME
)/rdbms
/public
$(ORACLE_HOME
)/network
/public
17 INCLUDE_DIRS
=$(ORACLE_INCLUDE_DIRS
) ..
/
28 # # # # # # # # # # # # # # # # # # # # #
30 INCLUDE_DIR_LIST
=$(subst $(COLON_CHAR
),$(SPACE_CHAR
),$(INCLUDE_PATH
)) $(INCLUDE_DIRS
)
31 INCLUDE_FLAGS
=$(addprefix -I
,$(INCLUDE_DIR_LIST
))
32 CFLAGS_ST
=$(INCLUDE_FLAGS
) $(CFLAGS_USER
) -D_GNU_SOURCE
-Wall
-Wno-unknown-pragmas
33 CFLAGS_MT
=$(INCLUDE_FLAGS
) $(CFLAGS_USER
) -D_GNU_SOURCE
-D_REENTRANT
-Wall
-Wno-unknown-pragmas
34 CFLAGS_DEBUG_ST
=$(CFLAGS_ST
) -D_DEBUG
-g
35 CFLAGS_RELEASE_ST
=$(CFLAGS_ST
) -DNDEBUG
-O2
36 CFLAGS_DEBUG_MT
=$(CFLAGS_MT
) -D_DEBUG
-g
37 CFLAGS_RELEASE_MT
=$(CFLAGS_MT
) -DNDEBUG
-O2
39 LIBRARY_FLAGS
=$(addprefix -l
,$(LIBRARIES
))
40 LFLAGS
=$(LIBRARY_FLAGS
) $(LFLAGS_USER
) -r
41 LFLAGS_DEBUG
=$(LFLAGS
)
42 LFLAGS_RELEASE
=$(LFLAGS
)
47 EXCLUDE_FILES
=UdpDriverPS3.
cpp UdpDriverSparc.
cpp
49 # # # # # # # # # # # # # # # # # # # # #
51 DEBUG_OBJ_DIR_ST
=$(OBJECT_DIR_ST
)/debug
52 RELEASE_OBJ_DIR_ST
=$(OBJECT_DIR_ST
)/release
53 DEBUG_OBJ_DIR_MT
=$(OBJECT_DIR_MT
)/debug
54 RELEASE_OBJ_DIR_MT
=$(OBJECT_DIR_MT
)/release
56 DEBUG_DIR
=$(OUTPUT_DIR
)/debug
57 RELEASE_DIR
=$(OUTPUT_DIR
)/release
59 FIND
=$(shell ls
$(x
)/*.
cpp)
60 SOURCE_LIST
=$(filter-out $(addprefix %,$(EXCLUDE_FILES
)), $(SOURCE_FILES
) $(foreach x
, $(SOURCE_DIRS
), $(FIND
)))
62 DEBUG_OBJ_LIST_ST
=$(addprefix $(DEBUG_OBJ_DIR_ST
)/, $(filter-out MT
%.o
, $(notdir $(SOURCE_LIST
:.
cpp=.o
))))
63 RELEASE_OBJ_LIST_ST
=$(addprefix $(RELEASE_OBJ_DIR_ST
)/, $(filter-out MT
%.o
, $(notdir $(SOURCE_LIST
:.
cpp=.o
))))
64 DEBUG_OBJ_LIST_MT
=$(addprefix $(DEBUG_OBJ_DIR_MT
)/, $(notdir $(SOURCE_LIST
:.
cpp=.o
)))
65 RELEASE_OBJ_LIST_MT
=$(addprefix $(RELEASE_OBJ_DIR_MT
)/, $(notdir $(SOURCE_LIST
:.
cpp=.o
)))
67 # # # # # # # # # # # # # # # # # # # # #
69 release_st
: echoRelease_st releaseDirs_st
$(RELEASE_DIR
)/$(OUTPUT_FILE_ST
)
70 @echo Successfully built
$(RELEASE_DIR
)/$(OUTPUT_FILE_ST
)
73 debug_st
: debugDirs_st
$(DEBUG_DIR
)/$(OUTPUT_FILE_ST
)
74 @echo Successfully built
$(DEBUG_DIR
)/$(OUTPUT_FILE_ST
)
77 release_mt
: echoRelease_mt releaseDirs_mt
$(RELEASE_DIR
)/$(OUTPUT_FILE_MT
)
78 @echo Successfully built
$(RELEASE_DIR
)/$(OUTPUT_FILE_MT
)
81 debug_mt
: debugDirs_mt
$(DEBUG_DIR
)/$(OUTPUT_FILE_MT
)
82 @echo Successfully built
$(DEBUG_DIR
)/$(OUTPUT_FILE_MT
)
85 all: clean debug_st release_st debug_mt release_mt
87 all_st
: clean debug_st release_st
89 all_mt
: clean debug_mt release_mt
91 # # # # # # # # # # # # # # # # # # # # #
94 @mkdir
-p
$(DEBUG_OBJ_DIR_ST
)
95 @mkdir
-p
$(DEBUG_DIR
)
97 $(DEBUG_OBJ_DIR_ST
)/%.o
: $(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
)) %.
cpp
98 $(CPP
) $(CFLAGS_DEBUG_ST
) -o
$@
-c
$(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
100 $(DEBUG_DIR
)/$(OUTPUT_FILE_ST
): $(DEBUG_OBJ_LIST_ST
)
101 $(LINK
) $(LFLAGS_DEBUG
) -o
$@
$(DEBUG_OBJ_LIST_ST
)
105 @mkdir
-p
$(DEBUG_OBJ_DIR_MT
)
106 @mkdir
-p
$(DEBUG_DIR
)
108 $(DEBUG_OBJ_DIR_MT
)/%.o
: $(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
)) %.
cpp
109 $(CPP
) $(CFLAGS_DEBUG_MT
) -o
$@
-c
$(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
111 $(DEBUG_DIR
)/$(OUTPUT_FILE_MT
): $(DEBUG_OBJ_LIST_MT
)
112 $(LINK
) $(LFLAGS_DEBUG
) -o
$@
$(DEBUG_OBJ_LIST_MT
)
115 # # # # # # # # # # # # # # # # # # # # #
118 @echo Building
$(OUTPUT_FILE_ST
)
119 @echo compiler
: $(CPP
) $(CFLAGS_RELEASE_ST
)
120 @echo linker
: $(LINK
) $(LFLAGS_RELEASE
)
124 @echo Building
$(OUTPUT_FILE_MT
)
125 @echo compiler
: $(CPP
) $(CFLAGS_RELEASE_MT
)
126 @echo linker
: $(LINK
) $(LFLAGS_RELEASE
)
130 # # # # # # # # # # # # # # # # # # # # #
133 @mkdir
-p
$(RELEASE_OBJ_DIR_ST
)
134 @mkdir
-p
$(RELEASE_DIR
)
136 $(RELEASE_OBJ_DIR_ST
)/%.o
: $(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
)) %.
cpp
137 @echo compiling
$(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
138 @
$(CPP
) $(CFLAGS_RELEASE_ST
) -o
$@
-c
$(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
140 $(RELEASE_DIR
)/$(OUTPUT_FILE_ST
): $(RELEASE_OBJ_LIST_ST
)
141 @echo linking
$(RELEASE_DIR
)/$(OUTPUT_FILE_ST
)
142 @
$(LINK
) $(LFLAGS_RELEASE
) -o
$@
$(RELEASE_OBJ_LIST_ST
)
145 @mkdir
-p
$(RELEASE_OBJ_DIR_MT
)
146 @mkdir
-p
$(RELEASE_DIR
)
148 $(RELEASE_OBJ_DIR_MT
)/%.o
: $(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
)) %.
cpp
149 @echo compiling
$(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
150 @
$(CPP
) $(CFLAGS_RELEASE_MT
) -o
$@
-c
$(filter %/$(notdir $(basename $@
)).
cpp,$(SOURCE_LIST
))
152 $(RELEASE_DIR
)/$(OUTPUT_FILE_MT
): $(RELEASE_OBJ_LIST_MT
)
153 @echo linking
$(RELEASE_DIR
)/$(OUTPUT_FILE_MT
)
154 @
$(LINK
) $(LFLAGS_RELEASE
) -o
$@
$(RELEASE_OBJ_LIST_MT
)
157 # # # # # # # # # # # # # # # # # # # # #
160 @echo removing
"$(OBJECT_DIR_ST)/*.o"
161 @
rm -rf
$(OBJECT_DIR_ST
)
162 @echo removing
"$(OBJECT_DIR_MT)/*.o"
163 @
rm -rf
$(OBJECT_DIR_MT
)
164 @echo removing
$(DEBUG_DIR
)/$(OUTPUT_FILE_ST
)
165 @
rm -f
$(DEBUG_DIR
)/$(OUTPUT_FILE_ST
)
166 @echo removing
$(RELEASE_DIR
)/$(OUTPUT_FILE_ST
)
167 @
rm -f
$(RELEASE_DIR
)/$(OUTPUT_FILE_ST
)
168 @echo removing
$(DEBUG_DIR
)/$(OUTPUT_FILE_MT
)
169 @
rm -f
$(DEBUG_DIR
)/$(OUTPUT_FILE_MT
)
170 @echo removing
$(RELEASE_DIR
)/$(OUTPUT_FILE_MT
)
171 @
rm -f
$(RELEASE_DIR
)/$(OUTPUT_FILE_MT
)