sbsv2/raptor/lib/flm/e32abiv2.flm
changeset 13 c327db0664bb
parent 2 39c28ec933dd
child 18 de5b887c98f7
equal deleted inserted replaced
12:5e7562f67577 13:c327db0664bb
     1 # Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 # Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 # All rights reserved.
     2 # All rights reserved.
     3 # This component and the accompanying materials are made available
     3 # This component and the accompanying materials are made available
     4 # under the terms of the License "Eclipse Public License v1.0"
     4 # under the terms of the License "Eclipse Public License v1.0"
     5 # which accompanies this distribution, and is available
     5 # which accompanies this distribution, and is available
     6 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
    14 # ARMv5 EXE/DLL ABIv2 Function Like Makefile (FLM)
    14 # ARMv5 EXE/DLL ABIv2 Function Like Makefile (FLM)
    15 # Knows how to build all possible ABIV2 executables for ARM
    15 # Knows how to build all possible ABIV2 executables for ARM
    16 #
    16 #
    17 #
    17 #
    18 
    18 
    19 # Only build feature invariant binaries in non-product builds *and*
    19 # Feature/Binary Variation
    20 # Only build feature variant binaries in product builds.
    20 #
    21 #
    21 # FEATUREVARIANTNAME != "" implies a product build configuration
    22 # FEATUREVARIANTNAME != "" implies product build
    22 # FEATUREVARIANT == 1 implies a .mmp defined feature variant binary
    23 # FEATUREVARIANT == 1 implies a feature variant binary
    23 #
    24 #
    24 # By default:
    25 # test FEATUREVARIANTNAME=="" or FEATUREVARIANT==1
    25 #   Build all binaries in non-product builds *and*
    26 #
    26 #   Only build feature variant binaries in product builds.
    27 ifneq ($(or $(call equal,$(FEATUREVARIANTNAME),),$(call equal,$(FEATUREVARIANT),1)),)
    27 #
       
    28 #   test FEATUREVARIANTNAME=="" or FEATUREVARIANT==1
       
    29 #
       
    30 # If FEATUREVARIANTSAFE is set:
       
    31 #   Only build feature invariant binaries in non-product builds *and*
       
    32 #   Only build feature variant binaries in product builds.
       
    33 #
       
    34 #   test (FEATUREVARIANTNAME=="" and FEATUREVARIANT=="") or
       
    35 #        (FEATUREVARIANTNAME!="" and FEATUREVARIANT==1)
       
    36 #
       
    37 
       
    38 DOBUILD:=
       
    39 ifeq ($(FEATUREVARIANTSAFE),)
       
    40   DOBUILD:=$(if $(or $(call equal,$(FEATUREVARIANTNAME),),\
       
    41                      $(call equal,$(FEATUREVARIANT),1)),1)
       
    42 else
       
    43   DOBUILD:=$(if $(or $(and $(call equal,$(FEATUREVARIANTNAME),),\
       
    44                            $(call equal,$(FEATUREVARIANT),)),\
       
    45                      $(and $(call not,$(call equal,$(FEATUREVARIANTNAME),)),\
       
    46                            $(call equal,$(FEATUREVARIANT),1))),1)
       
    47 endif
       
    48 
       
    49 ifeq ($(DOBUILD),1)
    28 
    50 
    29 $(if $(FLMDEBUG),$(info <flm name='e32abiv2' target='$(TARGET)' type='$(TARGETTYPE)' outputpath='$(OUTPUTPATH)' metasource='$(METASOURCE)' postlinkfiletype='$(POSTLINKFILETYPE)' />))
    51 $(if $(FLMDEBUG),$(info <flm name='e32abiv2' target='$(TARGET)' type='$(TARGETTYPE)' outputpath='$(OUTPUTPATH)' metasource='$(METASOURCE)' postlinkfiletype='$(POSTLINKFILETYPE)' />))
    30 
    52 
    31 # Strip switch-type parameters
    53 # Strip switch-type parameters
    32 #
    54 #
   139   WHATRELEASE:=$(WHATRELEASE) $(if $(EXPLICITVERSION),,$(TMP_IMPORTLIBTARGET_ROOT).dso)
   161   WHATRELEASE:=$(WHATRELEASE) $(if $(EXPLICITVERSION),,$(TMP_IMPORTLIBTARGET_ROOT).dso)
   140   WHATRELEASE:=$(WHATRELEASE) $(VER_E32IMPORTLIBBASE).dso
   162   WHATRELEASE:=$(WHATRELEASE) $(VER_E32IMPORTLIBBASE).dso
   141   ifeq ($($(BUILDMARKER_IMPORTLIBTARGET_DSO)),)
   163   ifeq ($($(BUILDMARKER_IMPORTLIBTARGET_DSO)),)
   142     IMPORTLIBTARGET_DSO:=$(TMP_IMPORTLIBTARGET_ROOT).dso
   164     IMPORTLIBTARGET_DSO:=$(TMP_IMPORTLIBTARGET_ROOT).dso
   143     IMPORTLIBTARGETVERSIONED_DSO:=$(VER_E32IMPORTLIBBASE).dso
   165     IMPORTLIBTARGETVERSIONED_DSO:=$(VER_E32IMPORTLIBBASE).dso
   144     $(eval $(BUILDMARKER_IMPORTLIBTARGET_DSO):=1)
       
   145   endif
   166   endif
   146 
   167 
   147   # ABIv1 .lib (for specific builds, toolchains and host OS platforms only)
   168   # ABIv1 .lib (for specific builds, toolchains and host OS platforms only)
   148   IMPORTLIBTARGET_LIB:=
   169   IMPORTLIBTARGET_LIB:=
   149   IMPORTLIBTARGETVERSIONED_LIB:=
   170   IMPORTLIBTARGETVERSIONED_LIB:=
   154     WHATRELEASE:=$(WHATRELEASE) $(if $(EXPLICITVERSION),,$(TMP_IMPORTLIBTARGET_ROOT).lib)
   175     WHATRELEASE:=$(WHATRELEASE) $(if $(EXPLICITVERSION),,$(TMP_IMPORTLIBTARGET_ROOT).lib)
   155     WHATRELEASE:=$(WHATRELEASE) $(VER_E32IMPORTLIBBASE).lib
   176     WHATRELEASE:=$(WHATRELEASE) $(VER_E32IMPORTLIBBASE).lib
   156     ifeq ($($(BUILDMARKER_IMPORTLIBTARGET_LIB)),)
   177     ifeq ($($(BUILDMARKER_IMPORTLIBTARGET_LIB)),)
   157       IMPORTLIBTARGET_LIB:=$(TMP_IMPORTLIBTARGET_ROOT).lib
   178       IMPORTLIBTARGET_LIB:=$(TMP_IMPORTLIBTARGET_ROOT).lib
   158       IMPORTLIBTARGETVERSIONED_LIB:=$(VER_E32IMPORTLIBBASE).lib
   179       IMPORTLIBTARGETVERSIONED_LIB:=$(VER_E32IMPORTLIBBASE).lib
   159       $(eval $(BUILDMARKER_IMPORTLIBTARGET_LIB):=1)
       
   160     endif
   180     endif
   161   endif
   181   endif
   162   endif
   182   endif
   163 endif
   183 endif
   164 
   184 
   221 	DSODEFFILENAMEBASE:=$(E32SOME){$(VERSIONHEX)}.$(E32VAR2)
   241 	DSODEFFILENAMEBASE:=$(E32SOME){$(VERSIONHEX)}.$(E32VAR2)
   222 else
   242 else
   223 	DSODEFFILENAMEBASE:=$(TARGET){$(VERSIONHEX)}
   243 	DSODEFFILENAMEBASE:=$(TARGET){$(VERSIONHEX)}
   224 endif
   244 endif
   225 GENERATED_DSO:=$(call dblquote,$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).dso)
   245 GENERATED_DSO:=$(call dblquote,$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).dso)
   226 GENERATED_DEFFILE:=$(call dblquote,$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).def)
   246 GENERATED_DEFFILE:=$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).def
   227 
   247 
   228 ## IMPORT LIBRARY  ###########################################################
   248 ## IMPORT LIBRARY  ###########################################################
   229 
   249 
   230 # Static libraries will be postlinked when they are used so don't try to postlink them
   250 # Static libraries will be postlinked when they are used so don't try to postlink them
   231 
   251 
   249 endif
   269 endif
   250 
   270 
   251 # ABIv2 .dso
   271 # ABIv2 .dso
   252 ifneq ($(IMPORTLIBTARGET_DSO),) # check that we haven't tried to specify this target already
   272 ifneq ($(IMPORTLIBTARGET_DSO),) # check that we haven't tried to specify this target already
   253 
   273 
       
   274   # By Now we're committed to producing a target for this DSO so it's safe to
       
   275   # set the marker that will prevent any further targets from being made.
       
   276   $(eval $(BUILDMARKER_IMPORTLIBTARGET_DSO):=1)
       
   277 
   254   ifneq ($(EXPLICITVERSION),)
   278   ifneq ($(EXPLICITVERSION),)
   255     TARGETS:=$(strip $(TARGETS) $(IMPORTLIBTARGETVERSIONED_DSO))
   279     TARGETS:=$(strip $(TARGETS) $(IMPORTLIBTARGETVERSIONED_DSO))
   256 
   280 
   257     # Add this importlibrary to our global targets
   281     # Add this importlibrary to our global targets
   258     LIBRARY:: $(IMPORTLIBTARGETVERSIONED_DSO)
   282     LIBRARY:: $(IMPORTLIBTARGETVERSIONED_DSO)
   277     define importlibtarget_unfrozen
   301     define importlibtarget_unfrozen
   278       $(IMPORTLIBTARGET_DSO): $(IMPORTLIBTARGETVERSIONED_DSO)
   302       $(IMPORTLIBTARGET_DSO): $(IMPORTLIBTARGETVERSIONED_DSO)
   279 		$(call startrule,importlibtarget_unfrozen,FORCESUCCESS) \
   303 		$(call startrule,importlibtarget_unfrozen,FORCESUCCESS) \
   280 		$(GNUCP) $$(call dblquote,$$<) $$(call dblquote,$$@) \
   304 		$(GNUCP) $$(call dblquote,$$<) $$(call dblquote,$$@) \
   281 		$(call endrule,importlibtarget_unfrozen)
   305 		$(call endrule,importlibtarget_unfrozen)
   282 
       
   283        CLEANTARGETS:=$$(CLEANTARGETS) $(IMPORTLIBTARGET_DSO)
       
   284 
       
   285     endef
   306     endef
   286 
   307 
   287     define importlibtarget_unfrozen_ver
   308     define importlibtarget_unfrozen_ver
   288       $(IMPORTLIBTARGETVERSIONED_DSO): $(E32TARGET)
   309       $(IMPORTLIBTARGETVERSIONED_DSO): $(E32TARGET)
   289 		$(call startrule,importlibversioned_unfrozen,FORCESUCCESS) \
   310 		$(call startrule,importlibversioned_unfrozen,FORCESUCCESS) \
   290 		$(GNUCP) "$(GENERATED_DSO)" "$$@" \
   311 		$(GNUCP) "$(GENERATED_DSO)" "$$@" \
   291 		$(call endrule,importlibversioned_unfrozen)
   312 		$(call endrule,importlibversioned_unfrozen)
   292 
       
   293       CLEANTARGETS:=$$(CLEANTARGETS) $(IMPORTLIBTARGET_DSO)
       
   294     endef
   313     endef
   295 
   314 
   296     ifeq ($(EXPLICITVERSION),)
   315     ifeq ($(EXPLICITVERSION),)
   297       # Generate the general dso if we aren't
   316       # Generate the general dso if we aren't
   298       # being asked to make just the specific version.
   317       # being asked to make just the specific version.
   305       define importlibtarget_func
   324       define importlibtarget_func
   306        $(IMPORTLIBTARGET_DSO): $(IMPORTLIBTARGETVERSIONED_DSO)
   325        $(IMPORTLIBTARGET_DSO): $(IMPORTLIBTARGETVERSIONED_DSO)
   307 	   $(call startrule,importlibtarget,FORCESUCCESS) \
   326 	   $(call startrule,importlibtarget,FORCESUCCESS) \
   308 	   $(GNUCP) "$$<" "$$@" \
   327 	   $(GNUCP) "$$<" "$$@" \
   309 	   $(call endrule,importlibtarget)
   328 	   $(call endrule,importlibtarget)
   310 
       
   311           CLEANTARGETS:=$$(CLEANTARGETS) $(IMPORTLIBTARGET_DSO)
       
   312       endef
   329       endef
   313 
   330 
   314       ifeq ($(EXPLICITVERSION),)
   331       ifeq ($(EXPLICITVERSION),)
   315           # Generate the general dso if we aren't
   332           # Generate the general dso if we aren't
   316           # being asked to make just the specific version.
   333           # being asked to make just the specific version.
   323 	      $(ELF2E32) --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0))  --version=$(VERSION)  	   \
   340 	      $(ELF2E32) --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0))  --version=$(VERSION)  	   \
   324 	 	  --definput="$(PREPPEDDEFFILE)" 				   \
   341 	 	  --definput="$(PREPPEDDEFFILE)" 				   \
   325 	 	  --dso=$$(call dblquote,$$@) 				   \
   342 	 	  --dso=$$(call dblquote,$$@) 				   \
   326 	 	  --linkas=$(call dblquote,$(LINKASVERSIONED)) \
   343 	 	  --linkas=$(call dblquote,$(LINKASVERSIONED)) \
   327 	      $(call endrule,importlibversioned)
   344 	      $(call endrule,importlibversioned)
   328 
       
   329               CLEANTARGETS:=$$(CLEANTARGETS) $(IMPORTLIBTARGETVERSIONED_DSO)
       
   330       endef
   345       endef
   331       $(eval $(importlibtargetversioned_func))
   346       $(eval $(importlibtargetversioned_func))
   332     endif #  ifneq ($(DEFFILE),)
   347     endif #  ifneq ($(DEFFILE),)
   333   endif #  ifneq ($(EXPORTUNFROZEN),)
   348   endif #  ifneq ($(EXPORTUNFROZEN),)
   334 endif #  ifneq ($(IMPORTLIBTARGET_DSO),)
   349 endif #  ifneq ($(IMPORTLIBTARGET_DSO),)
   335 
   350 
   336 # ABIv1 .lib
   351 # ABIv1 .lib
   337 ifneq ($(IMPORTLIBTARGETVERSIONED_LIB),) # check that we haven't tried to specify this target already
   352 ifneq ($(IMPORTLIBTARGETVERSIONED_LIB),) # check that we haven't tried to specify this target already
   338   CLEANTARGETS:=$(CLEANTARGETS) $(IMPORTLIBTARGETVERSIONED_LIB) $(IMPORTLIBTARGET_LIB)
   353 
       
   354   # By Now we're committed to producing a target for this DSO so it's safe to
       
   355   # set the marker that will prevent any further targets from being made.
       
   356   $(eval $(BUILDMARKER_IMPORTLIBTARGET_LIB):=1)
   339 
   357 
   340   define abiv1_generatelib
   358   define abiv1_generatelib
   341 
   359 
   342     ifeq ($(EXPLICITVERSION),)
   360     ifeq ($(EXPLICITVERSION),)
   343       LIBRARY:: $(IMPORTLIBTARGETVERSIONED_LIB) $(IMPORTLIBTARGET_LIB)
   361       LIBRARY:: $(IMPORTLIBTARGETVERSIONED_LIB) $(IMPORTLIBTARGET_LIB)
   349 
   367 
   350     # If frozen, a prepped .def file is used as the basis for .lib creation
   368     # If frozen, a prepped .def file is used as the basis for .lib creation
   351     # If unfrozen, .lib files are based on the .def file generated by the final postlink
   369     # If unfrozen, .lib files are based on the .def file generated by the final postlink
   352     $(IMPORTLIBTARGETVERSIONED_LIB): $(if $(EXPORTUNFROZEN),$(E32TARGET),$(PREPPEDDEFFILE))
   370     $(IMPORTLIBTARGETVERSIONED_LIB): $(if $(EXPORTUNFROZEN),$(E32TARGET),$(PREPPEDDEFFILE))
   353 	$(call startrule,importlibversioned_abiv1) \
   371 	$(call startrule,importlibversioned_abiv1) \
   354         if [ -f "$(EPOCROOT)/epoc32/tools/def2dll.pl" -a -f "$(if $(EXPORTUNFROZEN),$(GENERATED_DEFFILE),$(PREPPEDDEFFILE))" ]; then \
   372         if [ -f "$(EPOCROOT)/epoc32/tools/def2dll.pl" -a -f "$(if $(EXPORTUNFROZEN),$(call dblquote,$(GENERATED_DEFFILE)),$(PREPPEDDEFFILE))" ]; then \
   355                  $(PERL) $(EPOCROOT)/epoc32/tools/def2dll.pl \
   373                  $(PERL) $(EPOCROOT)/epoc32/tools/def2dll.pl \
   356 		--path=$(IMPORTLIBPATH) \
   374 		--path=$(IMPORTLIBPATH) \
   357 		--bldpath=$(INTERMEDIATEPATH) \
   375 		--bldpath=$(INTERMEDIATEPATH) \
   358 		--import=$(notdir $(basename $(IMPORTLIBTARGETVERSIONED_LIB))) \
   376 		--import=$(notdir $(basename $(IMPORTLIBTARGETVERSIONED_LIB))) \
   359 		--deffile="$(if $(EXPORTUNFROZEN),$(GENERATED_DEFFILE),$(PREPPEDDEFFILE))" \
   377 		--deffile="$(if $(EXPORTUNFROZEN),$(call dblquote,$(GENERATED_DEFFILE)),$(PREPPEDDEFFILE))" \
   360 		--linkAs=$(call dblquote,$(LINKASVERSIONED)) \
   378 		--linkAs=$(call dblquote,$(LINKASVERSIONED)) \
   361 		--inter ; fi \
   379 		--inter ; fi \
   362 	$(call endrule,importlibversioned_abiv1)
   380 	$(call endrule,importlibversioned_abiv1)
   363 
   381 
   364     ifeq ($(EXPLICITVERSION),)
   382     ifeq ($(EXPLICITVERSION),)
   386 endif
   404 endif
   387 
   405 
   388 # Generating the import library is enough if TARGETTYPE=implib #############
   406 # Generating the import library is enough if TARGETTYPE=implib #############
   389 
   407 
   390 ifneq ($(DOPOSTLINK),)
   408 ifneq ($(DOPOSTLINK),)
   391 include $(FLMHOME)/e32postlink.mk
   409 # Capabilities
       
   410 FINAL_CAPABILITIES:=$(if $(CAPABILITY),$(CAPABILITY),NONE)
       
   411 
       
   412 # Paging options for the old postlinker
       
   413 POSTLINKER_PAGEDOPTION:=--defaultpaged
       
   414 ifeq ($(PAGED),1)
       
   415   POSTLINKER_PAGEDOPTION:=--paged
       
   416 endif
       
   417 ifeq ($(PAGED),0)
       
   418   POSTLINKER_PAGEDOPTION:=--unpaged
       
   419 endif
       
   420 
       
   421 CLEANTARGETS:=$(CLEANTARGETS) $(E32TARGET)
       
   422 CLEANTARGETS:=$(CLEANTARGETS) $(GENERATED_DEFFILE)
       
   423 CLEANTARGETS:=$(CLEANTARGETS) $(GENERATED_DSO)
       
   424 
   392 endif # ifneq ($(DOPOSTLINK),)
   425 endif # ifneq ($(DOPOSTLINK),)
   393 
   426 
   394 ifneq ($(TARGETTYPE),implib)
   427 ifneq ($(TARGETTYPE),implib)
   395 
   428 
   396 ## CUSTOM DLLS ###############################################################
   429 ## CUSTOM DLLS ###############################################################
   532 	$(if $(DUMPBCINFO),&& $(FROMELF) -v $$@  > $$@.elfdump,)  \
   565 	$(if $(DUMPBCINFO),&& $(FROMELF) -v $$@  > $$@.elfdump,)  \
   533 	$(call endrule,ar)
   566 	$(call endrule,ar)
   534 endef
   567 endef
   535 $(eval $(artarget_func))
   568 $(eval $(artarget_func))
   536 
   569 
   537 CLEANTARGETS:=$(CLEANTARGETS) $(VIAFILE) $(ARTARGET) $(if $(DUMPBCINFO),$(ARTARGET).elfdump,)
   570 CLEANTARGETS:=$(CLEANTARGETS) $(VIAFILE) $(if $(DUMPBCINFO),$(ARTARGET).elfdump,)
   538 endif
   571 endif
   539 
   572 
   540 
   573 
   541 
   574 
   542 # Targettype is some type of DLL or EXE (or derivative)
   575 # Targettype is some type of DLL or EXE (or derivative)
   543 ifneq ($(LINK_TARGET),)
   576 ifneq ($(LINK_TARGET),)
   544 
   577 
   545 escaped_located_ARMLIBS:=$(foreach L,$(ARMLIBS),$(call ruleEscape,$(wildcard $(subst $(CHAR_SPACE),?,$(RVCTLIB)/*/$(L)))))
   578 located_ARMLIBS:=$(foreach L,$(ARMLIBS),$(wildcard $(RVCTLIB)/*/$(L)))
   546 quoted_located_ARMLIBS:=$(foreach L,$(ARMLIBS),$(call dblquoteitem,$(wildcard $(RVCTLIB)/*/$(L))))
       
   547 located_STATICLIBRARIES:=$(foreach L,$(STATICLIBRARY),$(STATIC_LIBRARY_DIR)/$(L).lib)
   579 located_STATICLIBRARIES:=$(foreach L,$(STATICLIBRARY),$(STATIC_LIBRARY_DIR)/$(L).lib)
   548 e32abiv2_LIBS:=$(EXPTARGET) $(LINKER_STUB_LIBRARY) $(if $(STATIC_RUNTIME_LIB),$(STATIC_RUNTIME_DIR)/$(STATIC_RUNTIME_LIB),) $(located_STATICLIBRARIES)
   580 e32abiv2_LIBS:=$(EXPTARGET) $(LINKER_STUB_LIBRARY) $(if $(STATIC_RUNTIME_LIB),$(STATIC_RUNTIME_DIR)/$(STATIC_RUNTIME_LIB),) $(located_STATICLIBRARIES)
   549 # DLLS and EXEs - These objects are linked by a linker
   581 # DLLS and EXEs - These objects are linked by a linker
   550 ifeq ($(ARMRT),)
   582 ifeq ($(ARMRT),)
   551 # Some of the runtime libraries do not set ARMRT because of a circular reference
   583 # Some of the runtime libraries do not set ARMRT because of a circular reference
   554 ifneq ($(findstring $(TARGET).dso,$(RUNTIME_LIBS_LIST)),)
   586 ifneq ($(findstring $(TARGET).dso,$(RUNTIME_LIBS_LIST)),)
   555 # (almost) ARM RUNTIME LIBS
   587 # (almost) ARM RUNTIME LIBS
   556 REDUCED_RUNTIME_LIBS_LIST:=$(subst $(TARGET).dso,,$(RUNTIME_LIBS_LIST))
   588 REDUCED_RUNTIME_LIBS_LIST:=$(subst $(TARGET).dso,,$(RUNTIME_LIBS_LIST))
   557 
   589 
   558 ifeq ($(VARIANTTYPE),udeb)
   590 ifeq ($(VARIANTTYPE),udeb)
   559   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) 
   591   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) $(located_ARMLIBS)
   560 else
   592 else
   561   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) 
   593   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) $(located_ARMLIBS)
   562 endif
   594 endif
   563 quoted_e32abiv2_LIBS=$(e32abiv2_LIBS) $(quoted_located_ARMLIBS)
       
   564 escaped_e32abiv2_LIBS=$(e32abiv2_LIBS) $(escaped_located_ARMLIBS)
       
   565 
   595 
   566 else
   596 else
   567 # NORMAL
   597 # NORMAL
   568 #
   598 #
   569 ifeq ($(VARIANTTYPE),udeb)
   599 ifeq ($(VARIANTTYPE),udeb)
   572   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY))
   602   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY))
   573 endif
   603 endif
   574 ifeq ($(HAS_DEDICATED_OP_NEWDEL_LIB),1)
   604 ifeq ($(HAS_DEDICATED_OP_NEWDEL_LIB),1)
   575   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(NEWLIB))
   605   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(NEWLIB))
   576 endif
   606 endif
   577 quoted_e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(RUNTIME_LIBS_LIST)) $(call addquotedprefix,$(STATIC_LIBS_PATH)/,$(STATIC_LIBS_LIST)) $(quoted_located_ARMLIBS)
   607 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(RUNTIME_LIBS_LIST)) $(addprefix $(STATIC_LIBS_PATH)/,$(STATIC_LIBS_LIST)) $(located_ARMLIBS)
   578 escaped_e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(RUNTIME_LIBS_LIST)) $(addprefix $(call ruleEscape,$(STATIC_LIBS_PATH)/),$(STATIC_LIBS_LIST)) $(escaped_located_ARMLIBS)
       
   579 
   608 
   580 endif
   609 endif
   581 else
   610 else
   582 # ARM RUNTIME LIBS
   611 # ARM RUNTIME LIBS
   583 ifeq ($(VARIANTTYPE),udeb)
   612 ifeq ($(VARIANTTYPE),udeb)
   584   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) 
   613   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) $(located_ARMLIBS)
   585 else
   614 else
   586   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY))
   615   e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) $(located_ARMLIBS)
   587 endif
   616 endif
   588 quoted_e32abiv2_LIBS=$(e32abiv2_LIBS) $(quoted_located_ARMLIBS)
       
   589 escaped_e32abiv2_LIBS=$(e32abiv2_LIBS) $(escaped_located_ARMLIBS)
       
   590 endif
   617 endif
   591 
   618 
   592 # NOTE: the groupin10 macro must be used before a call to the "startrule" macro
   619 # NOTE: the groupin10 macro must be used before a call to the "startrule" macro
   593 # because the code between startrule and endrule is packaged up into one
   620 # because the code between startrule and endrule is packaged up into one
   594 # commandline which would defeat the purpose of groupin10.
   621 # commandline which would defeat the purpose of groupin10.
   595 # This is undesirable because viafile generation commands appear
   622 # This is undesirable because viafile generation commands appear
   596 # outside the relevant tags but it is also unavoidable.
   623 # outside the relevant tags but it is also unavoidable.
   597 define linktarget_func
   624 define linktarget_func
   598 ## The actual link target, dependencies and build step
   625 ## The actual link target, dependencies and build step
   599 $(LINK_TARGET): $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS),$(LINKOBJECTS)) $(escaped_e32abiv2_LIBS) $(LINKER_ENTRYPOINT_LIBDEP) $(if $(SUPPORTS_STDCPP_NEWLIB),$(CHECKLIB)) $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACKFILE),)
   626 $(E32TARGET): $(POSTLINKDEFFILE) $(ELF2E32) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS),$(LINKOBJECTS)) $(e32abiv2_LIBS) $(LINKER_ENTRYPOINT_LIBDEP) $(if $(SUPPORTS_STDCPP_NEWLIB),$(CHECKLIB)) $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACKFILE),) $(if $(HAVE_ORDERONLY),|,) $(EPOCROOT)/epoc32/build/TEM_LIB
   600 	$(if $(MULTIFILE_ENABLED),,@echo -n "" > $(VIAFILE);
   627 	$(if $(MULTIFILE_ENABLED),,@echo -n "" > $(VIAFILE);
   601 	$(call groupin10,$(LINKOBJECTS)) ;)
   628 	$(call groupin10,$(LINKOBJECTS)) ;)
   602 	$(call startrule,link) \
   629 	$(call startrule,linkandpostlink) \
   603 	$(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \
   630 	$(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \
   604 	$(if $(SUPPORTS_STDCPP_NEWLIB),$(if $(located_STATICLIBRARIES),$(CHECKLIB) $(CHECKLIB_TYPE) --elf $(call dblquote,$(located_STATICLIBRARIES)) &&,),) \
   631 	$(if $(SUPPORTS_STDCPP_NEWLIB),$(if $(located_STATICLIBRARIES),$(CHECKLIB) $(CHECKLIB_TYPE) --elf $(call dblquote,$(located_STATICLIBRARIES)) &&,),) \
   605 	$(LD) $(LINKER_MISC_FLAGS) $(LINKER_DEFAULT_LIB_PATHS) $(SYMBIAN_LINK_FLAGS) $(if $(DEBUG_INFO),$(LINKER_DEBUG_OPTION),$(LINKER_NODEBUG_OPTION)) \
   632 	$(LD) $(LINKER_MISC_FLAGS) $(LINKER_DEFAULT_LIB_PATHS) $(SYMBIAN_LINK_FLAGS) $(if $(DEBUG_INFO),$(LINKER_DEBUG_OPTION),$(LINKER_NODEBUG_OPTION)) \
       
   633 	  $(if $(ARMLIBS),$(LD_WARNINGS_SUPPRESSION_ARMLIBS),) \
   606 	  $(SHARED_OBJECT_OPTION) $(SPLIT_OPTION) \
   634 	  $(SHARED_OBJECT_OPTION) $(SPLIT_OPTION) \
   607 	  $(RW_BASE_OPTION) 0x400000 \
   635 	  $(RW_BASE) \
   608 	  $(LINKER_ARCH_OPTION) \
   636 	  $(LINKER_ARCH_OPTION) \
   609 	  $(SYMVER_OPTION) $(SO_NAME_OPTION) $(call dblquote,$(LINKASVERSIONED)) \
   637 	  $(SYMVER_OPTION) $(SO_NAME_OPTION)=$(call dblquote,$(LINKASVERSIONED)) \
   610 	  $(LINKER_ENTRYPOINT_SETTING) \
   638 	  $(LINKER_ENTRYPOINT_SETTING) \
   611 	  -o $$(call dblquote,$$@) \
   639 	  -o $$(call dblquote,$(LINK_TARGET)) \
   612 	  $(if $(LTCG),$(LTCG_OPTION),) \
   640 	  $(if $(LTCG),$(LTCG_OPTION),) \
   613 	  $(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION) \
   641 	  $(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION)=$(call dblquote,$(MAPFILE)) \
   614 	  $(call dblquote,$(MAPFILE)) \
       
   615   	  $(LINKEROPTION) \
   642   	  $(LINKEROPTION) \
   616 	  $(if $(MULTIFILE_ENABLED),$(call dblquote,$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS)),$(COMMANDFILE_OPTION)$(call dblquote,$(VIAFILE))) \
   643 	  $(if $(MULTIFILE_ENABLED),$(call dblquote,$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS)),$(COMMANDFILE_OPTION)$(call dblquote,$(VIAFILE))) \
   617           $(if $(GENERATELINKERFEEDBACK),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \
   644       $(if $(GENERATELINKERFEEDBACK),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \
   618 	  $(if $(LINKER_ADD_STATIC_RUNTIME),$(if $(STATIC_RUNTIME_LIB),$(LINKER_GROUP_START_OPTION) $(STATIC_RUNTIME_DIR)/$(STATIC_RUNTIME_LIB) $(LINKER_GROUP_END_OPTION),)) \
   645 	  $(if $(LINKER_ADD_STATIC_RUNTIME),$(if $(STATIC_RUNTIME_LIB),$(LINKER_GROUP_START_OPTION) $(STATIC_RUNTIME_DIR)/$(STATIC_RUNTIME_LIB) $(LINKER_GROUP_END_OPTION),)) \
   619 	  $(quoted_e32abiv2_LIBS) $(LINKER_DEFAULT_LIBS)\
   646 	  $(call dblquote,$(e32abiv2_LIBS)) $(LINKER_DEFAULT_LIBS) && \
   620 	$(call endrule,link)
   647 	  $(ELF2E32) \
   621 
   648 	  --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0)) \
   622 $(MAPFILE): $(LINK_TARGET)
   649 	  --version=$(VERSION) \
   623 endef
   650 	  --capability=$(FINAL_CAPABILITIES) \
       
   651 	  --linkas=$(call dblquote,$(LINKASVERSIONED)) \
       
   652 	  --fpu=$(if $(ARMFPU),$(ARMFPU),$(POSTLINKER_FPU_DEFAULT)) \
       
   653 	  --targettype=$(POSTLINKTARGETTYPE) \
       
   654 	  --output=$$(call dblquote,$$@) \
       
   655 	  --elfinput=$(call dblquote,$(LINK_TARGET)) \
       
   656 	  $(if $(UID1),--uid1=0x$(UID1),) \
       
   657 	  $(if $(UID2),--uid2=0x$(UID2),) \
       
   658 	  $(if $(UID3),--uid3=0x$(UID3),) \
       
   659 	  $(if $(VENDORID),--vid=0x$(VENDORID),) \
       
   660 	  $(if $(EXPTARGET),--customdlltarget,) \
       
   661 	  $(if $(ARMLIBS),--excludeunwantedexports,) \
       
   662 	  $(if $(EPOCALLOWDLLDATA),--dlldata,) \
       
   663 	  $(if $(EPOCPROCESSPRIORITY),--priority=$(EPOCPROCESSPRIORITY),) \
       
   664 	  $(if $(EPOCSTACKSIZE),--stack=0x$(EPOCSTACKSIZE),) \
       
   665 	  $(if $(EPOCHEAPSIZEMIN),--heap=0x$(EPOCHEAPSIZEMIN)$(CHAR_COMMA)0x$(EPOCHEAPSIZEMAX),) \
       
   666 	  $(if $(EPOCFIXEDPROCESS),--fixedaddress,) \
       
   667 	  $(if $(EPOCDATALINKADDRESS),--datalinkaddress=$(EPOCDATALINKADDRESS),) \
       
   668 	  $(if $(NAMEDSYMLKUP),--namedlookup,) \
       
   669 	  $(if $(SMPSAFE),--smpsafe,) \
       
   670 	  $(if $(POSTLINKDEFFILE),--definput=$(POSTLINKDEFFILE),) \
       
   671 	  $(if $(EXPORTUNFROZEN),--unfrozen,) \
       
   672 	  $(if $(AUTOEXPORTS),--sysdef=$(call dblquote,$(AUTOEXPORTS)),) \
       
   673 	  $(if $(CANIGNORENONCALLABLE), \
       
   674 	    $(if $(IMPORTLIBRARYREQUIRED),,--ignorenoncallable),) \
       
   675 	  $(if $(CANHAVEEXPORTS), --defoutput=$(call dblquote,$(GENERATED_DEFFILE)) --dso=$(GENERATED_DSO)) \
       
   676 	  $(if $(filter $(VARIANTTYPE),$(DEBUGGABLE)),--debuggable,) \
       
   677 	  $(if $(POSTLINKER_SUPPORTS_WDP), \
       
   678 	    --codepaging=$(PAGEDCODE_OPTION) --datapaging=$(PAGEDDATA_OPTION), \
       
   679 	    $(POSTLINKER_PAGEDOPTION)) \
       
   680 	  $(if $(NOCOMPRESSTARGET),--uncompressed, \
       
   681 	    $(if $(INFLATECOMPRESSTARGET),--compressionmethod=inflate, \
       
   682 	      $(if $(BYTEPAIRCOMPRESSTARGET),--compressionmethod=bytepair, \
       
   683 	        --compressionmethod=$(POSTLINKER_COMPRESSION_DEFAULT)))) \
       
   684 	  --libpath="$(call concat,$(PATHSEP)$(CHAR_SEMIC),$(strip $(RUNTIME_LIBS_PATH) $(STATIC_LIBS_PATH)))" \
       
   685 	  $(if $(SAVESPACE),$(if $(EXPORTUNFROZEN),,&& { $(GNURM) -rf $(INTERMEDIATEPATH); true; })) \
       
   686 	$(call endrule,linkandpostlink)
       
   687 
       
   688 $(MAPFILE): $(E32TARGET)
       
   689 $(LINK_TARGET): $(E32TARGET)
       
   690 endef
       
   691 ifneq ($(DOPOSTLINK),)
   624 $(eval $(linktarget_func))
   692 $(eval $(linktarget_func))
   625 
   693 endif # ifneq ($(DOPOSTLINK),)
   626 CLEANTARGETS:=$(CLEANTARGETS) $(LINK_TARGET) $(if $(GENERATELINKERFEEDBACK),$(FEEDBACKFILE)) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT))
   694 
   627 CLEANTARGETS:=$(CLEANTARGETS) $(VIAFILE)
   695 CLEANTARGETS:=$(CLEANTARGETS) $(VIAFILE) $(if $(GENERATELINKERFEEDBACK),$(FEEDBACKFILE)) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT))
   628 CLEANTARGETS:=$(CLEANTARGETS) $(MAPFILE)
       
   629 WHATRELEASE:=$(WHATRELEASE) $(MAPFILE)
   696 WHATRELEASE:=$(WHATRELEASE) $(MAPFILE)
   630 
   697 
   631 endif # if TARGETTYPE lib
   698 endif # if TARGETTYPE lib
   632 
   699 
   633 
   700 
   644 
   711 
   645 # USE_TRACE_COMPILER defaults to blank in Raptor config.
   712 # USE_TRACE_COMPILER defaults to blank in Raptor config.
   646 # Users can turn TC on by setting it to 1 in user config.
   713 # Users can turn TC on by setting it to 1 in user config.
   647 ifneq ($(USE_TRACE_COMPILER),)
   714 ifneq ($(USE_TRACE_COMPILER),)
   648   include $(FLMHOME)/tracecompiler.mk
   715   include $(FLMHOME)/tracecompiler.mk
       
   716   WHATRELEASE:=$(WHATRELEASE) $(TRACE_DICTIONARY) $(AUTOGEN_HEADER)
   649 endif
   717 endif
   650 
   718 
   651 CC_CPPONLY_ARGS:=$(SYMBIAN_CCFLAGS) $(if $(DEBUG_INFO),-g) $(DEBUG_FORMAT) \
   719 CC_CPPONLY_ARGS:=$(SYMBIAN_CCFLAGS) $(if $(DEBUG_INFO),-g) $(DEBUG_FORMAT) \
   652   $(RUNTIME_SYMBOL_VISIBILITY_OPTION) $(EXCEPTIONS) \
   720   $(RUNTIME_SYMBOL_VISIBILITY_OPTION) $(EXCEPTIONS) \
   653   $(CC_WARNINGS_CONTROL_OPTION) $(CC_ERRORS_CONTROL_OPTION) \
   721   $(CC_WARNINGS_CONTROL_OPTION) $(CC_ERRORS_CONTROL_OPTION) \
   654   $(TARGET_ARCH_OPTION) $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) \
   722   $(TARGET_ARCH_OPTION) $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) \
   655   $(EXPORT_VTBL_OPTION) $(NO_UNALIGNED_ACCESS) $(VFE_OPTION) $(AAPCS_OPTION) \
   723   $(EXPORT_VTBL_OPTION) $(NO_UNALIGNED_ACCESS) $(VFE_OPTION) $(AAPCS_OPTION) \
   656   $(CPPONLYOPTION) $(INSTRUCTION_SET) \
   724   $(CPPONLYOPTION) $(INSTRUCTION_SET) \
   657   $(if $(ALWAYS_BUILD_AS_ARM),$(ARM_INSTRUCTION_SET),$(THUMB_INSTRUCTION_SET) $(call makemacrodef,-D,$(COMPILER_THUMB_DEFINES))) \
   725   $(if $(ALWAYS_BUILD_AS_ARM),$(ARM_INSTRUCTION_SET),$(THUMB_INSTRUCTION_SET) $(call makemacrodef,-D,$(COMPILER_THUMB_DEFINES))) \
   658   $(COMPILER_FPU_FLAGS)
   726   $(COMPILER_FPU_OPTION)$(if $(ARMFPU),$(ARMFPU),$(COMPILER_FPU_DEFAULT))
   659 
   727 
   660 ## COMPILE CPP Files #################################################################
   728 ## COMPILE CPP Files #################################################################
   661 
   729 
   662 # For ARMCC we can compile all sourcefiles with one invocation
   730 # For ARMCC we can compile all sourcefiles with one invocation
   663 # The pathprep macro is used to make sure that forward slashes in options
   731 # The pathprep macro is used to make sure that forward slashes in options
   672   $(CC_WARNINGS_CONTROL_OPTION) $(CC_ERRORS_CONTROL_OPTION) \
   740   $(CC_WARNINGS_CONTROL_OPTION) $(CC_ERRORS_CONTROL_OPTION) \
   673   $(TARGET_ARCH_OPTION) $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) \
   741   $(TARGET_ARCH_OPTION) $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) \
   674   $(EXPORT_VTBL_OPTION) $(NO_UNALIGNED_ACCESS) $(VFE_OPTION) $(AAPCS_OPTION) \
   742   $(EXPORT_VTBL_OPTION) $(NO_UNALIGNED_ACCESS) $(VFE_OPTION) $(AAPCS_OPTION) \
   675   $(COMPILE_ONLY_OPTION) $(INSTRUCTION_SET) \
   743   $(COMPILE_ONLY_OPTION) $(INSTRUCTION_SET) \
   676   $(if $(ALWAYS_BUILD_AS_ARM),$(ARM_INSTRUCTION_SET),$(THUMB_INSTRUCTION_SET) $(call makemacrodef,-D,$(COMPILER_THUMB_DEFINES))) \
   744   $(if $(ALWAYS_BUILD_AS_ARM),$(ARM_INSTRUCTION_SET),$(THUMB_INSTRUCTION_SET) $(call makemacrodef,-D,$(COMPILER_THUMB_DEFINES))) \
   677   $(COMPILER_FPU_FLAGS)
   745   $(COMPILER_FPU_OPTION)$(if $(ARMFPU),$(ARMFPU),$(COMPILER_FPU_DEFAULT))
   678 
   746 
   679 ifeq ($(STDCPP),1)
   747 ifeq ($(STDCPP),1)
   680 SYSTEMINCLUDE:=$(SYSTEMINCLUDE) $(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(STDCPP_INCLUDE)))
   748 SYSTEMINCLUDE:=$(SYSTEMINCLUDE) $(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(STDCPP_INCLUDE)))
   681 endif
   749 endif
   682 
   750 
   703 
   771 
   704 $(eval DEPENDFILENAME:=$(1).d)
   772 $(eval DEPENDFILENAME:=$(1).d)
   705 $(eval DEPENDFILE:=$(wildcard $(DEPENDFILENAME)))
   773 $(eval DEPENDFILE:=$(wildcard $(DEPENDFILENAME)))
   706 
   774 
   707 # $4 is for language specific options (e.g. C++ vs C)
   775 # $4 is for language specific options (e.g. C++ vs C)
   708 $(1): $(2) $(PROJECT_META) $(if $(MULTIFILE_ENABLED),,$(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT)) $(if $(USE_TRACE_COMPILER),$(TRACE_MARKER),) $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACKFILE),)
   776 $(1): $(2) $(PROJECT_META) $(if $(MULTIFILE_ENABLED),,$(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT)) $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACKFILE),) | $(if $(USE_TRACE_COMPILER),$(TRACE_MARKER),)  
   709 	$(call startrule,compile,,$(2))		\
   777 	$(call startrule,compile,,$(2))		\
   710 		$(if $(PERTURBSTARTTIME), $(RANSLEEP) $(PERTURBMSECS) ;,) \
   778 		$(if $(PERTURBSTARTTIME), $(RANSLEEP) $(PERTURBMSECS) ;,) \
   711 		$(if $(MULTIFILE_ENABLED), echo $(2) $(3) > $(MULTIFILE_VIAFILE) ;,) \
   779 		$(if $(MULTIFILE_ENABLED), echo $(2) $(3) > $(MULTIFILE_VIAFILE) ;,) \
   712 		$(CC) $(LICENSERETRY_OPTION) \
   780 		$(CC) $(LICENSERETRY_OPTION) \
   713 			$(CC_CORE_ARGS) \
   781 			$(CC_CORE_ARGS) \
   714 			$(OPTION_COMPILER) $(if $(MULTIFILE_ENABLED),$(4),$(3)) \
   782 			$(OPTION_COMPILER) $(if $(MULTIFILE_ENABLED),$(4),$(3)) \
   715 			$(if $(LTCG),$(LTCG_OPTION),) \
   783 			$(if $(LTCG),$(LTCG_OPTION),) \
   716 			$(if $(USE_PROFILER_FEEDBACK),--profile=$(call dblquote,$(ARM_PROFILER_FILE)),) \
   784 			$(if $(USE_PROFILER_FEEDBACK),--profile=$(call dblquote,$(ARM_PROFILER_FILE)),) \
   717 			$(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS))				\
   785 			$(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS))				\
   718 			$(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$(call concat, $(PREINCLUDE_OPTION) ,$(call dblquote,$(PREINCLUDE)))\
   786 			$(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$(call concat, $(PREINCLUDE_OPTION) ,$(call dblquote,$(PREINCLUDE)))\
   719 			$(if $(SET_ARMINC),$(if $(RVCTINC),$(COMPILER_SYSTEM_INCLUDE_OPTION)$(call dblquoteitem,$(RVCTINC)),),)       \
   787 			$(if $(SET_ARMINC),$(if $(RVCTINC),$(COMPILER_SYSTEM_INCLUDE_OPTION)$(call dblquote,$(RVCTINC)),),)       \
   720 			$(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquote,$$(<D))                                                      \
   788 			$(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquote,$$(<D))                                                      \
   721 			$(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(USERINCLUDE)))      \
   789 			$(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(USERINCLUDE)))      \
   722 			$(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE)))  \
   790 			$(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE)))  \
   723 			$(if $(NOHIDEALL),--no_hide_all,) \
   791 			$(if $(NOHIDEALL),--no_hide_all,) \
   724 			$(DEPEND_OPTION) $(call dblquote,$(1).d) \
   792 			$(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(1).d)) \
   725                         $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \
   793 			$(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \
   726 			$(if $(MULTIFILE_ENABLED),--multifile $(OUTPUT_OPTION) $(MULTIFILEOBJECT) \
   794 			$(if $(MULTIFILE_ENABLED),--multifile $(OUTPUT_OPTION) $(MULTIFILEOBJECT) \
   727 			--via $$(call dblquote, $(MULTIFILE_VIAFILE)),$(OUTPUT_OPTION) $$@ $$(call dblquote, $$<))  \
   795 			--via $$(call dblquote, $(MULTIFILE_VIAFILE)),$(OUTPUT_OPTION) $$@ $$(call dblquote, $$<))  \
   728 	$(call endrule,compile)
   796 	$(call endrule,compile)
   729 
   797 
   730 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
   798 ifeq ($(NO_DEPEND_GENERATE),)
   731 ifneq "$(DEPENDFILE)" ""
   799   CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
   732 ifeq ($(NO_DEPEND_INCLUDE),)
   800 endif
   733   ifeq "$(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS)))" ""
   801 
   734     -include $(DEPENDFILE)
   802 ifneq ($(DEPENDFILE),)
   735   endif
   803   ifeq ($(NO_DEPEND_INCLUDE),)
   736 endif
   804     ifeq ($(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS))),)
       
   805       -include $(DEPENDFILE)
       
   806     endif
       
   807   endif
   737 endif
   808 endif
   738 
   809 
   739 # individual source file compilation
   810 # individual source file compilation
   740 SOURCETARGET_$(call sanitise,$(2)): $(1)
   811 SOURCETARGET_$(call sanitise,$(2)): $(1)
   741 
   812 
   807 			$(CC_CORE_ARGS) \
   878 			$(CC_CORE_ARGS) \
   808 			$(LISTING_OPTION)		            	\
   879 			$(LISTING_OPTION)		            	\
   809 			$(OPTION_COMPILER) 						\
   880 			$(OPTION_COMPILER) 						\
   810 			$(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS))				\
   881 			$(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS))				\
   811 			$(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$(call concat, $(PREINCLUDE_OPTION) ,$(call dblquote,$(PREINCLUDE)))\
   882 			$(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$(call concat, $(PREINCLUDE_OPTION) ,$(call dblquote,$(PREINCLUDE)))\
   812 			$(if $(SET_ARMINC),$(if $(RVCTINC),$(COMPILER_SYSTEM_INCLUDE_OPTION)$(call dblquoteitem,$(RVCTINC)),),)       \
   883 			$(if $(SET_ARMINC),$(if $(RVCTINC),$(COMPILER_SYSTEM_INCLUDE_OPTION)$(call dblquote,$(RVCTINC)),),)       \
   813 			$(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquote,$$(<D))                                                   \
   884 			$(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquote,$$(<D))                                                   \
   814 			$(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(USERINCLUDE)))      \
   885 			$(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(USERINCLUDE)))      \
   815 			$(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE)))  \
   886 			$(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE)))  \
   816 			$(if $(NOHIDEALL),--no_hide_all,) \
   887 			$(if $(NOHIDEALL),--no_hide_all,) \
   817 			$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME)) \
   888 			$(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME))) \
   818 			$$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) \
   889 			$$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) \
   819 	$(call endrule,e32listing)
   890 	$(call endrule,e32listing)
   820 
   891 
   821 CLEANTARGETS:=$$(CLEANTARGETS) $(LISTINGTARGET)
   892 CLEANTARGETS:=$$(CLEANTARGETS) $(LISTINGTARGET)
   822 
   893 
   823 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
   894 ifeq ($(NO_DEPEND_GENERATE),))
   824 ifneq "$(DEPENDFILE)" ""
   895   CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
   825 ifeq ($(NO_DEPEND_INCLUDE),)
   896 endif
   826   ifeq "$(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS)))" ""
   897 
   827     -include $(DEPENDFILE)
   898 ifneq ($(DEPENDFILE),)
   828   endif
   899   ifeq ($(NO_DEPEND_INCLUDE),)
   829 endif
   900     ifeq ($(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS))),)
       
   901       -include $(DEPENDFILE)
       
   902     endif
       
   903   endif
   830 endif
   904 endif
   831 
   905 
   832 endef
   906 endef
   833 
   907 
   834 # No point at all in generating listing targetsif we aren't going to make them
   908 # No point at all in generating listing targetsif we aren't going to make them
   850 
   924 
   851 define e32freeze
   925 define e32freeze
   852 
   926 
   853 FREEZE:: $(1)
   927 FREEZE:: $(1)
   854 	$(call startrule,freeze,,$(RESOLVED_DEFFILE)) \
   928 	$(call startrule,freeze,,$(RESOLVED_DEFFILE)) \
   855 	$(EFREEZE) $(EFREEZE_REMOVE_OPTION) "$(RESOLVED_DEFFILE)" $(FIVESPACES) $(GENERATED_DEFFILE) \
   929 	$(EFREEZE) $(EFREEZE_REMOVE_OPTION) "$(RESOLVED_DEFFILE)" $(FIVESPACES) $(call dblquote,$(GENERATED_DEFFILE)) \
   856 	$(call endrule,freeze)
   930 	$(call endrule,freeze)
   857 endef
   931 endef
   858 
   932 
   859 # DEFFILE should only be generated for target types that have a def file
   933 # Only freeze once - udeb and urel cannot differ
   860 ifeq ($(MAKEDEFFILE),1)
       
   861 # Eval freeze only once - no point making the DEFFILE for urel *and* udeb.
       
   862 ifeq ($($(FREEZEGUARD)),)
   934 ifeq ($($(FREEZEGUARD)),)
   863 $(eval $(call e32freeze,$(E32TARGET)))
   935   # For most freezing activity we need the temporary .def file generated in the final post-link
   864 $(FREEZEGUARD):=1
   936   # that lists the current exports - FREEZE can therefore be dependent on the final post-linked binary,
   865 endif
   937   # with the side-effect that a build is triggered if someone tries to freeze without having built.
       
   938   #
       
   939   # However, there's one case where we don't want to be dependent on the post-linked binary in this way,
       
   940   # and that's when (a) there are missing exports, (b) the user's aware of them and (c) they're deliberately freezing to
       
   941   # remove them using EFREEZE's remove option.  Being dependent on the post-linked binary in this case, where ELF2E32
       
   942   # actually fails to generate a final binary, would mean that the freeze would never happen and post-linking would
       
   943   # just be continually re-attempted (to fail each time).
       
   944   #
       
   945   # So, as a special case, if the user is explicitly attempting to freeze and perform removals, we make FREEZE dependent
       
   946   # on the temporary .def file instead.  This has no rule to actually make it, but gives a hint as to what is wrong if
       
   947   # the users performs a freeze with remove without having explicitly built previously.
       
   948   #
       
   949   ifneq ($(EFREEZE_REMOVE_OPTION),)
       
   950     $(eval $(call e32freeze,$(GENERATED_DEFFILE)))
       
   951   else
       
   952     $(eval $(call e32freeze,$(E32TARGET)))
       
   953   endif
       
   954   $(FREEZEGUARD):=1
   866 endif
   955 endif
   867 
   956 
   868 endif
   957 endif
   869 
   958 
   870 CLEANTARGETS:=$(CLEANTARGETS) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT),$(CPPFILES_LINKOBJECTS) $(CFILES_LINKOBJECTS))
   959 CLEANTARGETS:=$(CLEANTARGETS) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT),$(CPPFILES_LINKOBJECTS) $(CFILES_LINKOBJECTS))
   910 $(eval e32abiv2_PREFILE_OPTIONS:= $(LICENSERETRY_OPTION) $(PREPROCESSOR_OPTION) $(CPP_OPTION) \
   999 $(eval e32abiv2_PREFILE_OPTIONS:= $(LICENSERETRY_OPTION) $(PREPROCESSOR_OPTION) $(CPP_OPTION) \
   911        $(SYMBIAN_CCFLAGS) $(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS) $(CIADEFS)) $(CPP_LANG_OPTION) \
  1000        $(SYMBIAN_CCFLAGS) $(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS) $(CIADEFS)) $(CPP_LANG_OPTION) \
   912        $(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$$(call concat, $(PREINCLUDE_OPTION) ,$$(call dblquote,$(PREINCLUDE))) \
  1001        $(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$$(call concat, $(PREINCLUDE_OPTION) ,$$(call dblquote,$(PREINCLUDE))) \
   913        $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(USERINCLUDE))) \
  1002        $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(USERINCLUDE))) \
   914        $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(SYSTEMINCLUDE))) \
  1003        $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(SYSTEMINCLUDE))) \
   915        $(if $(ARMINC),$(if $(RVCTINC), $(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquoteitem,$(RVCTINC)),),) )
  1004        $(if $(ARMINC),$(if $(RVCTINC), $(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquote,$(RVCTINC)),),) )
   916 
  1005 
   917 
  1006 
   918 $(e32abiv2_PREFILE): $1 $(PROJECT_META) $(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT)
  1007 $(e32abiv2_PREFILE): $1 $(PROJECT_META) $(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT)
   919 	$(call startrule,cia2cpp,,$1) \
  1008 	$(call startrule,cia2cpp,,$1) \
   920 	$(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \
  1009 	$(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \
   921 	$(CC) $(e32abiv2_PREFILE_OPTIONS) $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) && \
  1010 	$(CC) $(e32abiv2_PREFILE_OPTIONS) $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) \
   922 	$(CC) -M $(e32abiv2_PREFILE_OPTIONS) --depend_format=unix \
  1011 	$(if $(NO_DEPEND_GENERATE),,&& $(CC) -M $(e32abiv2_PREFILE_OPTIONS) --depend_format=unix $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) > $(call dblquote,$(e32abiv2_PREFILE).d)) \
   923 	  $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) > $(call dblquote,$(e32abiv2_PREFILE).d) \
       
   924 	$(call endrule,cia2cpp)
  1012 	$(call endrule,cia2cpp)
   925 
  1013 
   926 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
  1014 ifeq ($(NO_DEPEND_GENERATE),)
   927 ifneq "$(DEPENDFILE)" ""
  1015   CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
   928 ifeq ($(NO_DEPEND_INCLUDE),)
  1016 endif
   929   ifeq "$(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS)))" ""
  1017 
   930     -include $(DEPENDFILE)
  1018 ifneq ($(DEPENDFILE),)
   931   endif
  1019   ifeq ($(NO_DEPEND_INCLUDE),)
   932 endif
  1020     ifeq ($(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS))),)
       
  1021       -include $(DEPENDFILE)
       
  1022     endif
       
  1023   endif
   933 endif
  1024 endif
   934 
  1025 
   935 endef
  1026 endef
   936 
  1027 
   937 # Create a rule for each cia file
  1028 # Create a rule for each cia file
   958 
  1049 
   959 $(1): $(2) $(PROJECT_META) $(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT)
  1050 $(1): $(2) $(PROJECT_META) $(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT)
   960 	$(call startrule,asmcompile,,$(2)) \
  1051 	$(call startrule,asmcompile,,$(2)) \
   961 		$(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \
  1052 		$(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \
   962 		$(CC) $(e32abiv2_asm_OPTIONS) \
  1053 		$(CC) $(e32abiv2_asm_OPTIONS) \
   963 		$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME)) \
  1054 		$(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME))) \
   964 	 	$$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ \
  1055 	 	$$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ \
   965 	$(call endrule,asmcompile)
  1056 	$(call endrule,asmcompile)
       
  1057 ifeq ($(NO_DEPEND_GENERATE),)
   966 	$(call startrule,asmdependencies) \
  1058 	$(call startrule,asmdependencies) \
   967 		$(CC) -M $(subst --no_rtti,,$(e32abiv2_asm_OPTIONS)) --depend_format=unix \
  1059 		$(CC) -M $(subst --no_rtti,,$(e32abiv2_asm_OPTIONS)) --depend_format=unix \
   968 	  	$(OUTPUT_OPTION) $$@ $$(call dblquote,$2) > $(call dblquote,$(DEPENDFILENAME)) \
  1060 	  	$(OUTPUT_OPTION) $$@ $$(call dblquote,$2) > $(call dblquote,$(DEPENDFILENAME)) \
   969 	$(call endrule,asmdependencies)
  1061 	$(call endrule,asmdependencies)
   970 
  1062 endif
   971 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
  1063 
   972 ifneq "$(DEPENDFILE)" ""
  1064 ifeq ($(NO_DEPEND_GENERATE),)
   973 ifeq ($(NO_DEPEND_INCLUDE),)
  1065   CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
   974   ifeq "$(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS)))" ""
  1066 endif
   975     -include $(DEPENDFILE)
  1067 
   976   endif
  1068 ifneq ($(DEPENDFILE),)
   977 endif
  1069   ifeq ($(NO_DEPEND_INCLUDE),)
       
  1070     ifeq ($(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS))),)
       
  1071       -include $(DEPENDFILE)
       
  1072     endif
       
  1073   endif
   978 endif
  1074 endif
   979 
  1075 
   980 CREATABLEPATHS:=$$(CREATABLEPATHS) $(INTERMEDIATEPATH)
  1076 CREATABLEPATHS:=$$(CREATABLEPATHS) $(INTERMEDIATEPATH)
   981 
  1077 
   982 endef
  1078 endef
  1114 
  1210 
  1115     # Keep track of variant type while romfile is being created
  1211     # Keep track of variant type while romfile is being created
  1116     PREVIOUSVARIANTTYPE:=$(VARIANTTYPE)
  1212     PREVIOUSVARIANTTYPE:=$(VARIANTTYPE)
  1117 
  1213 
  1118     WHATRELEASE:=$(WHATRELEASE) $(ROMFILENAME)
  1214     WHATRELEASE:=$(WHATRELEASE) $(ROMFILENAME)
  1119     CLEANTARGETS:=$(CLEANTARGETS) $(ROMFILENAME)
       
  1120 endif
  1215 endif
  1121 
  1216 
  1122 # Deal with test code batch files generation.
  1217 # Deal with test code batch files generation.
  1123 ifneq ($(TESTPATH),)
  1218 ifneq ($(TESTPATH),)
  1124 
  1219 
  1125     CREATABLEPATHS:=$(CREATABLEPATHS) $(EPOCROOT)/epoc32/data/z/test/
  1220     CREATABLEPATHS:=$(CREATABLEPATHS) $(EPOCROOT)/epoc32/data/z/test/
  1126     $(eval $(call MakeTestBatchFiles,$(TARGET),$(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)))
  1221     $(eval $(call MakeTestBatchFiles,$(TARGET),$(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)))
  1127     BATCHFILE_CREATED_$(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH):=1
  1222     BATCHFILE_CREATED_$(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH):=1
  1128     TARGET_CREATED_$(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)_$(TARGET):=1
  1223     TARGET_CREATED_$(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)_$(TARGET):=1
  1129     WHATRELEASE:=$(WHATRELEASE) $(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)
  1224     WHATRELEASE:=$(WHATRELEASE) $(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)
  1130     CLEANTARGETS:=$(CLEANTARGETS) $(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)
       
  1131 endif
  1225 endif
  1132 
  1226 
  1133 ###################### End of Build ROMFILE target ######################
  1227 ###################### End of Build ROMFILE target ######################
  1134 
  1228 
  1135 # Feature Variation requires a .vmap file to be created for each binary
  1229 # Feature Variation requires a .vmap file to be created for each binary
  1165 
  1259 
  1166 # make the output directories while reading makefile - some build engines prefer this
  1260 # make the output directories while reading makefile - some build engines prefer this
  1167 $(call makepath,$(CREATABLEPATHS))
  1261 $(call makepath,$(CREATABLEPATHS))
  1168 
  1262 
  1169 ## Clean up
  1263 ## Clean up
  1170 $(eval $(call GenerateStandardCleanTarget,$(CLEANTARGETS) ,$(CREATABLEPATHS),))
  1264 $(call raptor_clean,$(CLEANTARGETS))
  1171 
  1265 
  1172 # For the abld -what target
  1266 # For the --what option and the log file
  1173 $(eval $(call whatmacro,$(filter-out %.sym,$(WHATRELEASE)),WHATARMV5))
  1267 $(call raptor_release,$(filter-out %.sym,$(WHATRELEASE)))
  1174 
  1268 
  1175 endif # FEATUREVARIANTNAME=="" or FEATUREVARIANT==1
  1269 endif # DOBUILD
  1176 
  1270 
  1177 ## The End
  1271 ## The End
  1178 
  1272