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