]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/pdk.git/blob - packages/ti/build/Rules.make
Merge pull request #11 in PROCESSOR-SDK/pdk from review_PRSDK-5567 to master
[processor-sdk/pdk.git] / packages / ti / build / Rules.make
1 #
2 # Copyright (c) 2013-2018, Texas Instruments Incorporated
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 #Default build environment, (Windows_NT / linux)
34 #if nothing is defined, default to linux as in windows this variable is defined
35 export OS ?= linux
37 SDK_INSTALL_PATH ?= $(abspath ../../../../)
38 TOOLS_INSTALL_PATH ?= $(SDK_INSTALL_PATH)
40 #Default BUILD_OS_TYPE (tirtos/baremetal/qnx)
41 export BUILD_OS_TYPE ?= tirtos
43 # Default board
44 # Supported values are printed in "make -s help" option. Below are the list for reference.
45 #                   evmDRA72x, evmDRA75x, evmDRA78x,
46 #                   evmAM572x, idkAM571x, idkAM572x idkAM574x
47 #                   evmK2H, evmK2K, evmK2E, evmK2L, evmK2G, evmC6678, evmC6657,
48 #                   evmAM335x, icev2AM335x, iceAMIC110, skAM335x, bbbAM335x,
49 #                   evmAM437x idkAM437x skAM437x evmOMAPL137 lcdkOMAPL138
50 #                   And also refer $(BOARD_LIST_J6_TDA) below
51 #
52 ifeq ($(LIMIT_BOARDS),)
53   # TDA parts do not define this environment variable, default board and soc for TDA parts
54   export BOARD ?= j721e_evm
55   export SOC ?= j721e
56 else
57 ifeq ($(LIMIT_BOARDS), j721e_evm)
58   export BOARD = j721e_evm
59   export SOC = j721e
60 else
61 ifeq ($(LIMIT_BOARDS), j721e_sim)
62   export BOARD = j721e_sim
63   export SOC = j721e
64 else
65   # default board and soc for Catalog parts
66   export BOARD ?= idkAM572x
67   export SOC   ?= am572x
68 endif
69 endif
70 endif
71 ################################################################################
72 # Other user configurable variables
73 ################################################################################
75 # Default to m4 build depending on BOARD selected!!
76 ifeq ($(BOARD),$(filter $(BOARD), evmAM572x idkAM572x idkAM571x idkAM574x))
77   CORE ?= a15_0
78 endif
79 ifeq ($(BOARD),$(filter $(BOARD), am65xx_sim am65xx_evm am65xx_idk j721e_sim j721e_vhwazebu j721e_qt j721e_evm j7200_evm j7200_sim am64x_evm))
80   CORE ?= mcu1_0
81 endif
82 ifeq ($(BOARD),$(filter $(BOARD), j721e_ccqt j721e_loki))
83   CORE ?= c7x_1
84 endif
85 ifeq ($(BOARD),$(filter $(BOARD), j721e_hostemu j7200_hostemu))
86   CORE = c7x-hostemu
87 endif
88 CORE ?= ipu1_0
89 export CORE
91 # Default Build Profile
92 # Supported Values: debug | release
93 export BUILD_PROFILE ?= release
95 # Treat compiler warning as error
96 # Supported Values: yes | no
97 export TREAT_WARNINGS_AS_ERROR ?= yes
99 #Various boards support for J6 TDA family of devices
100 BOARD_LIST_J6_TDA = tda2xx-evm tda2ex-evm tda3xx-evm tda2px-evm
101 BOARD_LIST_J6_TDA += tda2xx-evm-radar tda2px-evm-radar tda3xx-evm-radar
102 BOARD_LIST_J6_TDA += tda3xx-ar12-booster tda3xx-ar12-alps tda3xx-ar12-rvp
103 BOARD_LIST_J6_TDA += tda2ex-eth-srv tda2xx-rvp tda3xx-rvp
104 BOARD_LIST_J6_TDA += tda2xx-cascade-radar
105 export BOARD_LIST_J6_TDA
107 #Various boards support for J7 TDA family of devices
108 BOARD_LIST_J7_TDA = j721e_sim j721e_hostemu j721e_ccqt j721e_loki j721e_qt j721e_vhwazebu j721e_evm
109 BOARD_LIST_J7_TDA += j7200_sim j7200_hostemu j7200_evm am64x_evm
110 export BOARD_LIST_J7_TDA
112 ################################################################################
113 # Configure toolchain paths
114 ################################################################################
115 ifeq ($(BOARD),$(filter $(BOARD), $(BOARD_LIST_J6_TDA)))
116   # This section applies to J6 TDA SOCs in Processor SDK VISION release.
117   # For remaining SOC/BOARDS skip to the else part.
118   # SoC & Version of PDK for TDA builds
119   PDK_SOC=
120   PDK_VERSION=01_09_00_00
122   #Tool versions for TDA builds
123   GCC_CROSS_TOOL_PREFIX=arm-none-eabi-
124   GCC_CROSS_TOOL_TAG=4_9-2015q3
125   CGT_VERSION=7.4.2
126   GCC_VERSION_FPULIB=4.9.3
127   CGT_ARM_VERSION=16.9.2.LTS
128   CGT_ARP32_VERSION=1.0.7
130   #Component versions for TDA builds
131   BIOS_VERSION=6_46_04_53
132   EDMA_VERSION=02_12_00_20
133   XDC_VERSION=3_32_01_22_core
134   MSHIELD_VERSION=4_5_3
135   export mmwavelink_version=mmwave_dfp_01_01_00_00
137   export GCC_FLOAT_PATH ?= FPU
138 else
139   # This section applies to all broader set of boards with SOCs beyond TDA class
140   # in Processor SDK RTOS release
141   PDK_VERSION_STR=_$(PDK_SOC)_$(PDK_VERSION)
142 ifeq ($(PDK_VERSION),)
143   PDK_VERSION_STR=
144 endif
146   #Tool versions for non-TDA builds
147   GCC_CROSS_TOOL_PREFIX=arm-none-eabi-
148   GCC_CROSS_TOOL_TAG=7-2018-q2-update
149   GCC_ARCH64_VERSION=7.2.1-2017.11
150   CGT_VERSION=8.3.2
152   CGT_C7X_VERSION=1.2.0.STS
153   CGT_ARM_VERSION=18.12.1.LTS
154   GCC_VERSION_HARDLIB=7.3.1
156   CGT_ARP32_VERSION=1.0.8
157   CG_XML_VERSION=2.61.00
159   #Component versions for non-TDA builds
160   BIOS_VERSION=6_76_02_02
161   XDC_VERSION=3_55_02_22_core
163 ifeq ($(BOARD),$(filter $(BOARD), $(BOARD_LIST_J7_TDA)))
164   BIOS_VERSION=6_76_03_01
165 endif
167   EDMA_VERSION=2_12_05_30E
168   SECDEV_VERSION=01_06_00_05
169   CGT_PRU_VERSION=2.3.2
171   #Hardcode IPC version if it is not set already
172   IPC_VERSION ?= 3_47_01_00
173   NDK_VERSION=3_61_01_01
174   NS_VERSION=2_60_01_06
176   UIA_VERSION=2_30_01_02
177   XDAIS_VERSION=7_24_00_04
178   AER_VERSION=17_0_0_0
180   # C674x DSP libraries sould be used for OMAPL13x platform
181 ifeq ($(SOC),$(filter $(SOC), omapl137 omapl138))
182   DSPLIB_VERSION ?= c674x_3_4_0_3
183   IMGLIB_VERSION ?= c674x_3_1_1_0
184   MATHLIB_VERSION ?= c674x_3_1_2_3
185 else
186   DSPLIB_VERSION ?= c66x_3_4_0_3
187   IMGLIB_VERSION ?= c66x_3_1_1_0
188   MATHLIB_VERSION ?= c66x_3_1_2_3
189 endif
191   export GCC_FLOAT_PATH ?= HARD
192 endif
194 ################################################################################
195 # Dependent toolchain paths variables
196 ################################################################################
197 # Version of GCC
198 GCC_VERSION=$(GCC_CROSS_TOOL_PREFIX)$(GCC_CROSS_TOOL_TAG)
199 GCC_VERSION_ARM_A15=$(GCC_CROSS_TOOL_PREFIX)$(GCC_CROSS_TOOL_TAG)
200 ifeq ($(BOARD),$(filter $(BOARD), $(BOARD_LIST_J6_TDA)))
201   # This section applies to J6 TDA SOCs in Processor SDK VISION release.
202   # For remaining SOC/BOARDS skip to the else part.
203   ifeq ($(OS),Windows_NT)
204     OS_FOLDER=windows
205   else
206     OS_FOLDER=linux
207   endif
208   export TOOLCHAIN_PATH_GCC        ?= $(SDK_INSTALL_PATH)/ti_components/cg_tools/$(OS_FOLDER)/gcc-$(GCC_VERSION)
209   export TOOLCHAIN_PATH_A15        ?= $(SDK_INSTALL_PATH)/ti_components/cg_tools/$(OS_FOLDER)/gcc-$(GCC_VERSION_ARM_A15)
210   export TOOLCHAIN_PATH_M4         ?= $(SDK_INSTALL_PATH)/ti_components/cg_tools/$(OS_FOLDER)/ti-cgt-arm_$(CGT_ARM_VERSION)
211   export C6X_GEN_INSTALL_PATH      ?= $(SDK_INSTALL_PATH)/ti_components/cg_tools/$(OS_FOLDER)/C6000_$(CGT_VERSION)
212   export TOOLCHAIN_PATH_EVE        ?= $(SDK_INSTALL_PATH)/ti_components/cg_tools/$(OS_FOLDER)/arp32_$(CGT_ARP32_VERSION)
213   export PDK_INSTALL_PATH          ?= $(SDK_INSTALL_PATH)/ti_components/drivers/pdk_$(PDK_VERSION)/packages
214   export EDMA3LLD_BIOS6_INSTALLDIR ?= $(SDK_INSTALL_PATH)/ti_components/drivers/edma3_lld_$(EDMA_VERSION)
215   export BIOS_INSTALL_PATH         ?= $(SDK_INSTALL_PATH)/ti_components/os_tools/bios_$(BIOS_VERSION)
216   export XDC_INSTALL_PATH          ?= $(SDK_INSTALL_PATH)/ti_components/os_tools/$(OS_FOLDER)/xdctools_$(XDC_VERSION)
217   export RADARLINK_INSTALL_PATH    ?= $(SDK_INSTALL_PATH)/ti_components/radar/$(mmwavelink_version)
218   export MSHIELD_DK_DIR            ?= $(SDK_INSTALL_PATH)/ti_components/mshield-dk_std_$(MSHIELD_VERSION)
219   export TI_SECURE_DEV_PKG         := $(MSHIELD_DK_DIR)
220 else
221   export GCC_VERSION_ARM_A8=$(GCC_CROSS_TOOL_PREFIX)$(GCC_CROSS_TOOL_TAG)
222   export GCC_VERSION_ARM_A9=$(GCC_CROSS_TOOL_PREFIX)$(GCC_CROSS_TOOL_TAG)
223   export CROSS_TOOL_PRFX           ?= $(GCC_CROSS_TOOL_PREFIX)
224   export C6X_GEN_INSTALL_PATH      ?= $(TOOLS_INSTALL_PATH)/ti-cgt-c6000_$(CGT_VERSION)
225   export C7X_GEN_INSTALL_PATH      ?= $(TOOLS_INSTALL_PATH)/ti-cgt-c7000_$(CGT_C7X_VERSION)
226   export CL_PRU_INSTALL_PATH       ?= $(TOOLS_INSTALL_PATH)/ti-cgt-pru_$(CGT_PRU_VERSION)
227   export TOOLCHAIN_PATH_A8         ?= $(TOOLS_INSTALL_PATH)/gcc-$(GCC_VERSION_ARM_A8)
228   export TOOLCHAIN_PATH_A9         ?= $(TOOLS_INSTALL_PATH)/gcc-$(GCC_VERSION_ARM_A9)
229   export TOOLCHAIN_PATH_Arm9       ?= $(TOOLS_INSTALL_PATH)/ti-cgt-arm_$(CGT_ARM_VERSION)
230   export TOOLCHAIN_PATH_A15        ?= $(TOOLS_INSTALL_PATH)/gcc-$(GCC_VERSION_ARM_A15)
231 ifeq ($(OS),Windows_NT)
232   #Paths for windows machine
233   export TOOLCHAIN_PATH_GCC_ARCH64 ?= $(TOOLS_INSTALL_PATH)/gcc-linaro-$(GCC_ARCH64_VERSION)-i686-mingw32_aarch64-elf
234 else
235   #Paths for linux machine
236   export TOOLCHAIN_PATH_GCC_ARCH64 ?= $(TOOLS_INSTALL_PATH)/gcc-linaro-$(GCC_ARCH64_VERSION)-x86_64_aarch64-elf
237 endif
239   export TOOLCHAIN_PATH_QNX_A72    ?= $(QNX_HOST)/usr/bin
240   export TOOLCHAIN_PATH_A53        ?= $(TOOLCHAIN_PATH_GCC_ARCH64)
241   export TOOLCHAIN_PATH_A72        ?= $(TOOLCHAIN_PATH_GCC_ARCH64)
242   export TOOLCHAIN_PATH_EVE        ?= $(TOOLS_INSTALL_PATH)/arp32_$(CGT_ARP32_VERSION)
243   export TOOLCHAIN_PATH_M4         ?= $(TOOLS_INSTALL_PATH)/ti-cgt-arm_$(CGT_ARM_VERSION)
244   export TOOLCHAIN_PATH_R5         ?= $(TOOLS_INSTALL_PATH)/ti-cgt-arm_$(CGT_ARM_VERSION)
245   export BIOS_INSTALL_PATH         ?= $(SDK_INSTALL_PATH)/bios_$(BIOS_VERSION)
246   export DSPLIB_INSTALL_PATH       ?= $(SDK_INSTALL_PATH)/dsplib_$(DSPLIB_VERSION)
247   export EDMA3LLD_BIOS6_INSTALLDIR ?= $(SDK_INSTALL_PATH)/edma3_lld_$(EDMA_VERSION)
248   export IMGLIB_INSTALL_PATH       ?= $(SDK_INSTALL_PATH)/imglib_$(IMGLIB_VERSION)
249   export IPC_INSTALL_PATH          ?= $(SDK_INSTALL_PATH)/ipc_$(IPC_VERSION)
250   export MATHLIB_INSTALL_PATH      ?= $(SDK_INSTALL_PATH)/mathlib_$(MATHLIB_VERSION)
251   export NDK_INSTALL_PATH          ?= $(SDK_INSTALL_PATH)/ndk_$(NDK_VERSION)
252   export NS_INSTALL_PATH           ?= $(SDK_INSTALL_PATH)/ns_$(NS_VERSION)
253   export PDK_INSTALL_PATH          ?= $(SDK_INSTALL_PATH)/pdk$(PDK_VERSION_STR)/packages
254   export UIA_INSTALL_PATH          ?= $(SDK_INSTALL_PATH)/uia_$(UIA_VERSION)
255   export XDC_INSTALL_PATH          ?= $(SDK_INSTALL_PATH)/xdctools_$(XDC_VERSION)
256   export UTILS_INSTALL_DIR         ?= $(XDC_INSTALL_PATH)/bin
257   export RADARLINK_INSTALL_PATH    ?= $(SDK_INSTALL_PATH)/$(mmwavelink_version)
258   export CG_XML_BIN_INSTALL_PATH   ?= $(SDK_INSTALL_PATH)/cg_xml_$(CG_XML_VERSION)/bin
259   export TI_SECURE_DEV_PKG         ?= $(SDK_INSTALL_PATH)/proc-sdk-secdev_$(SECDEV_VERSION)
260   export XDAIS_INSTALL_PATH        ?= $(SDK_INSTALL_PATH)/xdais_$(XDAIS_VERSION)
261   export AER_INSTALL_PATH          ?= $(SDK_INSTALL_PATH)/aer_c64Px_obj_$(AER_VERSION)
262   export GCC_ARM_NONE_TOOLCHAIN    ?= $(SDK_INSTALL_PATH)/gcc-$(GCC_CROSS_TOOL_PREFIX)$(GCC_CROSS_TOOL_TAG)
263   export TI_CGT6x_INSTALL_DIR      ?= $(SDK_INSTALL_PATH)/c6000_7.4.16
264   export M4_TOOLCHAIN_INSTALL_DIR  ?= $(TOOLCHAIN_PATH_M4)
265 endif
267 ifeq ($(SOC),$(filter $(SOC), am335x))
268   export HARDLIB_PATH ?= $(TOOLCHAIN_PATH_A8)/lib/gcc/arm-none-eabi/$(GCC_VERSION_HARDLIB)/hard
269   export FPULIB_PATH ?= $(TOOLCHAIN_PATH_A8)/lib/gcc/arm-none-eabi/$(GCC_VERSION_FPULIB)/fpu
270 else ifeq  ($(SOC),$(filter $(SOC), am437x))
271   export HARDLIB_PATH ?= $(TOOLCHAIN_PATH_A9)/lib/gcc/arm-none-eabi/$(GCC_VERSION_HARDLIB)/hard
272   export FPULIB_PATH ?= $(TOOLCHAIN_PATH_A9)/lib/gcc/arm-none-eabi/$(GCC_VERSION_FPULIB)/fpu
273 else
274   export HARDLIB_PATH ?= $(TOOLCHAIN_PATH_A15)/lib/gcc/arm-none-eabi/$(GCC_VERSION_HARDLIB)/hard
275   export FPULIB_PATH ?= $(TOOLCHAIN_PATH_A15)/lib/gcc/arm-none-eabi/$(GCC_VERSION_FPULIB)/fpu
276 endif
278 export CGTOOLS=$(C6X_GEN_INSTALL_PATH)
279 export XDCCGROOT=$(C6X_GEN_INSTALL_PATH)
281 # Utilities directory. This is required only if the build machine is Windows.
282 #   - specify the installation directory of utility which supports POSIX commands
283 #     (eg: Cygwin installation or MSYS installation).
284 # This could be in CCS install directory as in c:/ti/ccsv<ver>/utils/cygwin or
285 # the XDC install bin folder represented by  $(UTILS_INSTALL_DIR)
286 ifeq ($(OS),Windows_NT)
287   export utils_PATH ?= $(UTILS_INSTALL_DIR)
288 endif
290 ################################################################################
291 # Other advanced configurable variables
292 ################################################################################
294 # Set Core Build Profile depending on BUILD_PROFILE value
295 export BUILD_PROFILE_$(CORE) ?= $(BUILD_PROFILE)
297 # Default PACKAGE_SELECT build flag
298 # Supported values: all, vps-hal-only, vps-vip-only, vps-vpe-only, vps-dss-only, vps-vip-dss, vps-vip-vpe
299 export PACKAGE_SELECT ?= all
301 # Disable recursive building of example dependencies
302 export DISABLE_RECURSE_DEPS ?= no
304 # Default C++ build flag, yes or no
305 export CPLUSPLUS_BUILD ?= no
307 #use <module>_PATH variable as makefile internally expects PATH variable this way for external component path
308 export pdk_PATH := $(PDK_INSTALL_PATH)
309 export bios_PATH := $(BIOS_INSTALL_PATH)
310 export xdc_PATH := $(XDC_INSTALL_PATH)
311 export edma3_lld_PATH := $(EDMA3LLD_BIOS6_INSTALLDIR)
312 export ndk_PATH := $(NDK_INSTALL_PATH)
313 export radarLink_PATH := $(RADARLINK_INSTALL_PATH)
315 export ROOTDIR := $(pdk_PATH)
316 XDCPATH =
317 ifeq ($(BUILD_OS_TYPE),tirtos)
318   XDCPATH = $(bios_PATH)/packages;$(xdc_PATH)/packages;$(edma3_lld_PATH)/packages;$(ndk_PATH)/packages;$(pdk_PATH);
319 endif
320 export XDCPATH
322 #Default SECTTI SIZE INFORMATION
323 export SECTTI_SIZE_INFO ?= no
325 #Default SECTTI tool
326 export SECTTI ?= $(CG_XML_BIN_INSTALL_PATH)/sectti
328 # Build for HS devices if secdev package is found
329 ifneq ("$(wildcard $(TI_SECURE_DEV_PKG)/scripts/secure-binary-image.sh)","")
330   export SECUREMODE ?= yes
331 endif
333 # include other dependent files
334 include $(PDK_INSTALL_PATH)/ti/build/comp_paths.mk
335 ifeq ($(MAKERULEDIR), )
336   #Makerule path not defined, define this and assume relative path from ROOTDIR
337   export MAKERULEDIR := $(ROOTDIR)/ti/build/makerules
338 endif
339 include $(MAKERULEDIR)/build_config.mk
340 include $(MAKERULEDIR)/platform.mk
341 include $(MAKERULEDIR)/env.mk