1c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#
2c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  Copyright 2001-2009 Texas Instruments - http://www.ti.com/
3c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# 
4c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  Licensed under the Apache License, Version 2.0 (the "License");
5c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  you may not use this file except in compliance with the License.
6c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  You may obtain a copy of the License at
7c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# 
8c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#     http://www.apache.org/licenses/LICENSE-2.0
9c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# 
10c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  Unless required by applicable law or agreed to in writing, software
11c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  distributed under the License is distributed on an "AS IS" BASIS,
12c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  See the License for the specific language governing permissions and
14c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  limitations under the License.
15c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
16c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#
17c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  dspbridge/mpu_api/make/start.mk
18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#
19c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#  DSP-BIOS Bridge build rules.
20c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#
21c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# make sure we have a rootdir
23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifndef PROJROOT
24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev$(error Error: variable PROJROOT not defined)
25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif
26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
27c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# make sure we have a bridgeroot
28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifndef BRIDGEROOT
29c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#$(error Error: variable BRIDGEROOT not defined)
30c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif
31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCMDDEFS =
34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCMDDEFS_START =
35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
37c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCROSS=arm-none-linux-gnueabi-
38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevPROCFAMILY=OMAP_4430
39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifndef PROCFAMILY
42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev$(error Error: PROCFAMILY can not be determined from Kernel .config)
43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif
44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifndef TARGETDIR
46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevTARGETDIR=$(PROJROOT)/target
47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif
48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#default (first) target should be "all"
52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#make sure the target directories are created
53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#all: $(HOSTDIR) $(ROOTFSDIR) $(TARGETDIR)
54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#all: $(TARGETDIR)
55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCONFIG_SHELL := /bin/bash
57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevSHELL := $(CONFIG_SHELL)
59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Current version of gmake (3.79.1) cannot run windows shell's internal commands
61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# We need to invoke command interpreter explicitly to do so.
62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# for winnt it is cmd /c <command>
63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevSHELLCMD:=
64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(SHELL),$(CONFIG_SHELL))
66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCHECKSHELL:=SHELLERR
67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse
68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCHECKSHELL:=
69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif
70c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Error string to generate fatal error and abort gmake
72c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevERR = $(error Makefile generated fatal error while building target "$@")
73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
74c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCP  :=   cp
75c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevMAKEFLAGS = r
77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevQUIET := &> /dev/null
79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Should never be :=
81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRM    = rm $(1) 
82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevMV    = mv $(1) $(2)
83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevRMDIR = rm -r $(1)
84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevMKDIR = mkdir -p $(1)
85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevINSTALL = install
86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Current Makefile directory
88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevMAKEDIR := $(CURDIR)
89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Implicit rule search not needed for *.d, *.c, *.h
91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev%.d:
92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev%.c:
93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev%.h:
94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#   Tools
96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCC	:= $(CROSS)gcc
97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevAR	:= $(CROSS)ar
98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevLD	:= $(CROSS)ld
99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevSTRIP	:= $(CROSS)strip
100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
102