]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/edma3_lld.git/blob - makerules/rules_674.mk
Bumped minor version to 02.12.01.24
[keystone-rtos/edma3_lld.git] / makerules / rules_674.mk
1 # Filename: rules_674.mk\r
2 #\r
3 # Make rules for c674 - This file has all the common rules and defines required\r
4 #                     for DSP - c674 ISA\r
5 #\r
6 # This file needs to change when:\r
7 #     1. Code generation tool chain changes (currently it uses TI CGT)\r
8 #     2. Internal switches (which are normally not touched) has to change\r
9 #     3. XDC specific switches change\r
10 #     4. a rule common for c674 ISA has to be added or modified\r
11 \r
12 # Set compiler/archiver/linker commands and include paths - Currently different\r
13 #  for ELF and COFF. In a future release of the toolchain, it would merge.\r
14 ifeq ($(FORMAT),COFF)\r
15  CODEGEN_PATH = $(CODEGEN_PATH_DSP)\r
16  CODEGEN_INCLUDE = $(CODEGEN_PATH_DSP)/include\r
17  CC = $(CODEGEN_PATH_DSP)/bin/cl6x \r
18  AR = $(CODEGEN_PATH_DSP)/bin/ar6x\r
19  LNK = $(CODEGEN_PATH_DSP)/bin/lnk6x\r
20 endif\r
21 ifeq ($(FORMAT),ELF)\r
22  CODEGEN_PATH = $(CODEGEN_PATH_DSPELF)\r
23  CODEGEN_INCLUDE = $(CODEGEN_PATH_DSPELF)/include\r
24  CC = $(CODEGEN_PATH_DSPELF)/bin/cl6x \r
25  AR = $(CODEGEN_PATH_DSPELF)/bin/ar6x\r
26  LNK = $(CODEGEN_PATH_DSPELF)/bin/lnk6x\r
27 endif\r
28 \r
29 \r
30 # Derive a part of RTS Library name based on ENDIAN: little/big\r
31 ifeq ($(ENDIAN),little)\r
32   #RTSLIB_ENDIAN =\r
33 else\r
34   RTSLIB_ENDIAN = e\r
35 endif\r
36 \r
37 # Derive compiler switch and part of RTS Library name based on FORMAT: COFF/ELF\r
38 ifeq ($(FORMAT),COFF)\r
39   CSWITCH_FORMAT = \r
40   #RTSLIB_FORMAT = \r
41   XDCINTERNAL_DEFINES = -Dxdc_target_types__=ti/targets/std.h -Dxdc_bld__vers_1_0_7_0_0\r
42 endif\r
43 ifeq ($(FORMAT),ELF)\r
44   CSWITCH_FORMAT = --abi=elfabi \r
45   RTSLIB_FORMAT = _elf\r
46   XDCINTERNAL_DEFINES = -Dxdc_target_types__=ti/targets/elf/std.h -Dxdc_bld__vers_1_0_7_2_0_10271\r
47 endif\r
48 \r
49 # XDC Specific defines\r
50 ifneq ($(XDC_CFG_FILE_$(CORE)),)\r
51   ifeq ($(PROFILE_$(CORE)),debug)\r
52     CFG_CFILENAMEPART_XDC =p$(FORMAT_EXT)$(ISA)\r
53   endif\r
54   ifeq ($(PROFILE_$(CORE)),release)\r
55     CFG_CFILENAMEPART_XDC =p$(FORMAT_EXT)$(ISA)\r
56   endif\r
57   ifeq ($(PROFILE_$(CORE)),whole_program_debug)\r
58     CFG_CFILENAMEPART_XDC =p$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)\r
59     CFG_LNKFILENAMEPART_XDC=_x\r
60   endif\r
61   CFG_CFILE_XDC =$(patsubst %.cfg,%_$(CFG_CFILENAMEPART_XDC).c,$(notdir $(XDC_CFG_FILE_$(CORE))))\r
62   CFG_C_XDC = $(addprefix $(CONFIGURO_DIR)/package/cfg/,$(CFG_CFILE_XDC))\r
63   XDCLNKCMD_FILE =$(patsubst %.c, %$(CFG_LNKFILENAMEPART_XDC).xdl, $(CFG_C_XDC))\r
64   CFG_COBJ_XDC = $(patsubst %.c,%.$(OBJEXT),$(CFG_CFILE_XDC))\r
65 #  OBJ_PATHS += $(CFG_COBJ_XDC)\r
66   LNKCMD_FILE = $(CONFIGURO_DIR)/linker_mod.cmd\r
67   SPACE := \r
68   SPACE += \r
69   XDC_GREP_STRING = $(CONFIGURO_DIRNAME)\r
70 #  XDC_GREP_STRING = $(subst $(SPACE),\|,$(COMP_LIST_$(CORE)))\r
71 #  XDC_GREP_STRING += \|$(CONFIGURO_DIRNAME)\r
72 endif\r
73 \r
74 # Internal CFLAGS - normally doesn't change\r
75 CFLAGS_INTERNAL = -c -qq -pdsw225 -mv6740 $(CSWITCH_FORMAT) -mo -eo.$(OBJEXT) -ea.$(ASMEXT) -DBUILD_C6XDSP\r
76 \r
77 # Uncomment for misra C build\r
78 #CFLAGS_INTERNAL += --check_misra="all"\r
79 \r
80 # Uncomment for Cpp enabled build\r
81 #CFLAGS_INTERNAL += --cpp_default\r
82 \r
83 CFLAGS_DIROPTS = -fr=$(OBJDIR) -fs=$(OBJDIR)\r
84 \r
85 # CFLAGS based on profile selected\r
86 ifeq ($(PROFILE_$(CORE)), debug)\r
87  CFLAGS_INTERNAL += --symdebug:dwarf\r
88  CFLAGS_XDCINTERNAL = -Dxdc_target_name__=C674  -Dxdc_bld__profile_debug -D_DEBUG_=1 \r
89  ifndef MODULE_NAME\r
90   CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/$(XDC_CFG_BASE_FILE_NAME)_xem3.h' \r
91  endif\r
92  LNKFLAGS_INTERNAL_PROFILE = \r
93 endif\r
94 ifeq ($(PROFILE_$(CORE)), release)\r
95  CFLAGS_INTERNAL += -O2\r
96  CFLAGS_XDCINTERNAL = -Dxdc_target_name__=C674 -Dxdc_bld__profile_release\r
97  ifndef MODULE_NAME\r
98   CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/$(XDC_CFG_BASE_FILE_NAME)_pem3.h' \r
99  endif\r
100  LNKFLAGS_INTERNAL_PROFILE = -o2\r
101 # LNKFLAGS_INTERNAL_PROFILE = \r
102 endif\r
103 \r
104 # For generic platform define GENERIC in CFLAGS\r
105 ifeq ($(PLATFORM),generic)\r
106  CFLAGS_XDCINTERNAL += -DGENERIC\r
107 endif\r
108 CFLAGS_XDCINTERNAL += $(XDCINTERNAL_DEFINES)\r
109 \r
110 # Following 'if...' block is for an application; to add a #define for each\r
111 #   component in the build. This is required to know - at compile time - which\r
112 #   components are on which core.\r
113 ifndef MODULE_NAME\r
114   # Derive list of all packages from each of the components needed by the app\r
115   PKG_LIST_M3_LOCAL = $(foreach COMP,$(COMP_LIST_$(CORE)),$($(COMP)_PKG_LIST))\r
116   \r
117   # Defines for the app and cfg source code to know which components/packages\r
118   # are included in the build for the local CORE...\r
119   CFLAGS_APP_DEFINES = $(foreach PKG,$(PKG_LIST_M3_LOCAL),-D_LOCAL_$(PKG)_)\r
120   CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_LOCAL),-D_BUILD_$(PKG)_)\r
121   \r
122   ifeq ($(CORE),m3vpss)\r
123     PKG_LIST_M3_REMOTE = $(foreach COMP,$(COMP_LIST_m3video),$($(COMP)_PKG_LIST))\r
124     CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3vpss_\r
125   endif\r
126   ifeq ($(CORE),m3video)\r
127     PKG_LIST_M3_REMOTE = $(foreach COMP,$(COMP_LIST_m3vpss),$($(COMP)_PKG_LIST))\r
128     CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3video_\r
129   endif\r
130   PKG_LIST_A8_REMOTE = $(foreach COMP,$(COMP_LIST_a8host),$($(COMP)_PKG_LIST))\r
131 \r
132   # Defines for the app and cfg source code to know which components/packages\r
133   # are included in the build for the remote CORE...\r
134   CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_REMOTE),-D_REMOTE_$(PKG)_)\r
135   CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_REMOTE),-D_BUILD_$(PKG)_)\r
136   CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_A8_REMOTE),-D_REMOTE_$(PKG)_)\r
137   CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_A8_REMOTE),-D_BUILD_$(PKG)_)\r
138 endif\r
139 \r
140 # Assemble CFLAGS from all other CFLAGS definitions\r
141 _CFLAGS = $(CFLAGS_INTERNAL) $(CFLAGS_GLOBAL_$(CORE)) $(CFLAGS_XDCINTERNAL) $(CFLAGS_LOCAL_COMMON) $(CFLAGS_LOCAL_$(CORE)) $(CFLAGS_LOCAL_$(PLATFORM)) $(CFLAGS_LOCAL_$(SOC)) $(CFLAGS_APP_DEFINES) $(CFLAGS_COMP_COMMON) $(CFLAGS_GLOBAL_$(PLATFORM))\r
142 \r
143 # Object file creation\r
144 # The first $(CC) generates the dependency make files for each of the objects\r
145 # The second $(CC) compiles the source to generate object\r
146 $(OBJ_PATHS): $(OBJDIR)/%.$(OBJEXT): %.c\r
147         $(ECHO) \# Compiling $< to $@ ...\r
148         $(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $<\r
149         $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $<\r
150 \r
151 # Archive flags - normally doesn't change\r
152 ARFLAGS = rq\r
153 \r
154 # Archive/library file creation\r
155 $(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)\r
156         $(ECHO) \#\r
157         $(ECHO) \# Archiving $(OBJ_PATHS) into $@...\r
158         $(ECHO) \#\r
159         $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)\r
160 \r
161 # Linker options and rules\r
162 LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=6740 -c\r
163 \r
164 # Assemble Linker flags from all other LNKFLAGS definitions\r
165 _LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE)) \r
166 \r
167 # Path of the RTS library - normally doesn't change for a given tool-chain\r
168 RTSLIB_PATH = $(CODEGEN_PATH)/lib/rts6740$(RTSLIB_ENDIAN)$(RTSLIB_FORMAT).lib\r
169 LIB_PATHS += $(RTSLIB_PATH)\r
170 \r
171 LNK_LIBS = $(addprefix -l,$(LIB_PATHS))\r
172 ifeq ($(DEST_ROOT),)\r
173  TMPOBJDIR = .\r
174 else\r
175  TMPOBJDIR = $(OBJDIR)\r
176 endif\r
177 # Linker - to create executable file \r
178 $(BINDIR)/$(APP_NAME)_$(CORE)_$(PROFILE_$(CORE)).$(EXEEXT) : $(OBJ_PATHS) $(LIB_PATHS) $(LNKCMD_FILE) $(OBJDIR)/$(CFG_COBJ_XDC)\r
179         $(ECHO) \# Linking into $@\r
180         $(ECHO) \#\r
181         cd $(TMPOBJDIR) && $(LNK) $(_LNKFLAGS) $(OBJ_PATHS) -l$(LNKCMD_FILE) sample_app/linker.cmd -o $@ -m $@.map $(LNK_LIBS)\r
182         $(ECHO) \#\r
183         $(ECHO) \# $@ created.\r
184         $(ECHO) \#\r
185 \r
186 # XDC specific - assemble XDC-Configuro command\r
187 CONFIGURO_CMD = $(xdc_PATH)/xs xdc.tools.configuro --generationOnly -o $(CONFIGURO_DIR) -t $(TARGET_XDC) -p $(PLATFORM_XDC) \\r
188                -r $(PROFILE_$(CORE)) -c $(CODEGEN_PATH) -b $(CONFIG_BLD_XDC_$(ISA)) $(XDC_CFG_FILE_NAME)\r
189 #CONFIGURO_CMD = $(xdc_PATH)/xs xdc.tools.configuro --generationOnly -o $(CONFIGURO_DIR) -t $(TARGET_XDC) -p $(PLATFORM_XDC) \\r
190 #               -r whole_program $(XDC_CFG_FILE_NAME)\r
191 _XDC_GREP_STRING = \"$(XDC_GREP_STRING)\"\r
192 EGREP_CMD = $(EGREP) -ivw $(XDC_GREP_STRING) $(XDCLNKCMD_FILE)\r
193 \r
194 ifneq ($(DEST_ROOT),)\r
195  DEST_ROOT += /\r
196 endif\r
197 # Invoke configuro for the rest of the components\r
198 #  NOTE: 1. String handling is having issues with various make versions when the \r
199 #           cammand is directly tried to be given below. Hence, as a work-around, \r
200 #           the command is re-directed to a file (shell or batch file) and then \r
201 #           executed\r
202 #        2. The linker.cmd file generated, includes the libraries generated by\r
203 #           XDC. An egrep to search for these and omit in the .cmd file is added\r
204 #           after configuro is done\r
205 #$(CFG_CFILE_XDC) : $(XDC_CFG_FILE)\r
206 xdc_configuro : $(XDC_CFG_FILE)\r
207         $(ECHO) \# Invoking configuro...\r
208         $(ECHO) -e $(CONFIGURO_CMD) > $(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat\r
209         $(CHMOD) a+x $(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat\r
210 ifeq ($(OS),Windows_NT)\r
211         CACLS $(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat /E /P Everyone:F\r
212         $(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat\r
213 else\r
214         ./$(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat\r
215 endif\r
216         $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)\r
217 #       $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat\r
218 #       ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)\r
219 #       $(EGREP_CMD) > $(LNKCMD_FILE)\r
220 #       $(EGREP) -iv "$(XDC_GREP_STRING)" $(XDCLNKCMD_FILE) > $(LNKCMD_FILE)\r
221         $(ECHO) \# Configuro done!\r
222 \r
223 $(LNKCMD_FILE) :\r
224 #       $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)\r
225 #       $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat\r
226 #       ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)\r
227 #       $(EGREP_CMD) > $(LNKCMD_FILE)\r
228  \r
229 ifndef MODULE_NAME\r
230 $(OBJDIR)/$(CFG_COBJ_XDC) : $(CFG_C_XDC)\r
231         $(ECHO) \# Compiling generated $< to $@ ...\r
232         $(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $(CFG_C_XDC)\r
233         $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $(CFG_C_XDC)\r
234         $(CP) $(OBJDIR)/$(CFG_COBJ_XDC) $(CONFIGURO_DIR)/package/cfg/$(CFG_COBJ_XDC)\r
235 endif\r
236 \r
237 # Include dependency make files that were generated by $(CC)\r
238 -include $(SRCS:%.c=$(DEPDIR)/%.P)\r
239 \r
240 # Nothing beyond this point\r