PASDK-587:Remove ARM & DSP release build configuration. Update install rules. Update...
[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 all: paf_libs debug
108   
109     
110 #  ======== rule to generate PAF libraries ========
111 paf_libs:
112         $(MAKE) -C $(PAF_INSTALL_DIR)/pa/build install ARCH=a15
114 #  ======== rule for debug build configuration ========
115 debug:
116         $(MAKE) PROFILE=debug test_arm.x
118 #  ======== rule for release build configuration ========
119 release:
120         $(MAKE) PROFILE=release test_arm.x
122     
123 #  ======== rule for link ========
124 test_arm.x: bin/$(PROFILE)/test_arm.xa15fg
125 bin/$(PROFILE)/test_arm.xa15fg: $(OBJS) $(libs) $(CONFIG)/linker.cmd
126         @$(ECHO) "#"
127         @$(ECHO) "# Making $@ ..."
128         $(LD) -o $@ $(LDFLAGS) $(OBJS) $(libs) -Wl,-T,$(CONFIG)/linker.cmd \
129         -Wl,-T,application/app_noip.cmd \
130         -lgcc -lc -lm -lnosys $(LDLIBS)
133 #  ======== rules for compilations of source files ========
135 $(COMMON_OBJ_DIR_CMP)/%.oa15fg: $(COMMON_SRC_DIR_CMP)/%.c $(CONFIG)/compiler.opt | $(COMMON_OBJ_DIR_CMP)
136         @$(ECHO) "#"
137         @$(ECHO) "# Making $< $@ ..."
138         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
140 $(COMMON_OBJ_DIR_PFP)/%.oa15fg: $(COMMON_SRC_DIR_PFP)/%.c $(CONFIG)/compiler.opt | $(COMMON_OBJ_DIR_PFP)
141         @$(ECHO) "#"
142         @$(ECHO) "# Making $< $@ ..."
143         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
144     
145 $(COMMON_OBJ_DIR_COMMON)/%.oa15fg: $(COMMON_SRC_DIR_COMMON)/%.c $(CONFIG)/compiler.opt | $(COMMON_OBJ_DIR_COMMON)
146         @$(ECHO) "#"
147         @$(ECHO) "# Making $< $@ ..."
148         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
150 $(LOCAL_OBJ_DIR_ITOPO)/%.oa15fg: $(LOCAL_SRC_DIR_ITOPO)/%.c $(CONFIG)/compiler.opt | $(LOCAL_OBJ_DIR_ITOPO)
151         @$(ECHO) "#"
152         @$(ECHO) "# Making $< $@ ..."
153         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
155 $(LOCAL_OBJ_DIR_FWK)/%.oa15fg: $(LOCAL_SRC_DIR_FWK)/%.c $(CONFIG)/compiler.opt | $(LOCAL_OBJ_DIR_FWK)
156         @$(ECHO) "#"
157         @$(ECHO) "# Making $< $@ ..."
158         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
160 $(LOCAL_OBJ_DIR_APP)/%.oa15fg: $(LOCAL_SRC_DIR_APP)/%.c $(CONFIG)/compiler.opt | $(LOCAL_OBJ_DIR_APP)
161         @$(ECHO) "#"
162         @$(ECHO) "# Making $< $@ ..."
163         $(CC) $(CPPFLAGS) $(CFLAGS) $(CINCDIRS) -o $@ $<
165 #  ======== rule for creation of output directories ========
166 $(OBJ_DIRS):
167         @echo "mkdir $@"
168         $(shell $(MKDIR) -p $@)
170 #  ======== rule for XDC tools, configuro ========
171 %/compiler.opt: %/linker.cmd ;
172 %/linker.cmd: application/app.cfg ../shared/config.bld
173         @$(ECHO) "#"
174         @$(ECHO) "# Making $@ ..."
175         $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))" \
176             xdc.tools.configuro -o $(CONFIG) \
177             -t gnu.targets.arm.A15F \
178             -c $(gnu_targets_arm_A15F) \
179             -p ti.platforms.evmTCI66AK2G02:host \
180             -b ../shared/config.bld -r release \
181             --cfgArgs "{ \
182                 profile: \"$(PROFILE)\" \
183             }" \
184             $(XDCFLAGS) \
185             application/app.cfg
187 install:
188         @$(ECHO) "#"
189         @$(ECHO) "# Making $@ ..."
190         @$(MKDIR) $(EXEC_DIR)/debug
191         $(CP) bin/debug/test_arm.xa15fg $(EXEC_DIR)/debug
192 #       @$(MKDIR) $(EXEC_DIR)/release
193 #       $(CP) bin/release/test_arm.xa15fg $(EXEC_DIR)/release
195 help:
196         @$(ECHO) "make                   # build executable"
197         @$(ECHO) "make clean             # clean everything"
199 clean::
200         $(MAKE) -C $(PAF_INSTALL_DIR)/pa/build clean ARCH=a15
201         $(RMDIR) bin
203     
204 #  ======== install validation ========
205 ifeq (install,$(MAKECMDGOALS))
206 ifeq (,$(EXEC_DIR))
207 $(error must specify EXEC_DIR)
208 endif
209 endif
211 #  ======== misc macros ========
212 XDCFLAGS = -Dxdc.platform.custom.check=false -DProjName=pa_i13_evmk2g_arm -DHsDevBuild=0
214 #  ======== tool chain macros ========
215 CC = $(gnu_targets_arm_A15F)/bin/arm-none-eabi-gcc -c -MD -MF $@.dep
216 LD = $(gnu_targets_arm_A15F)/bin/arm-none-eabi-gcc
218 CPPFLAGS = -Dfar= -D__DYNAMIC_REENT__
219 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)
221 CPREDEFS = -Dk2g02 -Darm0 -DARMCOMPILE -DPAF_DEVICE=0xDA000000 -DNON_CACHE_STATUS
223 CINCDIRS = -I"$(gnu_targets_arm_A15F)/arm-none-eabi/include" \
224     -I"$(gnu_targets_arm_A15F)/arm-none-eabi/include/newlib-nano" \
225     -I"$(PDK_INSTALL_DIR)/packages" \
226     -I"$(XDAIS_INSTALL_DIR)/packages" \
227     -I"$(PAF_INSTALL_DIR)/pa/asp/com" \
228     -I"$(PAF_INSTALL_DIR)/pa/asp/std" \
229     -I"$(PAF_INSTALL_DIR)/pa/dec/com" \
230     -I"$(PAF_INSTALL_DIR)/pa/dec/pcm1/alg" \
231     -I"$(PAF_INSTALL_DIR)/pa/dec/pcm1/include" \
232     -I"$(PAF_INSTALL_DIR)/pa/sio/acp1" \
233     -I"$(PAF_INSTALL_DIR)/pa/sio/paf" \
234     -I"$(PAF_INSTALL_DIR)/pa/f/s3" \
235     -I"$(PAF_INSTALL_DIR)/pa/f/include" \
236     -I"$(PAF_INSTALL_DIR)/pa/f/alpha" \
237     -I"$(PAF_INSTALL_DIR)/pa/util/c67x_cintrins" \
238     -I"$(PAF_INSTALL_DIR)/pa/util/statusop_common" \
239     -I"$(PASDK_INSTALL_DIR)/common" \
240     -I"$(PASDK_INSTALL_DIR)/test_arm/framework" \
241     -I"$(PASDK_INSTALL_DIR)/test_arm/framework/itopo" \
242     -I"$(PASDK_INSTALL_DIR)/test_dsp/sio" \
243     -I"$(PASDK_INSTALL_DIR)/test_dsp/sio_dev2"
244     
245 CCPROFILE_debug = -g -gdwarf-3 -gstrict-dwarf
246 CCPROFILE_release = -O2
248 LDFLAGS = $(LDPROFILE_$(PROFILE)) -mfloat-abi=hard -nostartfiles -Wl,-static -Wl,--gc-sections -Wl,-Map=$(@D)/obj/$(@F).map $(LDSYMS)
249 LDSYMS = -Wl,--defsym,STACKSIZE=0x10000 -Wl,--defsym,HEAPSIZE=0x400
251 LDLIBS = -L$(BIOS_INSTALL_DIR)/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/hard --specs=nano.specs \
252     -L$(PAF_INSTALL_DIR)/pa/build/a15/release
254 LDPROFILE_debug = -g -gdwarf-3 -gstrict-dwarf
255 LDPROFILE_release =
257 #  ======== standard macros ========
258 ifneq (,$(wildcard $(XDC_INSTALL_DIR)/bin/echo.exe))
259     # use these on Windows
260     CP      = $(XDC_INSTALL_DIR)/bin/cp
261     ECHO    = $(XDC_INSTALL_DIR)/bin/echo
262     MKDIR   = $(XDC_INSTALL_DIR)/bin/mkdir -p
263     RM      = $(XDC_INSTALL_DIR)/bin/rm -f
264     RMDIR   = $(XDC_INSTALL_DIR)/bin/rm -rf
265 else
266     # use these on Linux
267     CP      = cp
268     ECHO    = echo
269     MKDIR   = mkdir -p
270     RM      = rm -f
271     RMDIR   = rm -rf
272 endif
273     
274 #  ======== debug, rule to show build variables ========   
275 .show_build_vars:
276         @echo Object file base directory:
277         @echo $(OBJ_DIR_BASE)
278         @echo #
279         @echo Common, component vars
280         @echo $(COMMON_SRC_DIR_CMP)
281         @echo $(COMMON_SRCS_CMP)
282         @echo $(COMMON_OBJ_DIR_CMP)
283         @echo $(COMMON_OBJS_CMP)
284         @echo #
285         @echo Common, PFP vars
286         @echo $(COMMON_SRC_DIR_PFP)
287         @echo $(COMMON_SRCS_PFP)
288         @echo $(COMMON_OBJ_DIR_PFP)
289         @echo $(COMMON_OBJS_PFP)
290         @echo #
291         @echo Common vars
292         @echo $(COMMON_SRC_DIR_COMMON)
293         @echo $(COMMON_SRCS_COMMON)
294         @echo $(COMMON_OBJ_DIR_COMMON)
295         @echo $(COMMON_OBJS_COMMON)
296         @echo #
297         @echo Framework, itopo vars
298         @echo $(LOCAL_SRC_DIR_ITOPO)
299         @echo $(LOCAL_SRCS_ITOPO)
300         @echo $(LOCAL_OBJ_DIR_ITOPO)
301         @echo $(LOCAL_OBJS_ITOPO)
302         @echo #
303         @echo Framework vars
304         @echo $(LOCAL_SRC_DIR_FWK)
305         @echo $(LOCAL_SRCS_FWK)
306         @echo $(LOCAL_OBJ_DIR_FWK)
307         @echo $(LOCAL_OBJS_FWK)
308         @echo #
309         @echo Applications vars
310         @echo $(LOCAL_SRC_DIR_APP)
311         @echo $(LOCAL_SRCS_APP)
312         @echo $(LOCAL_OBJ_DIR_APP)
313         @echo $(LOCAL_OBJS_APP)
314         @echo #
315         @echo Dependency vars
316         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(COMMON_OBJS_CMP))
317         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(COMMON_OBJS_PFP))
318         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(COMMON_OBJS_COMMON))
319         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(LOCAL_OBJS_ITOPO))
320         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(LOCAL_OBJS_FWK))
321         @echo $(patsubst %.oa15fg,%.oa15fg.dep,$(LOCAL_OBJS_APP))