1AINCLUDE_DIRS = $(LINCLUDES) $(EINCLUDES) $(GINCLUDES) 2ALIBRARY_DIRS = $(LLIBRARY_DIRS) $(ELIBRARY_DIRS) $(GLIBRARY_DIRS) 3ALIBRARIES = $(LLIBRARIES) $(ELIBRARIES) $(GLIBRARIES) 4 5# ISDBG_LIBS is in a location that cannot be searched by vpath 6ALIBRARIES_DEPEND = $(filter-out $(ISDBG_LIBS),$(ALIBRARIES)) 7 8# Convert Unix and Windows format paths 9AINCLUDE_DIRS_M := $(if $(filter-out ,$(AINCLUDE_DIRS)),$(call cygpathm_multi,$(AINCLUDE_DIRS))) 10ALIBRARY_DIRS_M := $(if $(filter-out ,$(ALIBRARY_DIRS)),$(call cygpathm_multi,$(ALIBRARY_DIRS))) 11ALIBRARY_DIRS_U := $(if $(filter-out ,$(ALIBRARY_DIRS)),$(call cygpathu_multi,$(ALIBRARY_DIRS))) 12 13# 14# VPATH does not support the path name included white space like "C:/Program Files" 15# Please, be careful !!! 16# 17ifdef MSYSTEM 18ALIBVPATH = $(subst \:,\ ,$(subst $(SPACE),:,$(ALIBRARY_DIRS))) 19else 20ALIBVPATH = $(foreach DIR,$(ALIBRARY_DIRS_U),$(call decode_specialchar,$(DIR))) 21endif 22 23vpath %.a $(ALIBVPATH) 24vpath %.o $(ALIBVPATH) 25 26INCLUDE_DIRS = $(call decode_specialchar,$(foreach DIR,$(AINCLUDE_DIRS_M),-I'$(DIR)')) 27LIBRARY_DIRS = $(call decode_specialchar,$(foreach DIR,$(ALIBRARY_DIRS_M),-L'$(DIR)')) 28LIBRARIES = $(subst \ -l,\ ,$(addprefix -l,$(ALIBRARIES))) 29INCLUDES = -gccinc -I. $(INCLUDE_DIRS) 30 31# 32# Generate dependency files 33# 34 35ifdef MSYSTEM 36DEPEND_RULE = $(QUOTE)/ARM_EABI_Support/d;s/\\x0D//g;s/\\([^ ]\\)\\\\\([^ ]\\)/\\1\\/\\2/g;$(QUOTE) 37else 38DEPEND_RULE = $(QUOTE)/ARM_EABI_Support/d;s/\\x0D//g;s!\\([A-Za-z]\\):[\\\\\/]!$(CYGPATH_MOUNTPOINT)\\/\\l\\1\\/!g;s/\\([^ ]\\)\\\\\([^ ]\\)/\\1\\/\\2/g;$(QUOTE) 39endif 40 41ifneq ($(MAKEFLAGS_ALWAYS),TRUE) 42define MOVE_SRC_DEPEND 43 $(SED) -e $(DEPEND_RULE) $(dir $@)/$(*F).d > $(DEPENDDIR)/$(*F).d && $(RM) $(dir $@)/$(*F).d 44endef 45else 46define MOVE_SRC_DEPEND 47$(EMPTY) 48endef 49endif 50 51 52# 53# Precompiled header 54# 55 56#---------------------------------------- 57# if USE_STD_PCHDR == TRUE 58ifeq ($(USE_STD_PCHDR),TRUE) 59 60.PHONY: sdk-mch 61 62PCHDR_C_DEFS = $(sort $(filter -DSDK_%,$(CCFLAGS))) 63PCHDR_C_NODEF = $(filter-out -D%,$(CCFLAGS)) 64PCHDR_C_NAME = $(subst $(SPACE),,$(subst -DSDK_,.,$(subst =,-,$(PCHDR_C_DEFS)))) 65PCHDR_C_NAME := $(subst TWLHYB,HYB,$(subst TWLLTD,LTD,$(PCHDR_C_NAME))) 66PCHDR_C_NAME := $(subst ARM9,A9,$(subst ARM7,A7,$(PCHDR_C_NAME))) 67PCHDR_C_NAME := $(subst RELEASE,REL,$(subst DEBUG,DBG,$(subst FINALROM,ROM,$(PCHDR_C_NAME)))) 68PCHDR_C_NAME := $(subst CW_FORCE_EXPORT_SUPPORT,CWFES,$(subst CW_MAJOR_VER,CWVER,$(PCHDR_C_NAME))) 69PCHDR_C_NAME := $(subst CODE_ARM,ARM,$(subst CODE_THUMB,THUMB,$(PCHDR_C_NAME))) 70PCHDR_C_NAME := $(subst PROFILE_CALLTRACE,PRCT,$(subst PROFILE_FUNCTIONCOST,PRFC,$(PCHDR_C_NAME))) 71PCHDR_C_NAME := $(subst LINK_ISTD,ISTD,$(subst NITRO,NTR,$(PCHDR_C_NAME))) 72PCHDR_C_BASE = $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC))$(PCHDR_C_NAME).C 73PCHDR_C_MCH = $(PCHDR_C_BASE).mch 74PCHDR_C_DEPEND = $(PCHDR_C_BASE).depend 75PCHDR_CCFLAGS = -include $(call empath,$(PCHDR_C_MCH)) 76CCFLAGS_NOLDEF = $(PCHDR_C_DEFS) $(PCHDR_C_NODEF) 77 78PCHDR_CXX_DEFS = $(sort $(filter -DSDK_%,$(CXXFLAGS))) 79PCHDR_CXX_NODEF = $(filter-out -D%,$(CXXFLAGS)) 80PCHDR_CXX_NAME = $(subst $(SPACE),,$(subst -DSDK_,.,$(subst =,-,$(PCHDR_CXX_DEFS)))) 81PCHDR_CXX_NAME := $(subst TWLHYB,HYB,$(subst TWLLTD,LTD,$(PCHDR_CXX_NAME))) 82PCHDR_CXX_NAME := $(subst ARM9,A9,$(subst ARM7,A7,$(PCHDR_CXX_NAME))) 83PCHDR_CXX_NAME := $(subst RELEASE,REL,$(subst DEBUG,DBG,$(subst FINALROM,ROM,$(PCHDR_CXX_NAME)))) 84PCHDR_CXX_NAME := $(subst CW_FORCE_EXPORT_SUPPORT,CWFES,$(subst CW_MAJOR_VER,CWVER,$(PCHDR_CXX_NAME))) 85PCHDR_CXX_NAME := $(subst CODE_ARM,ARM,$(subst CODE_THUMB,THUMB,$(PCHDR_CXX_NAME))) 86PCHDR_CXX_NAME := $(subst PROFILE_CALLTRACE,PRCT,$(subst PROFILE_FUNCTIONCOST,PRFC,$(PCHDR_CXX_NAME))) 87PCHDR_CXX_NAME := $(subst LINK_ISTD,ISTD,$(subst NITRO,NTR,$(PCHDR_CXX_NAME))) 88PCHDR_CXX_BASE = $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC))$(PCHDR_CXX_NAME).CXX 89PCHDR_CXX_MCH = $(PCHDR_CXX_BASE).mch 90PCHDR_CXX_DEPEND = $(PCHDR_CXX_BASE).depend 91PCHDR_CXXFLAGS = -include $(call empath,$(PCHDR_CXX_MCH)) 92CXXFLAGS_NOLDEF = $(PCHDR_CXX_DEFS) $(PCHDR_CXX_NODEF) 93 94 95#---------------------------------------- 96# if MAKECMDGOALS contains build_and_install or sdk-mch 97ifneq ($(filter build_and_install sdk-mch,$(MAKECMDGOALS)),) 98 99SYSTEM_GINCLUDES_M = $(if $(filter-out ,$(SYSTEM_GINCLUDES)),$(call cygpathm_multi,$(SYSTEM_GINCLUDES))) 100SYSTEM_INCLUDE_DIRS = $(call decode_specialchar,$(foreach DIR,$(SYSTEM_GINCLUDES_M),-I'$(DIR)')) 101SYSTEM_INCLUDES = -gccinc -I. $(SYSTEM_INCLUDE_DIRS) 102 103 104## $(call BUILD_PCHDR,$(MCH)) 105ifdef SILENT 106define BUILD_PCHDR_ECHO 107 echo $(TWLSDK_MSG_MAKE_MCH) $(1) 108endef 109else 110define BUILD_PCHDR_ECHO 111 true 112endef 113endif 114 115.DELETE_ON_ERROR: $(PCHDR_CACHE)/%_lock 116 117## $(call BUILD_PCHDR,$(BASE),$(CCFLAGS)) 118# $(BASE) must be a full path 119define BUILD_PCHDR 120 $(call BUILD_PCHDR_ECHO,$(notdir $(1).mch)) && \ 121 $(CP) $(PCHDR_SRC) $(1).h && \ 122 ($(CD) $(dir $(1).mch) && \ 123 $(RM) $(1).mch && \ 124 $(RM) $(1).depend && \ 125 $(CC) $(subst -include ,-DSDK_PCHDR_DUMMY_,$(2)) $(SYSTEM_INCLUDES) -MD -precompile $(notdir $(1).m) $(call empath,$(1).h)) && \ 126 $(MV) $(1).m $(1).mch && \ 127 (($(ECHO) $(1).mch: $(PCHDR_SRC) \\; $(SED) -e '1d' -e $(DEPEND_RULE) $(1).d) > $(1).dep \ 128 && $(MV) $(1).dep $(1).depend \ 129 && $(RM) $(1).d $(1).h) 130endef 131 132## $(call J_SAFE_BUILD_PCHDR,$(BASE),$(CCFLAGS),CCFLAGS) 133define J_SAFE_BUILD_PCHDR 134 trap 'rm -rf $(1)_lock 2> /dev/null ; exit 1' 1 2 3 15; \ 135 until mkdir $(1)_lock 2> /dev/null; do \ 136 sleep 1; \ 137 done; \ 138 $(REMAKE) sdk-mch $(3)="$(subst ",\",$(2))" $(4)=TRUE; \ 139 rmdir $(1)_lock; \ 140 trap 1 2 3 15 141endef 142 143 144# precompiled header for C 145 146#---------------------------------------- 147# if OBJS_CC != "" 148ifneq ($(strip $(OBJS_CC)),) 149 150-include $(PCHDR_C_DEPEND) 151 152$(PCHDR_C_DEPEND): $(PCHDR_C_MCH) 153sdk-mch: $(PCHDR_C_MCH) 154 155$(PCHDR_C_MCH): 156ifneq ($(filter sdk-mch,$(MAKECMDGOALS)),) 157ifeq ($(PCHDR_C_FLAG),TRUE) 158 $(call BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF)) 159endif 160else 161 +$(if $(findstring j,$(MAKEFLAGS)), \ 162 $(call J_SAFE_BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF),CCFLAGS,PCHDR_C_FLAG), \ 163 $(call BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF)) ) 164endif 165 166endif 167# endif OBJS_CC != "" 168#---------------------------------------- 169 170 171# precompiled header for C++ 172 173#---------------------------------------- 174# if OBJS_CXX != "" 175ifneq ($(strip $(OBJS_CXX)),) 176 177-include $(PCHDR_CXX_DEPEND) 178 179$(PCHDR_CXX_DEPEND): $(PCHDR_CXX_MCH) 180sdk-mch: $(PCHDR_CXX_MCH) 181 182$(PCHDR_CXX_MCH): 183ifneq ($(filter sdk-mch,$(MAKECMDGOALS)),) 184ifeq ($(PCHDR_CXX_FLAG),TRUE) 185 $(call BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF)) 186endif 187else 188 +$(if $(findstring j,$(MAKEFLAGS)), \ 189 $(call J_SAFE_BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF),CXXFLAGS,PCHDR_CXX_FLAG), \ 190 $(call BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF)) ) 191endif 192 193endif 194# endif OBJS_CXX != "" 195#---------------------------------------- 196 197endif 198# endif MAKECMDGOALS contain build_and_install or sdk-mch 199#---------------------------------------- 200 201endif 202# endif USE_STD_PCHDR == TRUE 203#---------------------------------------- 204 205 206 207#---------------------------------------------------------------------------- 208# Get SDK_CW_BUILD_VERSION SDK_CW_BUILD_NUMBER 209# 210# IRIS V0.2 Hotfix 1 211# SDK_CW_BUILD_VERSION_CC=2.0 212# SDK_CW_BUILD_VERSION_LD=2.0 213# SDK_CW_BUILD_NUMBER_CC=0038 214# SDK_CW_BUILD_NUMBER_LD=0050 215# 216# NITRO V0.3 217# SDK_CW_BUILD_NUMBER_CC=0038 218# SDK_CW_BUILD_NUMBER_LD=0056 219# 220# NITRO V0.4.1 221# SDK_CW_BUILD_NUMBER_CC=0043 222# SDK_CW_BUILD_NUMBER_LD=0057 223# 224# NITRO V0.5 225# SDK_CW_BUILD_NUMBER_CC=0046 226# SDK_CW_BUILD_NUMBER_LD=0058 227# 228# NITRO V0.5 + HotFix1 229# SDK_CW_BUILD_NUMBER_CC=0049 230# SDK_CW_BUILD_NUMBER_LD=0061 231# 232# NITRO V0.6 233# SDK_CW_BUILD_NUMBER_CC=0050 234# SDK_CW_BUILD_NUMBER_LD=0062 235# 236# NITRO V0.6.1 237# SDK_CW_BUILD_NUMBER_CC=0050 238# SDK_CW_BUILD_NUMBER_LD=0063 239# 240# NITRO V0.7 241# SDK_CW_BUILD_NUMBER_CC=0050 242# SDK_CW_BUILD_NUMBER_LD=0063 243# 244# NITRO V1.0 245# SDK_CW_BUILD_NUMBER_CC=0056 246# SDK_CW_BUILD_NUMBER_LD=0067 247# 248# NITRO V1.0.2 249# SDK_CW_BUILD_NUMBER_CC=0068 250# SDK_CW_BUILD_NUMBER_LD=0068 251# 252# NITRO V1.2 253# SDK_CW_BUILD_NUMBER_CC=0073 254# SDK_CW_BUILD_NUMBER_LD=0072 255# 256# NITRO V1.2SP1 257# SDK_CW_BUILD_NUMBER_CC=0074 258# SDK_CW_BUILD_NUMBER_LD=0072 259# 260# NITRO V1.2SP2+patch 261# SDK_CW_BUILD_NUMBER_CC=0080 262# SDK_CW_BUILD_NUMBER_LD=0074 263# 264# NITRO V1.2SP3 265# SDK_CW_BUILD_NUMBER_CC=0084 266# SDK_CW_BUILD_NUMBER_LD=0077 267# 268# NITRO V1.2SP4 269# SDK_CW_BUILD_NUMBER_CC=0087 270# SDK_CW_BUILD_NUMBER_LD=7702 271# 272# NITRO V2.0beta 273# SDK_CW_BUILD_VERSION_CC=3.0 274# SDK_CW_BUILD_VERSION_LD=2.0 275# SDK_CW_BUILD_NUMBER_CC=0107 276# SDK_CW_BUILD_NUMBER_LD=0077 277# 278# NITRO V2.0 279# SDK_CW_BUILD_NUMBER_CC=0114 280# SDK_CW_BUILD_NUMBER_LD=0082 281# 282 283 284ifneq ($(findstring $(MAKECMDGOALS),build_and_install make-verinfo clean-verinfo),) 285 286.PHONY: make-verinfo 287make-verinfo: $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD) 288 289$(SDK_VERINFO_CW_CC): $(MWCC) 290ifdef SILENT 291 echo $(TWLSDK_MSG_VERSION) $@ 292endif 293 @$(CC) -version | \ 294 $(SED) -e $(QUOTE)/^Version /!d;s/\(build [0-9]\{2,4\}\) /\100 /;s/^Version \([0-9.]*\).*build \([0-9]*\).*(build \([0-9]*\)).*/SDK_CW_BUILD_VERSION_CC=\1\nSDK_CW_BUILD_NUMBER_CC=\3\nSDK_CW_BUILD_NUMBER2_CC=\2/i;$(QUOTE) >$(SDK_VERINFO_CW_CC) 295 @$(TOUCH) -r $(CC) $(SDK_VERINFO_CW_CC) 296 297$(SDK_VERINFO_CW_LD): $(MWLD) 298ifdef SILENT 299 echo $(TWLSDK_MSG_VERSION) $@ 300endif 301 @$(LD) -version | \ 302 $(SED) -e $(QUOTE)/^Version /!d;s/\(build [0-9]\{2,4\}\) /\100 /;s/^Version \([0-9.]*\).*build \([0-9]*\).*(build \([0-9]*\)).*/SDK_CW_BUILD_VERSION_LD=\1\nSDK_CW_BUILD_NUMBER_LD=\3\nSDK_CW_BUILD_NUMBER2_LD=\2/i;$(QUOTE) >$(SDK_VERINFO_CW_LD) 303 @$(TOUCH) -r $(LD) $(SDK_VERINFO_CW_LD) 304 305endif 306 307.PHONY: clean-verinfo 308clean-verinfo: 309 @$(RM) $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD) 310 311 312