]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/edma3_lld.git/blob - makerules/rules_CS_a8.mk
Updated webgen makefile for release 02.11.03.02
[keystone-rtos/edma3_lld.git] / makerules / rules_CS_a8.mk
1 # Filename: rules_a8.mk\r
2 #\r
3 # Make rules for A8 - This file has all the common rules and defines required\r
4 #                     for Cortex-A8 ISA\r
5 #\r
6 # This file needs to change when:\r
7 #     1. Code generation tool chain changes (currently it uses CodeSourcery)\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 A8 ISA has to be added or modified\r
11 \r
12 # Set compiler/archiver/linker commands and include paths\r
13 CODEGEN_INCLUDE = $(CODEGEN_PATH_A8)\r
14 CC = $(CODEGEN_PATH_A8)/bin/arm-none-linux-gnueabi-gcc\r
15 AR = $(CODEGEN_PATH_A8)/bin/arm-none-linux-gnueabi-ar\r
16 LNK = $(CODEGEN_PATH_A8)/bin/arm-none-linux-gnueabi-ld\r
17 \r
18 # Internal CFLAGS - normally doesn't change\r
19 CFLAGS_INTERNAL = -fPIC -fno-strict-aliasing -MD -MF $(DEPFILE).P -march=armv5t -Dfar= -D_DEBUG_=1 -DMULTICHANNEL_OPT=1\r
20 CFLAGS_DIROPTS = \r
21 \r
22 # XDC specific CFLAGS \r
23 CFLAGS_XDCINTERNAL = -Dxdc_target_name__=GCArmv5T -Dxdc_target_types__=gnu/targets/arm/std.h  -Dxdc_bld__profile_$(PROFILE_$(CORE))  -Dxdc_bld__vers_1_0_4_3_3 \r
24 LNKFLAGS_INTERNAL_PROFILE = \r
25 \r
26 # Following 'if...' block is for an application; to add a #define for each\r
27 #   component in the build. This is required to know - at compile time - which\r
28 #   components are on which core.\r
29 ifndef MODULE_NAME\r
30   # Derive list of all packages from each of the components needed by the app\r
31   PKG_LIST_LOCAL = $(foreach COMP,$(COMP_LIST_$(CORE)),$($(COMP)_PKG_LIST))\r
32   \r
33   # Defines for the app and cfg source code to know which components/packages\r
34   # are included in the build for the local CORE...\r
35   CFLAGS_APP_DEFINES = $(foreach PKG,$(PKG_LIST_LOCAL),-D_LOCAL_$(PKG)_)\r
36   CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_LOCAL),-D_BUILD_$(PKG)_)\r
37   \r
38   ifeq ($(CORE),m3vpss)\r
39     PKG_LIST_REMOTE = $(foreach COMP,$(COMP_LIST_m3video),$($(COMP)_PKG_LIST))\r
40     CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3vpss_\r
41   endif\r
42   ifeq ($(CORE),m3video)\r
43     PKG_LIST_REMOTE = $(foreach COMP,$(COMP_LIST_m3vpss),$($(COMP)_PKG_LIST))\r
44     CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3video_\r
45   endif\r
46   ifeq ($(CORE),a8host)\r
47     PKG_LIST_REMOTE = $(foreach COMP,$(COMP_LIST_m3video),$($(COMP)_PKG_LIST))\r
48     PKG_LIST_REMOTE += $(foreach COMP,$(COMP_LIST_m3vpss),$($(COMP)_PKG_LIST))\r
49     CFLAGS_APP_DEFINES += -D_LOCAL_CORE_a8host_\r
50   endif\r
51 \r
52   # Defines for the app and cfg source code to know which components/packages\r
53   # are included in the build for the remote CORE...\r
54   CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_REMOTE),-D_REMOTE_$(PKG)_)\r
55   CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_REMOTE),-D_BUILD_$(PKG)_)\r
56 endif\r
57 \r
58 # Assemble CFLAGS from all other CFLAGS definitions\r
59 _CFLAGS = $(CFLAGS_GLOBAL_$(CORE)) $(CFLAGS_INTERNAL) $(CFLAGS_XDCINTERNAL) $(CFLAGS_LOCAL_COMMON) $(CFLAGS_LOCAL_$(CORE)) $(CFLAGS_LOCAL_$(PLATFORM)) $(CFLAGS_LOCAL_$(SOC)) $(CFLAGS_APP_DEFINES) $(CFLAGS_COMP_COMMON) $(CFLAGS_GLOBAL_$(PLATFORM))\r
60 \r
61 # Object file creation\r
62 # The first $(CC) generates the dependency make files for each of the objects\r
63 # The second $(CC) compiles the source to generate object\r
64 $(OBJ_PATHS): $(OBJDIR)/%.$(OBJEXT): %.c\r
65         $(ECHO) \# Compiling $< to $@ ...\r
66         $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -o $(OBJDIR)/$(basename $(notdir $<)).$(OBJEXT) $<\r
67 \r
68 # Archive flags - normally doesn't change\r
69 ARFLAGS = cr\r
70 \r
71 # Archive/library file creation\r
72 $(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)\r
73         $(ECHO) \#\r
74         $(ECHO) \# Archiving $(OBJ_PATHS) into $@...\r
75         $(ECHO) \#\r
76         $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)\r
77 \r
78 # Linker options and rules\r
79 LNKFLAGS_INTERNAL_COMMON =  -lpthread -lrt -L$(CODEGEN_PATH_A8)/arm-none-linux-gnueabi/lib\r
80 \r
81 # Assemble Linker flags from all other LNKFLAGS definitions\r
82 _LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE)) \r
83 \r
84 # Path of the RTS library - normally doesn't change for a given tool-chain\r
85 RTSLIB_PATH = \r
86 LIB_PATHS += \r
87 \r
88 LNK_LIBS = $(addprefix -l,$(LIB_PATHS))\r
89 # Linker - to create executable file \r
90 $(BINDIR)/$(APP_NAME)_$(CORE)_$(PROFILE_$(CORE)).$(EXEEXT) : $(OBJ_PATHS) $(LIB_PATHS) $(LNKCMD_FILE) $(OBJDIR)/$(CFG_COBJ_XDC)\r
91         $(ECHO) \# Linking into $@\r
92         $(ECHO) \#\r
93 #       $(LNK) $(OBJ_PATHS) $(OBJDIR)/$(CFG_COBJ_XDC) $(LNKCMD_FILE) $(_LNKFLAGS) -o $@ -Map $@.map $(LNK_LIBS)\r
94         $(CC) $(OBJ_PATHS) $(OBJDIR)/$(CFG_COBJ_XDC) $(LIB_PATHS) $(LNKCMD_FILE) $(_LNKFLAGS) -o $@\r
95         $(ECHO) \#\r
96         $(ECHO) \# $@ created.\r
97         $(ECHO) \#\r
98 \r
99 # XDC specific - assemble XDC-Configuro command\r
100 CONFIGURO_CMD = $(xdc_PATH)/xs xdc.tools.configuro --generationOnly -o $(CONFIGURO_DIR) -t $(TARGET_XDC) -p $(PLATFORM_XDC) \\r
101                --cfgArgs $(CFGARGS_XDC) -r $(PROFILE_$(CORE)) -b $(CONFIG_BLD_XDC_$(ISA)) $(XDC_CFG_FILE_NAME)\r
102 _XDC_GREP_STRING = \"$(XDC_GREP_STRING)\"\r
103 EGREP_CMD = $(EGREP) -ivw $(XDC_GREP_STRING) $(XDCLNKCMD_FILE)\r
104 \r
105 # Invoke configuro for the rest of the components\r
106 #  NOTE: 1. String handling is having issues with various make versions when the \r
107 #           cammand is directly tried to be given below. Hence, as a work-around, \r
108 #           the command is re-directed to a file (shell or batch file) and then \r
109 #           executed\r
110 #        2. The linker.cmd file generated, includes the libraries generated by\r
111 #           XDC. An egrep to search for these and omit in the .cmd file is added\r
112 #           after configuro is done\r
113 #$(CFG_CFILE_XDC) : $(XDC_CFG_FILE)\r
114 xdc_configuro : $(XDC_CFG_FILE)\r
115         $(ECHO) \# Invoking configuro...\r
116         $(ECHO) -e $(CONFIGURO_CMD) > $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat\r
117         $(CHMOD) a+x $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat\r
118         $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat\r
119 #       $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)\r
120 #       $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat\r
121 #       ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)\r
122         $(EGREP_CMD) > $(LNKCMD_FILE)\r
123 #       $(EGREP) -iv "$(XDC_GREP_STRING)" $(XDCLNKCMD_FILE) > $(LNKCMD_FILE)\r
124         $(ECHO) \# Configuro done!\r
125 \r
126 $(LNKCMD_FILE) :\r
127 #       $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)\r
128 #       $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat\r
129 #       ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)\r
130 #       $(EGREP_CMD) > $(LNKCMD_FILE)\r
131  \r
132 ifndef MODULE_NAME\r
133 $(OBJDIR)/$(CFG_COBJ_XDC) : $(CFG_C_XDC)\r
134         $(ECHO) \# Compiling generated $< to $@ ...\r
135         $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -o $(OBJDIR)/$(CFG_COBJ_XDC) $(CFG_C_XDC)\r
136 endif\r
137 \r
138 # Include dependency make files that were generated by $(CC)\r
139 -include $(SRCS:%.c=$(DEPDIR)/%.P)\r
140 \r
141 # Nothing beyond this point\r