summaryrefslogtreecommitdiffstats
path: root/domx/make/build.mk
diff options
context:
space:
mode:
Diffstat (limited to 'domx/make/build.mk')
-rw-r--r--domx/make/build.mk379
1 files changed, 379 insertions, 0 deletions
diff --git a/domx/make/build.mk b/domx/make/build.mk
new file mode 100644
index 0000000..2faeffa
--- /dev/null
+++ b/domx/make/build.mk
@@ -0,0 +1,379 @@
+#
+# Copyright 2001-2009 Texas Instruments - http://www.ti.com/
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# dspbridge/mpu_api/make/build.mk
+#
+# DSP-BIOS Bridge build rules.
+
+# ALL PATHS IN MAKEFILE MUST BE RELATIVE TO ITS DIRECTORY
+
+CDEFS += $(CMDDEFS) # Add command line definitions
+CDEFS += $(PROCFAMILY) # Processor Family e.g. 3430
+CDEFS += $(CMDDEFS_START) # Definitions from start.mk
+# ----------------------------------------------------------
+# REMOVE LEADING AND TRAILING SPACES FROM MAKEFILE MACROS
+# ----------------------------------------------------------
+
+TARGETNAME := $(strip $(TARGETNAME))
+TARGETTYPE := $(strip $(TARGETTYPE))
+SUBMODULES := $(strip $(SUBMODULES))
+SOURCES := $(strip $(SOURCES))
+INCLUDES := $(strip $(INCLUDES))
+LIBINCLUDES := $(strip $(LIBINCLUDES))
+
+SH_SONAME := $(strip $(SH_SONAME))
+ST_LIBS := $(strip $(ST_LIBS))
+SH_LIBS := $(strip $(SH_LIBS))
+
+CFLAGS := $(strip $(CFLAGS))
+CDEFS := $(strip $(CDEFS))
+EXEC_ARGS := $(strip $(EXEC_ARGS))
+ST_LIB_ARGS := $(strip $(ST_LIB_ARGS))
+SH_LIB_ARGS := $(strip $(SH_LIB_ARGS))
+
+# ----------------------------------------------------------
+# COMPILER OPTIONS
+# ----------------------------------------------------------
+
+# Preprocessor : dependency file generation
+ifndef NODEPENDS
+ifndef nodepends
+CFLAGS += -MD
+endif
+endif
+
+# Overall
+CFLAGS += -pipe
+# Preprocessor
+CFLAGS +=
+# Debugging
+ifeq ($(BUILD),deb)
+CFLAGS += -g
+else
+CFLAGS += -fomit-frame-pointer
+endif
+# Warnings
+CFLAGS += -Wall -Wno-trigraphs -Werror-implicit-function-declaration #-Wno-format
+# Optimizations
+#CFLAGS += -O2 -fno-strict-aliasing
+#CFLAGS += -Os -fno-strict-aliasing
+CFLAGS += -fno-strict-aliasing
+# Machine dependent
+
+ifeq ($(PROCFAMILY),OMAP_3430)
+CFLAGS += -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
+endif
+
+ifeq ($(PROCFAMILY),OMAP_4430)
+CFLAGS += -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
+endif
+
+# Code generation
+CFLAGS += -fno-common
+# Macros
+CFLAGS += -DLINUX $(addprefix -D, $(CDEFS))
+
+ifdef __KERNEL__
+CFLAGS += -D__KERNEL__ -fno-builtin
+endif
+
+# ----------------------------------------------------------
+# OBJECTS
+# ----------------------------------------------------------
+
+BUILDDIR = .obj/
+
+# setup the target - check the given type - make sure we have the
+# correct suffix on it
+# TARGETNAME should not have a suffix on it - give an error if it does
+#ifneq ($(suffix $(TARGETNAME)),)
+# $(error TARGETNAME can not have a suffix)
+#endif
+ifeq ($(TARGETTYPE),SH_LIB)
+ TARGET := $(basename $(TARGETNAME)).so
+else
+ifeq ($(TARGETTYPE),MODULE)
+ TARGET := $(basename $(TARGETNAME)).o
+ TARGETKO := $(addsuffix .ko,$(basename $(TARGET)))
+ TARGETMOD := $(addsuffix .mod,$(basename $(TARGET)))
+else
+ifeq ($(TARGETTYPE),ST_LIB)
+ TARGET := $(basename $(TARGETNAME)).a
+else
+ifeq ($(TARGETTYPE),EXEC)
+ TARGET := $(basename $(TARGETNAME)).out
+else
+ifneq ($(TARGETTYPE),)
+TARGET := $(error Invalid TARGETTYPE)
+endif
+endif
+endif
+endif
+endif
+
+#LIBINCLUDES += $(TARGETDIR) $(TGTROOT)/lib $(TGTROOT)/usr/lib
+LIBINCLUDES += $(TARGETDIR)/lib $(TARGETDIR)/usr/lib
+SRCDIRS := $(sort $(dir $(SOURCES)))
+OBJDIRS := $(addprefix $(BUILDDIR),$(SRCDIRS)) $(BUILDDIR)
+
+BASEOBJ := $(addsuffix .o,$(basename $(SOURCES)))
+OBJECTS := $(addprefix $(BUILDDIR), $(BASEOBJ))
+
+ST_LIBNAMES := $(addsuffix .a, $(addprefix lib, $(ST_LIBS)))
+DL_LIBNAMES := $(addsuffix .so, $(addprefix lib, $(SH_LIBS)))
+
+vpath %.a $(LIBINCLUDES) $(TGTROOT)/lib $(TGTROOT)/usr/lib
+vpath %.so $(LIBINCLUDES) $(TGTROOT)/lib $(TGTROOT)/usr/lib
+
+# ----------------------------------------------------------
+# BUILD ARGUMENTS
+# ----------------------------------------------------------
+
+MAPFILE := -Wl,-Map,$(TARGET).map
+INCPATH := $(addprefix -I, . $(INCLUDES)) $(LINUXINCLUDE)
+LIBPATH := $(addprefix -L, $(LIBINCLUDES))
+LIBFILE := $(addprefix -l, $(ST_LIBS) $(SH_LIBS)) $(LIB_OBJS)
+
+ifeq ($(TARGETTYPE),SH_LIB)
+CFLAGS += -fpic
+TARGETARGS := $(SH_LIB_ARGS) -nostartfiles -nodefaultlibs -nostdlib -shared -Wl
+ifneq ($(SH_SONAME),)
+TARGETARGS += -Wl,-soname,$(SH_SONAME)
+endif
+endif
+
+ifeq ($(TARGETTYPE),MODULE)
+TARGETARGS := $(SH_LIB_ARGS) -nostartfiles -nodefaultlibs -nostdlib -Wl,-r
+ifneq ($(SH_SONAME),)
+TARGETARGS += -Wl,-soname,$(SH_SONAME)
+endif
+endif
+
+ifeq ($(TARGETTYPE),ST_LIB)
+TARGETARGS := $(ST_LIB_ARGS) -nostartfiles -nodefaultlibs -nostdlib -Wl,-r
+endif
+
+ifeq ($(TARGETTYPE),EXEC)
+TARGETARGS := $(EXEC_ARGS)
+endif
+
+.PHONY : all $(SUBMODULES) clean cleantrg SHELLERR Debug
+
+# ==========================================================
+# all
+# ==========================================================
+all : $(CHECKSHELL) $(SUBMODULES)
+
+# ==========================================================
+# Make submodules
+# ==========================================================
+$(SUBMODULES):
+ifndef NORECURSE
+ifndef norecurse
+ $(MAKE) -C $@ $(filter-out $(SUBMODULES),$(MAKECMDGOALS))
+endif
+endif
+
+ifneq ($(TARGETTYPE),)
+
+# if this is driver module level , build KO file too
+ifneq ($(TOPLEVEL),)
+all : $(OBJDIRS) $(TARGETKO)
+else
+all : $(OBJDIRS) $(TARGET)
+endif
+
+# ==========================================================
+# Create directories
+# ==========================================================
+$(OBJDIRS) $(TARGETDIR) :
+ @$(call MKDIR, $@)
+
+# ==========================================================
+# Product 2.6.x kernel module based on target
+# ==========================================================
+
+# Link module .o with vermagic .o
+$(TARGETKO): $(TARGETMOD).o $(TARGET)
+ $(LD) -EL -r -o $@ $^
+
+# Compile vermagic
+$(TARGETMOD).o: $(TARGETMOD).c
+ $(CC) -c $(TARGETARGS) $(CFLAGS) $(INCPATH) -o $@ $<
+
+# Generate Module vermagic
+$(TARGETMOD).c: $(TARGET)
+ $(MODPOST) $(TARGET)
+# removed - need to be done as a pre-step to building
+# $(MAKE) -C $(KRNLSRC) modules
+
+# ==========================================================
+# Build target
+# ==========================================================
+$(TARGET):$(OBJECTS) $(ST_LIBNAMES) $(DL_LIBNAMES)
+# @$(SHELLCMD) echo Building $@
+# $(CC) $(TARGETARGS) $(CFLAGS) $(LIBPATH) $(MAPFILE) -o $@ $(BASEOBJ) $(LIBFILE)
+# $(CC) $(TARGETARGS) $(CFLAGS) $(LIBPATH) $(MAPFILE) -o $@ $(OBJECTS) $(LIBFILE)
+ifeq ($(TARGETTYPE),ST_LIB)
+ $(AR) r $@ $(OBJECTS)
+else
+ $(CC) $(TARGETARGS) $(CFLAGS) $(LIBPATH) $(MAPFILE) -o $@ $(OBJECTS) $(LIBFILE)
+endif
+
+# ==========================================================
+# Compile .c file
+# ==========================================================
+$(BUILDDIR)%.o:%.c
+# echo Compiling $(patsubst $(BUILDDIR)%.o,%.c, $@)
+ $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $(patsubst $(BUILDDIR)%.o,%.c, $@)
+
+# ==========================================================
+# Compile .S file
+# ==========================================================
+$(BUILDDIR)%.o:%.S
+# echo Compiling $(patsubst $(BUILDDIR)%.o,%.S, $@)
+ $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $(patsubst $(BUILDDIR)%.o,%.S, $@)
+
+endif # ifneq ($(TARGETTYPE),)
+
+# ----------------------------------------------------------
+# install - install the files
+# ----------------------------------------------------------
+install:: $(TARGETDIR) $(SUBMODULES) $(TARGET)
+ifdef HOSTRELEASE
+ifdef SH_SONAME
+ $(INSTALL) -D $(TARGET) $(TARGETDIR)/$(HOSTRELEASE)/$(SH_SONAME)
+ $(RM) -f $(TARGETDIR)/$(HOSTRELEASE)/$(TARGET)
+ ln -s $(SH_SONAME) $(TARGETDIR)/$(HOSTRELEASE)/$(TARGET)
+else
+ifneq ($(TOPLEVEL),)
+ $(INSTALL) -D $(TARGETKO) $(TARGETDIR)/$(HOSTRELEASE)/$(TARGETKO)
+else
+ $(INSTALL) -D $(TARGET) $(TARGETDIR)/$(HOSTRELEASE)/$(TARGET)
+endif
+endif
+endif
+ifdef 0 # removed - components shouldn't put things in the production fs
+ifdef ROOTFSRELEASE
+ $(call MKDIR, $(ROOTFSDIR)/$(ROOTFSRELEASE))
+ifdef SH_SONAME
+ $(STRIP) --strip-unneeded -xgo $(ROOTFSDIR)/$(ROOTFSRELEASE)/$(SH_SONAME) $(TARGET)
+ $(RM) -f $(ROOTFSDIR)/$(ROOTFSRELEASE)/$(TARGET)
+ ln -s $(SH_SONAME) $(ROOTFSDIR)/$(ROOTFSRELEASE)/$(TARGET)
+else
+ifneq ($(TOPLEVEL),)
+ $(STRIP) --strip-unneeded -xgo $(ROOTFSDIR)/$(ROOTFSRELEASE)/$(TARGETKO) $(TARGETKO)
+else
+ $(STRIP) --strip-unneeded -xgo $(ROOTFSDIR)/$(ROOTFSRELEASE)/$(TARGET) $(TARGET)
+endif
+endif
+endif
+endif
+
+# ----------------------------------------------------------
+# clean - Remove build directory and target files
+# Linux : Removes object and dependency files in build folder
+# DOS : Removes object dirs in build folder
+# ----------------------------------------------------------
+clean : $(SUBMODULES)
+ifneq ($(TARGETTYPE),)
+ifneq ($(OBJECTS),)
+ - $(call RM,-f $(OBJECTS))
+ - $(call RM,-f $(OBJECTS:.o=.d))
+ - $(call RMDIR,-f $(BUILDDIR))
+endif
+ - $(call RM,-f $(TARGET))
+ - $(call RM,-f $(TARGET).map)
+ - $(call RM,-f $(TARGETKO))
+ - $(call RM,-f $(TARGETMOD).c)
+ - $(call RM,-f $(TARGETMOD).o)
+ - $(call RM,-f $(TARGETMOD).d)
+ifneq ($(TOPLEVEL),)
+ - @$(call RM,-f $(TARGETKO))
+ - @$(call RM,-f $(TARGETMOD).c)
+ - @$(call RM,-f $(TARGETMOD).o)
+ - @$(call RM,-f $(TARGETMOD).d)
+endif
+endif
+
+cleantrg : $(SUBMODULES)
+ifneq ($(TARGETTYPE),)
+ - @$(call RM, $(TARGET))
+ - @$(call RM, $(TARGET).map)
+ifneq ($(TOPLEVEL),)
+ - @$(call RM, $(TARGETKO))
+ - @$(call RM, $(TARGETMOD).c)
+ - @$(call RM, $(TARGETMOD).o)
+ - @$(call RM, $(TARGETMOD).d)
+endif
+endif
+
+# ----------------------------------------------------------
+# Include dependency files generated by preprocessor.
+#
+# Dependency files are placed in main object directory because
+# dependent files' paths for same source file varies with the
+# directory from where gmake is run
+# ----------------------------------------------------------
+ifndef NODEPENDS
+ifndef nodepends
+ifneq ($(OBJECTS),)
+-include $(OBJECTS:.o=.d)
+endif
+endif
+endif
+
+# ----------------------------------------------------------
+# Generate fatal error if make variable SHELL is incorrect
+# ----------------------------------------------------------
+SHELLERR::
+ @$(SHELLCMD) echo Fatal error: SHELL set to $(SHELL) instead of $(MYSHELL)
+ @$(SHELLCMD) echo set $(MYSHELL) to correct path and CASE SENSITIVE FILE NAME and EXTENSTION
+ @$(SHELLCMD) echo of your command shell
+ $(ERR)
+
+
+# ----------------------------------------------------------
+# For debugging script
+# ----------------------------------------------------------
+Debug::$(SUBMODULES)
+ @$(SHELLCMD) echo SHELL: $(SHELL)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo CDEFS: $(CDEFS)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo CONFIG_SHELL: $(CONFIG_SHELL)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo CURDIR: $(CURDIR)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo SRCDIRS: $(SRCDIRS)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo OBJDIRS: $(OBJDIRS)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo OBJECTS: $(OBJECTS)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo BUILDDIR: $(BUILDDIR)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo TARGETDIR TARGETNAME: $(TARGET)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo MAKEDIR: $(MAKEDIR)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo INCLUDES: $(INCLUDES)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo DL_LIBNAMES: $(DL_LIBNAMES)
+ @$(SHELLCMD) echo
+ @$(SHELLCMD) echo LIBFILE: $(LIBFILE)
+ @$(SHELLCMD) echo
+