############################################################################### # 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 #