diff -r f70b728ea30c -r a1925fb7753a sbsv2/raptor/lib/flm/e32abiv2.flm --- a/sbsv2/raptor/lib/flm/e32abiv2.flm Wed Jul 28 13:20:46 2010 +0100 +++ b/sbsv2/raptor/lib/flm/e32abiv2.flm Thu Aug 12 09:00:16 2010 +0100 @@ -11,7 +11,7 @@ # Contributors: # # Description: -# ARMv5 EXE/DLL ABIv2 Function Like Makefile (FLM) +# E32 EXE/DLL ABIv2 Function Like Makefile (FLM) # Knows how to build all possible ABIV2 executables for ARM # # @@ -80,9 +80,13 @@ IMPORTLIBPATH:=$(RUNTIME_LIBS_PATH) # LOCALLY USED VARIABLES +ADDITIONAL_LIBS:= CLEANTARGETS:= WHATRELEASE:= +LIBRARIES:=$(patsubst %.dso,%.$(IMPLIB_EXTENSION),$(LIBRARY)) +LIBRARIES_DEBUG:=$(patsubst %.dso,%.$(IMPLIB_EXTENSION),$(LIBRARY_DEBUG)) + # Work out which new/delete library to use for binaries. CHECKLIB_TYPE:=symc++ STDCPPTAGFILE:= @@ -164,12 +168,12 @@ IMPORTLIBTARGET_DSO:= IMPORTLIBTARGETVERSIONED_DSO:= - BUILDMARKER_IMPORTLIBTARGET_DSO:=TARGET_$(subst :,,$(VER_E32IMPORTLIBBASE)).dso - WHATRELEASE:=$(WHATRELEASE) $(if $(EXPLICITVERSION),,$(TMP_IMPORTLIBTARGET_ROOT).dso) - WHATRELEASE:=$(WHATRELEASE) $(VER_E32IMPORTLIBBASE).dso + BUILDMARKER_IMPORTLIBTARGET_DSO:=TARGET_$(subst :,,$(VER_E32IMPORTLIBBASE)).$(IMPLIB_EXTENSION) + WHATRELEASE:=$(WHATRELEASE) $(if $(EXPLICITVERSION),,$(TMP_IMPORTLIBTARGET_ROOT).$(IMPLIB_EXTENSION)) + WHATRELEASE:=$(WHATRELEASE) $(VER_E32IMPORTLIBBASE).$(IMPLIB_EXTENSION) ifeq ($($(BUILDMARKER_IMPORTLIBTARGET_DSO)),) - IMPORTLIBTARGET_DSO:=$(TMP_IMPORTLIBTARGET_ROOT).dso - IMPORTLIBTARGETVERSIONED_DSO:=$(VER_E32IMPORTLIBBASE).dso + IMPORTLIBTARGET_DSO:=$(TMP_IMPORTLIBTARGET_ROOT).$(IMPLIB_EXTENSION) + IMPORTLIBTARGETVERSIONED_DSO:=$(VER_E32IMPORTLIBBASE).$(IMPLIB_EXTENSION) endif # ABIv1 .lib (for specific kits and toolchains only) @@ -247,12 +251,16 @@ else DSODEFFILENAMEBASE:=$(TARGET){$(VERSIONHEX)} endif -GENERATED_DSO:=$(call dblquote,$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).dso) +GENERATED_DSO:=$(call dblquote,$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).$(IMPLIB_EXTENSION)) GENERATED_DEFFILE:=$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).def ## IMPORT LIBRARY ########################################################### # Static libraries will be postlinked when they are used so don't try to postlink them +ifeq ($(e32importlib_mk),) + e32importlib_mk:=1 + include $(FLMHOME)/e32importlib.mk +endif ifneq ($(IMPORTLIBRARYREQUIRED),) ifneq ($(or $(DEFFILE),$(EXPORTUNFROZEN)),) @@ -263,13 +271,7 @@ ifeq ($(EXPORTUNFROZEN),) PREPPEDDEFFILE:=$(INTERMEDIATEPATH)/$(TARGET).prep CLEANTARGETS:=$(CLEANTARGETS) $(PREPPEDDEFFILE) - define importlibtarget_prepfile - $(PREPPEDDEFFILE): $(DEFFILE) - $(call startrule,importlibtarget_prepfile,FORCESUCCESS) \ - $(PREPDEF) $(call dblquote,$(DEFFILE)) $(call dblquote,$(PREPPEDDEFFILE)) \ - $(call endrule,importlibtarget_prepfile) - endef - $(eval $(importlibtarget_prepfile)) + $(eval $(importlibtarget_prepfile_$(BASE_ARCH))) endif endif @@ -299,8 +301,6 @@ endif - - ifneq ($(EXPORTUNFROZEN),) # Unfrozen - warn and create .dso as side-effect of the final postlink $(info EXPORTUNFROZEN present in $(PROJECT_META) - unfrozen exports will be represented in import library. ) define importlibtarget_unfrozen @@ -339,16 +339,7 @@ $(eval $(importlibtarget_func)) endif - define importlibtargetversioned_func - $(IMPORTLIBTARGETVERSIONED_DSO): $(ELF2E32) $(PREPPEDDEFFILE) - $(call startrule,importlibversioned,FORCESUCCESS) \ - $(ELF2E32) --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0)) --version=$(VERSION) \ - --definput="$(PREPPEDDEFFILE)" \ - --dso=$$(call dblquote,$$@) \ - --linkas=$(call dblquote,$(LINKASVERSIONED)) \ - $(call endrule,importlibversioned) - endef - $(eval $(importlibtargetversioned_func)) + $(eval $(importlibtargetversioned_$(BASE_ARCH))) endif # ifneq ($(DEFFILE),) endif # ifneq ($(EXPORTUNFROZEN),) endif # ifneq ($(IMPORTLIBTARGET_DSO),) @@ -445,11 +436,11 @@ EXPTARGETASMFILE:=$(INTERMEDIATE_PLATFORM_PATH)/$(notdir $(VER_E32IMPORTLIBBASE)).s define e32expgen_func -$(EXPTARGET): $(DEFFILE) $(ELF2E32) +$(EXPTARGET): $(DEFFILE) $(POSTLINKER) $(call startrule,expgen) \ - $(ELF2E32) \ + $(POSTLINKER) \ --definput=$$(call dblquote,$(DEFFILE)) \ - --dump=a \ + --dump=a $(if $(POSTLINKER_SUPPORTS_ASMTYPE),$(POSTLINKER_ASM_OPTION),) \ --output=$(call dblquote,$(EXPTARGETASMFILE)) && \ $(ASM) $(TARGET_ARCH_OPTION) $(AAPCS_OPTION) $(ASM_OUTPUT_OPTION) $$(call dblquote, $$@) $(EXPTARGETASMFILE) \ $(call endrule,expgen) @@ -573,12 +564,11 @@ $(call groupin10,$(LINKOBJECTS)) ;) $(call startrule,ar,FORCESUCCESS) \ $$(call dblquote,$(AR)) $(ARCHIVER_CREATE_OPTION) $$@ $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT),$(COMMANDFILE_OPTION)$(VIAFILE)) \ - $(if $(DUMPBCINFO),&& $(FROMELF) -v $$@ > $$@.elfdump,) \ $(call endrule,ar) endef $(eval $(artarget_func)) -CLEANTARGETS:=$(CLEANTARGETS) $(VIAFILE) $(if $(DUMPBCINFO),$(ARTARGET).elfdump,) +CLEANTARGETS:=$(CLEANTARGETS) $(VIAFILE) endif @@ -599,18 +589,18 @@ REDUCED_RUNTIME_LIBS_LIST:=$(subst $(TARGET).dso,,$(RUNTIME_LIBS_LIST)) ifeq ($(VARIANTTYPE),udeb) - e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) $(located_ARMLIBS) + e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES_DEBUG)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) $(located_ARMLIBS) else - e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) $(located_ARMLIBS) + e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) $(located_ARMLIBS) endif else # NORMAL # ifeq ($(VARIANTTYPE),udeb) - e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) + e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES_DEBUG)) else - e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) + e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES)) endif ifeq ($(HAS_DEDICATED_OP_NEWDEL_LIB),1) e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(NEWLIB)) @@ -621,9 +611,9 @@ else # ARM RUNTIME LIBS ifeq ($(VARIANTTYPE),udeb) - e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) $(located_ARMLIBS) + e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES_DEBUG)) $(located_ARMLIBS) else - e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) $(located_ARMLIBS) + e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES)) $(located_ARMLIBS) endif endif @@ -632,9 +622,41 @@ # commandline which would defeat the purpose of groupin10. # This is undesirable because viafile generation commands appear # outside the relevant tags but it is also unavoidable. + +ifeq ($(e32link_mk),) + e32link_mk:=1 + include $(FLMHOME)/e32link.mk +endif + +# Some configurations inject exports into the final binary by creating a .lib.exp file that is then fed to +# the linker. How this .lib.exp is generated depends on whether a .def file is listed to control the build +# or not. Either way, the .lib.exp is guarded so as to only be generated once. +ifneq ($(FIX_EXPORTS_USING_EXP_FILE),) + BUILDMARKER_EXPFILE:=$(call sanitise,EXPFILE_$(TARGET).lib.exp) + ifeq ($(DEFFILE),) + ifneq ($(AUTOEXPORTS),) + ifeq ($($(BUILDMARKER_EXPFILE)),) + $(eval $(call e32link_genlibexpfile,exports)) + $(eval $(BUILDMARKER_EXPFILE):=$(INTERMEDIATEPATH)/$(TARGET).lib.exp) + endif + endif + else + ifeq ($($(BUILDMARKER_EXPFILE)),) + $(eval $(call e32link_genlibexpfile,deffile)) + $(eval $(BUILDMARKER_EXPFILE):=$(INTERMEDIATEPATH)/$(TARGET).lib.exp) + endif + endif + ADDITIONAL_LIBS:=$($(BUILDMARKER_EXPFILE)) +endif + +ifeq ($(e32postlink_mk),) + e32postlink_mk:=1 + include $(FLMHOME)/e32postlink.mk +endif + define linktarget_func ## The actual link target, dependencies and build step -$(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 +$(E32TARGET): $(POSTLINKDEFFILE) $(POSTLINKER) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS),$(LINKOBJECTS)) $(e32abiv2_LIBS) $(ADDITIONAL_LIBS) $(LINKER_ENTRYPOINT_LIBDEP) $(if $(SUPPORTS_STDCPP_NEWLIB),$(CHECKLIB)) $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACKFILE),) $(if $(HAVE_ORDERONLY),|,) $(EPOCROOT)/epoc32/build/TEM_LIB $(if $(MULTIFILE_ENABLED),,@echo -n "" > $(VIAFILE); $(call groupin10,$(LINKOBJECTS)) ;) $(call startrule,linkandpostlink) \ @@ -642,11 +664,15 @@ $(if $(SUPPORTS_STDCPP_NEWLIB),$(if $(located_STATICLIBRARIES),$(CHECKLIB) $(CHECKLIB_TYPE) --elf $(call dblquote,$(located_STATICLIBRARIES)) &&,),) \ $(LD) $(LINKER_MISC_FLAGS) $(LINKER_DEFAULT_LIB_PATHS) $(SYMBIAN_LINK_FLAGS) $(if $(DEBUG_INFO),$(LINKER_DEBUG_OPTION),$(LINKER_NODEBUG_OPTION)) \ $(if $(ARMLIBS),$(LD_WARNINGS_SUPPRESSION_ARMLIBS),) \ - $(SHARED_OBJECT_OPTION) $(SPLIT_OPTION) \ + $(if $(findstring EXE,$(POSTLINKTARGETTYPE)),$(if $(TREAT_EXES_AS_SHARED),$(SHARED_OBJECT_OPTION),),$(SHARED_OBJECT_OPTION)) \ + $(SPLIT_OPTION) \ $(RW_BASE) \ $(LINKER_ARCH_OPTION) \ - $(SYMVER_OPTION) $(SO_NAME_OPTION)=$(call dblquote,$(LINKASVERSIONED)) \ - $(LINKER_ENTRYPOINT_SETTING) \ + $(SYMVER_OPTION) \ + $(if $(SO_NAME_OPTION),$(SO_NAME_OPTION)=$(call dblquote,$(LINKASVERSIONED)),) \ + $(LINKER_ENTRY_OPTION)=$(LINKER_ENTRYPOINT_SETTING) \ + $(if $(NEED_ENTRYPOINT_LIBRARY),$(LINKER_ENTRYPOINT_LIBDEP),) \ + $(if $(ADDITIONAL_LIBS),$(call dblquote,$(ADDITIONAL_LIBS)),) \ -o $$(call dblquote,$(LINK_TARGET)) \ $(if $(LTCG),$(LTCG_OPTION),) \ $(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION)=$(call dblquote,$(MAPFILE)) \ @@ -655,44 +681,7 @@ $(if $(GENERATELINKERFEEDBACK),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \ $(if $(LINKER_ADD_STATIC_RUNTIME),$(if $(STATIC_RUNTIME_LIB),$(LINKER_GROUP_START_OPTION) $(STATIC_RUNTIME_DIR)/$(STATIC_RUNTIME_LIB) $(LINKER_GROUP_END_OPTION),)) \ $(call dblquote,$(e32abiv2_LIBS)) $(LINKER_DEFAULT_LIBS) && \ - $(ELF2E32) \ - --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0)) \ - --version=$(VERSION) \ - --capability=$(FINAL_CAPABILITIES) \ - --linkas=$(call dblquote,$(LINKASVERSIONED)) \ - --fpu=$(POSTLINKER_FPU) \ - --targettype=$(POSTLINKTARGETTYPE) \ - --output=$$(call dblquote,$$@) \ - --elfinput=$(call dblquote,$(LINK_TARGET)) \ - $(if $(UID1),--uid1=0x$(UID1),) \ - $(if $(UID2),--uid2=0x$(UID2),) \ - $(if $(UID3),--uid3=0x$(UID3),) \ - $(if $(VENDORID),--vid=0x$(VENDORID),) \ - $(if $(EXPTARGET),--customdlltarget,) \ - $(if $(ARMLIBS),--excludeunwantedexports,) \ - $(if $(EPOCALLOWDLLDATA),--dlldata,) \ - $(if $(EPOCPROCESSPRIORITY),--priority=$(EPOCPROCESSPRIORITY),) \ - $(if $(EPOCSTACKSIZE),--stack=0x$(EPOCSTACKSIZE),) \ - $(if $(EPOCHEAPSIZEMIN),--heap=0x$(EPOCHEAPSIZEMIN)$(CHAR_COMMA)0x$(EPOCHEAPSIZEMAX),) \ - $(if $(EPOCFIXEDPROCESS),--fixedaddress,) \ - $(if $(EPOCDATALINKADDRESS),--datalinkaddress=$(EPOCDATALINKADDRESS),) \ - $(if $(NAMEDSYMLKUP),--namedlookup,) \ - $(if $(SMPSAFE),--smpsafe,) \ - $(if $(POSTLINKDEFFILE),--definput=$(POSTLINKDEFFILE),) \ - $(if $(EXPORTUNFROZEN),--unfrozen,) \ - $(if $(AUTOEXPORTS),--sysdef=$(call dblquote,$(AUTOEXPORTS)),) \ - $(if $(CANIGNORENONCALLABLE), \ - $(if $(IMPORTLIBRARYREQUIRED),,--ignorenoncallable),) \ - $(if $(CANHAVEEXPORTS), --defoutput=$(call dblquote,$(GENERATED_DEFFILE)) --dso=$(GENERATED_DSO)) \ - $(if $(filter $(VARIANTTYPE),$(DEBUGGABLE)),--debuggable,) \ - $(if $(POSTLINKER_SUPPORTS_WDP), \ - --codepaging=$(PAGEDCODE_OPTION) --datapaging=$(PAGEDDATA_OPTION), \ - $(POSTLINKER_PAGEDOPTION)) \ - $(if $(NOCOMPRESSTARGET),--uncompressed, \ - $(if $(INFLATECOMPRESSTARGET),--compressionmethod=inflate, \ - $(if $(BYTEPAIRCOMPRESSTARGET),--compressionmethod=bytepair, \ - --compressionmethod=$(POSTLINKER_COMPRESSION_DEFAULT)))) \ - --libpath="$(call concat,$(PATHSEP)$(CHAR_SEMIC),$(strip $(RUNTIME_LIBS_PATH) $(STATIC_LIBS_PATH)))" \ + $(call e32postlink_$(BASE_ARCH)) \ $(if $(SAVESPACE),$(if $(EXPORTUNFROZEN),,&& { $(GNURM) -rf $(INTERMEDIATEPATH); true; })) \ $(call endrule,linkandpostlink) @@ -735,7 +724,10 @@ include $(FLMHOME)/tracecompiler.mk WHATRELEASE:=$(WHATRELEASE) $(TRACE_DICTIONARY) $(AUTOGEN_HEADER) endif +################################################################### + +## CC_CPPONLY_ARGS:=$(SYMBIAN_CCFLAGS) $(if $(DEBUG_INFO),-g) $(DEBUG_FORMAT) \ $(RUNTIME_SYMBOL_VISIBILITY_OPTION) $(EXCEPTIONS) \ $(CC_WARNINGS_CONTROL_OPTION) $(CC_ERRORS_CONTROL_OPTION) \ @@ -958,7 +950,7 @@ # # However, there's one case where we don't want to be dependent on the post-linked binary in this way, # and that's when (a) there are missing exports, (b) the user's aware of them and (c) they're deliberately freezing to - # remove them using EFREEZE's remove option. Being dependent on the post-linked binary in this case, where ELF2E32 + # remove them using EFREEZE's remove option. Being dependent on the post-linked binary in this case, where POSTLINKER # actually fails to generate a final binary, would mean that the freeze would never happen and post-linking would # just be continually re-attempted (to fail each time). # @@ -1104,133 +1096,10 @@ ########################## Build ROMFILE target ############################ -EPOC_ROOT:=$(patsubst %/,%,$(EPOCROOT)) -TOBLDINF:=$(dir $(subst :,,$(subst $(EPOC_ROOT)/,,$(COMPONENT_META)))) # Only build ROMFILE if asked ifneq ($(filter ROMFILE,$(call uppercase,$(MAKECMDGOALS))),) - ifeq ($(ROMFILE_$(call sanitise,$(TARGET).$(REQUESTEDTARGETEXT))),) - ROMFILE_$(call sanitise,$(TARGET).$(REQUESTEDTARGETEXT)):=1 - ROMDIR:=$(EPOC_ROOT)/epoc32/rom/$(TOBLDINF) - - # Default values - ROMFILETYPE:=file - ROMFILE:=$(TARGET).$(REQUESTEDTARGETEXT) - ROMPATH:=$(if $(TARGETPATH),$(TARGETPATH)/,sys/bin/) - ROMDECORATIONS:= - ROMFILETYPE_RAM:=data - ROMFILE_RAM:=$(TARGET).$(REQUESTEDTARGETEXT) - ROMPATH_RAM:=sys/bin/ - BUILDROMTARGET:=1 - ABIDIR:=MAIN - - $(eval $(call DoRomSet)) - - ifneq ($(EPOCFIXEDPROCESS),) - ROMDECORATIONS:=$(ROMDECORATIONS) fixed - endif - ifeq ($(PAGED),1) - ROMDECORATIONS:=$(ROMDECORATIONS) paged - endif - ifeq ($(PAGED),0) - ROMDECORATIONS:=$(ROMDECORATIONS) unpaged - endif - - - DATATEXT:= - ifeq ($(TESTCODE),TRUE) - # Add 'TEST' to the .iby filename - ROMTEST:=test - ifeq ($(TEST_OPTION),BOTH) - DATATEXT:="data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).auto.bat test/$(MODULE).auto.bat"\n"data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).manual.bat test/$(MODULE).manual.bat" - else - ifneq ($(TEST_OPTION),NONE) - DATATEXT:="data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TEST_OPTION).bat test/$(MODULE).$(TEST_OPTION).bat" - endif - endif - endif - - # ROMTARGET - ifneq ($(ROMTARGET),) - ifneq ($(words $(ROMTARGET)),1) - ROMTARGETALL:=$(ROMTARGET) - ROMTARGET:=$(word 1,$(ROMTARGET)) - endif - - ifeq ($(ROMTARGET),) - BUILDROMTARGET:= - else - ifneq ($(ROMTARGET),+) - ifneq ($(notdir $(ROMTARGET)),) - ROMFILE:=$(notdir $(ROMTARGET)) - endif - ifneq ($(dir $(ROMTARGET)),./) - ROMPATH:=$(dir $(ROMTARGET)) - endif - endif - endif - endif - endif - - ROMFILENAME:=$(ROMDIR)$(PLATFORM)$(ROMTEST).iby - - # RAMTARGET - ifneq ($(RAMTARGET),) - ROMDECORATIONS_RAM:=" attrib=r" - ifneq ($(RAMTARGET),+) - ifneq ($(notdir $(RAMTARGET)),) - ROMFILE_RAM:=$(notdir $(RAMTARGET)) - endif - ifneq ($(dir $(RAMTARGET)),./) - ROMPATH_RAM:=$(dir $(RAMTARGET)) - endif - endif - endif - - define BuildRomfileTarget - $(ALLTARGET)::ROMFILE - ROMFILE:: - $(call startrule,rombuild) \ - $(GNUMKDIR) -p $(ROMDIR) \ - $(if $(ROMFILE_CREATED_$(TOBLDINF)),,&& echo -e "// $(subst $(EPOC_ROOT)/,,$(ROMFILENAME))\n//\n$(DATATEXT)" > $(ROMFILENAME)) \ - $(if $(BUILDROMTARGET),&& echo "$(ROMFILETYPE)=/epoc32/release/##$(ABIDIR)##/##BUILD##/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(REQUESTEDTARGETEXT) $(1)$(ROMDECORATIONS)" >> $(ROMFILENAME)) \ - $(if $(RAMTARGET),&& echo "$(ROMFILETYPE_RAM)=/epoc32/release/##$(ABIDIR)##/##BUILD##/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(REQUESTEDTARGETEXT) $(ROMPATH_RAM)$(ROMFILE_RAM)$(ROMDECORATIONS_RAM)" >> $(ROMFILENAME)) \ - $(call endrule,buildromfiletarget) - endef - - # When VARIANTTYPE changes, romfile is finished, - # apart from if this is a new component...... - ifneq ($(PREVIOUSVARIANTTYPE),) - ifneq ($(VARIANTTYPE),$(PREVIOUSVARIANTTYPE)) - ifneq ($(ROMFILE_CREATED_$(TOBLDINF)),) - ROMFILEFINISHED:=1 - else - ROMFILEFINISHED:= - endif - endif - endif - - # When romfile is finished, don't continue to add to it - ifeq ($(ROMFILEFINISHED),) - $(eval $(call BuildRomfileTarget,$(ROMPATH)$(ROMFILE))) - endif - - # Don't allow romfile to be recreated for every MMP - ifeq ($(ROMFILE_CREATED_$(TOBLDINF)),) - ROMFILE_CREATED_$(TOBLDINF):=1 - endif - - # Build other ROMTARGETs if there is more than one - ifneq ($(ROMTARGETALL),) - RAMTARGET:= - $(foreach ROMTARGET,$(wordlist 2,$(words $(ROMTARGETALL)),$(ROMTARGETALL)),$(eval $(call BuildRomfileTarget,$(ROMTARGET)))) - ROMTARGETALL:= - endif - - # Keep track of variant type while romfile is being created - PREVIOUSVARIANTTYPE:=$(VARIANTTYPE) - - WHATRELEASE:=$(WHATRELEASE) $(ROMFILENAME) + include $(FLMHOME)/romfile.mk endif # Deal with test code batch files generation.