initial release
[apps/tidep0074.git] / ipu1 / makefile
1 #
2 #  Copyright (c) 2012-2016 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 srcs = MainIpu1.c Server.c PktProcEng.c icss_emacDrv.c PktSwitch.c
41 objs = $(addprefix bin/$(PROFILE)/obj/,$(patsubst %.c,%.oem4,$(srcs)))
42 CONFIG = bin/$(PROFILE)/configuro
44 PKGPATH := $(BIOS_INSTALL_DIR)/packages
45 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
46 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages
47 PKGPATH := $(PKGPATH)+$(PDK_INSTALL_DIR)/packages
48 PKGPATH := $(PKGPATH)+$(CSL_INSTALL_DIR)/
50 -include $(addprefix bin/$(PROFILE)/obj/,$(patsubst %.c,%.oem4.dep,$(srcs)))
52 .PRECIOUS: %/compiler.opt %/linker.cmd
54 all: debug release
56 debug:
57         $(MAKE) PROFILE=debug PROCLIST="$(PROCLIST)" server_ipu1.x
59 release:
60         $(MAKE) PROFILE=release PROCLIST="$(PROCLIST)" server_ipu1.x
62 server_ipu1.x: bin/$(PROFILE)/server_ipu1.xem4
63 bin/$(PROFILE)/server_ipu1.xem4: $(objs) $(libs) $(CONFIG)/linker.cmd
64         @$(ECHO) "#"
65         @$(ECHO) "# Making $@ ..."
66         $(LD) $(LDFLAGS) -o $@ $(objs) \
67             $(addprefix -l ,$(libs)) $(CONFIG)/linker.cmd $(LDLIBS)
69 bin/$(PROFILE)/obj/%.oem4: %.c $(CONFIG)/compiler.opt
70         @$(ECHO) "#"
71         @$(ECHO) "# Making $@ ..."
72         $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
74 %/linker.cmd %/compiler.opt: $(CONFIG)/.config ;
75 $(CONFIG)/.config: Ipu1.cfg ../shared/config.bld
76         @$(ECHO) "#"
77         @$(ECHO) "# Making $@ ..."
78         $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))" \
79             xdc.tools.configuro -o $(CONFIG) \
80             -t ti.targets.arm.elf.M4 \
81             -c $(ti.targets.arm.elf.M4) \
82             -p ti.platforms.evmDRA7XX:ipu1 \
83             -b ../shared/config.bld -r $(PROFILE) \
84             --cfgArgs "{ configBld: \"../shared/config.bld\" }" \
85             Ipu1.cfg
86         @$(ECHO) "" > $@
88 install:
89         @$(ECHO) "#"
90         @$(ECHO) "# Making $@ ..."
91         @$(MKDIR) $(EXEC_DIR)/debug
92         $(CP) bin/debug/server_ipu1.xem4 $(EXEC_DIR)/debug
93         @$(MKDIR) $(EXEC_DIR)/release
94         $(CP) bin/release/server_ipu1.xem4 $(EXEC_DIR)/release
96 help:
97         @$(ECHO) "make                   # build executable"
98         @$(ECHO) "make clean             # clean everything"
100 clean::
101         $(RMDIR) bin
103 #  ======== install validation ========
104 ifeq (install,$(MAKECMDGOALS))
105 ifeq (,$(EXEC_DIR))
106 $(error must specify EXEC_DIR)
107 endif
108 endif
110 #  ======== toolchain macros ========
111 CGTOOLS = $(ti.targets.arm.elf.M4)
113 CC = $(CGTOOLS)/bin/armcl -c
114 LD = $(CGTOOLS)/bin/armcl -z
116 CPPFLAGS =
117 CFLAGS = -DSOC_AM572x -qq -pdsw225 -ppd=$@.dep -ppa $(CCPROFILE_$(PROFILE)) -@$(CONFIG)/compiler.opt -I.
119 # entry point is set to an aligned address so that IPC can load the slave
120 LDFLAGS = -w -q -u _c_int00 -c -m $(@D)/obj/$(@F).map
121 LDLIBS = -l $(CGTOOLS)/lib/libc.a
123 CCPROFILE_debug = -D_DEBUG_=1 --symdebug:dwarf
124 CCPROFILE_release = -O2
125 #CCPROFILE_release = -o4 -mv7m4 --abi=eabi --float_support=vfplib
127 #  ======== standard macros ========
128 ifneq (,$(wildcard $(XDC_INSTALL_DIR)/xdc.exe))
129     # use these on Windows
130     CP      = $(XDC_INSTALL_DIR)/bin/cp
131     ECHO    = $(XDC_INSTALL_DIR)/bin/echo
132     MKDIR   = $(XDC_INSTALL_DIR)/bin/mkdir -p
133     RM      = $(XDC_INSTALL_DIR)/bin/rm -f
134     RMDIR   = $(XDC_INSTALL_DIR)/bin/rm -rf
135 else
136     # use these on Linux
137     CP      = cp
138     ECHO    = echo
139     MKDIR   = mkdir -p
140     RM      = rm -f
141     RMDIR   = rm -rf
142 endif
144 #  ======== create output directories ========
145 ifneq (clean,$(MAKECMDGOALS))
146 ifneq (,$(PROFILE))
147 ifeq (,$(wildcard bin/$(PROFILE)/obj))
148     $(shell $(MKDIR) -p bin/$(PROFILE)/obj)
149 endif
150 endif
151 endif