]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/performance-audio-sr.git/blob - pasdk/test_arm/Makefile
PASDK-587:Add make files for test_arm & test_dsp
[processor-sdk/performance-audio-sr.git] / pasdk / test_arm / Makefile
1 #
2 #  Copyright (c) 2018 Texas Instruments Incorporated - http://www.ti.com
3 #  All rights reserved.
4 #
5 #  Redistribution and use in source and binary forms, with or without
6 #  modification, are permitted provided that the following conditions
7 #  are met:
8 #
9 #  *  Redistributions of source code must retain the above copyright
10 #     notice, this list of conditions and the following disclaimer.
11 #
12 #  *  Redistributions in binary form must reproduce the above copyright
13 #     notice, this list of conditions and the following disclaimer in the
14 #     documentation and/or other materials provided with the distribution.
15 #
16 #  *  Neither the name of Texas Instruments Incorporated nor the names of
17 #     its contributors may be used to endorse or promote products derived
18 #     from this software without specific prior written permission.
19 #
20 #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 #  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 #  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 #  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 #  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 #  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 #  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 #  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 #  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 #  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 #  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 #
33 #
34 #  ======== Makefile ========
35 #
37 EXBASE = ../..
38 include $(EXBASE)/products.mak
40 .PHONY: all paf_libs debug release
42 # Source directories
43 COMMON_SRC_DIR_CMP      = ../common/components
44 COMMON_SRC_DIR_PFP      = ../common/pfp
45 COMMON_SRC_DIR_COMMON   = ../common
46 LOCAL_SRC_DIR_ITOPO     = framework/itopo
47 LOCAL_SRC_DIR_FWK       = framework
48 LOCAL_SRC_DIR_APP       = application
49 # Source files
50 COMMON_SRCS_CMP         = $(wildcard $(COMMON_SRC_DIR_CMP)/*.c)
51 COMMON_SRCS_PFP         = $(wildcard $(COMMON_SRC_DIR_PFP)/*.c)
52 COMMON_SRCS_COMMON      = $(wildcard $(COMMON_SRC_DIR_COMMON)/*.c)
53 LOCAL_SRCS_ITOPO        = $(wildcard $(LOCAL_SRC_DIR_ITOPO)/*.c)
54 LOCAL_SRCS_FWK          = $(wildcard $(LOCAL_SRC_DIR_FWK)/*.c)
55 LOCAL_SRCS_APP          = $(wildcard $(LOCAL_SRC_DIR_APP)/*.c)
57 # Object file base directory
58 OBJ_DIR_BASE = bin/$(PROFILE)/obj
60 # Object & dependency file directories
61 COMMON_OBJ_DIR_CMP      = $(addsuffix /$(subst ../,,$(COMMON_SRC_DIR_CMP)),$(OBJ_DIR_BASE))
62 COMMON_OBJ_DIR_PFP      = $(addsuffix /$(subst ../,,$(COMMON_SRC_DIR_PFP)),$(OBJ_DIR_BASE))
63 COMMON_OBJ_DIR_COMMON   = $(addsuffix /$(subst ../,,$(COMMON_SRC_DIR_COMMON)),$(OBJ_DIR_BASE))
64 LOCAL_OBJ_DIR_ITOPO     = $(addsuffix /$(LOCAL_SRC_DIR_ITOPO),$(OBJ_DIR_BASE))
65 LOCAL_OBJ_DIR_FWK       = $(addsuffix /$(LOCAL_SRC_DIR_FWK),$(OBJ_DIR_BASE))
66 LOCAL_OBJ_DIR_APP       = $(addsuffix /$(LOCAL_SRC_DIR_APP),$(OBJ_DIR_BASE))
67 OBJ_DIRS = $(COMMON_OBJ_DIR_CMP) \
68     $(COMMON_OBJ_DIR_PFP) \
69     $(COMMON_OBJ_DIR_COMMON) \
70     $(LOCAL_OBJ_DIR_ITOPO) \
71     $(LOCAL_OBJ_DIR_FWK) \
72     $(LOCAL_OBJ_DIR_APP)
73     
74 # Object files
75 COMMON_OBJS_CMP         = $(addprefix $(COMMON_OBJ_DIR_CMP)/,$(patsubst %.c,%.oa15fg,$(notdir $(COMMON_SRCS_CMP))))
76 COMMON_OBJS_PFP         = $(addprefix $(COMMON_OBJ_DIR_PFP)/,$(patsubst %.c,%.oa15fg,$(notdir $(COMMON_SRCS_PFP))))
77 COMMON_OBJS_COMMON      = $(addprefix $(COMMON_OBJ_DIR_COMMON)/,$(patsubst %.c,%.oa15fg,$(notdir $(COMMON_SRCS_COMMON))))
78 LOCAL_OBJS_ITOPO        = $(addprefix $(LOCAL_OBJ_DIR_ITOPO)/,$(patsubst %.c,%.oa15fg,$(notdir $(LOCAL_SRCS_ITOPO))))
79 LOCAL_OBJS_FWK          = $(addprefix $(LOCAL_OBJ_DIR_FWK)/,$(patsubst %.c,%.oa15fg,$(notdir $(LOCAL_SRCS_FWK))))
80 LOCAL_OBJS_APP          = $(addprefix $(LOCAL_OBJ_DIR_APP)/,$(patsubst %.c,%.oa15fg,$(notdir $(LOCAL_SRCS_APP))))
81 OBJS = $(COMMON_OBJS_CMP) \
82     $(COMMON_OBJS_PFP) \
83     $(COMMON_OBJS_COMMON) \
84     $(LOCAL_OBJS_ITOPO) \
85     $(LOCAL_OBJS_FWK) \
86     $(LOCAL_OBJS_APP)
88 CONFIG = bin/$(PROFILE)/configuro
90 # Package repositories
91 PKGPATH := $(BIOS_INSTALL_DIR)/packages
92 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages
93 PKGPATH := $(PKGPATH)+$(UIA_INSTALL_DIR)/packages
94 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
96 # Include generated dependency files
97 -include $(patsubst %.oa15fg,%.oa15fg.dep,$(COMMON_OBJS_CMP))
98 -include $(patsubst %.oa15fg,%.oa15fg.dep,$(COMMON_OBJS_PFP))
99 -include $(patsubst %.oa15fg,%.oa15fg.dep,$(COMMON_OBJS_COMMON))
100 -include $(patsubst %.oa15fg,%.oa15fg.dep,$(LOCAL_OBJS_ITOPO))
101 -include $(patsubst %.oa15fg,%.oa15fg.dep,$(LOCAL_OBJS_FWK))
102 -include $(patsubst %.oa15fg,%.oa15fg.dep,$(LOCAL_OBJS_APP))
104 .PRECIOUS: %/compiler.opt %/linker.cmd
106 all: paf_libs debug release
107   
108     
109 #  ======== rule to generate PAF libraries ========
110 paf_libs:
111         $(MAKE) -C $(PAF_INSTALL_DIR)/pa/build install ARCH=a15
113 #  ======== rule for debug build configuration ========
114 debug:
115         $(MAKE) PROFILE=debug test_arm.x
117 #  ======== rule for release build configuration ========
118 release:
119         $(MAKE) PROFILE=release test_arm.x
121     
122 #  ======== rule for link ========
123 test_arm.x: bin/$(PROFILE)/test_arm.xa15fg
124 bin/$(PROFILE)/test_arm.xa15fg: $(OBJS) $(libs) $(CONFIG)/linker.cmd
125         @$(ECHO) "#"
126         @$(ECHO) "# Making $@ ..."
127         $(LD) -o $@ $(LDFLAGS) $(OBJS) $(libs) -Wl,-T,$(CONFIG)/linker.cmd \
128         -Wl,-T,application/app_noip.cmd \
129         -lgcc -lc -lm -lnosys $(LDLIBS)
132 #  ======== rules for compilations of source files ========
134 $(COMMON_OBJ_DIR_CMP)/%.oa15fg: $(COMMON_SRC_DIR_CMP)/%.c $(CONFIG)/compiler.opt | $(COMMON_OBJ_DIR_CMP)
135         @$(ECHO) "#"
136         @$(ECHO) "# Making $< $@ ..."
137         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
139 $(COMMON_OBJ_DIR_PFP)/%.oa15fg: $(COMMON_SRC_DIR_PFP)/%.c $(CONFIG)/compiler.opt | $(COMMON_OBJ_DIR_PFP)
140         @$(ECHO) "#"
141         @$(ECHO) "# Making $< $@ ..."
142         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
143     
144 $(COMMON_OBJ_DIR_COMMON)/%.oa15fg: $(COMMON_SRC_DIR_COMMON)/%.c $(CONFIG)/compiler.opt | $(COMMON_OBJ_DIR_COMMON)
145         @$(ECHO) "#"
146         @$(ECHO) "# Making $< $@ ..."
147         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
149 $(LOCAL_OBJ_DIR_ITOPO)/%.oa15fg: $(LOCAL_SRC_DIR_ITOPO)/%.c $(CONFIG)/compiler.opt | $(LOCAL_OBJ_DIR_ITOPO)
150         @$(ECHO) "#"
151         @$(ECHO) "# Making $< $@ ..."
152         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
154 $(LOCAL_OBJ_DIR_FWK)/%.oa15fg: $(LOCAL_SRC_DIR_FWK)/%.c $(CONFIG)/compiler.opt | $(LOCAL_OBJ_DIR_FWK)
155         @$(ECHO) "#"
156         @$(ECHO) "# Making $< $@ ..."
157         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
159 $(LOCAL_OBJ_DIR_APP)/%.oa15fg: $(LOCAL_SRC_DIR_APP)/%.c $(CONFIG)/compiler.opt | $(LOCAL_OBJ_DIR_APP)
160         @$(ECHO) "#"
161         @$(ECHO) "# Making $< $@ ..."
162         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
164 #  ======== rule for creation of output directories ========
165 $(OBJ_DIRS):
166         @echo "mkdir $@"
167         $(shell $(MKDIR) -p $@)
169 #  ======== rule for XDC tools, configuro ========
170 %/compiler.opt: %/linker.cmd ;
171 %/linker.cmd: application/app.cfg ../shared/config.bld
172         @$(ECHO) "#"
173         @$(ECHO) "# Making $@ ..."
174         $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))" \
175             xdc.tools.configuro -o $(CONFIG) \
176             -t gnu.targets.arm.A15F \
177             -c $(gnu.targets.arm.A15F) \
178             -p ti.platforms.evmTCI66AK2G02:host \
179             -b ../shared/config.bld -r release \
180             --cfgArgs "{ \
181                 profile: \"$(PROFILE)\" \
182             }" \
183             $(XDCFLAGS) \
184             application/app.cfg
186 install:
187         @$(ECHO) "#"
188         @$(ECHO) "# Making $@ ..."
189         @$(MKDIR) $(EXEC_DIR)/debug
190         $(CP) bin/debug/test_arm.xa15fg $(EXEC_DIR)/debug
191         @$(MKDIR) $(EXEC_DIR)/release
192         $(CP) bin/release/test_arm.xa15fg $(EXEC_DIR)/release
194 help:
195         @$(ECHO) "make                   # build executable"
196         @$(ECHO) "make clean             # clean everything"
198 clean::
199         $(MAKE) -C $(PAF_INSTALL_DIR)/pa/build clean ARCH=a15
200         $(RMDIR) bin
202     
203 #  ======== install validation ========
204 ifeq (install,$(MAKECMDGOALS))
205 ifeq (,$(EXEC_DIR))
206 $(error must specify EXEC_DIR)
207 endif
208 endif
210 #  ======== misc macros ========
211 XDCFLAGS = -Dxdc.platform.custom.check=false -DProjName=pa_i13_evmk2g_arm -DHsDevBuild=0
213 #  ======== tool chain macros ========
214 CC = $(gnu.targets.arm.A15F)/bin/arm-none-eabi-gcc -c -MD -MF $@.dep
215 LD = $(gnu.targets.arm.A15F)/bin/arm-none-eabi-gcc
217 CPPFLAGS = -Dfar= -D__DYNAMIC_REENT__
218 CFLAGS = -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=hard $(CPREDEFS) -Wall -Wunused -Wunknown-pragmas -ffunction-sections -fdata-sections $(CCPROFILE_$(PROFILE)) @$(CONFIG)/compiler.opt $(CINCDIRS)
220 CPREDEFS = -Dk2g02 -Darm0 -DARMCOMPILE -DPAF_DEVICE=0xDA000000 -DNON_CACHE_STATUS
222 CINCDIRS = -I"$(gnu.targets.arm.A15F)/arm-none-eabi/include" \
223     -I"$(gnu.targets.arm.A15F)/arm-none-eabi/include/newlib-nano" \
224     -I"$(PDK_INSTALL_DIR)/packages" \
225     -I"$(XDAIS_INSTALL_DIR)/packages" \
226     -I"$(PAF_INSTALL_DIR)/pa/asp/com" \
227     -I"$(PAF_INSTALL_DIR)/pa/asp/std" \
228     -I"$(PAF_INSTALL_DIR)/pa/dec/com" \
229     -I"$(PAF_INSTALL_DIR)/pa/dec/pcm1/alg" \
230     -I"$(PAF_INSTALL_DIR)/pa/dec/pcm1/include" \
231     -I"$(PAF_INSTALL_DIR)/pa/sio/acp1" \
232     -I"$(PAF_INSTALL_DIR)/pa/sio/paf" \
233     -I"$(PAF_INSTALL_DIR)/pa/f/s3" \
234     -I"$(PAF_INSTALL_DIR)/pa/f/include" \
235     -I"$(PAF_INSTALL_DIR)/pa/f/alpha" \
236     -I"$(PAF_INSTALL_DIR)/pa/util/c67x_cintrins" \
237     -I"$(PAF_INSTALL_DIR)/pa/util/statusop_common" \
238     -I"$(PASDK_INSTALL_DIR)/common" \
239     -I"$(PASDK_INSTALL_DIR)/test_arm/framework" \
240     -I"$(PASDK_INSTALL_DIR)/test_arm/framework/itopo" \
241     -I"$(PASDK_INSTALL_DIR)/test_dsp/sio" \
242     -I"$(PASDK_INSTALL_DIR)/test_dsp/sio_dev2"
243     
244 CCPROFILE_debug = -g -gdwarf-3 -gstrict-dwarf
245 CCPROFILE_release = -O2
247 LDFLAGS = $(LDPROFILE_$(PROFILE)) -mfloat-abi=hard -nostartfiles -Wl,-static -Wl,--gc-sections -Wl,-Map=$(@D)/obj/$(@F).map $(LDSYMS)
248 LDSYMS = -Wl,--defsym,STACKSIZE=0x10000 -Wl,--defsym,HEAPSIZE=0x400
250 LDLIBS = -L$(BIOS_INSTALL_DIR)/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/hard --specs=nano.specs \
251     -L$(PAF_INSTALL_DIR)/pa/build/a15/release
253 LDPROFILE_debug = -g -gdwarf-3 -gstrict-dwarf
254 LDPROFILE_release =
256 #  ======== standard macros ========
257 ifneq (,$(wildcard $(XDC_INSTALL_DIR)/bin/echo.exe))
258     # use these on Windows
259     CP      = $(XDC_INSTALL_DIR)/bin/cp
260     ECHO    = $(XDC_INSTALL_DIR)/bin/echo
261     MKDIR   = $(XDC_INSTALL_DIR)/bin/mkdir -p
262     RM      = $(XDC_INSTALL_DIR)/bin/rm -f
263     RMDIR   = $(XDC_INSTALL_DIR)/bin/rm -rf
264 else
265     # use these on Linux
266     CP      = cp
267     ECHO    = echo
268     MKDIR   = mkdir -p
269     RM      = rm -f
270     RMDIR   = rm -rf
271 endif
272     
273 #  ======== debug, rule to show build variables ========   
274 .show_build_vars:
275         @echo Object file base directory:
276         @echo $(OBJ_DIR_BASE)
277         @echo #
278         @echo Common, component vars
279         @echo $(COMMON_SRC_DIR_CMP)
280         @echo $(COMMON_SRCS_CMP)
281         @echo $(COMMON_OBJ_DIR_CMP)
282         @echo $(COMMON_OBJS_CMP)
283         @echo #
284         @echo Common, PFP vars
285         @echo $(COMMON_SRC_DIR_PFP)
286         @echo $(COMMON_SRCS_PFP)
287         @echo $(COMMON_OBJ_DIR_PFP)
288         @echo $(COMMON_OBJS_PFP)
289         @echo #
290         @echo Common vars
291         @echo $(COMMON_SRC_DIR_COMMON)
292         @echo $(COMMON_SRCS_COMMON)
293         @echo $(COMMON_OBJ_DIR_COMMON)
294         @echo $(COMMON_OBJS_COMMON)
295         @echo #
296         @echo Framework, itopo vars
297         @echo $(LOCAL_SRC_DIR_ITOPO)
298         @echo $(LOCAL_SRCS_ITOPO)
299         @echo $(LOCAL_OBJ_DIR_ITOPO)
300         @echo $(LOCAL_OBJS_ITOPO)
301         @echo #
302         @echo Framework vars
303         @echo $(LOCAL_SRC_DIR_FWK)
304         @echo $(LOCAL_SRCS_FWK)
305         @echo $(LOCAL_OBJ_DIR_FWK)
306         @echo $(LOCAL_OBJS_FWK)
307         @echo #
308         @echo Applications vars
309         @echo $(LOCAL_SRC_DIR_APP)
310         @echo $(LOCAL_SRCS_APP)
311         @echo $(LOCAL_OBJ_DIR_APP)
312         @echo $(LOCAL_OBJS_APP)
313         @echo #
314         @echo Dependency vars
315         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(COMMON_OBJS_CMP))
316         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(COMMON_OBJS_PFP))
317         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(COMMON_OBJS_COMMON))
318         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(LOCAL_OBJS_ITOPO))
319         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(LOCAL_OBJS_FWK))
320         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(LOCAL_OBJS_APP))