sbsv2/raptor/lib/flm/e32postlink.mk
changeset 616 24e4ef208cca
parent 613 839712f5a78c
child 617 3a747a240983
equal deleted inserted replaced
613:839712f5a78c 616:24e4ef208cca
     1 #
       
     2 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 # All rights reserved.
       
     4 # This component and the accompanying materials are made available
       
     5 # under the terms of the License "Eclipse Public License v1.0"
       
     6 # which accompanies this distribution, and is available
       
     7 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 #
       
     9 # Initial Contributors:
       
    10 # Nokia Corporation - initial contribution.
       
    11 #
       
    12 # Contributors:
       
    13 #
       
    14 # Description: 
       
    15 # ARMv5 e32 postlinking FLM
       
    16 # Knows how to postlink all possible ABIV2 executables for ARM
       
    17 #
       
    18 
       
    19 # Interface
       
    20 #
       
    21 #  Metadata supplied (or deduced from)
       
    22 #
       
    23 #   BYTEPAIRCOMPRESS
       
    24 #   CAPABILITY
       
    25 #   DEBUGGABLE                     Can be "udeb" or "urel" or "udeb urel" or ""
       
    26 #   E32TARGET
       
    27 #   EPOCALLOWDLLDATA
       
    28 #   EPOCFIXEDPROCESS
       
    29 #   EPOCHEAPSIZEMAX
       
    30 #   EPOCHEAPSIZEMIN
       
    31 #   EPOCPROCESSPRIORITY
       
    32 #   EPOCSTACKSIZE
       
    33 #   EXPORTUNFROZEN
       
    34 #   INFLATECOMPRESS
       
    35 #   POSTLINKFPU
       
    36 #   POSTLINKTARGETTYPE
       
    37 #   SID
       
    38 #   SMPSAFE
       
    39 #   UID2
       
    40 #   UID3
       
    41 #   VERSION
       
    42 #   VENDORID
       
    43 #
       
    44 #  Other
       
    45 #
       
    46 #   ARMLIBS
       
    47 #   AUTOEXPORTS                    Symbols that must be assumed to exist for this TARGETTYPE in the format: export,ordinal;export,ordinal;..
       
    48 #   CANIGNORENONCALLABLE           If the TARGETTYPE allows it, disregard non-callable exports (v-tables, type information, etc.)
       
    49 #   CANHAVEEXPORTS
       
    50 #   CLEANTARGETS
       
    51 #   ELF2E32
       
    52 #   EPOCDATALINKADDRESS            Redundant?
       
    53 #   EPOCROOT
       
    54 #   EXPTARGET
       
    55 #   GENERATED_DEFFILE
       
    56 #   GENERATED_DSO
       
    57 #   HAVE_ORDERONLY
       
    58 #   IMPORTLIBRARYREQUIRED
       
    59 #   INTERMEDIATEPATH
       
    60 #   LINKASVERSIONED
       
    61 #   LINK_TARGET                    Postlinker elf input
       
    62 #   NAMEDSYMLKUP
       
    63 #   PAGEDCODE_OPTION
       
    64 #   POSTLINKDEFFILE
       
    65 #   POSTLINKER_SUPPORTS_WDP
       
    66 #   RUNTIME_LIBS_PATH
       
    67 #   SAVESPACE
       
    68 #   STATIC_LIBS_PATH
       
    69 #   UID1
       
    70 #   VARIANTTYPE
       
    71 
       
    72 
       
    73 # Capabilities
       
    74 ADDED_CAPABILITIES:=$(subst $(CHAR_SPACE),+,$(filter-out -%,$(CAPABILITY)))
       
    75 SUBTRACTED_CAPABILITIES:=$(subst $(CHAR_SPACE),,$(filter -%,$(CAPABILITY)))
       
    76 FINAL_CAPABILITIES:=$(if $(ADDED_CAPABILITIES),$(ADDED_CAPABILITIES)$(SUBTRACTED_CAPABILITIES),NONE)
       
    77 
       
    78 # Paging options for the old postlinker
       
    79 POSTLINKER_PAGEDOPTION:=--defaultpaged
       
    80 ifeq ($(PAGED),1)
       
    81   POSTLINKER_PAGEDOPTION:=--paged
       
    82 endif
       
    83 ifeq ($(PAGED),0)
       
    84   POSTLINKER_PAGEDOPTION:--unpaged
       
    85 endif
       
    86 
       
    87 # Postlink target
       
    88 define e32postlink
       
    89 $(E32TARGET): $(LINK_TARGET) $(POSTLINKDEFFILE) $(ELF2E32) $(if $(HAVE_ORDERONLY),|,) $(EPOCROOT)/epoc32/build/TEM_LIB
       
    90 	$(call startrule,postlink) \
       
    91 	$(ELF2E32) \
       
    92 	  --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0)) \
       
    93 	  --version=$(VERSION) \
       
    94 	  --capability=$(FINAL_CAPABILITIES) \
       
    95 	  --linkas=$(call dblquote,$(LINKASVERSIONED)) \
       
    96 	  --fpu=$(POSTLINKFPU) \
       
    97 	  --targettype=$(POSTLINKTARGETTYPE) \
       
    98 	  --output=$$(call dblquote,$$@) \
       
    99 	  --elfinput=$(call dblquote,$(LINK_TARGET)) \
       
   100 	  $(if $(UID1),--uid1=0x$(UID1),) \
       
   101 	  $(if $(UID2),--uid2=0x$(UID2),) \
       
   102 	  $(if $(UID3),--uid3=0x$(UID3),) \
       
   103 	  $(if $(VENDORID),--vid=0x$(VENDORID),) \
       
   104 	  $(if $(EXPTARGET),--customdlltarget,) \
       
   105 	  $(if $(ARMLIBS),--excludeunwantedexports,) \
       
   106 	  $(if $(EPOCALLOWDLLDATA),--dlldata,) \
       
   107 	  $(if $(EPOCPROCESSPRIORITY),--priority=$(EPOCPROCESSPRIORITY),) \
       
   108 	  $(if $(EPOCSTACKSIZE),--stack=0x$(EPOCSTACKSIZE),) \
       
   109 	  $(if $(EPOCHEAPSIZEMIN),--heap=0x$(EPOCHEAPSIZEMIN)$(CHAR_COMMA)0x$(EPOCHEAPSIZEMAX),) \
       
   110 	  $(if $(EPOCFIXEDPROCESS),--fixedaddress,) \
       
   111 	  $(if $(EPOCDATALINKADDRESS),--datalinkaddress=$(EPOCDATALINKADDRESS),) \
       
   112 	  $(if $(NAMEDSYMLKUP),--namedlookup,) \
       
   113 	  $(if $(SMPSAFE),--smpsafe,) \
       
   114 	  $(if $(POSTLINKDEFFILE),--definput=$(POSTLINKDEFFILE),) \
       
   115 	  $(if $(EXPORTUNFROZEN),--unfrozen,) \
       
   116 	  $(if $(AUTOEXPORTS),--sysdef=$(call dblquote,$(AUTOEXPORTS)),) \
       
   117 	  $(if $(CANIGNORENONCALLABLE), \
       
   118 	    $(if $(IMPORTLIBRARYREQUIRED),,--ignorenoncallable),) \
       
   119 	  $(if $(CANHAVEEXPORTS), --defoutput="$(GENERATED_DEFFILE)" --dso=$(GENERATED_DSO)) \
       
   120 	  $(if $(filter $(VARIANTTYPE),$(DEBUGGABLE)),--debuggable,) \
       
   121 	  $(if $(POSTLINKER_SUPPORTS_WDP), \
       
   122 	    --codepaging=$(PAGEDCODE_OPTION) --datapaging=$(PAGEDDATA_OPTION), \
       
   123 	    $(POSTLINKER_PAGEDOPTION)) \
       
   124 	  $(if $(NOCOMPRESSTARGET), \
       
   125 	    --uncompressed, \
       
   126 	    $(if $(INFLATECOMPRESS),--compressionmethod inflate,$(if $(BYTEPAIRCOMPRESS),--compressionmethod bytepair,))) \
       
   127 	  --libpath="$(call concat,$(PATHSEP)$(CHAR_SEMIC),$(strip $(RUNTIME_LIBS_PATH) $(STATIC_LIBS_PATH)))" \
       
   128 	  $(if $(SAVESPACE),$(if $(EXPORTUNFROZEN),,;$(GNURM) -rf $(INTERMEDIATEPATH); true)) \
       
   129 	$(call endrule,postlink)
       
   130 endef
       
   131 $(eval $(e32postlink))
       
   132 
       
   133 CLEANTARGETS:=$(CLEANTARGETS) $(E32TARGET)
       
   134 CLEANTARGETS:=$(CLEANTARGETS) $(GENERATED_DEFFILE)
       
   135 CLEANTARGETS:=$(CLEANTARGETS) $(GENERATED_DSO)