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/build.mk 18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# 19c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# DSP-BIOS Bridge build rules. 20c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 21c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ALL PATHS IN MAKEFILE MUST BE RELATIVE TO ITS DIRECTORY 22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCDEFS += $(CMDDEFS) # Add command line definitions 24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCDEFS += $(PROCFAMILY) # Processor Family e.g. 3430 25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCDEFS += $(CMDDEFS_START) # Definitions from start.mk 26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 27c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# REMOVE LEADING AND TRAILING SPACES FROM MAKEFILE MACROS 28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 29c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 30c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevTARGETNAME := $(strip $(TARGETNAME)) 31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevTARGETTYPE := $(strip $(TARGETTYPE)) 32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevSUBMODULES := $(strip $(SUBMODULES)) 33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevSOURCES := $(strip $(SOURCES)) 34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevINCLUDES := $(strip $(INCLUDES)) 35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevLIBINCLUDES := $(strip $(LIBINCLUDES)) 36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 37c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevSH_SONAME := $(strip $(SH_SONAME)) 38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevST_LIBS := $(strip $(ST_LIBS)) 39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevSH_LIBS := $(strip $(SH_LIBS)) 40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS := $(strip $(CFLAGS)) 42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCDEFS := $(strip $(CDEFS)) 43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevEXEC_ARGS := $(strip $(EXEC_ARGS)) 44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevST_LIB_ARGS := $(strip $(ST_LIB_ARGS)) 45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevSH_LIB_ARGS := $(strip $(SH_LIB_ARGS)) 46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# COMPILER OPTIONS 49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Preprocessor : dependency file generation 52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifndef NODEPENDS 53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifndef nodepends 54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -MD 55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Overall 59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -pipe 60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Preprocessor 61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += 62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Debugging 63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(BUILD),deb) 64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -g 65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -fomit-frame-pointer 67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Warnings 69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -Wall -Wno-trigraphs -Werror-implicit-function-declaration #-Wno-format 70c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Optimizations 71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#CFLAGS += -O2 -fno-strict-aliasing 72c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#CFLAGS += -Os -fno-strict-aliasing 73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -fno-strict-aliasing 74c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Machine dependent 75c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(PROCFAMILY),OMAP_3430) 77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -march=armv7-a -msoft-float -Uarm -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR($(basename $(TARGETNAME)))" -D"KBUILD_MODNAME=KBUILD_STR($(basename $(TARGETNAME)))" -DMODULE -D__LINUX_ARM_ARCH__=7 78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(PROCFAMILY),OMAP_4430) 81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -march=armv7-a -msoft-float -Uarm -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR($(basename $(TARGETNAME)))" -D"KBUILD_MODNAME=KBUILD_STR($(basename $(TARGETNAME)))" -DMODULE -D__LINUX_ARM_ARCH__=7 82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Code generation 85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -fno-common 86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Macros 87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -DLINUX $(addprefix -D, $(CDEFS)) 88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifdef __KERNEL__ 90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -D__KERNEL__ -fno-builtin 91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# OBJECTS 95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevBUILDDIR = .obj/ 98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# setup the target - check the given type - make sure we have the 100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# correct suffix on it 101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# TARGETNAME should not have a suffix on it - give an error if it does 102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifneq ($(suffix $(TARGETNAME)),) 103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# $(error TARGETNAME can not have a suffix) 104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(TARGETTYPE),SH_LIB) 106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TARGET := $(basename $(TARGETNAME)).so 107c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(TARGETTYPE),MODULE) 109c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TARGET := $(basename $(TARGETNAME)).o 110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TARGETKO := $(addsuffix .ko,$(basename $(TARGET))) 111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TARGETMOD := $(addsuffix .mod,$(basename $(TARGET))) 112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(TARGETTYPE),ST_LIB) 114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TARGET := $(basename $(TARGETNAME)).a 115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 116c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(TARGETTYPE),EXEC) 117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TARGET := $(basename $(TARGETNAME)).out 118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(TARGETTYPE),) 120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevTARGET := $(error Invalid TARGETTYPE) 121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 125c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#LIBINCLUDES += $(TARGETDIR) $(TGTROOT)/lib $(TGTROOT)/usr/lib 128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevLIBINCLUDES += $(TARGETDIR)/lib $(TARGETDIR)/usr/lib 129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevSRCDIRS := $(sort $(dir $(SOURCES))) 130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOBJDIRS := $(addprefix $(BUILDDIR),$(SRCDIRS)) $(BUILDDIR) 131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevBASEOBJ := $(addsuffix .o,$(basename $(SOURCES))) 133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOBJECTS := $(addprefix $(BUILDDIR), $(BASEOBJ)) 134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevST_LIBNAMES := $(addsuffix .a, $(addprefix lib, $(ST_LIBS))) 136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevDL_LIBNAMES := $(addsuffix .so, $(addprefix lib, $(SH_LIBS))) 137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevvpath %.a $(LIBINCLUDES) $(TGTROOT)/lib $(TGTROOT)/usr/lib 139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevvpath %.so $(LIBINCLUDES) $(TGTROOT)/lib $(TGTROOT)/usr/lib 140c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 141c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# BUILD ARGUMENTS 143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevMAPFILE := -Wl,-Map,$(TARGET).map 146c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevINCPATH := $(addprefix -I, . $(INCLUDES)) $(LINUXINCLUDE) 147c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevLIBPATH := $(addprefix -L, $(LIBINCLUDES)) 148c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevLIBFILE := $(addprefix -l, $(ST_LIBS) $(SH_LIBS)) $(LIB_OBJS) 149c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(TARGETTYPE),SH_LIB) 151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevCFLAGS += -fpic 152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevTARGETARGS := $(SH_LIB_ARGS) -nostartfiles -nodefaultlibs -nostdlib -shared -Wl 153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(SH_SONAME),) 154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevTARGETARGS += -Wl,-soname,$(SH_SONAME) 155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(TARGETTYPE),MODULE) 159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevTARGETARGS := $(SH_LIB_ARGS) -nostartfiles -nodefaultlibs -nostdlib -Wl,-r 160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(SH_SONAME),) 161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevTARGETARGS += -Wl,-soname,$(SH_SONAME) 162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 165c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(TARGETTYPE),ST_LIB) 166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevTARGETARGS := $(ST_LIB_ARGS) -nostartfiles -nodefaultlibs -nostdlib -Wl,-r 167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 168c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(TARGETTYPE),EXEC) 170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevTARGETARGS := $(EXEC_ARGS) 171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev.PHONY : all $(SUBMODULES) clean cleantrg SHELLERR Debug 174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 176c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# all 177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 178c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevall : $(CHECKSHELL) $(SUBMODULES) 179c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Make submodules 182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev$(SUBMODULES): 184c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifndef NORECURSE 185c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifndef norecurse 186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(MAKE) -C $@ $(filter-out $(SUBMODULES),$(MAKECMDGOALS)) 187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(TARGETTYPE),) 191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# if this is driver module level , build KO file too 193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(TOPLEVEL),) 194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevall : $(OBJDIRS) $(TARGETKO) 195c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevall : $(OBJDIRS) $(TARGET) 197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 198c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 199c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Create directories 201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev$(OBJDIRS) $(TARGETDIR) : 203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(call MKDIR, $@) 204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 205c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 206c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Product 2.6.x kernel module based on target 207c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 208c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 209c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Link module .o with vermagic .o 210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev$(TARGETKO): $(TARGETMOD).o $(TARGET) 211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(LD) -EL -r -o $@ $^ 212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Compile vermagic 214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev$(TARGETMOD).o: $(TARGETMOD).c 215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(CC) -c $(TARGETARGS) $(CFLAGS) $(INCPATH) -o $@ $< 216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 217c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Generate Module vermagic 218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev$(TARGETMOD).c: $(TARGET) 219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(MODPOST) $(TARGET) 220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# removed - need to be done as a pre-step to building 221c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# $(MAKE) -C $(KRNLSRC) modules 222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 223c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 224c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Build target 225c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 226c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev$(TARGET):$(OBJECTS) $(ST_LIBNAMES) $(DL_LIBNAMES) 227c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# @$(SHELLCMD) echo Building $@ 228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# $(CC) $(TARGETARGS) $(CFLAGS) $(LIBPATH) $(MAPFILE) -o $@ $(BASEOBJ) $(LIBFILE) 229c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# $(CC) $(TARGETARGS) $(CFLAGS) $(LIBPATH) $(MAPFILE) -o $@ $(OBJECTS) $(LIBFILE) 230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifeq ($(TARGETTYPE),ST_LIB) 231c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(AR) r $@ $(OBJECTS) 232c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(CC) $(TARGETARGS) $(CFLAGS) $(LIBPATH) $(MAPFILE) -o $@ $(OBJECTS) $(LIBFILE) 234c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 235c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 236c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 237c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Compile .c file 238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev$(BUILDDIR)%.o:%.c 240c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# echo Compiling $(patsubst $(BUILDDIR)%.o,%.c, $@) 241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $(patsubst $(BUILDDIR)%.o,%.c, $@) 242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Compile .S file 245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ========================================================== 246c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev$(BUILDDIR)%.o:%.S 247c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# echo Compiling $(patsubst $(BUILDDIR)%.o,%.S, $@) 248c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $(patsubst $(BUILDDIR)%.o,%.S, $@) 249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif # ifneq ($(TARGETTYPE),) 251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# install - install the files 254c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 255c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevinstall:: $(TARGETDIR) $(SUBMODULES) $(TARGET) 256c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifdef HOSTRELEASE 257c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifdef SH_SONAME 258c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(INSTALL) -D $(TARGET) $(TARGETDIR)/$(HOSTRELEASE)/$(SH_SONAME) 259c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(RM) -f $(TARGETDIR)/$(HOSTRELEASE)/$(TARGET) 260c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ln -s $(SH_SONAME) $(TARGETDIR)/$(HOSTRELEASE)/$(TARGET) 261c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(TOPLEVEL),) 263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(INSTALL) -D $(TARGETKO) $(TARGETDIR)/$(HOSTRELEASE)/$(TARGETKO) 264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 265c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(INSTALL) -D $(TARGET) $(TARGETDIR)/$(HOSTRELEASE)/$(TARGET) 266c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 269c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifdef 0 # removed - components shouldn't put things in the production fs 270c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifdef ROOTFSRELEASE 271c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(call MKDIR, $(ROOTFSDIR)/$(ROOTFSRELEASE)) 272c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifdef SH_SONAME 273c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(STRIP) --strip-unneeded -xgo $(ROOTFSDIR)/$(ROOTFSRELEASE)/$(SH_SONAME) $(TARGET) 274c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(RM) -f $(ROOTFSDIR)/$(ROOTFSRELEASE)/$(TARGET) 275c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ln -s $(SH_SONAME) $(ROOTFSDIR)/$(ROOTFSRELEASE)/$(TARGET) 276c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 277c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(TOPLEVEL),) 278c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(STRIP) --strip-unneeded -xgo $(ROOTFSDIR)/$(ROOTFSRELEASE)/$(TARGETKO) $(TARGETKO) 279c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevelse 280c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(STRIP) --strip-unneeded -xgo $(ROOTFSDIR)/$(ROOTFSRELEASE)/$(TARGET) $(TARGET) 281c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 282c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 283c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 284c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 285c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 286c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 287c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# clean - Remove build directory and target files 288c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Linux : Removes object and dependency files in build folder 289c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# DOS : Removes object dirs in build folder 290c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 291c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevclean : $(SUBMODULES) 292c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(TARGETTYPE),) 293c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(OBJECTS),) 294c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - $(call RM,-f $(OBJECTS)) 295c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - $(call RM,-f $(OBJECTS:.o=.d)) 296c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - $(call RMDIR,-f $(BUILDDIR)) 297c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 298c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - $(call RM,-f $(TARGET)) 299c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - $(call RM,-f $(TARGET).map) 300c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - $(call RM,-f $(TARGETKO)) 301c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - $(call RM,-f $(TARGETMOD).c) 302c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - $(call RM,-f $(TARGETMOD).o) 303c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - $(call RM,-f $(TARGETMOD).d) 304c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(TOPLEVEL),) 305c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - @$(call RM,-f $(TARGETKO)) 306c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - @$(call RM,-f $(TARGETMOD).c) 307c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - @$(call RM,-f $(TARGETMOD).o) 308c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - @$(call RM,-f $(TARGETMOD).d) 309c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 310c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 311c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 312c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevcleantrg : $(SUBMODULES) 313c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(TARGETTYPE),) 314c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - @$(call RM, $(TARGET)) 315c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - @$(call RM, $(TARGET).map) 316c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(TOPLEVEL),) 317c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - @$(call RM, $(TARGETKO)) 318c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - @$(call RM, $(TARGETMOD).c) 319c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - @$(call RM, $(TARGETMOD).o) 320c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev - @$(call RM, $(TARGETMOD).d) 321c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 322c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 323c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 324c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 325c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Include dependency files generated by preprocessor. 326c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# 327c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Dependency files are placed in main object directory because 328c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# dependent files' paths for same source file varies with the 329c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# directory from where gmake is run 330c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 331c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifndef NODEPENDS 332c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifndef nodepends 333c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevifneq ($(OBJECTS),) 334c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev-include $(OBJECTS:.o=.d) 335c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 336c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 337c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevendif 338c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 339c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 340c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# Generate fatal error if make variable SHELL is incorrect 341c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 342c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevSHELLERR:: 343c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo Fatal error: SHELL set to $(SHELL) instead of $(MYSHELL) 344c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo set $(MYSHELL) to correct path and CASE SENSITIVE FILE NAME and EXTENSTION 345c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo of your command shell 346c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev $(ERR) 347c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 348c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 349c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 350c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# For debugging script 351c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev# ---------------------------------------------------------- 352c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevDebug::$(SUBMODULES) 353c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo SHELL: $(SHELL) 354c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 355c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo CDEFS: $(CDEFS) 356c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 357c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo CONFIG_SHELL: $(CONFIG_SHELL) 358c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 359c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo CURDIR: $(CURDIR) 360c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 361c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo SRCDIRS: $(SRCDIRS) 362c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 363c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo OBJDIRS: $(OBJDIRS) 364c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 365c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo OBJECTS: $(OBJECTS) 366c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 367c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo BUILDDIR: $(BUILDDIR) 368c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 369c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo TARGETDIR TARGETNAME: $(TARGET) 370c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 371c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo MAKEDIR: $(MAKEDIR) 372c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 373c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo INCLUDES: $(INCLUDES) 374c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 375c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo DL_LIBNAMES: $(DL_LIBNAMES) 376c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 377c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo LIBFILE: $(LIBFILE) 378c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @$(SHELLCMD) echo 379c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 380