Integration with IPC 3.43.03.05 and FC 3.40.02.07
[ivimm/ipumm.git] / Makefile
1 #/*
2 # * Copyright (c) 2011-2015, 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 # Repo
34 BIOSTOOLSROOT   ?= /opt/ti
35 REPO            := $(BIOSTOOLSROOT)
37 # Different tool versions can easily be programmed by defining below variables
38 # in your environment.
39 XDCVERSION      ?= xdctools_3_32_00_06_core
40 BIOSVERSION     ?= bios_6_45_01_29
41 IPCVERSION      ?= ipc_3_43_03_05
42 CEVERSION       ?= codec_engine_3_24_00_08
43 FCVERSION       ?= framework_components_3_40_02_07
44 XDAISVERSION    ?= xdais_7_24_00_04
46 # TI Compiler Settings
47 export TMS470CGTOOLPATH ?= $(BIOSTOOLSROOT)/ccsv6/tools/compiler/ti-cgt-arm_5.2.7
49 # Define where the sources are
50 DUCATIDCEMMSRC  = $(shell pwd)
51 TIVIDEOTOOLSROOT ?= $(BIOSTOOLSROOT)
53 # Generate the full package paths for tools
54 BIOSPROD        = $(REPO)/$(BIOSVERSION)
55 CEPROD          = $(TIVIDEOTOOLSROOT)/$(CEVERSION)
56 FCPROD          = $(TIVIDEOTOOLSROOT)/$(FCVERSION)
57 XDAISPROD       = $(REPO)/$(XDAISVERSION)
59 # XDC settings
60 export XDCBUILDCFG = $(DUCATIDCEMMSRC)/build/config.bld
62 XDCDIST_TREE    = $(REPO)/$(XDCVERSION)
63 export XDCROOT  = $(XDCDIST_TREE)
65 export XDCPATH  = $(BIOSPROD)/packages;$(IPCSRC)/packages;$(CEPROD)/packages;$(FCPROD)/packages;$(XDAISPROD)/packages;$(DUCATIDCEMMSRC)/extrel/ti/ivahd_codecs/packages;$(DUCATIDCEMMSRC)/src;$(DUCATIDCEMMSRC);
67 # Custom settings for build
68 JOBS            ?= 1
69 # Set profile, always set as release version. Alternate option is "debug"
70 PROFILE         ?= release
71 # Set debug/trace level from 0 to 4
72 TRACELEVEL      ?= 0
73 # Offloads core to sysm3 code
74 OFFLOAD         ?= 1
75 # Set to Non-SMP by default
76 FORSMP          ?= 0
77 # Set Instrumentation to be allowed (ENABLE to enable it)
78 SETINST         ?= ENABLE
79 # Set HW revision type- OMAP5:ES20, VAYU:ES10
80 HWVERSION   ?= ES10
81 # Set if Profiler needs to ON or OFF for the build
82 PROFILER    ?= DISABLE
84 all: ducatibin
86 lib: ducatilib
88 # Include platform build configuration
89 config:
90 ifeq (bldcfg.mk,$(wildcard bldcfg.mk))
91 include bldcfg.mk
92 else
93         @echo "No config selected. Please configure the build first and then try to build."
94         @echo "For more info, use 'make help'"
95         @exit 1
96 endif
98 unconfig:
99         @echo "Removed existing configuration"
100         @rm -f bldcfg.mk
102 vayu_smp_config: unconfig
103         @echo "Creating new config\c"
104         @echo DUCATI_CONFIG = vayu_smp_config > bldcfg.mk
105         @echo ".\c"
106         @echo MYXDCARGS=\"profile=$(PROFILE) trace_level=$(TRACELEVEL) hw_type=VAYU hw_version=$(HWVERSION) BIOS_type=SMP prof_type=$(PROFILER)\" >> bldcfg.mk
107         @echo ".\c"
108         @echo CHIP = VAYU >> bldcfg.mk
109         @echo ".\c"
110         @echo FORSMP = 1 >> bldcfg.mk
111         @echo ".\c"
112         @echo DUCATIBINNAME = "dra7-ipu2-fw.xem4" >> bldcfg.mk
113         @echo INTBINNAME = "ipu.xem4" >> bldcfg.mk
114         @echo ".\c"
115         @echo QNXDUCATIBINNAME = "dra7xx-m4-ipu2.xem4" >> bldcfg.mk
116         @echo QNXINTBINNAME = "qnx_ipu.xem4" >> bldcfg.mk
117         @echo ".\c"
118         @echo "done"
120 omap5_smp_config: unconfig
121         @echo "Creating new config\c"
122         @echo DUCATI_CONFIG = omap5_smp_config > bldcfg.mk
123         @echo ".\c"
124         @echo MYXDCARGS=\"profile=$(PROFILE) trace_level=$(TRACELEVEL) hw_type=OMAP5 hw_version=$(HWVERSION) BIOS_type=SMP prof_type=$(PROFILER)\" >> bldcfg.mk
125         @echo ".\c"
126         @echo CHIP = OMAP5 >> bldcfg.mk
127         @echo ".\c"
128         @echo FORSMP = 1 >> bldcfg.mk
129         @echo ".\c"
130         @echo DUCATIBINNAME = "omap5-ipu-fw.xem4" >> bldcfg.mk
131         @echo INTBINNAME = "ipu.xem4" >> bldcfg.mk
132         @echo ".\c"
133         @echo QNXDUCATIBINNAME = "omap5-m4-ipu.xem4" >> bldcfg.mk
134         @echo QNXINTBINNAME = "qnx_ipu.xem4" >> bldcfg.mk
135         @echo ".\c"
136         @echo "done"
138 clean: config
139         export XDCARGS=$(MYXDCARGS); \
140          $(XDCROOT)/xdc --jobs=$(JOBS) clean -PD $(DUCATIDCEMMSRC)/platform/ti/dce/baselib/.; \
141          $(XDCROOT)/xdc --jobs=$(JOBS) clean -PD $(DUCATIDCEMMSRC)/platform/ti/dce/baseimage/.
143 buildlib: config
144 ifeq ($(IPCSRC),)
145         @echo "ERROR: IPCSRC not set. Exiting..."
146         @echo "For more info, use 'make help'"
147         @exit 1
148 else ifeq ($(TMS470CGTOOLPATH),)
149         @echo "ERROR: TMS470CGTOOLPATH not set. Exiting..."
150         @echo "For more info, use 'make help'"
151         @exit 1
152 endif
153         export XDCARGS=$(MYXDCARGS); \
154         $(XDCROOT)/xdc --jobs=$(JOBS) -PD $(DUCATIDCEMMSRC)/platform/ti/dce/baselib/.
156 build: config
157 ifeq ($(IPCSRC),)
158         @echo "ERROR: IPCSRC not set. Exiting..."
159         @echo "For more info, use 'make help'"
160         @exit 1
161 else ifeq ($(TMS470CGTOOLPATH),)
162         @echo "ERROR: TMS470CGTOOLPATH not set. Exiting..."
163         @echo "For more info, use 'make help'"
164         @exit 1
165 endif
166         export XDCARGS=$(MYXDCARGS); \
167         $(XDCROOT)/xdc --jobs=$(JOBS) -PD $(DUCATIDCEMMSRC)/platform/ti/dce/baselib/.; \
168         $(XDCROOT)/xdc --jobs=$(JOBS) -PD $(DUCATIDCEMMSRC)/platform/ti/dce/baseimage/.
170 ducatilib: buildlib
172 ducatibin: build
173 ifeq ($(FORSMP),1)
174         $(TMS470CGTOOLPATH)/bin/armstrip -p $(DUCATIDCEMMSRC)/platform/ti/dce/baseimage/out/ipu/$(PROFILE)/$(INTBINNAME) -o=$(DUCATIBINNAME)
175         $(TMS470CGTOOLPATH)/bin/armstrip -p $(DUCATIDCEMMSRC)/platform/ti/dce/baseimage/out/ipu/$(PROFILE)/$(QNXINTBINNAME) -o=$(QNXDUCATIBINNAME)
176 else
177         @echo "***********Not yet implemented************"
178 endif
180 info: tools sources custom
181 tools:
182         @echo "REPO    := $(REPO)"
183         @echo "XDC     := $(XDCDIST_TREE)"
184         @echo "BIOS    := $(BIOSPROD)"
185         @echo "FC      := $(FCPROD)"
186         @echo "CE      := $(CEPROD)"
187         @echo "XDAIS   := $(XDAISPROD)"
188         @echo "TMS470CGTOOLPATH := $(TMS470CGTOOLPATH)"
189         @echo " "
191 sources:
192         @echo "IPC  := $(IPCSRC)"
193         @echo " "
195         @echo "DUCATIDCEMMSRC  := $(DUCATIDCEMMSRC)"
196         @echo "DUCATIDCEMMSRC info: $(shell git --git-dir=$(DUCATIDCEMMSRC)/.git --work-tree=$(DUCATIDCEMMSRC)/ log --pretty=format:'%ad %h %d' --oneline --date=short -1 )"
197         @echo "DUCATIMMSRC describe: $(shell git --git-dir=$(DUCATIDCEMMSRC)/.git --work-tree=$(DUCATIDCEMMSRC)/ describe --dirty)"
198         @echo " "
200 custom:
201         @echo "JOBS       := $(JOBS)"
202         @echo "PROFILE    := $(PROFILE)"
203         @echo "TRACELEVEL := $(TRACELEVEL)"
204         @echo "OFFLOAD    := $(OFFLOAD)"
205         @echo "FORSMP     := $(FORSMP)"
206         @echo "SETINST    := $(SETINST)"
207         @echo "HWVERSION  := $(HWVERSION)"
208         @echo "PROFILER   := $(PROFILER)"
209         @echo " "
210         @echo "Ducati configuration used:  $(DUCATI_CONFIG)"
211         @echo "Ducati binary name:         $(DUCATIBINNAME)"
212         @echo "QNX Ducati binary name:     $(QNXDUCATIBINNAME)"
213         @echo " "
215 help:
216         @echo " "
217         @echo "Please export the following variables: "
218         @echo " 1. BIOSTOOLSROOT - Directory where all the BIOS tools are installed."
219         @echo "                    If not mentioned, picks up the default, /opt/ti"
220         @echo " 2. TMS470CGTOOLPATH - TMS470 ARM Code Generation Tools installation path"
221         @echo "                       If not mentioned, tries the default install location, /opt/ti/TI_CGT_TI_ARM_5.0.1"
222         @echo " 3. IPCSRC - Absolute path of the $(IPCVERSION)"
223         @echo " 4. [Optional] - Any of the following variables can be defined to customize your build."
224         @echo "       JOBS       - To specify the number of parallel build jobs (default is 1)"
225         @echo "       PROFILE    - 'release' or 'debug' profile for the libraries and binaries (default is release)"
226         @echo "       TRACELEVEL - From 0 to 4. Higher the value, more the traces. 0 implies no traces (default is 0)"
227         @echo "       OFFLOAD    - Enable offloading support (default is 1, set to 0 to disable)"
228         @echo " 5. [Optional] - Any of the following variables can be defined to change the default tool versions."
229         @echo "       XDCVERSION       = $(XDCDIST_TREE)"
230         @echo "       BIOSVERSION      = $(BIOSPROD)"
231         @echo "       IPCVERSION       = $(IPCSRC)"
232         @echo "       CEVERSION        = $(CEPROD)"
233         @echo "       FCVERSION        = $(FCPROD)"
234         @echo "       XDAISVERSION     = $(XDAISPROD)"
235         @echo "       TMS470CGTOOLPATH = $(TMS470CGTOOLPATH)"
236         @echo " "
237         @echo "Use the appropriate make targets from the following: "
238         @echo "  Configure Platform: "
239         @echo "     OMAP5 (SMP)       - export HWVERSION=ES20 && make omap5_smp_config"
240         @echo "     VAYU/J6 (SMP)     - export HWVERSION=ES10 && make vayu_smp_config"
241         @echo "  Build:               - make"
242         @echo "  Clean:               - make clean"
243         @echo "  Generate Binary: "
244         @echo "     Firmware        - make ducatibin"
245         @echo "  Information: "
246         @echo "     Tools           - make tools"
247         @echo "     Sources         - make sources"
248         @echo "     Custom          - make custom"
249         @echo "     all 3           - make info"
250         @echo "  Others: "
251         @echo "     Check config    - make config"
252         @echo "     Clean config    - make unconfig"
253         @echo " "