.PHONY: all clean depend install dummy CC = $(CROSS_COMPILE)gcc CXX = $(CROSS_COMPILE)g++ AR = $(CROSS_COMPILE)ar LD = $(CROSS_COMPILE)ld RANLIB = $(CROSS_COMPILE)ranlib TARGET_PREFIX = $(BASEPRJDIR)/candidates INCDIR = . $(BASEINCDIR) $(EXTRA_INCLUDE_DIR) CFLAGS = -Wall -g $(EXTRA_CFLAGS) CFLAGS += $(addprefix -D, $(GLOBAL_DEFINES)) CFLAGS += $(addprefix -D, $(DEFINES)) CFLAGS += $(addprefix -I, $(BASEINCDIR)) CFLAGS += $(addprefix -I, $(EXTRA_INCLUDE_DIR)) CFLAGS += -DDSTAR CXXFLAGS = $(CFLAGS) ARFLAGS = rcs LDFLAGS = $(EXTRA_LDFLAGS) PARENT_DIR_NAME_PATH = $(shell dirname `pwd`) PARENT_DIR_NAME = $(notdir $(PARENT_DIR_NAME_PATH)) ifdef LIBNAME LIBFILE = lib$(LIBNAME).a ifeq "$(OS_TYPE)" "Linux" ifeq ($(MAKE_STATIC),1) BUILD_TARGET = $(LIBFILE) else SHARED_LIBFILE = lib$(LIBNAME).so ifeq "$(LIBTYPE)" "shared" BUILD_TARGET = $(SHARED_LIBFILE) else BUILD_TARGET = $(LIBFILE) endif endif else CFLAGS += -DUSE_CYGWIN BUILD_TARGET = $(LIBFILE) endif BUILD_TARGET = $(LIBFILE) $(SHARED_LIBFILE) BUILD_LIBRARY = 1 else ifdef EXECUTABLENAME BUILD_TARGET = $(EXECUTABLENAME) ifeq "$(OS_TYPE)" "Linux" else CFLAGS += -DUSE_CYGWIN endif else ifdef NORMAL_EXECUTABLENAME BUILD_TARGET = $(NORMAL_EXECUTABLENAME) else LINKFILE = link$(shell basename `pwd`).o BUILD_TARGET = $(LINKFILE) endif endif endif ifndef SUBDIRS ifndef SOURCEFILES LINKFILE = BUILD_TARGET = endif endif VERSIONED_BUILD_TARGET = $(BUILD_TARGET).$(LIB_VERSION).$(LIB_SUB_VERSION) ifeq "$(MAKECMDGOALS)" "clean" RECURSE_MAKE_GOAL = $(MAKECMDGOALS) endif ifeq "$(MAKECMDGOALS)" "depend" RECURSE_MAKE_GOAL = $(MAKECMDGOALS) endif ifeq "$(MAKECMDGOALS)" "install" RECURSE_MAKE_GOAL = $(MAKECMDGOALS) endif ifeq "$(MAKECMDGOALS)" "distclean" RECURSE_MAKE_GOAL = $(MAKECMDGOALS) endif OBJS = $(TTFFILES:.ttf=.o) $(BMPFILES:.bmp=.o) $(PNGFILES:.png=.o) $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(SOURCEFILES))) ifdef SUBDIRS ifndef RECURSE_MAKE_GOAL OBJS += $(join $(SUBDIRS), $(patsubst %, /link%.o, $(notdir $(SUBDIRS)))) endif endif BUILD_OBJS = $(addprefix $(BUILD_OBJS_DIR)/, $(notdir $(OBJS))) .SUFFIXES: .SUFFIXES: .c .cpp .o .h .bmp .png .ttf #VPATH = $(INCDIR) # # Makefile rules # all: $(CONF_SUBDIRS) $(SUBDIRS) $(NOLINKSUBDIRS) $(BUILD_TARGET) ifeq "$(BUILD_TARGET)" "" clean: $(CONF_SUBDIRS) $(SUBDIRS) $(NOLINKSUBDIRS) else ifdef EXECUTABLENAME clean: $(CONF_SUBDIRS) $(SUBDIRS) $(NOLINKSUBDIRS) rm -f $(BUILD_TARGET) $(BUILD_RESULT_DIR)/$(BUILD_TARGET) $(OBJS) .depend .depend.bak rm -rf $(BMPFILES:.bmp=.c) rm -rf $(PNGFILES:.png=.c) rm -rf $(TTFFILES:.ttf=.c) else clean: $(CONF_SUBDIRS) $(SUBDIRS) $(NOLINKSUBDIRS) rm -f $(BUILD_OBJS_DIR)/*.o $(BUILD_TARGET) $(OBJS) .depend .depend.bak $(BUILD_OBJS_DIR)/*.so $(BUILD_OBJS_DIR)/*.a $(BUILD_RESULT_DIR)/*.so $(BUILD_RESULT_DIR)/*.a endif endif .bmp.c : ../bmp2src $< > $(<:.bmp=.c) .png.c : ../png2src $< > $(<:.png=.c) .ttf.c : ../bin2src $< > $(<:.ttf=.c) depend: $(SUBDIRS) $(NOLINKSUBDIRS) if [ ! -f .depend ]; then touch .depend; fi makedepend -f.depend -- $(CFLAGS) -- $(SOURCEFILES) distclean: $(CONF_SUBDIRS) $(SUBDIRS) $(NOLINKSUBDIRS) rm -f $(BUILD_OBJS_DIR)/*.o $(BUILD_TARGET) $(OBJS) .depend .depend.bak $(BUILD_OBJS_DIR)/*.so $(BUILD_OBJS_DIR)/*.a $(BUILD_RESULT_DIR)/*.so $(BUILD_RESULT_DIR)/*.a install: $(CONF_SUBDIRS) $(BUILD_TARGET) $(SUBDIRS) $(NOLINKSUBDIRS) # echo Install... #ifdef BUILD_LIBRARY # ifeq "$(LIBTYPE)" "shared" # install -m 0755 $< $(TARGET_PREFIX)/$(VERSIONED_BUILD_TARGET) # rm -f $(TARGET_PREFIX)/lib/$(BUILD_TARGET) # ln -s $(VERSIONED_BUILD_TARGET) $(TARGET_PREFIX)/lib/$(BUILD_TARGET) # /sbin/ldconfig # else #install -m 0644 $^ $(TARGET_PREFIX)/lib # endif #endif ifdef SUBDIRS $(SUBDIRS): dummy $(MAKE) -C $@ $(RECURSE_MAKE_GOAL) endif ifdef NOLINKSUBDIRS $(NOLINKSUBDIRS): dummy $(MAKE) -C $@ $(RECURSE_MAKE_GOAL) endif # # Make Target which needs Configuration # ifdef CONF_SUBDIRS $(CONF_SUBDIRS): dummy $(MAKE) -C $@ -f Makefile.Conf $(RECURSE_MAKE_GOAL) $(MAKE) -C $@ $(RECURSE_MAKE_GOAL) endif ifdef LINKFILE ifndef SUBDIRS $(LINKFILE): $(OBJS) $(LD) $(LDFLAGS) -r -o $(BUILD_OBJS_DIR)/$(PARENT_DIR_NAME)$@ \ $(addprefix $(BUILD_OBJS_DIR)/, $(notdir $^)) ln -fs $(BUILD_OBJS_DIR)/$(PARENT_DIR_NAME)$(notdir $@) $@ else $(LINKFILE): $(OBJS) $(LD) $(LDFLAGS) -r -o $(BUILD_OBJS_DIR)/$@ $^ ln -fs $(BUILD_OBJS_DIR)/$(notdir $@) $@ endif endif ifdef SHARED_LIBFILE $(SHARED_LIBFILE): $(OBJS) $(LD) $(LDFLAGS) -shared -o $@ $^ $(SHARED_LD_LIBS) -L$(BUILD_OBJS_DIR) $(CC) $(LDFLAGS) -shared -o $@ $^ $(SHARED_LD_LIBS) -L$(BUILD_OBJS_DIR) mv -f $@ $(BUILD_OBJS_DIR)/$@ cp $(BUILD_OBJS_DIR)/$(notdir $(SHARED_LIBFILE)) $(BUILD_RESULT_DIR) # cp $(BUILD_OBJS_DIR)/$(notdir $(SHARED_LIBFILE)) $(REMOTE_BUILD_RESULT_DIR) # cp $(BUILD_RESULT_DIR)/liblist_$(PLATFORM) $(BUILD_RESULT_DIR)/liblist endif ifdef NORMAL_EXECUTABLENAME $(NORMAL_EXECUTABLENAME): $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBDIRS) $(LIBS) mv $@ $(BUILD_RESULT_DIR) endif ifdef EXECUTABLENAME $(EXECUTABLENAME): $(OBJS) #Ç×»ó targetshellÀº ´Ù½Ã compileÇÑ´Ù. rm -f $(SYMBOL_DIR)/$(TSHELL_OBJ) $(CC) $(CFLAGS) -o $(BUILD_OBJS_DIR)/$(TSHELL_OBJ) -c $(SYMBOL_DIR)/$(TSHELL_SRC) ln -s $(BUILD_OBJS_DIR)/$(TSHELL_OBJ) $(SYMBOL_DIR)/$(TSHELL_OBJ) #¸ÕÀú partial obj¸¦ ¸ÕÀú ¸¸µç´Ù.( NO FLAGS_WITH_SYM) $(CXX) -shared $(LDFLAGS) -o $(PARTIAL_OBJ) $^ $(BUILD_OBJS_DIR)/$(TSHELL_OBJ) $(LIBDIRS) $(LIBS) #¹Ì¸® ¸¸µé¾îÁø ÆÄÀÏÀÌ ÀÖ´Â °æ¿ì Áö¿î´Ù. rm -f $(SYMBOL_DIR)/$(SYMBOL_TXT) $(SYMBOL_DIR)/$(SYMBOL_SRC) $(SYMBOL_DIR)/$(SYMBOL_OBJ) $(SYMBOL_DIR)/$(TSHELL_OBJ) #partial obj¿¡¼­ ºÎÅÍ symbolÁ¤º¸¸¦ °¡Á®¿Í¼­ symbol.txt¸¦ ¸¸µç´Ù. # ¿©±â¿¡ ´Ù¸¥ lib¸¦ Ãß°¡Çصµ µÈ´Ù. ¿¹¸¦ µé¾î dsthal # nm obj_file1 obj_file2 obj_file3 > output_file $(NM) $(NM_SYM_FLAG) $(PARTIAL_OBJ) > $(SYMBOL_DIR)/$(SYMBOL_TXT) $(NM) $(NM_SYM_FLAG) $(ADDITIONAL_LIB) >> $(SYMBOL_DIR)/$(SYMBOL_TXT) #symbol.txt¿¡¼­ DMW_SymTbl.c¸¦ ¸¸µç´Ù. $(CC) $(MAKESYM_OPT) -o $(SYMBOL_DIR)/$(MAKESYM_EXE) $(SYMBOL_DIR)/$(MAKESYM_SRC) $(MAKESYMTBL) #DMW_SymTbl.c¿Í DMW_TargetShell.c¸¦ ´Ù½Ã ÄÄÆÄÀÏÇÑ´Ù. *.o¸¦ ¸¸µç´Ù. $(CC) $(CFLAGS) $(FLAGS_WITH_SYM) -o $(BUILD_OBJS_DIR)/$(TSHELL_OBJ) -c $(SYMBOL_DIR)/$(TSHELL_SRC) $(CC) $(CFLAGS) $(FLAGS_WITH_SYM) -o $(BUILD_OBJS_DIR)/$(SYMBOL_OBJ) -c $(SYMBOL_DIR)/$(SYMBOL_SRC) #Àû´çÈ÷ linkÇØÁØ´Ù. ln -s $(BUILD_OBJS_DIR)/$(SYMBOL_OBJ) $(SYMBOL_DIR)/$(SYMBOL_OBJ) ln -s $(BUILD_OBJS_DIR)/$(TSHELL_OBJ) $(SYMBOL_DIR)/$(TSHELL_OBJ) #ÇÊ¿ä¾ø´Â ÆÄÀÏÀ» Áö¿î´Ù. rm -f $(PARTIAL_OBJ) #´Ù½Ã DMW_TargetShell.o,DMW_SymTbl.o¸¦ Æ÷ÇÔÇØ¼­ Àüü¸¦ linkÇÑ´Ù. (FLAGS_WITH_SYM) $(CXX) $(LDFLAGS) $(FLAGS_WITH_SYM) -o $@ $^ $(SYMBOL_DIR)/$(TSHELL_OBJ) $(SYMBOL_DIR)/$(SYMBOL_OBJ) $(LIBDIRS) $(LIBS) mv -f $@ $(BUILD_OBJS_DIR)/$@ ln -fs $(BUILD_OBJS_DIR)/$(notdir $@) $@ cp $(BUILD_OBJS_DIR)/$(EXECUTABLENAME) $(BUILD_RESULT_DIR) gcc $(BUILD_RESULT_DIR)/bin2ts.cpp -o bin2ts.exe zip $(BUILD_RESULT_DIR)/$(EXECUTABLENAME).zip $(BUILD_RESULT_DIR)/$(EXECUTABLENAME) bin2ts.exe $(MODEL_NAME) $(SW_VERSION) $(BUILD_RESULT_DIR)/$(EXECUTABLENAME).zip $(BUILD_RESULT_DIR)/$(EXECUTABLENAME).ts rm $(EXECUTABLENAME) endif ifdef LIBFILE $(BUILD_OBJS_DIR)/$(notdir $(LIBFILE)): $(OBJS) $(AR) $(ARFLAGS) $(BUILD_OBJS_DIR)/$(notdir $@) \ $(BUILD_OBJS_DIR)/$(notdir $^) ln -fs $(BUILD_OBJS_DIR)/$(notdir $@) $@ $(LIBFILE): $(OBJS) $(RM) $(BUILD_OBJS_DIR)/$(notdir $@) $(AR) $(ARFLAGS) $(BUILD_OBJS_DIR)/$@ $^ ln -fs $(BUILD_OBJS_DIR)/$(notdir $@) $@ $(RANLIB) $(BUILD_OBJ_DIR)$(notdir $(LIBFILE)) cp $(BUILD_OBJS_DIR)/$(notdir $(LIBFILE)) $(BUILD_RESULT_DIR) endif %.o: %.c rm -f $@ $(CC) $(CFLAGS) -c -o $@ $< mv -f $(patsubst %.c, %.o, $<) $(BUILD_OBJS_DIR) ln -fs $(BUILD_OBJS_DIR)/$(notdir $(patsubst %.c, %.o, $@)) $(patsubst %.c, %.o ,$@) %.o: %.cpp rm -f $@ $(CXX) $(CXXFLAGS) -c -o $@ $< mv -f $(patsubst %.cpp, %.o, $<) $(BUILD_OBJS_DIR) ln -fs $(BUILD_OBJS_DIR)/$(notdir $(patsubst %.cpp, %.o, $@)) \ $(patsubst %.cpp, %.o, $@) ifneq "$(strip $(wildcard .depend))" "" include .depend endif