--- a/sbsv2/raptor/lib/flm/e32abiv2.flm Fri Dec 04 17:06:01 2009 +0000
+++ b/sbsv2/raptor/lib/flm/e32abiv2.flm Tue Dec 08 16:03:30 2009 +0000
@@ -384,7 +384,26 @@
# Generating the import library is enough if TARGETTYPE=implib #############
ifneq ($(DOPOSTLINK),)
-include $(FLMHOME)/e32postlink.mk
+# include $(FLMHOME)/e32postlink.mk
+
+# Capabilities
+ADDED_CAPABILITIES:=$(subst $(CHAR_SPACE),+,$(filter-out -%,$(CAPABILITY)))
+SUBTRACTED_CAPABILITIES:=$(subst $(CHAR_SPACE),,$(filter -%,$(CAPABILITY)))
+FINAL_CAPABILITIES:=$(if $(ADDED_CAPABILITIES),$(ADDED_CAPABILITIES)$(SUBTRACTED_CAPABILITIES),NONE)
+
+# Paging options for the old postlinker
+POSTLINKER_PAGEDOPTION:=--defaultpaged
+ifeq ($(PAGED),1)
+ POSTLINKER_PAGEDOPTION:=--paged
+endif
+ifeq ($(PAGED),0)
+ POSTLINKER_PAGEDOPTION:--unpaged
+endif
+
+CLEANTARGETS:=$(CLEANTARGETS) $(E32TARGET)
+CLEANTARGETS:=$(CLEANTARGETS) $(GENERATED_DEFFILE)
+CLEANTARGETS:=$(CLEANTARGETS) $(GENERATED_DSO)
+
endif # ifneq ($(DOPOSTLINK),)
ifneq ($(TARGETTYPE),implib)
@@ -592,10 +611,11 @@
# outside the relevant tags but it is also unavoidable.
define linktarget_func
## The actual link target, dependencies and build step
-$(LINK_TARGET): $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS),$(LINKOBJECTS)) $(escaped_e32abiv2_LIBS) $(LINKER_ENTRYPOINT_LIBDEP) $(if $(SUPPORTS_STDCPP_NEWLIB),$(CHECKLIB)) $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACKFILE),)
+$(info LINK OBJECTS are $(LINKOBJECTS))
+$(E32TARGET): $(POSTLINKDEFFILE) $(ELF2E32) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS),$(LINKOBJECTS)) $(escaped_e32abiv2_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,link) \
+ $(call startrule,linknpostlink) \
$(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \
$(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)) \
@@ -605,17 +625,56 @@
$(LINKER_ARCH_OPTION) \
$(SYMVER_OPTION) $(SO_NAME_OPTION)=$(call dblquote,$(LINKASVERSIONED)) \
$(LINKER_ENTRYPOINT_SETTING) \
- -o $$(call dblquote,$$@) \
+ -o $$(call dblquote,$(LINK_TARGET)) \
$(if $(LTCG),$(LTCG_OPTION),) \
$(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION)=$(call dblquote,$(MAPFILE)) \
$(LINKEROPTION) \
$(if $(MULTIFILE_ENABLED),$(call dblquote,$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS)),$(COMMANDFILE_OPTION)$(call dblquote,$(VIAFILE))) \
- $(if $(GENERATELINKERFEEDBACK),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \
+ $(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),)) \
- $(quoted_e32abiv2_LIBS) $(LINKER_DEFAULT_LIBS)\
- $(call endrule,link)
+ $(quoted_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=$(if $(ARMFPU),$(ARMFPU),$(POSTLINKER_FPU_DEFAULT)) \
+ --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)))" \
+ $(if $(SAVESPACE),$(if $(EXPORTUNFROZEN),,&& { $(GNURM) -rf $(INTERMEDIATEPATH); true; })) \
+ $(call endrule,linknpostlink)
-$(MAPFILE): $(LINK_TARGET)
+$(MAPFILE): $(E32TARGET)
endef
$(eval $(linktarget_func))