mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-07-30 00:15:47 -04:00
200 lines
5.8 KiB
Makefile
200 lines
5.8 KiB
Makefile
# environment variables:
|
|
# $INCLUDE_PATH is a colon-delimited list of include directories
|
|
|
|
EMPTY_CHAR=
|
|
SPACE_CHAR=$(empty) $(empty)
|
|
COLON_CHAR=:
|
|
|
|
# # # # # # # # # # # # # # # # # # # # #
|
|
|
|
OUTPUT_FILE_ST=libBase.a
|
|
OUTPUT_FILE_MT=libBase_MT.a
|
|
OUTPUT_DIR=../../../lib
|
|
OBJECT_DIR_ST=./obj_st
|
|
OBJECT_DIR_MT=./obj_mt
|
|
|
|
STL_HOME=../../../../stlport453
|
|
|
|
INCLUDE_DIRS=.. ../ $(STL_HOME)/stlport
|
|
|
|
SOURCE_DIRS=. ..
|
|
SOURCE_FILES=
|
|
|
|
LIBRARY_DIRS=
|
|
LIBRARY_FILES=
|
|
|
|
CFLAGS_USER=
|
|
LFLAGS_USER=
|
|
|
|
# # # # # # # # # # # # # # # # # # # # #
|
|
|
|
INCLUDE_DIR_LIST=$(subst $(COLON_CHAR),$(SPACE_CHAR),$(INCLUDE_PATH)) $(INCLUDE_DIRS)
|
|
INCLUDE_FLAGS=$(addprefix -I,$(INCLUDE_DIR_LIST))
|
|
CFLAGS_ST=$(INCLUDE_FLAGS) $(CFLAGS_USER) -D_GNU_SOURCE -Wall -Wno-unknown-pragmas
|
|
CFLAGS_MT=$(INCLUDE_FLAGS) $(CFLAGS_USER) -D_GNU_SOURCE -D_REENTRANT -Wall -Wno-unknown-pragmas
|
|
CFLAGS_DEBUG_ST=$(CFLAGS_ST) -D_DEBUG -g
|
|
CFLAGS_RELEASE_ST=$(CFLAGS_ST) -DNDEBUG -O2
|
|
CFLAGS_DEBUG_MT=$(CFLAGS_MT) -D_DEBUG -g
|
|
CFLAGS_RELEASE_MT=$(CFLAGS_MT) -DNDEBUG -O2
|
|
|
|
LIBRARY_FLAGS=$(addprefix -l,$(LIBRARIES))
|
|
LFLAGS=$(LIBRARY_FLAGS) $(LFLAGS_USER) -r
|
|
LFLAGS_DEBUG=$(LFLAGS)
|
|
LFLAGS_RELEASE=$(LFLAGS)
|
|
|
|
CPP=g++
|
|
LINK=ld
|
|
|
|
# # # # # # # # # # # # # # # # # # # # #
|
|
|
|
DEBUG_OBJ_DIR_ST=$(OBJECT_DIR_ST)/debug
|
|
RELEASE_OBJ_DIR_ST=$(OBJECT_DIR_ST)/release
|
|
DEBUG_OBJ_DIR_MT=$(OBJECT_DIR_MT)/debug
|
|
RELEASE_OBJ_DIR_MT=$(OBJECT_DIR_MT)/release
|
|
|
|
DEBUG_DIR=$(OUTPUT_DIR)/debug
|
|
RELEASE_DIR=$(OUTPUT_DIR)/release
|
|
|
|
FIND=$(shell ls $(x)/*.cpp)
|
|
SOURCE_LIST = $(SOURCE_FILES) $(foreach x, $(SOURCE_DIRS), $(FIND))
|
|
|
|
DEBUG_OBJ_LIST_ST=$(addprefix $(DEBUG_OBJ_DIR_ST)/, $(notdir $(SOURCE_LIST:.cpp=.o)))
|
|
RELEASE_OBJ_LIST_ST=$(addprefix $(RELEASE_OBJ_DIR_ST)/, $(notdir $(SOURCE_LIST:.cpp=.o)))
|
|
DEBUG_OBJ_LIST_MT=$(addprefix $(DEBUG_OBJ_DIR_MT)/, $(notdir $(SOURCE_LIST:.cpp=.o)))
|
|
RELEASE_OBJ_LIST_MT=$(addprefix $(RELEASE_OBJ_DIR_MT)/, $(notdir $(SOURCE_LIST:.cpp=.o)))
|
|
|
|
|
|
DEPENDENCY_LIST = $(SOURCE_LIST:.cpp=.d)
|
|
|
|
# # # # # # # # # # # # # # # # # # # # #
|
|
|
|
release_st: echoRelease_st releaseDirs_st $(RELEASE_DIR)/$(OUTPUT_FILE_ST)
|
|
@echo Successfully built $(RELEASE_DIR)/$(OUTPUT_FILE_ST)
|
|
@echo
|
|
|
|
debug_st: debugDirs_st $(DEBUG_DIR)/$(OUTPUT_FILE_ST)
|
|
@echo Successfully built $(DEBUG_DIR)/$(OUTPUT_FILE_ST)
|
|
@echo
|
|
|
|
release_mt: echoRelease_mt releaseDirs_mt $(RELEASE_DIR)/$(OUTPUT_FILE_MT)
|
|
@echo Successfully built $(RELEASE_DIR)/$(OUTPUT_FILE_MT)
|
|
@echo
|
|
|
|
debug_mt: debugDirs_mt $(DEBUG_DIR)/$(OUTPUT_FILE_MT)
|
|
@echo Successfully built $(DEBUG_DIR)/$(OUTPUT_FILE_MT)
|
|
@echo
|
|
|
|
all: clean debug_st release_st debug_mt release_mt
|
|
|
|
all_st: clean debug_st release_st
|
|
|
|
all_mt: clean debug_mt release_mt
|
|
|
|
# # # # # # # # # # # # # # # # # # # # #
|
|
|
|
debugDirs_st :
|
|
@mkdir -p $(DEBUG_OBJ_DIR_ST)
|
|
@mkdir -p $(DEBUG_DIR)
|
|
|
|
$(DEBUG_OBJ_DIR_ST)/%.o : $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST))
|
|
$(CPP) $(CFLAGS_DEBUG_ST) -o $@ -c $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST))
|
|
|
|
$(DEBUG_DIR)/$(OUTPUT_FILE_ST): $(DEBUG_OBJ_LIST_ST)
|
|
$(LINK) $(LFLAGS_DEBUG) -o $@ $(DEBUG_OBJ_LIST_ST)
|
|
|
|
|
|
debugDirs_mt :
|
|
@mkdir -p $(DEBUG_OBJ_DIR_MT)
|
|
@mkdir -p $(DEBUG_DIR)
|
|
|
|
$(DEBUG_OBJ_DIR_MT)/%.o : $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST))
|
|
$(CPP) $(CFLAGS_DEBUG_MT) -o $@ -c $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST))
|
|
|
|
$(DEBUG_DIR)/$(OUTPUT_FILE_MT): $(DEBUG_OBJ_LIST_MT)
|
|
$(LINK) $(LFLAGS_DEBUG) -o $@ $(DEBUG_OBJ_LIST_MT)
|
|
|
|
|
|
# # # # # # # # # # # # # # # # # # # # #
|
|
|
|
echoRelease_st :
|
|
@echo Building $(OUTPUT_FILE_ST)
|
|
@echo compiler: $(CPP) $(CFLAGS_RELEASE_ST)
|
|
@echo linker: $(LINK) $(LFLAGS_RELEASE)
|
|
@echo
|
|
|
|
echoRelease_mt :
|
|
@echo Building $(OUTPUT_FILE_MT)
|
|
@echo compiler: $(CPP) $(CFLAGS_RELEASE_MT)
|
|
@echo linker: $(LINK) $(LFLAGS_RELEASE)
|
|
@echo
|
|
|
|
|
|
# # # # # # # # # # # # # # # # # # # # #
|
|
|
|
releaseDirs_st :
|
|
@mkdir -p $(RELEASE_OBJ_DIR_ST)
|
|
@mkdir -p $(RELEASE_DIR)
|
|
|
|
$(RELEASE_OBJ_DIR_ST)/%.o : $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST))
|
|
@echo compiling $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST))
|
|
@$(CPP) $(CFLAGS_RELEASE_ST) -o $@ -c $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST))
|
|
|
|
$(RELEASE_DIR)/$(OUTPUT_FILE_ST): $(RELEASE_OBJ_LIST_ST)
|
|
@echo linking $(RELEASE_DIR)/$(OUTPUT_FILE_ST)
|
|
@$(LINK) $(LFLAGS_RELEASE) -o $@ $(RELEASE_OBJ_LIST_ST)
|
|
|
|
releaseDirs_mt :
|
|
@mkdir -p $(RELEASE_OBJ_DIR_MT)
|
|
@mkdir -p $(RELEASE_DIR)
|
|
|
|
$(RELEASE_OBJ_DIR_MT)/%.o : $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST))
|
|
@echo compiling $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST))
|
|
@$(CPP) $(CFLAGS_RELEASE_MT) -o $@ -c $(filter %/$(notdir $(basename $@)).cpp,$(SOURCE_LIST))
|
|
|
|
$(RELEASE_DIR)/$(OUTPUT_FILE_MT): $(RELEASE_OBJ_LIST_MT)
|
|
@echo linking $(RELEASE_DIR)/$(OUTPUT_FILE_MT)
|
|
@$(LINK) $(LFLAGS_RELEASE) -o $@ $(RELEASE_OBJ_LIST_MT)
|
|
|
|
# # # # # # # # # # # # # # # # # # # # #
|
|
|
|
include .depend
|
|
|
|
.PHONY : $(DEPENDENCY_LIST)
|
|
|
|
depend: .depend $(DEPENDENCY_LIST)
|
|
|
|
.depend:
|
|
touch .depend
|
|
make depend
|
|
|
|
$(DEPENDENCY_LIST):
|
|
@echo Generating dependencies for $(notdir $(@:.d=.cpp))
|
|
@echo -n $(DEBUG_OBJ_DIR_ST)/ >> .depend
|
|
@$(CPP) -MM $(addprefix -I,$(INCLUDE_DIRS)) $(@:.d=.cpp)>> .depend
|
|
@echo -n $(DEBUG_OBJ_DIR_MT)/ >> .depend
|
|
@$(CPP) -MM $(addprefix -I,$(INCLUDE_DIRS)) $(@:.d=.cpp) >> .depend
|
|
@echo -n $(RELEASE_OBJ_DIR_ST)/ >> .depend
|
|
@$(CPP) -MM $(addprefix -I,$(INCLUDE_DIRS)) $(@:.d=.cpp)>> .depend
|
|
@echo -n $(RELEASE_OBJ_DIR_MT)/ >> .depend
|
|
@$(CPP) -MM $(addprefix -I,$(INCLUDE_DIRS)) $(@:.d=.cpp) >> .depend
|
|
|
|
# # # # # # # # # # # # # # # # # # # # #
|
|
|
|
clean:
|
|
@echo removing "$(OBJECT_DIR_ST)/*.o"
|
|
@rm -rf $(OBJECT_DIR_ST)
|
|
@echo removing "$(OBJECT_DIR_MT)/*.o"
|
|
@rm -rf $(OBJECT_DIR_MT)
|
|
@echo removing $(DEBUG_DIR)/$(OUTPUT_FILE_ST)
|
|
@rm -f $(DEBUG_DIR)/$(OUTPUT_FILE_ST)
|
|
@echo removing $(RELEASE_DIR)/$(OUTPUT_FILE_ST)
|
|
@rm -f $(RELEASE_DIR)/$(OUTPUT_FILE_ST)
|
|
@echo removing $(DEBUG_DIR)/$(OUTPUT_FILE_MT)
|
|
@rm -f $(DEBUG_DIR)/$(OUTPUT_FILE_MT)
|
|
@echo removing $(RELEASE_DIR)/$(OUTPUT_FILE_MT)
|
|
@rm -f $(RELEASE_DIR)/$(OUTPUT_FILE_MT)
|
|
@rm -f .depend
|
|
@echo
|
|
|
|
|