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_BASE = $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC))$(PCHDR_C_NAME).C 66PCHDR_C_MCH = $(PCHDR_C_BASE).mch 67PCHDR_C_DEPEND = $(PCHDR_C_BASE).depend 68PCHDR_CCFLAGS = -include $(call empath,$(PCHDR_C_MCH)) 69CCFLAGS_NOLDEF = $(PCHDR_C_DEFS) $(PCHDR_C_NODEF) 70 71PCHDR_CXX_DEFS = $(sort $(filter -DSDK_%,$(CXXFLAGS))) 72PCHDR_CXX_NODEF = $(filter-out -D%,$(CXXFLAGS)) 73PCHDR_CXX_NAME = $(subst $(SPACE),,$(subst -DSDK_,.,$(subst =,-,$(PCHDR_CXX_DEFS)))) 74PCHDR_CXX_BASE = $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC))$(PCHDR_CXX_NAME).CXX 75PCHDR_CXX_MCH = $(PCHDR_CXX_BASE).mch 76PCHDR_CXX_DEPEND = $(PCHDR_CXX_BASE).depend 77PCHDR_CXXFLAGS = -include $(call empath,$(PCHDR_CXX_MCH)) 78CXXFLAGS_NOLDEF = $(PCHDR_CXX_DEFS) $(PCHDR_CXX_NODEF) 79 80 81#---------------------------------------- 82# if MAKECMDGOALS contains build_and_install or sdk-mch 83ifneq ($(filter build_and_install sdk-mch,$(MAKECMDGOALS)),) 84 85SYSTEM_GINCLUDES_M = $(if $(filter-out ,$(SYSTEM_GINCLUDES)),$(call cygpathm_multi,$(SYSTEM_GINCLUDES))) 86SYSTEM_INCLUDE_DIRS = $(call decode_specialchar,$(foreach DIR,$(SYSTEM_GINCLUDES_M),-I'$(DIR)')) 87SYSTEM_INCLUDES = -gccinc -I. $(SYSTEM_INCLUDE_DIRS) 88 89 90## $(call BUILD_PCHDR,$(MCH)) 91ifdef SILENT 92define BUILD_PCHDR_ECHO 93 echo $(TWLSDK_MSG_MAKE_MCH) $(1) 94endef 95else 96define BUILD_PCHDR_ECHO 97 true 98endef 99endif 100 101.DELETE_ON_ERROR: $(PCHDR_CACHE)/%_lock 102 103## $(call BUILD_PCHDR,$(BASE),$(CCFLAGS)) 104# $(BASE) must be a full path 105define BUILD_PCHDR 106 $(call BUILD_PCHDR_ECHO,$(notdir $(1).mch)) && \ 107 $(CP) $(PCHDR_SRC) $(1).h && \ 108 ($(CD) $(dir $(1).mch) && \ 109 $(RM) $(1).mch && \ 110 $(RM) $(1).depend && \ 111 $(CC) $(subst -include ,-DSDK_PCHDR_DUMMY_,$(2)) $(SYSTEM_INCLUDES) -MD -precompile $(notdir $(1).m) $(call empath,$(1).h)) && \ 112 $(MV) $(1).m $(1).mch && \ 113 (($(ECHO) $(1).mch: $(PCHDR_SRC) \\; $(SED) -e '1d' -e $(DEPEND_RULE) $(1).d) > $(1).dep \ 114 && $(MV) $(1).dep $(1).depend \ 115 && $(RM) $(1).d $(1).h) 116endef 117 118## $(call J_SAFE_BUILD_PCHDR,$(BASE),$(CCFLAGS),CCFLAGS) 119define J_SAFE_BUILD_PCHDR 120 trap 'rm -rf $(1)_lock 2> /dev/null ; exit 1' 1 2 3 15; \ 121 until mkdir $(1)_lock 2> /dev/null; do \ 122 sleep 1; \ 123 done; \ 124 $(REMAKE) sdk-mch $(3)="$(subst ",\",$(2))" $(4)=TRUE; \ 125 rmdir $(1)_lock; \ 126 trap 1 2 3 15 127endef 128 129 130# precompiled header for C 131 132#---------------------------------------- 133# if OBJS_CC != "" 134ifneq ($(strip $(OBJS_CC)),) 135 136-include $(PCHDR_C_DEPEND) 137 138$(PCHDR_C_DEPEND): $(PCHDR_C_MCH) 139sdk-mch: $(PCHDR_C_MCH) 140 141$(PCHDR_C_MCH): 142ifneq ($(filter sdk-mch,$(MAKECMDGOALS)),) 143ifeq ($(PCHDR_C_FLAG),TRUE) 144 $(call BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF)) 145endif 146else 147 +$(if $(findstring j,$(MAKEFLAGS)), \ 148 $(call J_SAFE_BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF),CCFLAGS,PCHDR_C_FLAG), \ 149 $(call BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF)) ) 150endif 151 152endif 153# endif OBJS_CC != "" 154#---------------------------------------- 155 156 157# precompiled header for C++ 158 159#---------------------------------------- 160# if OBJS_CXX != "" 161ifneq ($(strip $(OBJS_CXX)),) 162 163-include $(PCHDR_CXX_DEPEND) 164 165$(PCHDR_CXX_DEPEND): $(PCHDR_CXX_MCH) 166sdk-mch: $(PCHDR_CXX_MCH) 167 168$(PCHDR_CXX_MCH): 169ifneq ($(filter sdk-mch,$(MAKECMDGOALS)),) 170ifeq ($(PCHDR_CXX_FLAG),TRUE) 171 $(call BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF)) 172endif 173else 174 +$(if $(findstring j,$(MAKEFLAGS)), \ 175 $(call J_SAFE_BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF),CXXFLAGS,PCHDR_CXX_FLAG), \ 176 $(call BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF)) ) 177endif 178 179endif 180# endif OBJS_CXX != "" 181#---------------------------------------- 182 183endif 184# endif MAKECMDGOALS contain build_and_install or sdk-mch 185#---------------------------------------- 186 187endif 188# endif USE_STD_PCHDR == TRUE 189#---------------------------------------- 190 191 192 193#---------------------------------------------------------------------------- 194# Get SDK_CW_BUILD_VERSION SDK_CW_BUILD_NUMBER 195# 196# IRIS V0.2 Hotfix 1 197# SDK_CW_BUILD_VERSION_CC=2.0 198# SDK_CW_BUILD_VERSION_LD=2.0 199# SDK_CW_BUILD_NUMBER_CC=0038 200# SDK_CW_BUILD_NUMBER_LD=0050 201# 202# NITRO V0.3 203# SDK_CW_BUILD_NUMBER_CC=0038 204# SDK_CW_BUILD_NUMBER_LD=0056 205# 206# NITRO V0.4.1 207# SDK_CW_BUILD_NUMBER_CC=0043 208# SDK_CW_BUILD_NUMBER_LD=0057 209# 210# NITRO V0.5 211# SDK_CW_BUILD_NUMBER_CC=0046 212# SDK_CW_BUILD_NUMBER_LD=0058 213# 214# NITRO V0.5 + HotFix1 215# SDK_CW_BUILD_NUMBER_CC=0049 216# SDK_CW_BUILD_NUMBER_LD=0061 217# 218# NITRO V0.6 219# SDK_CW_BUILD_NUMBER_CC=0050 220# SDK_CW_BUILD_NUMBER_LD=0062 221# 222# NITRO V0.6.1 223# SDK_CW_BUILD_NUMBER_CC=0050 224# SDK_CW_BUILD_NUMBER_LD=0063 225# 226# NITRO V0.7 227# SDK_CW_BUILD_NUMBER_CC=0050 228# SDK_CW_BUILD_NUMBER_LD=0063 229# 230# NITRO V1.0 231# SDK_CW_BUILD_NUMBER_CC=0056 232# SDK_CW_BUILD_NUMBER_LD=0067 233# 234# NITRO V1.0.2 235# SDK_CW_BUILD_NUMBER_CC=0068 236# SDK_CW_BUILD_NUMBER_LD=0068 237# 238# NITRO V1.2 239# SDK_CW_BUILD_NUMBER_CC=0073 240# SDK_CW_BUILD_NUMBER_LD=0072 241# 242# NITRO V1.2SP1 243# SDK_CW_BUILD_NUMBER_CC=0074 244# SDK_CW_BUILD_NUMBER_LD=0072 245# 246# NITRO V1.2SP2+patch 247# SDK_CW_BUILD_NUMBER_CC=0080 248# SDK_CW_BUILD_NUMBER_LD=0074 249# 250# NITRO V1.2SP3 251# SDK_CW_BUILD_NUMBER_CC=0084 252# SDK_CW_BUILD_NUMBER_LD=0077 253# 254# NITRO V1.2SP4 255# SDK_CW_BUILD_NUMBER_CC=0087 256# SDK_CW_BUILD_NUMBER_LD=7702 257# 258# NITRO V2.0beta 259# SDK_CW_BUILD_VERSION_CC=3.0 260# SDK_CW_BUILD_VERSION_LD=2.0 261# SDK_CW_BUILD_NUMBER_CC=0107 262# SDK_CW_BUILD_NUMBER_LD=0077 263# 264# NITRO V2.0 265# SDK_CW_BUILD_NUMBER_CC=0114 266# SDK_CW_BUILD_NUMBER_LD=0082 267# 268 269 270ifneq ($(findstring $(MAKECMDGOALS),build_and_install make-verinfo clean-verinfo),) 271 272.PHONY: make-verinfo 273make-verinfo: $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD) 274 275$(SDK_VERINFO_CW_CC): $(MWCC) 276ifdef SILENT 277 echo $(TWLSDK_MSG_VERSION) $@ 278endif 279 @$(MWCC) -version | \ 280 $(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) 281 @$(TOUCH) -r $(MWCC) $(SDK_VERINFO_CW_CC) 282 283$(SDK_VERINFO_CW_LD): $(MWLD) 284ifdef SILENT 285 echo $(TWLSDK_MSG_VERSION) $@ 286endif 287 @$(MWLD) -version | \ 288 $(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) 289 @$(TOUCH) -r $(MWLD) $(SDK_VERINFO_CW_LD) 290 291endif 292 293.PHONY: clean-verinfo 294clean-verinfo: 295 @$(RM) $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD) 296 297 298