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 # ARMFPU |
|
24 # BYTEPAIRCOMPRESSTARGET |
|
25 # CAPABILITY |
|
26 # COMPRESSTARGET Not directly referenced, at least with the current approach to compression keywords |
|
27 # DEBUGGABLE Can be "udeb" or "urel" or "udeb urel" or "" |
|
28 # E32TARGET |
|
29 # EPOCALLOWDLLDATA |
|
30 # EPOCFIXEDPROCESS |
|
31 # EPOCHEAPSIZEMAX |
|
32 # EPOCHEAPSIZEMIN |
|
33 # EPOCPROCESSPRIORITY |
|
34 # EPOCSTACKSIZE |
|
35 # EXPORTUNFROZEN |
|
36 # INFLATECOMPRESSTARGET |
|
37 # NOCOMPRESSTARGET |
|
38 # POSTLINKTARGETTYPE |
|
39 # SID |
|
40 # SMPSAFE |
|
41 # UID2 |
|
42 # UID3 |
|
43 # VERSION |
|
44 # VENDORID |
|
45 # |
|
46 # Other |
|
47 # |
|
48 # ARMLIBS |
|
49 # AUTOEXPORTS Symbols that must be assumed to exist for this TARGETTYPE in the format: export,ordinal;export,ordinal;.. |
|
50 # CANIGNORENONCALLABLE If the TARGETTYPE allows it, disregard non-callable exports (v-tables, type information, etc.) |
|
51 # CANHAVEEXPORTS |
|
52 # CLEANTARGETS |
|
53 # ELF2E32 |
|
54 # EPOCDATALINKADDRESS Redundant? |
|
55 # EPOCROOT |
|
56 # EXPTARGET |
|
57 # GENERATED_DEFFILE |
|
58 # GENERATED_DSO |
|
59 # HAVE_ORDERONLY |
|
60 # IMPORTLIBRARYREQUIRED |
|
61 # INTERMEDIATEPATH |
|
62 # LINKASVERSIONED |
|
63 # LINK_TARGET Postlinker elf input |
|
64 # NAMEDSYMLKUP |
|
65 # PAGEDCODE_OPTION |
|
66 # POSTLINKDEFFILE |
|
67 # POSTLINKER_COMPRESSION_DEFAULT Default compression when either COMPRESSTARGET or no compression .mmp keyword is used |
|
68 # POSTLINKER_FPU_DEFAULT |
|
69 # POSTLINKER_SUPPORTS_WDP |
|
70 # RUNTIME_LIBS_PATH |
|
71 # SAVESPACE |
|
72 # STATIC_LIBS_PATH |
|
73 # UID1 |
|
74 # VARIANTTYPE |
|
75 |
|
76 |
|
77 # Capabilities |
|
78 ADDED_CAPABILITIES:=$(subst $(CHAR_SPACE),+,$(filter-out -%,$(CAPABILITY))) |
|
79 SUBTRACTED_CAPABILITIES:=$(subst $(CHAR_SPACE),,$(filter -%,$(CAPABILITY))) |
|
80 FINAL_CAPABILITIES:=$(if $(ADDED_CAPABILITIES),$(ADDED_CAPABILITIES)$(SUBTRACTED_CAPABILITIES),NONE) |
|
81 |
|
82 # Paging options for the old postlinker |
|
83 POSTLINKER_PAGEDOPTION:=--defaultpaged |
|
84 ifeq ($(PAGED),1) |
|
85 POSTLINKER_PAGEDOPTION:=--paged |
|
86 endif |
|
87 ifeq ($(PAGED),0) |
|
88 POSTLINKER_PAGEDOPTION:=--unpaged |
|
89 endif |
|
90 |
|
91 # Postlink target |
|
92 define e32postlink |
|
93 $(E32TARGET): $(LINK_TARGET) $(POSTLINKDEFFILE) $(ELF2E32) $(if $(HAVE_ORDERONLY),|,) $(EPOCROOT)/epoc32/build/TEM_LIB |
|
94 $(call startrule,postlink) \ |
|
95 $(ELF2E32) \ |
|
96 --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0)) \ |
|
97 --version=$(VERSION) \ |
|
98 --capability=$(FINAL_CAPABILITIES) \ |
|
99 --linkas=$(call dblquote,$(LINKASVERSIONED)) \ |
|
100 --fpu=$(if $(ARMFPU),$(ARMFPU),$(POSTLINKER_FPU_DEFAULT)) \ |
|
101 --targettype=$(POSTLINKTARGETTYPE) \ |
|
102 --output=$$(call dblquote,$$@) \ |
|
103 --elfinput=$(call dblquote,$(LINK_TARGET)) \ |
|
104 $(if $(UID1),--uid1=0x$(UID1),) \ |
|
105 $(if $(UID2),--uid2=0x$(UID2),) \ |
|
106 $(if $(UID3),--uid3=0x$(UID3),) \ |
|
107 $(if $(VENDORID),--vid=0x$(VENDORID),) \ |
|
108 $(if $(EXPTARGET),--customdlltarget,) \ |
|
109 $(if $(ARMLIBS),--excludeunwantedexports,) \ |
|
110 $(if $(EPOCALLOWDLLDATA),--dlldata,) \ |
|
111 $(if $(EPOCPROCESSPRIORITY),--priority=$(EPOCPROCESSPRIORITY),) \ |
|
112 $(if $(EPOCSTACKSIZE),--stack=0x$(EPOCSTACKSIZE),) \ |
|
113 $(if $(EPOCHEAPSIZEMIN),--heap=0x$(EPOCHEAPSIZEMIN)$(CHAR_COMMA)0x$(EPOCHEAPSIZEMAX),) \ |
|
114 $(if $(EPOCFIXEDPROCESS),--fixedaddress,) \ |
|
115 $(if $(EPOCDATALINKADDRESS),--datalinkaddress=$(EPOCDATALINKADDRESS),) \ |
|
116 $(if $(NAMEDSYMLKUP),--namedlookup,) \ |
|
117 $(if $(SMPSAFE),--smpsafe,) \ |
|
118 $(if $(POSTLINKDEFFILE),--definput=$(POSTLINKDEFFILE),) \ |
|
119 $(if $(EXPORTUNFROZEN),--unfrozen,) \ |
|
120 $(if $(AUTOEXPORTS),--sysdef=$(call dblquote,$(AUTOEXPORTS)),) \ |
|
121 $(if $(CANIGNORENONCALLABLE), \ |
|
122 $(if $(IMPORTLIBRARYREQUIRED),,--ignorenoncallable),) \ |
|
123 $(if $(CANHAVEEXPORTS), --defoutput=$(call dblquote,$(GENERATED_DEFFILE)) --dso=$(GENERATED_DSO)) \ |
|
124 $(if $(filter $(VARIANTTYPE),$(DEBUGGABLE)),--debuggable,) \ |
|
125 $(if $(POSTLINKER_SUPPORTS_WDP), \ |
|
126 --codepaging=$(PAGEDCODE_OPTION) --datapaging=$(PAGEDDATA_OPTION), \ |
|
127 $(POSTLINKER_PAGEDOPTION)) \ |
|
128 $(if $(NOCOMPRESSTARGET),--uncompressed, \ |
|
129 $(if $(INFLATECOMPRESSTARGET),--compressionmethod=inflate, \ |
|
130 $(if $(BYTEPAIRCOMPRESSTARGET),--compressionmethod=bytepair, \ |
|
131 --compressionmethod=$(POSTLINKER_COMPRESSION_DEFAULT)))) \ |
|
132 --libpath="$(call concat,$(PATHSEP)$(CHAR_SEMIC),$(strip $(RUNTIME_LIBS_PATH) $(STATIC_LIBS_PATH)))" \ |
|
133 $(if $(SAVESPACE),$(if $(EXPORTUNFROZEN),,&& { $(GNURM) -rf $(INTERMEDIATEPATH); true; })) \ |
|
134 $(call endrule,postlink) |
|
135 endef |
|
136 $(eval $(e32postlink)) |
|
137 |
|
138 CLEANTARGETS:=$(CLEANTARGETS) $(E32TARGET) |
|
139 CLEANTARGETS:=$(CLEANTARGETS) $(GENERATED_DEFFILE) |
|
140 CLEANTARGETS:=$(CLEANTARGETS) $(GENERATED_DSO) |
|