245 ifneq ($(findstring .,$(TARGET)),) |
249 ifneq ($(findstring .,$(TARGET)),) |
246 DSODEFFILENAMEBASE:=$(E32SOME){$(VERSIONHEX)}.$(E32VAR2) |
250 DSODEFFILENAMEBASE:=$(E32SOME){$(VERSIONHEX)}.$(E32VAR2) |
247 else |
251 else |
248 DSODEFFILENAMEBASE:=$(TARGET){$(VERSIONHEX)} |
252 DSODEFFILENAMEBASE:=$(TARGET){$(VERSIONHEX)} |
249 endif |
253 endif |
250 GENERATED_DSO:=$(call dblquote,$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).dso) |
254 GENERATED_DSO:=$(call dblquote,$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).$(IMPLIB_EXTENSION)) |
251 GENERATED_DEFFILE:=$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).def |
255 GENERATED_DEFFILE:=$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).def |
252 |
256 |
253 ## IMPORT LIBRARY ########################################################### |
257 ## IMPORT LIBRARY ########################################################### |
254 |
258 |
255 # Static libraries will be postlinked when they are used so don't try to postlink them |
259 # Static libraries will be postlinked when they are used so don't try to postlink them |
|
260 ifeq ($(e32importlib_mk),) |
|
261 e32importlib_mk:=1 |
|
262 include $(FLMHOME)/e32importlib.mk |
|
263 endif |
256 |
264 |
257 ifneq ($(IMPORTLIBRARYREQUIRED),) |
265 ifneq ($(IMPORTLIBRARYREQUIRED),) |
258 ifneq ($(or $(DEFFILE),$(EXPORTUNFROZEN)),) |
266 ifneq ($(or $(DEFFILE),$(EXPORTUNFROZEN)),) |
259 # Both ABIv2 .dso and ABIv1 .lib import library generation require a processed .def file, |
267 # Both ABIv2 .dso and ABIv1 .lib import library generation require a processed .def file, |
260 # unless EXPORTUNFROZEN is being used |
268 # unless EXPORTUNFROZEN is being used |
261 PREPPEDDEFFILE:= |
269 PREPPEDDEFFILE:= |
262 ifneq ($(DEFFILE),) |
270 ifneq ($(DEFFILE),) |
263 ifeq ($(EXPORTUNFROZEN),) |
271 ifeq ($(EXPORTUNFROZEN),) |
264 PREPPEDDEFFILE:=$(INTERMEDIATEPATH)/$(TARGET).prep |
272 PREPPEDDEFFILE:=$(INTERMEDIATEPATH)/$(TARGET).prep |
265 CLEANTARGETS:=$(CLEANTARGETS) $(PREPPEDDEFFILE) |
273 CLEANTARGETS:=$(CLEANTARGETS) $(PREPPEDDEFFILE) |
266 define importlibtarget_prepfile |
274 $(eval $(importlibtarget_prepfile_$(BASE_ARCH))) |
267 $(PREPPEDDEFFILE): $(DEFFILE) |
|
268 $(call startrule,importlibtarget_prepfile,FORCESUCCESS) \ |
|
269 $(PREPDEF) $(call dblquote,$(DEFFILE)) $(call dblquote,$(PREPPEDDEFFILE)) \ |
|
270 $(call endrule,importlibtarget_prepfile) |
|
271 endef |
|
272 $(eval $(importlibtarget_prepfile)) |
|
273 endif |
275 endif |
274 endif |
276 endif |
275 |
277 |
276 # ABIv2 .dso |
278 # ABIv2 .dso |
277 ifneq ($(IMPORTLIBTARGET_DSO),) # check that we haven't tried to specify this target already |
279 ifneq ($(IMPORTLIBTARGET_DSO),) # check that we haven't tried to specify this target already |
597 ifneq ($(findstring $(TARGET).dso,$(RUNTIME_LIBS_LIST)),) |
587 ifneq ($(findstring $(TARGET).dso,$(RUNTIME_LIBS_LIST)),) |
598 # (almost) ARM RUNTIME LIBS |
588 # (almost) ARM RUNTIME LIBS |
599 REDUCED_RUNTIME_LIBS_LIST:=$(subst $(TARGET).dso,,$(RUNTIME_LIBS_LIST)) |
589 REDUCED_RUNTIME_LIBS_LIST:=$(subst $(TARGET).dso,,$(RUNTIME_LIBS_LIST)) |
600 |
590 |
601 ifeq ($(VARIANTTYPE),udeb) |
591 ifeq ($(VARIANTTYPE),udeb) |
602 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) $(located_ARMLIBS) |
592 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES_DEBUG)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) $(located_ARMLIBS) |
603 else |
593 else |
604 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) $(located_ARMLIBS) |
594 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES)) $(addprefix $(RUNTIME_LIBS_PATH)/,$(REDUCED_RUNTIME_LIBS_LIST)) $(located_ARMLIBS) |
605 endif |
595 endif |
606 |
596 |
607 else |
597 else |
608 # NORMAL |
598 # NORMAL |
609 # |
599 # |
610 ifeq ($(VARIANTTYPE),udeb) |
600 ifeq ($(VARIANTTYPE),udeb) |
611 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) |
601 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES_DEBUG)) |
612 else |
602 else |
613 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) |
603 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES)) |
614 endif |
604 endif |
615 ifeq ($(HAS_DEDICATED_OP_NEWDEL_LIB),1) |
605 ifeq ($(HAS_DEDICATED_OP_NEWDEL_LIB),1) |
616 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(NEWLIB)) |
606 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(NEWLIB)) |
617 endif |
607 endif |
618 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(RUNTIME_LIBS_LIST)) $(addprefix $(STATIC_LIBS_PATH)/,$(STATIC_LIBS_LIST)) $(located_ARMLIBS) |
608 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(RUNTIME_LIBS_LIST)) $(addprefix $(STATIC_LIBS_PATH)/,$(STATIC_LIBS_LIST)) $(located_ARMLIBS) |
619 |
609 |
620 endif |
610 endif |
621 else |
611 else |
622 # ARM RUNTIME LIBS |
612 # ARM RUNTIME LIBS |
623 ifeq ($(VARIANTTYPE),udeb) |
613 ifeq ($(VARIANTTYPE),udeb) |
624 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) $(located_ARMLIBS) |
614 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES_DEBUG)) $(located_ARMLIBS) |
625 else |
615 else |
626 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) $(located_ARMLIBS) |
616 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARIES)) $(located_ARMLIBS) |
627 endif |
617 endif |
628 endif |
618 endif |
629 |
619 |
630 # NOTE: the groupin10 macro must be used before a call to the "startrule" macro |
620 # NOTE: the groupin10 macro must be used before a call to the "startrule" macro |
631 # because the code between startrule and endrule is packaged up into one |
621 # because the code between startrule and endrule is packaged up into one |
632 # commandline which would defeat the purpose of groupin10. |
622 # commandline which would defeat the purpose of groupin10. |
633 # This is undesirable because viafile generation commands appear |
623 # This is undesirable because viafile generation commands appear |
634 # outside the relevant tags but it is also unavoidable. |
624 # outside the relevant tags but it is also unavoidable. |
|
625 |
|
626 ifeq ($(e32link_mk),) |
|
627 e32link_mk:=1 |
|
628 include $(FLMHOME)/e32link.mk |
|
629 endif |
|
630 |
|
631 # Some configurations inject exports into the final binary by creating a .lib.exp file that is then fed to |
|
632 # the linker. How this .lib.exp is generated depends on whether a .def file is listed to control the build |
|
633 # or not. Either way, the .lib.exp is guarded so as to only be generated once. |
|
634 ifneq ($(FIX_EXPORTS_USING_EXP_FILE),) |
|
635 BUILDMARKER_EXPFILE:=$(call sanitise,EXPFILE_$(TARGET).lib.exp) |
|
636 ifeq ($(DEFFILE),) |
|
637 ifneq ($(AUTOEXPORTS),) |
|
638 ifeq ($($(BUILDMARKER_EXPFILE)),) |
|
639 $(eval $(call e32link_genlibexpfile,exports)) |
|
640 $(eval $(BUILDMARKER_EXPFILE):=$(INTERMEDIATEPATH)/$(TARGET).lib.exp) |
|
641 endif |
|
642 endif |
|
643 else |
|
644 ifeq ($($(BUILDMARKER_EXPFILE)),) |
|
645 $(eval $(call e32link_genlibexpfile,deffile)) |
|
646 $(eval $(BUILDMARKER_EXPFILE):=$(INTERMEDIATEPATH)/$(TARGET).lib.exp) |
|
647 endif |
|
648 endif |
|
649 ADDITIONAL_LIBS:=$($(BUILDMARKER_EXPFILE)) |
|
650 endif |
|
651 |
|
652 ifeq ($(e32postlink_mk),) |
|
653 e32postlink_mk:=1 |
|
654 include $(FLMHOME)/e32postlink.mk |
|
655 endif |
|
656 |
635 define linktarget_func |
657 define linktarget_func |
636 ## The actual link target, dependencies and build step |
658 ## The actual link target, dependencies and build step |
637 $(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 |
659 $(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 |
638 $(if $(MULTIFILE_ENABLED),,@echo -n "" > $(VIAFILE); |
660 $(if $(MULTIFILE_ENABLED),,@echo -n "" > $(VIAFILE); |
639 $(call groupin10,$(LINKOBJECTS)) ;) |
661 $(call groupin10,$(LINKOBJECTS)) ;) |
640 $(call startrule,linkandpostlink) \ |
662 $(call startrule,linkandpostlink) \ |
641 $(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \ |
663 $(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \ |
642 $(if $(SUPPORTS_STDCPP_NEWLIB),$(if $(located_STATICLIBRARIES),$(CHECKLIB) $(CHECKLIB_TYPE) --elf $(call dblquote,$(located_STATICLIBRARIES)) &&,),) \ |
664 $(if $(SUPPORTS_STDCPP_NEWLIB),$(if $(located_STATICLIBRARIES),$(CHECKLIB) $(CHECKLIB_TYPE) --elf $(call dblquote,$(located_STATICLIBRARIES)) &&,),) \ |
643 $(LD) $(LINKER_MISC_FLAGS) $(LINKER_DEFAULT_LIB_PATHS) $(SYMBIAN_LINK_FLAGS) $(if $(DEBUG_INFO),$(LINKER_DEBUG_OPTION),$(LINKER_NODEBUG_OPTION)) \ |
665 $(LD) $(LINKER_MISC_FLAGS) $(LINKER_DEFAULT_LIB_PATHS) $(SYMBIAN_LINK_FLAGS) $(if $(DEBUG_INFO),$(LINKER_DEBUG_OPTION),$(LINKER_NODEBUG_OPTION)) \ |
644 $(if $(ARMLIBS),$(LD_WARNINGS_SUPPRESSION_ARMLIBS),) \ |
666 $(if $(ARMLIBS),$(LD_WARNINGS_SUPPRESSION_ARMLIBS),) \ |
645 $(SHARED_OBJECT_OPTION) $(SPLIT_OPTION) \ |
667 $(if $(findstring EXE,$(POSTLINKTARGETTYPE)),$(if $(TREAT_EXES_AS_SHARED),$(SHARED_OBJECT_OPTION),),$(SHARED_OBJECT_OPTION)) \ |
|
668 $(SPLIT_OPTION) \ |
646 $(RW_BASE) \ |
669 $(RW_BASE) \ |
647 $(LINKER_ARCH_OPTION) \ |
670 $(LINKER_ARCH_OPTION) \ |
648 $(SYMVER_OPTION) $(SO_NAME_OPTION)=$(call dblquote,$(LINKASVERSIONED)) \ |
671 $(SYMVER_OPTION) \ |
649 $(LINKER_ENTRYPOINT_SETTING) \ |
672 $(if $(SO_NAME_OPTION),$(SO_NAME_OPTION)=$(call dblquote,$(LINKASVERSIONED)),) \ |
|
673 $(LINKER_ENTRY_OPTION)=$(LINKER_ENTRYPOINT_SETTING) \ |
|
674 $(if $(NEED_ENTRYPOINT_LIBRARY),$(LINKER_ENTRYPOINT_LIBDEP),) \ |
|
675 $(if $(ADDITIONAL_LIBS),$(call dblquote,$(ADDITIONAL_LIBS)),) \ |
650 -o $$(call dblquote,$(LINK_TARGET)) \ |
676 -o $$(call dblquote,$(LINK_TARGET)) \ |
651 $(if $(LTCG),$(LTCG_OPTION),) \ |
677 $(if $(LTCG),$(LTCG_OPTION),) \ |
652 $(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION)=$(call dblquote,$(MAPFILE)) \ |
678 $(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION)=$(call dblquote,$(MAPFILE)) \ |
653 $(LINKEROPTION) \ |
679 $(LINKEROPTION) \ |
654 $(if $(MULTIFILE_ENABLED),$(call dblquote,$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS)),$(COMMANDFILE_OPTION)$(call dblquote,$(VIAFILE))) \ |
680 $(if $(MULTIFILE_ENABLED),$(call dblquote,$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS)),$(COMMANDFILE_OPTION)$(call dblquote,$(VIAFILE))) \ |
655 $(if $(GENERATELINKERFEEDBACK),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \ |
681 $(if $(GENERATELINKERFEEDBACK),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \ |
656 $(if $(LINKER_ADD_STATIC_RUNTIME),$(if $(STATIC_RUNTIME_LIB),$(LINKER_GROUP_START_OPTION) $(STATIC_RUNTIME_DIR)/$(STATIC_RUNTIME_LIB) $(LINKER_GROUP_END_OPTION),)) \ |
682 $(if $(LINKER_ADD_STATIC_RUNTIME),$(if $(STATIC_RUNTIME_LIB),$(LINKER_GROUP_START_OPTION) $(STATIC_RUNTIME_DIR)/$(STATIC_RUNTIME_LIB) $(LINKER_GROUP_END_OPTION),)) \ |
657 $(call dblquote,$(e32abiv2_LIBS)) $(LINKER_DEFAULT_LIBS) && \ |
683 $(call dblquote,$(e32abiv2_LIBS)) $(LINKER_DEFAULT_LIBS) && \ |
658 $(ELF2E32) \ |
684 $(call e32postlink_$(BASE_ARCH)) \ |
659 --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0)) \ |
|
660 --version=$(VERSION) \ |
|
661 --capability=$(FINAL_CAPABILITIES) \ |
|
662 --linkas=$(call dblquote,$(LINKASVERSIONED)) \ |
|
663 --fpu=$(POSTLINKER_FPU) \ |
|
664 --targettype=$(POSTLINKTARGETTYPE) \ |
|
665 --output=$$(call dblquote,$$@) \ |
|
666 --elfinput=$(call dblquote,$(LINK_TARGET)) \ |
|
667 $(if $(UID1),--uid1=0x$(UID1),) \ |
|
668 $(if $(UID2),--uid2=0x$(UID2),) \ |
|
669 $(if $(UID3),--uid3=0x$(UID3),) \ |
|
670 $(if $(VENDORID),--vid=0x$(VENDORID),) \ |
|
671 $(if $(EXPTARGET),--customdlltarget,) \ |
|
672 $(if $(ARMLIBS),--excludeunwantedexports,) \ |
|
673 $(if $(EPOCALLOWDLLDATA),--dlldata,) \ |
|
674 $(if $(EPOCPROCESSPRIORITY),--priority=$(EPOCPROCESSPRIORITY),) \ |
|
675 $(if $(EPOCSTACKSIZE),--stack=0x$(EPOCSTACKSIZE),) \ |
|
676 $(if $(EPOCHEAPSIZEMIN),--heap=0x$(EPOCHEAPSIZEMIN)$(CHAR_COMMA)0x$(EPOCHEAPSIZEMAX),) \ |
|
677 $(if $(EPOCFIXEDPROCESS),--fixedaddress,) \ |
|
678 $(if $(EPOCDATALINKADDRESS),--datalinkaddress=$(EPOCDATALINKADDRESS),) \ |
|
679 $(if $(NAMEDSYMLKUP),--namedlookup,) \ |
|
680 $(if $(SMPSAFE),--smpsafe,) \ |
|
681 $(if $(POSTLINKDEFFILE),--definput=$(POSTLINKDEFFILE),) \ |
|
682 $(if $(EXPORTUNFROZEN),--unfrozen,) \ |
|
683 $(if $(AUTOEXPORTS),--sysdef=$(call dblquote,$(AUTOEXPORTS)),) \ |
|
684 $(if $(CANIGNORENONCALLABLE), \ |
|
685 $(if $(IMPORTLIBRARYREQUIRED),,--ignorenoncallable),) \ |
|
686 $(if $(CANHAVEEXPORTS), --defoutput=$(call dblquote,$(GENERATED_DEFFILE)) --dso=$(GENERATED_DSO)) \ |
|
687 $(if $(filter $(VARIANTTYPE),$(DEBUGGABLE)),--debuggable,) \ |
|
688 $(if $(POSTLINKER_SUPPORTS_WDP), \ |
|
689 --codepaging=$(PAGEDCODE_OPTION) --datapaging=$(PAGEDDATA_OPTION), \ |
|
690 $(POSTLINKER_PAGEDOPTION)) \ |
|
691 $(if $(NOCOMPRESSTARGET),--uncompressed, \ |
|
692 $(if $(INFLATECOMPRESSTARGET),--compressionmethod=inflate, \ |
|
693 $(if $(BYTEPAIRCOMPRESSTARGET),--compressionmethod=bytepair, \ |
|
694 --compressionmethod=$(POSTLINKER_COMPRESSION_DEFAULT)))) \ |
|
695 --libpath="$(call concat,$(PATHSEP)$(CHAR_SEMIC),$(strip $(RUNTIME_LIBS_PATH) $(STATIC_LIBS_PATH)))" \ |
|
696 $(if $(SAVESPACE),$(if $(EXPORTUNFROZEN),,&& { $(GNURM) -rf $(INTERMEDIATEPATH); true; })) \ |
685 $(if $(SAVESPACE),$(if $(EXPORTUNFROZEN),,&& { $(GNURM) -rf $(INTERMEDIATEPATH); true; })) \ |
697 $(call endrule,linkandpostlink) |
686 $(call endrule,linkandpostlink) |
698 |
687 |
699 $(MAPFILE): $(E32TARGET) |
688 $(MAPFILE): $(E32TARGET) |
700 $(LINK_TARGET): $(E32TARGET) |
689 $(LINK_TARGET): $(E32TARGET) |
1102 |
1094 |
1103 endif # ifneq ($(TARGETTYPE),implib) |
1095 endif # ifneq ($(TARGETTYPE),implib) |
1104 |
1096 |
1105 |
1097 |
1106 ########################## Build ROMFILE target ############################ |
1098 ########################## Build ROMFILE target ############################ |
1107 EPOC_ROOT:=$(patsubst %/,%,$(EPOCROOT)) |
|
1108 TOBLDINF:=$(dir $(subst :,,$(subst $(EPOC_ROOT)/,,$(COMPONENT_META)))) |
|
1109 |
1099 |
1110 # Only build ROMFILE if asked |
1100 # Only build ROMFILE if asked |
1111 ifneq ($(filter ROMFILE,$(call uppercase,$(MAKECMDGOALS))),) |
1101 ifneq ($(filter ROMFILE,$(call uppercase,$(MAKECMDGOALS))),) |
1112 ifeq ($(ROMFILE_$(call sanitise,$(TARGET).$(REQUESTEDTARGETEXT))),) |
1102 include $(FLMHOME)/romfile.mk |
1113 ROMFILE_$(call sanitise,$(TARGET).$(REQUESTEDTARGETEXT)):=1 |
|
1114 ROMDIR:=$(EPOC_ROOT)/epoc32/rom/$(TOBLDINF) |
|
1115 |
|
1116 # Default values |
|
1117 ROMFILETYPE:=file |
|
1118 ROMFILE:=$(TARGET).$(REQUESTEDTARGETEXT) |
|
1119 ROMPATH:=$(if $(TARGETPATH),$(TARGETPATH)/,sys/bin/) |
|
1120 ROMDECORATIONS:= |
|
1121 ROMFILETYPE_RAM:=data |
|
1122 ROMFILE_RAM:=$(TARGET).$(REQUESTEDTARGETEXT) |
|
1123 ROMPATH_RAM:=sys/bin/ |
|
1124 BUILDROMTARGET:=1 |
|
1125 ABIDIR:=MAIN |
|
1126 |
|
1127 $(eval $(call DoRomSet)) |
|
1128 |
|
1129 ifneq ($(EPOCFIXEDPROCESS),) |
|
1130 ROMDECORATIONS:=$(ROMDECORATIONS) fixed |
|
1131 endif |
|
1132 ifeq ($(PAGED),1) |
|
1133 ROMDECORATIONS:=$(ROMDECORATIONS) paged |
|
1134 endif |
|
1135 ifeq ($(PAGED),0) |
|
1136 ROMDECORATIONS:=$(ROMDECORATIONS) unpaged |
|
1137 endif |
|
1138 |
|
1139 |
|
1140 DATATEXT:= |
|
1141 ifeq ($(TESTCODE),TRUE) |
|
1142 # Add 'TEST' to the .iby filename |
|
1143 ROMTEST:=test |
|
1144 ifeq ($(TEST_OPTION),BOTH) |
|
1145 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" |
|
1146 else |
|
1147 ifneq ($(TEST_OPTION),NONE) |
|
1148 DATATEXT:="data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TEST_OPTION).bat test/$(MODULE).$(TEST_OPTION).bat" |
|
1149 endif |
|
1150 endif |
|
1151 endif |
|
1152 |
|
1153 # ROMTARGET |
|
1154 ifneq ($(ROMTARGET),) |
|
1155 ifneq ($(words $(ROMTARGET)),1) |
|
1156 ROMTARGETALL:=$(ROMTARGET) |
|
1157 ROMTARGET:=$(word 1,$(ROMTARGET)) |
|
1158 endif |
|
1159 |
|
1160 ifeq ($(ROMTARGET),<none>) |
|
1161 BUILDROMTARGET:= |
|
1162 else |
|
1163 ifneq ($(ROMTARGET),+) |
|
1164 ifneq ($(notdir $(ROMTARGET)),) |
|
1165 ROMFILE:=$(notdir $(ROMTARGET)) |
|
1166 endif |
|
1167 ifneq ($(dir $(ROMTARGET)),./) |
|
1168 ROMPATH:=$(dir $(ROMTARGET)) |
|
1169 endif |
|
1170 endif |
|
1171 endif |
|
1172 endif |
|
1173 endif |
|
1174 |
|
1175 ROMFILENAME:=$(ROMDIR)$(PLATFORM)$(ROMTEST).iby |
|
1176 |
|
1177 # RAMTARGET |
|
1178 ifneq ($(RAMTARGET),) |
|
1179 ROMDECORATIONS_RAM:=" attrib=r" |
|
1180 ifneq ($(RAMTARGET),+) |
|
1181 ifneq ($(notdir $(RAMTARGET)),) |
|
1182 ROMFILE_RAM:=$(notdir $(RAMTARGET)) |
|
1183 endif |
|
1184 ifneq ($(dir $(RAMTARGET)),./) |
|
1185 ROMPATH_RAM:=$(dir $(RAMTARGET)) |
|
1186 endif |
|
1187 endif |
|
1188 endif |
|
1189 |
|
1190 define BuildRomfileTarget |
|
1191 $(ALLTARGET)::ROMFILE |
|
1192 ROMFILE:: |
|
1193 $(call startrule,rombuild) \ |
|
1194 $(GNUMKDIR) -p $(ROMDIR) \ |
|
1195 $(if $(ROMFILE_CREATED_$(TOBLDINF)),,&& echo -e "// $(subst $(EPOC_ROOT)/,,$(ROMFILENAME))\n//\n$(DATATEXT)" > $(ROMFILENAME)) \ |
|
1196 $(if $(BUILDROMTARGET),&& echo "$(ROMFILETYPE)=/epoc32/release/##$(ABIDIR)##/##BUILD##/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(REQUESTEDTARGETEXT) $(1)$(ROMDECORATIONS)" >> $(ROMFILENAME)) \ |
|
1197 $(if $(RAMTARGET),&& echo "$(ROMFILETYPE_RAM)=/epoc32/release/##$(ABIDIR)##/##BUILD##/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(REQUESTEDTARGETEXT) $(ROMPATH_RAM)$(ROMFILE_RAM)$(ROMDECORATIONS_RAM)" >> $(ROMFILENAME)) \ |
|
1198 $(call endrule,buildromfiletarget) |
|
1199 endef |
|
1200 |
|
1201 # When VARIANTTYPE changes, romfile is finished, |
|
1202 # apart from if this is a new component...... |
|
1203 ifneq ($(PREVIOUSVARIANTTYPE),) |
|
1204 ifneq ($(VARIANTTYPE),$(PREVIOUSVARIANTTYPE)) |
|
1205 ifneq ($(ROMFILE_CREATED_$(TOBLDINF)),) |
|
1206 ROMFILEFINISHED:=1 |
|
1207 else |
|
1208 ROMFILEFINISHED:= |
|
1209 endif |
|
1210 endif |
|
1211 endif |
|
1212 |
|
1213 # When romfile is finished, don't continue to add to it |
|
1214 ifeq ($(ROMFILEFINISHED),) |
|
1215 $(eval $(call BuildRomfileTarget,$(ROMPATH)$(ROMFILE))) |
|
1216 endif |
|
1217 |
|
1218 # Don't allow romfile to be recreated for every MMP |
|
1219 ifeq ($(ROMFILE_CREATED_$(TOBLDINF)),) |
|
1220 ROMFILE_CREATED_$(TOBLDINF):=1 |
|
1221 endif |
|
1222 |
|
1223 # Build other ROMTARGETs if there is more than one |
|
1224 ifneq ($(ROMTARGETALL),) |
|
1225 RAMTARGET:= |
|
1226 $(foreach ROMTARGET,$(wordlist 2,$(words $(ROMTARGETALL)),$(ROMTARGETALL)),$(eval $(call BuildRomfileTarget,$(ROMTARGET)))) |
|
1227 ROMTARGETALL:= |
|
1228 endif |
|
1229 |
|
1230 # Keep track of variant type while romfile is being created |
|
1231 PREVIOUSVARIANTTYPE:=$(VARIANTTYPE) |
|
1232 |
|
1233 WHATRELEASE:=$(WHATRELEASE) $(ROMFILENAME) |
|
1234 endif |
1103 endif |
1235 |
1104 |
1236 # Deal with test code batch files generation. |
1105 # Deal with test code batch files generation. |
1237 ifneq ($(TESTPATH),) |
1106 ifneq ($(TESTPATH),) |
1238 |
1107 |