1 #
2 # Copyright (c) 2012-2013, Texas Instruments Incorporated
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7 #
8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 #
11 # * Redistributions in binary form must reproduce the above copyright
12 # notice, this list of conditions and the following disclaimer in the
13 # documentation and/or other materials provided with the distribution.
14 #
15 # * Neither the name of Texas Instruments Incorporated nor the names of
16 # its contributors may be used to endorse or promote products derived
17 # from this software without specific prior written permission.
18 #
19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24 # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26 # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27 # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
29 # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 #
31 # ======== ipc-bios.mak ========
32 #
34 #
35 # Where to install/stage the packages
36 # Typically this would point to the devkit location
37 #
38 DESTDIR ?= <UNDEFINED>
40 packagesdir ?= /packages
41 libdir ?= /lib
42 includedir ?= /include
44 ifeq ($(docdir),)
45 docdir := /share/ti/ipc/doc
46 packagedocdir := /docs/ipc
47 else
48 packagedocdir := $(docdir)
49 endif
51 ifeq ($(prefix),)
52 prefix := /usr
53 packageprefix := /
54 else
55 packageprefix := $(prefix)
56 endif
58 include ./products.mak
60 #
61 # Set XDCARGS to some of the variables above. XDCARGS are passed
62 # to the XDC build engine... which will load ipc-bios.bld... which will
63 # extract these variables and use them to determine what to build and which
64 # toolchains to use.
65 #
66 # Note that not all of these variables need to be set to something valid.
67 # Unfortunately, since these vars are unconditionally assigned, your build line
68 # will be longer and more noisy than necessary (e.g., it will include C66
69 # assignment even if you're just building for C64P).
70 #
71 # Some background is here:
72 # http://rtsc.eclipse.org/docs-tip/Command_-_xdc#Environment_Variables
73 #
74 XDCARGS= \
75 PLATFORM=\"$(PLATFORM)\" \
76 ti.targets.C28_large=\"$(ti.targets.C28_large)\" \
77 ti.targets.C28_float=\"$(ti.targets.C28_float)\" \
78 ti.targets.C64P=\"$(ti.targets.C64P)\" \
79 ti.targets.C64P_big_endian=\"$(ti.targets.C64P_big_endian)\" \
80 ti.targets.C674=\"$(ti.targets.C674)\" \
81 ti.targets.arm.elf.Arm9=\"$(ti.targets.arm.elf.Arm9)\" \
82 ti.targets.arm.elf.A8F=\"$(ti.targets.arm.elf.A8F)\" \
83 ti.targets.arm.elf.A8Fnv=\"$(ti.targets.arm.elf.A8Fnv)\" \
84 ti.targets.arm.elf.M3=\"$(ti.targets.arm.elf.M3)\" \
85 ti.targets.arm.elf.M4=\"$(ti.targets.arm.elf.M4)\" \
86 ti.targets.arm.elf.M4F=\"$(ti.targets.arm.elf.M4F)\" \
87 ti.targets.elf.C64P=\"$(ti.targets.elf.C64P)\" \
88 ti.targets.elf.C64P_big_endian=\"$(ti.targets.elf.C64P_big_endian)\" \
89 ti.targets.elf.C64T=\"$(ti.targets.elf.C64T)\" \
90 ti.targets.elf.C66=\"$(ti.targets.elf.C66)\" \
91 ti.targets.elf.C66_big_endian=\"$(ti.targets.elf.C66_big_endian)\" \
92 ti.targets.elf.C674=\"$(ti.targets.elf.C674)\" \
93 ti.targets.arp32.elf.ARP32=\"$(ti.targets.arp32.elf.ARP32)\" \
94 ti.targets.arp32.elf.ARP32_far=\"$(ti.targets.arp32.elf.ARP32_far)\" \
95 gnu.targets.arm.A8F=\"$(gnu.targets.arm.A8F)\" \
96 gnu.targets.arm.A15F=\"$(gnu.targets.arm.A15F)\"
98 #
99 # Get list of packages to rebuild. Remove examples from the list.
100 #
101 XDCPKG := $(XDC_INSTALL_DIR)/bin/xdcpkg
103 # Check for Windows specific env vars to determine if we are on Windows
104 ifeq (,$(findstring :,$(WINDIR)$(windir)$(COMSPEC)$(comspec)))
105 FILTER = grep -v
106 else
107 # Find is the rough equivalent of grep on Windows
108 FILTER = find /v
109 # Replace '/' with '\' because cmd.exe requires '\'s in command names
110 XDCPKG := $(subst /,\,$(XDCPKG))
111 endif
113 LIST = $(shell $(XDCPKG) ./packages | $(FILTER) "examples")
115 #
116 # Set XDCPATH to contain necessary repositories.
117 #
118 XDCPATH = $(BIOS_INSTALL_DIR)/packages
119 export XDCPATH
121 #
122 # Set XDCOPTIONS. Use -v for a verbose build.
123 #
124 #XDCOPTIONS=v
125 export XDCOPTIONS
127 #
128 # Set XDC executable command
129 # Note that XDCBUILDCFG points to the ipc-bios.bld file which uses
130 # the arguments specified by XDCARGS
131 #
132 XDC = $(XDC_INSTALL_DIR)/xdc XDCARGS="$(XDCARGS)" XDCBUILDCFG=./ipc-bios.bld
134 ######################################################
135 ## Shouldnt have to modify anything below this line ##
136 ######################################################
138 all:
139 @ echo building ipc packages ...
140 # build everything in the Bios IPC package
141 @ $(XDC) -P $(LIST)
143 libs:
144 @echo "#"
145 @echo "# Making $@ ..."
146 $(XDC) .dlls -P $(LIST)
148 release:
149 @ echo building ipc packages ...
150 # create a XDC release for the Bios IPC package
151 @ $(XDC) release -P $(LIST)
153 clean:
154 @ echo cleaning ipc packages ...
155 @ $(XDC) clean -Pr ./packages
157 install-packages:
158 @ echo installing ipc packages to $(DESTDIR) ...
159 @ mkdir -p $(DESTDIR)/$(packageprefix)/$(packagedocdir)
160 @ cp -rf $(wildcard ipc_*_release_notes.html) docs/* $(DESTDIR)/$(packageprefix)/$(packagedocdir)
161 @ mkdir -p $(DESTDIR)/$(packageprefix)/$(packagesdir)
162 @ cp -rf packages/* $(DESTDIR)/$(packageprefix)/$(packagesdir)
164 install:
165 @ echo installing ti/ipc to $(DESTDIR) ...
166 @ mkdir -p $(DESTDIR)/$(prefix)/$(docdir)
167 @ cp -rf $(wildcard ipc_*_release_notes.html) docs/* $(DESTDIR)/$(prefix)/$(docdir)
168 @ mkdir -p $(DESTDIR)/$(prefix)/$(includedir)/ti/ipc
169 @ cp -rf packages/ti/ipc/*.h $(DESTDIR)/$(prefix)/$(includedir)/ti/ipc