diff -r be27ed110b50 -r e1eecf4d390d sbsv2/raptor/lib/flm/msvctools.flm --- a/sbsv2/raptor/lib/flm/msvctools.flm Wed Oct 28 14:39:48 2009 +0000 +++ b/sbsv2/raptor/lib/flm/msvctools.flm Mon Nov 16 09:46:46 2009 +0000 @@ -1,212 +1,212 @@ -# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of the License "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# MSVC TOOLS EXE/LIB Function Like Makefile (FLM) -# Knows how to build all possible executables for the TOOLS build -# -# - -CLEANTARGETS:= -RELEASABLES:= -INSTALLTARGET:= - -RELEASEPATH:=$(RELEASEPATHROOT)/$(FULLVARIANTPATH) -BUILDPATH:=$(OUTPUTPATH)/$(FULLVARIANTPATH) -RELEASETARGET:=$(RELEASEPATH)/$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE)) - -# make the output directories while reading makefile - some build engines prefer this -$(call makepath,$(RELEASEPATH)) -$(call makepath,$(BUILDPATH)) - -CLEANTARGETS:=$(CLEANTARGETS) $(RELEASETARGET) -RELEASEABLES:=$(RELEASEABLES) $(RELEASETARGET) - -GENDEBUGINFO:=$(if $(findstring deb,$(VARIANTTYPE)),1,) - -# MSVC "no space" arguments must take the form / e.g. -# /FoF:\object\file\to\be\created.obj -define msvcformatarg - $(1)$(subst /,\\\,$(2)) -endef - -############# -## COMPILE ## -############# - -# object files and related -OBJFILES:=$(patsubst %,$(BUILDPATH)/%.obj,$(basename $(notdir $(SOURCE)))) -SBRFILES:=$(addsuffix .sbr, $(basename $(OBJFILES))) -LISFILES:=$(addsuffix .lis, $(basename $(OBJFILES))) -LSTFILES:=$(addsuffix .tools.lst, $(basename $(SOURCE))) -CLEANTARGETS:=$(CLEANTARGETS) $(OBJFILES) $(SBRFILES) $(LISFILES) $(LSTFILES) - -# include paths and preinclude file -UINCLUDE:=$(patsubst %,$(OPT.USERINCLUDE)%,$(USERINCLUDE)) -SINCLUDE:=$(patsubst %,$(OPT.SYSINCLUDE)%,$(SYSTEMINCLUDE)) -PINCLUDE:=$(OPT.PREINCLUDE)$(notdir $(PRODUCT_INCLUDE)) -INCLUDES:=$(PINCLUDE) $(UINCLUDE) $(SINCLUDE) - -# macros -DEFINES:=$(call makemacrodef,$(OPT.DEFINE),$(CDEFS) $(BASE_MACRO) $(CFLAGS.ADD)) - -# other -PDBFILE:=$(if $(GENDEBUGINFO),$(RELEASEPATH)/$(TARGET).pdb,) -CLEANTARGETS:=$(CLEANTARGETS) $(PDBFILE) - -#compile -define msvctoolscompile - $(BUILDPATH)/$(basename $(notdir $(1))).obj: $(1) $(PROJECT_META) $(if $(HAVE_ORDERONLY),|,) EXPORT - $(call startrule,msvctoolscompile,,$(1)) \ - $(CC) \ - $(if $(findstring staticlib,$(BASE_TYPE)),,$(CFLAGS.LIB)) \ - $(CFLAGS) $$(subst /,-,$(OPTION_MSVC)) \ - $(if $(findstring /W,$(OPTION_MSVC)),,$(CFLAGS.DEFAULT.WARNLEVEL)) \ - $(if $(PDBFILE),$$(call msvcformatarg,$(OPT.PDBFILE),$(PDBFILE)),) \ - $(DEFINES) $(INCLUDES) \ - $$(call msvcformatarg,$(OPT.BROWSEFILE),$(BUILDPATH)/$(basename $(notdir $(1))).sbr) \ - $$(call msvcformatarg,$(OPT.OBJECTFILE),$$@) $(1) \ - $(call endrule,msvctoolscompile) -endef -# make the output directories while reading makefile - some build engines prefer this -$(call makepath,$(BUILDPATH)) -$(foreach SRCFILE,$(SOURCE),$(eval $(call msvctoolscompile,$(SRCFILE)))) - -# assembler listing -define msvctoolslisting - LISTING:: $(BUILDPATH)/$(basename $(notdir $(1))).lis - $(GNUCP) $$< $(basename $(1)).tools.lst - - $(BUILDPATH)/$(basename $(notdir $(1))).lis: $(1) - $(call startrule,msvctoolslisting) \ - $(CC) \ - $(if $(findstring staticlib,$(BASE_TYPE)),,$(CFLAGS.LIB)) \ - $(CFLAGS) $$(subst /,-,$(OPTION_MSVC)) \ - $(if $(findstring /W,$(OPTION_MSVC)),,$(CFLAGS.DEFAULT.WARNLEVEL)) \ - $(DEFINES) $(INCLUDES) \ - $$(call msvcformatarg,$(OPT.LISTING),$(BUILDPATH)/$(basename $(notdir $(1))).lis) \ - $(1) \ - $(call endrule,msvctoolslisting) - - endef -$(foreach SRCFILE,$(SOURCE),$(eval $(call msvctoolslisting,$(SRCFILE)))) - - -ifeq ($(BASE_TYPE),staticlib) - - ############# - ## ARCHIVE ## - ############# - - ARCHIVERRESPONSEFILE:=$(BUILDPATH)/$(TARGET).arf - CLEANTARGETS:=$(CLEANTARGETS) $(ARCHIVERRESPONSEFILE) - - define msvctoolsarchive - $(RELEASETARGET): $(OBJFILES) - @echo "" > $(ARCHIVERRESPONSEFILE); - $(call groupin10infile,$(ARCHIVERRESPONSEFILE),$(OBJFILES)) ; - $(call startrule,msvctoolsarchive) \ - $(AR) $(ARFLAGS) $(OPT.SUBSYSTEM)$(SUBSYSTEM) $$(call msvcformatarg,$(OPT.OUTFILE),$$@) \ - $$(call msvcformatarg,$(PREFIX.RESPONSEFILE),$(ARCHIVERRESPONSEFILE)) \ - $(if $(SAVESPACE),; $(GNURM) -f $(OBJFILES); true,) \ - $(call endrule,msvctoolsarchive) - - endef - $(eval $(msvctoolsarchive)) - -else - - ########## - ## LINK ## - ########## - - STATICLIBS:=$(patsubst %,$(RELEASEPATH)/%.lib,$(STATICLIBRARY)) - IMPORTLIBS:=$(patsubst %.dso,$(IMPORTLIBPATH)/%.lib,$(LIBRARY)) - LINKERRESPONSEFILE:=$(BUILDPATH)/$(TARGET).lrf - CLEANTARGETS:=$(CLEANTARGETS) $(RELEASETARGET).lib $(LINKERRESPONSEFILE) - - define msvctoolslink - $(RELEASETARGET): $(OBJFILES) $(STATICLIBS) $(IMPORTLIBS) - @echo "" > $(LINKERRESPONSEFILE); - $(call groupin10infile,$(LINKERRESPONSEFILE),$(STATICLIBS) $(IMPORTLIBS) $(OBJFILES)) ; - $(call startrule,msvctoolslink) \ - $(LD) $(LFLAGS) $(WIN32_LIBRARY) $(OPT.SUBSYSTEM)$(SUBSYSTEM) \ - $$(call msvcformatarg,$(OPT.OUTFILE),$$@) \ - $$(call msvcformatarg,$(OPT.IMPLIB),$(RELEASETARGET).lib) \ - $$(call msvcformatarg,$(PREFIX.RESPONSEFILE),$(LINKERRESPONSEFILE)) \ - $(if $(SAVESPACE),; $(GNURM) -f $(OBJFILES); true,) \ - $(call endrule,msvctoolslink) - endef - $(eval $(msvctoolslink)) - -endif - - -############# -## INSTALL ## -############# - -ifneq ($(INSTALLPATH),) - INSTALLTARGET:=$(INSTALLPATH)/$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE)) - CLEANTARGETS:=$(CLEANTARGETS) $(INSTALLTARGET) - RELEASEABLES:=$(RELEASEABLES) $(INSTALLTARGET) - - define msvctoolsinstall - $(INSTALLTARGET): $(RELEASETARGET) - $(call startrule,msvctoolsinstall) \ - $(GNUCP) $$< $$@ && \ - $(GNUCHMOD) a+rwx $$@ \ - $(call endrule,msvctoolsinstall) - endef - # make the output directories while reading makefile - some build engines prefer this - $(call makepath,$(INSTALLPATH)) - $(eval $(msvctoolsinstall)) -endif - - -########################## -## BROWSE DB GENERATION ## -########################## - -ifneq ($(GENDEBUGINFO),) - BSCFILE:=$(RELEASEPATH)/$(TARGET).bsc - BSCRESPONSEFILE:=$(BUILDPATH)/$(TARGET).brf - CLEANTARGETS:=$(CLEANTARGETS) $(BSCFILE) $(BSCRESPONSEFILE) - RELEASEABLES:=$(RELEASEABLES) $(BSCFILE) - - define msvctoolsgenbrowse - $(BSCFILE): $(OBJFILES) - @echo "" > $(BSCRESPONSEFILE); - $(call groupin10infile,$(BSCRESPONSEFILE),$(SBRFILES)) ; - $(call startrule,msvctoolsgenbrowse) \ - $(BROWSETOOL) $(BROWSEFLAGS) $$(call msvcformatarg,$(OPT.BROWSEDB),$$@) \ - $$(call msvcformatarg,$(PREFIX.RESPONSEFILE),$(BSCRESPONSEFILE)) \ - $(if $(SAVESPACE),; $(GNURM) -f $(SBRFILES); true,) \ - $(call endrule,msvctoolsgenbrowse) - endef - $(eval $(msvctoolsgenbrowse)) -endif - - -# Global targets -.PHONY:: $(ALLTARGET) -$(ALLTARGET):: $(RELEASEABLES) -TARGET:: $(RELEASEABLES) - -ifeq ($(BASE_TYPE),staticlib) - LIBRARY:: $(RELEASETARGET) $(INSTALLTARGET) -endif - -# clean up -$(eval $(call GenerateStandardCleanTarget,$(CLEANTARGETS),,)) -# for the abld -what target -$(eval $(call whatmacro,$(INSTALLTARGET),WHATTOOLS)) +# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of the License "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# MSVC TOOLS EXE/LIB Function Like Makefile (FLM) +# Knows how to build all possible executables for the TOOLS build +# +# + +CLEANTARGETS:= +RELEASABLES:= +INSTALLTARGET:= + +RELEASEPATH:=$(RELEASEPATHROOT)/$(FULLVARIANTPATH) +BUILDPATH:=$(OUTPUTPATH)/$(FULLVARIANTPATH) +RELEASETARGET:=$(RELEASEPATH)/$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE)) + +# make the output directories while reading makefile - some build engines prefer this +$(call makepath,$(RELEASEPATH)) +$(call makepath,$(BUILDPATH)) + +CLEANTARGETS:=$(CLEANTARGETS) $(RELEASETARGET) +RELEASEABLES:=$(RELEASEABLES) $(RELEASETARGET) + +GENDEBUGINFO:=$(if $(findstring deb,$(VARIANTTYPE)),1,) + +# MSVC "no space" arguments must take the form / e.g. +# /FoF:\object\file\to\be\created.obj +define msvcformatarg + $(1)$(subst /,\\\,$(2)) +endef + +############# +## COMPILE ## +############# + +# object files and related +OBJFILES:=$(patsubst %,$(BUILDPATH)/%.obj,$(basename $(notdir $(SOURCE)))) +SBRFILES:=$(addsuffix .sbr, $(basename $(OBJFILES))) +LISFILES:=$(addsuffix .lis, $(basename $(OBJFILES))) +LSTFILES:=$(addsuffix .tools.lst, $(basename $(SOURCE))) +CLEANTARGETS:=$(CLEANTARGETS) $(OBJFILES) $(SBRFILES) $(LISFILES) $(LSTFILES) + +# include paths and preinclude file +UINCLUDE:=$(patsubst %,$(OPT.USERINCLUDE)%,$(USERINCLUDE)) +SINCLUDE:=$(patsubst %,$(OPT.SYSINCLUDE)%,$(SYSTEMINCLUDE)) +PINCLUDE:=$(OPT.PREINCLUDE)$(notdir $(PRODUCT_INCLUDE)) +INCLUDES:=$(PINCLUDE) $(UINCLUDE) $(SINCLUDE) + +# macros +DEFINES:=$(call makemacrodef,$(OPT.DEFINE),$(CDEFS) $(BASE_MACRO) $(CFLAGS.ADD)) + +# other +PDBFILE:=$(if $(GENDEBUGINFO),$(RELEASEPATH)/$(TARGET).pdb,) +CLEANTARGETS:=$(CLEANTARGETS) $(PDBFILE) + +#compile +define msvctoolscompile + $(BUILDPATH)/$(basename $(notdir $(1))).obj: $(1) $(PROJECT_META) $(if $(HAVE_ORDERONLY),|,) EXPORT + $(call startrule,msvctoolscompile,,$(1)) \ + $(CC) \ + $(if $(findstring staticlib,$(BASE_TYPE)),,$(CFLAGS.LIB)) \ + $(CFLAGS) $$(subst /,-,$(OPTION_MSVC)) \ + $(if $(findstring /W,$(OPTION_MSVC)),,$(CFLAGS.DEFAULT.WARNLEVEL)) \ + $(if $(PDBFILE),$$(call msvcformatarg,$(OPT.PDBFILE),$(PDBFILE)),) \ + $(DEFINES) $(INCLUDES) \ + $$(call msvcformatarg,$(OPT.BROWSEFILE),$(BUILDPATH)/$(basename $(notdir $(1))).sbr) \ + $$(call msvcformatarg,$(OPT.OBJECTFILE),$$@) $(1) \ + $(call endrule,msvctoolscompile) +endef +# make the output directories while reading makefile - some build engines prefer this +$(call makepath,$(BUILDPATH)) +$(foreach SRCFILE,$(SOURCE),$(eval $(call msvctoolscompile,$(SRCFILE)))) + +# assembler listing +define msvctoolslisting + LISTING:: $(BUILDPATH)/$(basename $(notdir $(1))).lis + $(GNUCP) $$< $(basename $(1)).tools.lst + + $(BUILDPATH)/$(basename $(notdir $(1))).lis: $(1) + $(call startrule,msvctoolslisting) \ + $(CC) \ + $(if $(findstring staticlib,$(BASE_TYPE)),,$(CFLAGS.LIB)) \ + $(CFLAGS) $$(subst /,-,$(OPTION_MSVC)) \ + $(if $(findstring /W,$(OPTION_MSVC)),,$(CFLAGS.DEFAULT.WARNLEVEL)) \ + $(DEFINES) $(INCLUDES) \ + $$(call msvcformatarg,$(OPT.LISTING),$(BUILDPATH)/$(basename $(notdir $(1))).lis) \ + $(1) \ + $(call endrule,msvctoolslisting) + + endef +$(foreach SRCFILE,$(SOURCE),$(eval $(call msvctoolslisting,$(SRCFILE)))) + + +ifeq ($(BASE_TYPE),staticlib) + + ############# + ## ARCHIVE ## + ############# + + ARCHIVERRESPONSEFILE:=$(BUILDPATH)/$(TARGET).arf + CLEANTARGETS:=$(CLEANTARGETS) $(ARCHIVERRESPONSEFILE) + + define msvctoolsarchive + $(RELEASETARGET): $(OBJFILES) + @echo "" > $(ARCHIVERRESPONSEFILE); + $(call groupin10infile,$(ARCHIVERRESPONSEFILE),$(OBJFILES)) ; + $(call startrule,msvctoolsarchive) \ + $(AR) $(ARFLAGS) $(OPT.SUBSYSTEM)$(SUBSYSTEM) $$(call msvcformatarg,$(OPT.OUTFILE),$$@) \ + $$(call msvcformatarg,$(PREFIX.RESPONSEFILE),$(ARCHIVERRESPONSEFILE)) \ + $(if $(SAVESPACE),; $(GNURM) -f $(OBJFILES); true,) \ + $(call endrule,msvctoolsarchive) + + endef + $(eval $(msvctoolsarchive)) + +else + + ########## + ## LINK ## + ########## + + STATICLIBS:=$(patsubst %,$(RELEASEPATH)/%.lib,$(STATICLIBRARY)) + IMPORTLIBS:=$(patsubst %.dso,$(IMPORTLIBPATH)/%.lib,$(LIBRARY)) + LINKERRESPONSEFILE:=$(BUILDPATH)/$(TARGET).lrf + CLEANTARGETS:=$(CLEANTARGETS) $(RELEASETARGET).lib $(LINKERRESPONSEFILE) + + define msvctoolslink + $(RELEASETARGET): $(OBJFILES) $(STATICLIBS) $(IMPORTLIBS) + @echo "" > $(LINKERRESPONSEFILE); + $(call groupin10infile,$(LINKERRESPONSEFILE),$(STATICLIBS) $(IMPORTLIBS) $(OBJFILES)) ; + $(call startrule,msvctoolslink) \ + $(LD) $(LFLAGS) $(WIN32_LIBRARY) $(OPT.SUBSYSTEM)$(SUBSYSTEM) \ + $$(call msvcformatarg,$(OPT.OUTFILE),$$@) \ + $$(call msvcformatarg,$(OPT.IMPLIB),$(RELEASETARGET).lib) \ + $$(call msvcformatarg,$(PREFIX.RESPONSEFILE),$(LINKERRESPONSEFILE)) \ + $(if $(SAVESPACE),; $(GNURM) -f $(OBJFILES); true,) \ + $(call endrule,msvctoolslink) + endef + $(eval $(msvctoolslink)) + +endif + + +############# +## INSTALL ## +############# + +ifneq ($(INSTALLPATH),) + INSTALLTARGET:=$(INSTALLPATH)/$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE)) + CLEANTARGETS:=$(CLEANTARGETS) $(INSTALLTARGET) + RELEASEABLES:=$(RELEASEABLES) $(INSTALLTARGET) + + define msvctoolsinstall + $(INSTALLTARGET): $(RELEASETARGET) + $(call startrule,msvctoolsinstall) \ + $(GNUCP) $$< $$@ && \ + $(GNUCHMOD) a+rwx $$@ \ + $(call endrule,msvctoolsinstall) + endef + # make the output directories while reading makefile - some build engines prefer this + $(call makepath,$(INSTALLPATH)) + $(eval $(msvctoolsinstall)) +endif + + +########################## +## BROWSE DB GENERATION ## +########################## + +ifneq ($(GENDEBUGINFO),) + BSCFILE:=$(RELEASEPATH)/$(TARGET).bsc + BSCRESPONSEFILE:=$(BUILDPATH)/$(TARGET).brf + CLEANTARGETS:=$(CLEANTARGETS) $(BSCFILE) $(BSCRESPONSEFILE) + RELEASEABLES:=$(RELEASEABLES) $(BSCFILE) + + define msvctoolsgenbrowse + $(BSCFILE): $(OBJFILES) + @echo "" > $(BSCRESPONSEFILE); + $(call groupin10infile,$(BSCRESPONSEFILE),$(SBRFILES)) ; + $(call startrule,msvctoolsgenbrowse) \ + $(BROWSETOOL) $(BROWSEFLAGS) $$(call msvcformatarg,$(OPT.BROWSEDB),$$@) \ + $$(call msvcformatarg,$(PREFIX.RESPONSEFILE),$(BSCRESPONSEFILE)) \ + $(if $(SAVESPACE),; $(GNURM) -f $(SBRFILES); true,) \ + $(call endrule,msvctoolsgenbrowse) + endef + $(eval $(msvctoolsgenbrowse)) +endif + + +# Global targets +.PHONY:: $(ALLTARGET) +$(ALLTARGET):: $(RELEASEABLES) +TARGET:: $(RELEASEABLES) + +ifeq ($(BASE_TYPE),staticlib) + LIBRARY:: $(RELEASETARGET) $(INSTALLTARGET) +endif + +# clean up +$(eval $(call GenerateStandardCleanTarget,$(CLEANTARGETS),,)) +# for the abld -what target +$(eval $(call whatmacro,$(INSTALLTARGET),WHATTOOLS))