Subversion Repositories DevTools

Rev

Rev 335 | Blame | Compare with Previous | Last modification | View Log | RSS feed

###############################################################################
# File:     TOOLSET/VERIX.RUL[e]
# Contents: VERIX rules
#
###############################################################################

###############################################################################
#..     Remove "undef" warnings
#
cc_includes     +=
cc_includes     +=
cc_defines      +=
cxx_includes    +=
cxx_defines     +=
VRX_SYSLIBS     +=

###############################################################################
#..     Toolset defaults
#

###############################################################################
#..     Parse user options
#       Global options already parsed
#       These options extend the global options
#
ifdef OPTIONS

ifneq "$(findstring wall,$(OPTIONS))" ""        # Enable all warnings
USE_WALL        = 1
endif

ifneq "$(findstring list,$(OPTIONS))" ""        # Create Listings
USE_LIST        = 1
endif


endif   #OPTIONS

###############################################################################
#
#       Extend LIBDIRS with toolset libraries
#       Create a ';' separated list
#       Start with a space separated list
#               May need to change if VERIX_LIB is to be installed
#               a path with spaces in it.

LIB         := $(patsubst %,%;,$(LIBDIRS) $(VERIX_LIB) )
export LIB


###############################################################################
#..     C Compiler definition
#
# Compile and link options
#   -g                                  : generate debug info
#   -v                                  : display arm tool commands as they are invoked
#   -armcc,"-E"                         : generate pre-processor output only
#   -armcc,"--list"                     : generate pre-processor output as well as compile
#   -armcc,"-Ospace"                    : perform unaligned data accesses via functions
#   -armcc,"-Otime"                     : perform unaligned data accesses inline
#   -armcc,"-W+s"                       : report any padding added to structures
#   -armcc,"--diag_suppress nnn,nnn"    : suppress warnings


# Standard defines
#
#..
ifdef ALVL
vrx_defines     += -DALVL=$(ALVL)
endif

ifdef DLVL
vrx_defines     += -DDLVL=$(DLVL)
endif

vrx_defines     += -D__SOURCE__=\"$(notdir $<)\"

# Standard flags
#
vrx_flags       += -c

ifdef FORCE_C_COMPILE
endif

ifdef FORCE_CC_COMPILE
endif

ifdef USE_OPTIMISE                              # default for production
ifdef OPT_MODE
vrx_flags       += -armcc,"-O$(OPT_MODE)"
endif
else
endif

ifdef USE_DEBUGINFO                             # default for debug
vrx_flags       += -g
vrx_defines     += -DDEBUG
else
vrx_defines     += -DNDEBUG
endif

ifdef USE_STRICT_ANSI                           # default NO
vrx_flags       +=
endif

ifdef LEAVETMP                                  # default NO
vrx_flags       +=
endif

ifdef USE_LIST
vrx_flags       += -armcc,"--list"
endif

ifdef USE_WALL
vrx_flags       += -armcc,"-W+s"
else
ifdef NOWARNLIST
vrx_flags       += -armcc,"--diag_suppress $(subst $(comma),\$(comma),$(NOWARNLIST))"
endif
endif

# Standard includes
#
#..

ifdef VRX_INCPATH                               # From CompileOptions
vrx_includes    += $(VRX_INCPATH)
endif

vrx_includes    +=
ifdef VERIX_INCLUDE
vrx_includes    += $(VERIX_INCLUDE)             # From Toolset Defs
endif

###############################################################################
#..     C Compiler definition
#
cc              = $(CC_PRE) $(VERIX_compiler)
cc_init         =
cc_o_switch     = -o $@
cc_source       = $<
cc_flags        = \
                $(patsubst %,%,$(CFLAGS)) \
                $(patsubst %,%,$(vrx_flags)) \
                $(patsubst %,%,$(vrx_defines)) \
                $(patsubst %,-D%,$(cc_defines)) \
                $(patsubst %,-I %,$(INCDIRS)) \
                $(patsubst %,-I %,$(cc_includes)) \
                $(patsubst %,-I %,$(vrx_includes))
cc_term         =

define cc_pre
        @echo '[$<] compiling..'
endef

ifdef USE_LIST
define cc_post
                $(mv) $(basename $(@F)).lst $(basename $@).lst
endef
else
define cc_post
endef
endif

###############################################################################
#..     C++ Compiler definition
#
cxx             = $(CC_PRE) $(VERIX_compiler)
cxx_init        =
cxx_o_switch    = -o $@
cxx_source      = $<
cxx_flags       = \
                $(patsubst %,%,$(CXXFLAGS)) \
                $(patsubst %,%,$(vrx_flags)) \
                $(patsubst %,%,$(vrx_defines)) \
                $(patsubst %,-d%,$(cxx_defines)) \
                $(patsubst %,-I %,$(INCDIRS)) \
                $(patsubst %,-I %,$(cxx_includes)) \
                $(patsubst %,-I %,$(vrx_includes))

define cxx_pre
        @echo '[$<] compiling..'
endef

define cxx_post
endef

###############################################################################
#..     C/C++ dependencies
#
ccdep           = $(XX_PRE) $(GBE_BIN)/mkdepend
ccdep_init      =
ccdep_o_switch  = -f -
ccdep_flags     = -MM -b -We -p '$$(OBJDIR)/' -o ".$(o)"
ccdep_source    = $(filter %.c %.cc %.cpp, $+) > $@ 2> $(OBJDIR)/depend.err

ccdep_flags     += \
                $(patsubst %,%,$(CFLAGS)) \
                $(patsubst %,%,$(vrx_depend)) \
                $(patsubst %,%,$(vrx_defines)) \
                $(patsubst %,-D%,$(cc_defines)) \
                $(patsubst %,-I %,$(INCDIRS)) \
                $(patsubst %,-I %,$(cc_includes)) \
                $(patsubst %,-Y %,$(vrx_includes))
ccdep_pre       =
ccdep_post      =

###############################################################################
#..     Linker definition
#
ld              = $(CC_PRE) $(VERIX_compiler)
ld_init         =
ld_o_switch     = -o $@
ld_flags        = -map -symbols \
                $(patsubst %,%,$(LDFLAGS)) \
                $($(notdir $(basename $@))_ld) \
                $(VRX_SYSLIBS)

ld_pre          = @echo '[$@] Linking..';
ld_post         =

################################################################################
#       Library dependency file generation
#       Use cmdfile to create a file that will be included in this makefile
#       The generated file will contain library path names that can only be
#       calculated on the fly
#
define LDDEPEND
        $(XX_PRE)$(cmdfile) -wkWeo$(@) "$($(DPLIST))"
endef


################################################################################
#..     Archiver Definitions
#
#..     Archiver
#
ar              = $(XX_PRE) $(ARM_ar)
ar_init         =
ar_cmdfile      = $(basename $@).ar
ar_flags        =
ar_o_switch     = -via $(ar_cmdfile)

define ar_pre
        @$(echo) '[$@] Creating library archive..' ; \
        $(rm) -f $@ ;\
        $(cmdfile) -ko$(ar_cmdfile) \
                -create $@\\n\
                $(patsubst %,-r %\\n,$(filter %.o, $^))
endef

ifndef LEAVETMP
define ar_post
        @$(rm) -f $(ar_cmdfile)
endef
else
define ar_post
endef
endif


################################################################################
#..     Archive Merge
#       The archive tool can directly merge libaries
#
armerge              = $(XX_PRE) $(ARM_ar)
armerge_init         =
armerge_flags        = -create $@ -r $^
armerge_o_switch     =

define armerge_pre
        @$(echo) '[$@] Creating a Merged library..' ; \
        $(rm) -f $@
endef

armerge_post         =


################################################################################
#       HEADER
#
# A function to modify the executable header
# Arguments
#       $1 Command line arguments
#       $2 Comment
#
# Assumes that $@ is the input/output file
define HEADER
        @$(echo) '[$@] $(2)..'
        $(CC_PRE) $(VERIX_hdr) $1 $@ || ( $(rm) -f $@; exit 1 )
endef


################################################################################
#       FILESIGNATURE
#
# A function to sign a file
# Arguments
#       $1 - Input file name
#       $2 - Output file name for Certificate
#       $3 - Options (-L for Flash )
#
# Note: The FileSignature program needs
#        - '\' when being called
#        - '\' for its input file
#        - Absolute pathname for its input file
#
#
define FILESIGNATURE
        @echo '[$<] Signing Files ..';
        $(CC_PRE) $(subst /,\\,$(VERIX_FileSignature)) -C $2 -F $(subst /,\\,$(abspath  $1)) $3
endef


#