14 # ARMv5 EXE/DLL ABIv2 Function Like Makefile (FLM) |
14 # ARMv5 EXE/DLL ABIv2 Function Like Makefile (FLM) |
15 # Knows how to build all possible ABIV2 executables for ARM |
15 # Knows how to build all possible ABIV2 executables for ARM |
16 # |
16 # |
17 # |
17 # |
18 |
18 |
19 # Only build feature invariant binaries in non-product builds *and* |
19 # Feature/Binary Variation |
20 # Only build feature variant binaries in product builds. |
20 # |
21 # |
21 # FEATUREVARIANTNAME != "" implies a product build configuration |
22 # FEATUREVARIANTNAME != "" implies product build |
22 # FEATUREVARIANT == 1 implies a .mmp defined feature variant binary |
23 # FEATUREVARIANT == 1 implies a feature variant binary |
23 # |
24 # |
24 # By default: |
25 # test FEATUREVARIANTNAME=="" or FEATUREVARIANT==1 |
25 # Build all binaries in non-product builds *and* |
26 # |
26 # Only build feature variant binaries in product builds. |
27 ifneq ($(or $(call equal,$(FEATUREVARIANTNAME),),$(call equal,$(FEATUREVARIANT),1)),) |
27 # |
|
28 # test FEATUREVARIANTNAME=="" or FEATUREVARIANT==1 |
|
29 # |
|
30 # If FEATUREVARIANTSAFE is set: |
|
31 # Only build feature invariant binaries in non-product builds *and* |
|
32 # Only build feature variant binaries in product builds. |
|
33 # |
|
34 # test (FEATUREVARIANTNAME=="" and FEATUREVARIANT=="") or |
|
35 # (FEATUREVARIANTNAME!="" and FEATUREVARIANT==1) |
|
36 # |
|
37 |
|
38 DOBUILD:= |
|
39 ifeq ($(FEATUREVARIANTSAFE),) |
|
40 DOBUILD:=$(if $(or $(call equal,$(FEATUREVARIANTNAME),),\ |
|
41 $(call equal,$(FEATUREVARIANT),1)),1) |
|
42 else |
|
43 DOBUILD:=$(if $(or $(and $(call equal,$(FEATUREVARIANTNAME),),\ |
|
44 $(call equal,$(FEATUREVARIANT),)),\ |
|
45 $(and $(call not,$(call equal,$(FEATUREVARIANTNAME),)),\ |
|
46 $(call equal,$(FEATUREVARIANT),1))),1) |
|
47 endif |
|
48 |
|
49 ifeq ($(DOBUILD),1) |
28 |
50 |
29 $(if $(FLMDEBUG),$(info <flm name='e32abiv2' target='$(TARGET)' type='$(TARGETTYPE)' outputpath='$(OUTPUTPATH)' metasource='$(METASOURCE)' postlinkfiletype='$(POSTLINKFILETYPE)' />)) |
51 $(if $(FLMDEBUG),$(info <flm name='e32abiv2' target='$(TARGET)' type='$(TARGETTYPE)' outputpath='$(OUTPUTPATH)' metasource='$(METASOURCE)' postlinkfiletype='$(POSTLINKFILETYPE)' />)) |
30 |
52 |
31 # Strip switch-type parameters |
53 # Strip switch-type parameters |
32 # |
54 # |
323 $(ELF2E32) --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0)) --version=$(VERSION) \ |
340 $(ELF2E32) --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0)) --version=$(VERSION) \ |
324 --definput="$(PREPPEDDEFFILE)" \ |
341 --definput="$(PREPPEDDEFFILE)" \ |
325 --dso=$$(call dblquote,$$@) \ |
342 --dso=$$(call dblquote,$$@) \ |
326 --linkas=$(call dblquote,$(LINKASVERSIONED)) \ |
343 --linkas=$(call dblquote,$(LINKASVERSIONED)) \ |
327 $(call endrule,importlibversioned) |
344 $(call endrule,importlibversioned) |
328 |
|
329 CLEANTARGETS:=$$(CLEANTARGETS) $(IMPORTLIBTARGETVERSIONED_DSO) |
|
330 endef |
345 endef |
331 $(eval $(importlibtargetversioned_func)) |
346 $(eval $(importlibtargetversioned_func)) |
332 endif # ifneq ($(DEFFILE),) |
347 endif # ifneq ($(DEFFILE),) |
333 endif # ifneq ($(EXPORTUNFROZEN),) |
348 endif # ifneq ($(EXPORTUNFROZEN),) |
334 endif # ifneq ($(IMPORTLIBTARGET_DSO),) |
349 endif # ifneq ($(IMPORTLIBTARGET_DSO),) |
335 |
350 |
336 # ABIv1 .lib |
351 # ABIv1 .lib |
337 ifneq ($(IMPORTLIBTARGETVERSIONED_LIB),) # check that we haven't tried to specify this target already |
352 ifneq ($(IMPORTLIBTARGETVERSIONED_LIB),) # check that we haven't tried to specify this target already |
338 CLEANTARGETS:=$(CLEANTARGETS) $(IMPORTLIBTARGETVERSIONED_LIB) $(IMPORTLIBTARGET_LIB) |
353 |
|
354 # By Now we're committed to producing a target for this DSO so it's safe to |
|
355 # set the marker that will prevent any further targets from being made. |
|
356 $(eval $(BUILDMARKER_IMPORTLIBTARGET_LIB):=1) |
339 |
357 |
340 define abiv1_generatelib |
358 define abiv1_generatelib |
341 |
359 |
342 ifeq ($(EXPLICITVERSION),) |
360 ifeq ($(EXPLICITVERSION),) |
343 LIBRARY:: $(IMPORTLIBTARGETVERSIONED_LIB) $(IMPORTLIBTARGET_LIB) |
361 LIBRARY:: $(IMPORTLIBTARGETVERSIONED_LIB) $(IMPORTLIBTARGET_LIB) |
572 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) |
602 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) |
573 endif |
603 endif |
574 ifeq ($(HAS_DEDICATED_OP_NEWDEL_LIB),1) |
604 ifeq ($(HAS_DEDICATED_OP_NEWDEL_LIB),1) |
575 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(NEWLIB)) |
605 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(NEWLIB)) |
576 endif |
606 endif |
577 quoted_e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(RUNTIME_LIBS_LIST)) $(call addquotedprefix,$(STATIC_LIBS_PATH)/,$(STATIC_LIBS_LIST)) $(quoted_located_ARMLIBS) |
607 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(RUNTIME_LIBS_LIST)) $(addprefix $(STATIC_LIBS_PATH)/,$(STATIC_LIBS_LIST)) $(located_ARMLIBS) |
578 escaped_e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(RUNTIME_LIBS_LIST)) $(addprefix $(call ruleEscape,$(STATIC_LIBS_PATH)/),$(STATIC_LIBS_LIST)) $(escaped_located_ARMLIBS) |
|
579 |
608 |
580 endif |
609 endif |
581 else |
610 else |
582 # ARM RUNTIME LIBS |
611 # ARM RUNTIME LIBS |
583 ifeq ($(VARIANTTYPE),udeb) |
612 ifeq ($(VARIANTTYPE),udeb) |
584 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) |
613 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY_DEBUG)) $(located_ARMLIBS) |
585 else |
614 else |
586 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) |
615 e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(IMPORTLIBPATH)/,$(LIBRARY)) $(located_ARMLIBS) |
587 endif |
616 endif |
588 quoted_e32abiv2_LIBS=$(e32abiv2_LIBS) $(quoted_located_ARMLIBS) |
|
589 escaped_e32abiv2_LIBS=$(e32abiv2_LIBS) $(escaped_located_ARMLIBS) |
|
590 endif |
617 endif |
591 |
618 |
592 # NOTE: the groupin10 macro must be used before a call to the "startrule" macro |
619 # NOTE: the groupin10 macro must be used before a call to the "startrule" macro |
593 # because the code between startrule and endrule is packaged up into one |
620 # because the code between startrule and endrule is packaged up into one |
594 # commandline which would defeat the purpose of groupin10. |
621 # commandline which would defeat the purpose of groupin10. |
595 # This is undesirable because viafile generation commands appear |
622 # This is undesirable because viafile generation commands appear |
596 # outside the relevant tags but it is also unavoidable. |
623 # outside the relevant tags but it is also unavoidable. |
597 define linktarget_func |
624 define linktarget_func |
598 ## The actual link target, dependencies and build step |
625 ## The actual link target, dependencies and build step |
599 $(LINK_TARGET): $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS),$(LINKOBJECTS)) $(escaped_e32abiv2_LIBS) $(LINKER_ENTRYPOINT_LIBDEP) $(if $(SUPPORTS_STDCPP_NEWLIB),$(CHECKLIB)) $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACKFILE),) |
626 $(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 |
600 $(if $(MULTIFILE_ENABLED),,@echo -n "" > $(VIAFILE); |
627 $(if $(MULTIFILE_ENABLED),,@echo -n "" > $(VIAFILE); |
601 $(call groupin10,$(LINKOBJECTS)) ;) |
628 $(call groupin10,$(LINKOBJECTS)) ;) |
602 $(call startrule,link) \ |
629 $(call startrule,linkandpostlink) \ |
603 $(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \ |
630 $(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \ |
604 $(if $(SUPPORTS_STDCPP_NEWLIB),$(if $(located_STATICLIBRARIES),$(CHECKLIB) $(CHECKLIB_TYPE) --elf $(call dblquote,$(located_STATICLIBRARIES)) &&,),) \ |
631 $(if $(SUPPORTS_STDCPP_NEWLIB),$(if $(located_STATICLIBRARIES),$(CHECKLIB) $(CHECKLIB_TYPE) --elf $(call dblquote,$(located_STATICLIBRARIES)) &&,),) \ |
605 $(LD) $(LINKER_MISC_FLAGS) $(LINKER_DEFAULT_LIB_PATHS) $(SYMBIAN_LINK_FLAGS) $(if $(DEBUG_INFO),$(LINKER_DEBUG_OPTION),$(LINKER_NODEBUG_OPTION)) \ |
632 $(LD) $(LINKER_MISC_FLAGS) $(LINKER_DEFAULT_LIB_PATHS) $(SYMBIAN_LINK_FLAGS) $(if $(DEBUG_INFO),$(LINKER_DEBUG_OPTION),$(LINKER_NODEBUG_OPTION)) \ |
|
633 $(if $(ARMLIBS),$(LD_WARNINGS_SUPPRESSION_ARMLIBS),) \ |
606 $(SHARED_OBJECT_OPTION) $(SPLIT_OPTION) \ |
634 $(SHARED_OBJECT_OPTION) $(SPLIT_OPTION) \ |
607 $(RW_BASE_OPTION) 0x400000 \ |
635 $(RW_BASE) \ |
608 $(LINKER_ARCH_OPTION) \ |
636 $(LINKER_ARCH_OPTION) \ |
609 $(SYMVER_OPTION) $(SO_NAME_OPTION) $(call dblquote,$(LINKASVERSIONED)) \ |
637 $(SYMVER_OPTION) $(SO_NAME_OPTION)=$(call dblquote,$(LINKASVERSIONED)) \ |
610 $(LINKER_ENTRYPOINT_SETTING) \ |
638 $(LINKER_ENTRYPOINT_SETTING) \ |
611 -o $$(call dblquote,$$@) \ |
639 -o $$(call dblquote,$(LINK_TARGET)) \ |
612 $(if $(LTCG),$(LTCG_OPTION),) \ |
640 $(if $(LTCG),$(LTCG_OPTION),) \ |
613 $(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION) \ |
641 $(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION)=$(call dblquote,$(MAPFILE)) \ |
614 $(call dblquote,$(MAPFILE)) \ |
|
615 $(LINKEROPTION) \ |
642 $(LINKEROPTION) \ |
616 $(if $(MULTIFILE_ENABLED),$(call dblquote,$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS)),$(COMMANDFILE_OPTION)$(call dblquote,$(VIAFILE))) \ |
643 $(if $(MULTIFILE_ENABLED),$(call dblquote,$(MULTIFILEOBJECT) $(CIAFILES_LINKOBJECTS)),$(COMMANDFILE_OPTION)$(call dblquote,$(VIAFILE))) \ |
617 $(if $(GENERATELINKERFEEDBACK),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \ |
644 $(if $(GENERATELINKERFEEDBACK),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \ |
618 $(if $(LINKER_ADD_STATIC_RUNTIME),$(if $(STATIC_RUNTIME_LIB),$(LINKER_GROUP_START_OPTION) $(STATIC_RUNTIME_DIR)/$(STATIC_RUNTIME_LIB) $(LINKER_GROUP_END_OPTION),)) \ |
645 $(if $(LINKER_ADD_STATIC_RUNTIME),$(if $(STATIC_RUNTIME_LIB),$(LINKER_GROUP_START_OPTION) $(STATIC_RUNTIME_DIR)/$(STATIC_RUNTIME_LIB) $(LINKER_GROUP_END_OPTION),)) \ |
619 $(quoted_e32abiv2_LIBS) $(LINKER_DEFAULT_LIBS)\ |
646 $(call dblquote,$(e32abiv2_LIBS)) $(LINKER_DEFAULT_LIBS) && \ |
620 $(call endrule,link) |
647 $(ELF2E32) \ |
621 |
648 --sid=0x$(if $(SID),$(SID),$(if $(UID3),$(UID3),0)) \ |
622 $(MAPFILE): $(LINK_TARGET) |
649 --version=$(VERSION) \ |
623 endef |
650 --capability=$(FINAL_CAPABILITIES) \ |
|
651 --linkas=$(call dblquote,$(LINKASVERSIONED)) \ |
|
652 --fpu=$(if $(ARMFPU),$(ARMFPU),$(POSTLINKER_FPU_DEFAULT)) \ |
|
653 --targettype=$(POSTLINKTARGETTYPE) \ |
|
654 --output=$$(call dblquote,$$@) \ |
|
655 --elfinput=$(call dblquote,$(LINK_TARGET)) \ |
|
656 $(if $(UID1),--uid1=0x$(UID1),) \ |
|
657 $(if $(UID2),--uid2=0x$(UID2),) \ |
|
658 $(if $(UID3),--uid3=0x$(UID3),) \ |
|
659 $(if $(VENDORID),--vid=0x$(VENDORID),) \ |
|
660 $(if $(EXPTARGET),--customdlltarget,) \ |
|
661 $(if $(ARMLIBS),--excludeunwantedexports,) \ |
|
662 $(if $(EPOCALLOWDLLDATA),--dlldata,) \ |
|
663 $(if $(EPOCPROCESSPRIORITY),--priority=$(EPOCPROCESSPRIORITY),) \ |
|
664 $(if $(EPOCSTACKSIZE),--stack=0x$(EPOCSTACKSIZE),) \ |
|
665 $(if $(EPOCHEAPSIZEMIN),--heap=0x$(EPOCHEAPSIZEMIN)$(CHAR_COMMA)0x$(EPOCHEAPSIZEMAX),) \ |
|
666 $(if $(EPOCFIXEDPROCESS),--fixedaddress,) \ |
|
667 $(if $(EPOCDATALINKADDRESS),--datalinkaddress=$(EPOCDATALINKADDRESS),) \ |
|
668 $(if $(NAMEDSYMLKUP),--namedlookup,) \ |
|
669 $(if $(SMPSAFE),--smpsafe,) \ |
|
670 $(if $(POSTLINKDEFFILE),--definput=$(POSTLINKDEFFILE),) \ |
|
671 $(if $(EXPORTUNFROZEN),--unfrozen,) \ |
|
672 $(if $(AUTOEXPORTS),--sysdef=$(call dblquote,$(AUTOEXPORTS)),) \ |
|
673 $(if $(CANIGNORENONCALLABLE), \ |
|
674 $(if $(IMPORTLIBRARYREQUIRED),,--ignorenoncallable),) \ |
|
675 $(if $(CANHAVEEXPORTS), --defoutput=$(call dblquote,$(GENERATED_DEFFILE)) --dso=$(GENERATED_DSO)) \ |
|
676 $(if $(filter $(VARIANTTYPE),$(DEBUGGABLE)),--debuggable,) \ |
|
677 $(if $(POSTLINKER_SUPPORTS_WDP), \ |
|
678 --codepaging=$(PAGEDCODE_OPTION) --datapaging=$(PAGEDDATA_OPTION), \ |
|
679 $(POSTLINKER_PAGEDOPTION)) \ |
|
680 $(if $(NOCOMPRESSTARGET),--uncompressed, \ |
|
681 $(if $(INFLATECOMPRESSTARGET),--compressionmethod=inflate, \ |
|
682 $(if $(BYTEPAIRCOMPRESSTARGET),--compressionmethod=bytepair, \ |
|
683 --compressionmethod=$(POSTLINKER_COMPRESSION_DEFAULT)))) \ |
|
684 --libpath="$(call concat,$(PATHSEP)$(CHAR_SEMIC),$(strip $(RUNTIME_LIBS_PATH) $(STATIC_LIBS_PATH)))" \ |
|
685 $(if $(SAVESPACE),$(if $(EXPORTUNFROZEN),,&& { $(GNURM) -rf $(INTERMEDIATEPATH); true; })) \ |
|
686 $(call endrule,linkandpostlink) |
|
687 |
|
688 $(MAPFILE): $(E32TARGET) |
|
689 $(LINK_TARGET): $(E32TARGET) |
|
690 endef |
|
691 ifneq ($(DOPOSTLINK),) |
624 $(eval $(linktarget_func)) |
692 $(eval $(linktarget_func)) |
625 |
693 endif # ifneq ($(DOPOSTLINK),) |
626 CLEANTARGETS:=$(CLEANTARGETS) $(LINK_TARGET) $(if $(GENERATELINKERFEEDBACK),$(FEEDBACKFILE)) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT)) |
694 |
627 CLEANTARGETS:=$(CLEANTARGETS) $(VIAFILE) |
695 CLEANTARGETS:=$(CLEANTARGETS) $(VIAFILE) $(if $(GENERATELINKERFEEDBACK),$(FEEDBACKFILE)) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT)) |
628 CLEANTARGETS:=$(CLEANTARGETS) $(MAPFILE) |
|
629 WHATRELEASE:=$(WHATRELEASE) $(MAPFILE) |
696 WHATRELEASE:=$(WHATRELEASE) $(MAPFILE) |
630 |
697 |
631 endif # if TARGETTYPE lib |
698 endif # if TARGETTYPE lib |
632 |
699 |
633 |
700 |
703 |
771 |
704 $(eval DEPENDFILENAME:=$(1).d) |
772 $(eval DEPENDFILENAME:=$(1).d) |
705 $(eval DEPENDFILE:=$(wildcard $(DEPENDFILENAME))) |
773 $(eval DEPENDFILE:=$(wildcard $(DEPENDFILENAME))) |
706 |
774 |
707 # $4 is for language specific options (e.g. C++ vs C) |
775 # $4 is for language specific options (e.g. C++ vs C) |
708 $(1): $(2) $(PROJECT_META) $(if $(MULTIFILE_ENABLED),,$(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT)) $(if $(USE_TRACE_COMPILER),$(TRACE_MARKER),) $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACKFILE),) |
776 $(1): $(2) $(PROJECT_META) $(if $(MULTIFILE_ENABLED),,$(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT)) $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACKFILE),) | $(if $(USE_TRACE_COMPILER),$(TRACE_MARKER),) |
709 $(call startrule,compile,,$(2)) \ |
777 $(call startrule,compile,,$(2)) \ |
710 $(if $(PERTURBSTARTTIME), $(RANSLEEP) $(PERTURBMSECS) ;,) \ |
778 $(if $(PERTURBSTARTTIME), $(RANSLEEP) $(PERTURBMSECS) ;,) \ |
711 $(if $(MULTIFILE_ENABLED), echo $(2) $(3) > $(MULTIFILE_VIAFILE) ;,) \ |
779 $(if $(MULTIFILE_ENABLED), echo $(2) $(3) > $(MULTIFILE_VIAFILE) ;,) \ |
712 $(CC) $(LICENSERETRY_OPTION) \ |
780 $(CC) $(LICENSERETRY_OPTION) \ |
713 $(CC_CORE_ARGS) \ |
781 $(CC_CORE_ARGS) \ |
714 $(OPTION_COMPILER) $(if $(MULTIFILE_ENABLED),$(4),$(3)) \ |
782 $(OPTION_COMPILER) $(if $(MULTIFILE_ENABLED),$(4),$(3)) \ |
715 $(if $(LTCG),$(LTCG_OPTION),) \ |
783 $(if $(LTCG),$(LTCG_OPTION),) \ |
716 $(if $(USE_PROFILER_FEEDBACK),--profile=$(call dblquote,$(ARM_PROFILER_FILE)),) \ |
784 $(if $(USE_PROFILER_FEEDBACK),--profile=$(call dblquote,$(ARM_PROFILER_FILE)),) \ |
717 $(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS)) \ |
785 $(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS)) \ |
718 $(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$(call concat, $(PREINCLUDE_OPTION) ,$(call dblquote,$(PREINCLUDE)))\ |
786 $(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$(call concat, $(PREINCLUDE_OPTION) ,$(call dblquote,$(PREINCLUDE)))\ |
719 $(if $(SET_ARMINC),$(if $(RVCTINC),$(COMPILER_SYSTEM_INCLUDE_OPTION)$(call dblquoteitem,$(RVCTINC)),),) \ |
787 $(if $(SET_ARMINC),$(if $(RVCTINC),$(COMPILER_SYSTEM_INCLUDE_OPTION)$(call dblquote,$(RVCTINC)),),) \ |
720 $(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquote,$$(<D)) \ |
788 $(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquote,$$(<D)) \ |
721 $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(USERINCLUDE))) \ |
789 $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(USERINCLUDE))) \ |
722 $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE))) \ |
790 $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE))) \ |
723 $(if $(NOHIDEALL),--no_hide_all,) \ |
791 $(if $(NOHIDEALL),--no_hide_all,) \ |
724 $(DEPEND_OPTION) $(call dblquote,$(1).d) \ |
792 $(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(1).d)) \ |
725 $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \ |
793 $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \ |
726 $(if $(MULTIFILE_ENABLED),--multifile $(OUTPUT_OPTION) $(MULTIFILEOBJECT) \ |
794 $(if $(MULTIFILE_ENABLED),--multifile $(OUTPUT_OPTION) $(MULTIFILEOBJECT) \ |
727 --via $$(call dblquote, $(MULTIFILE_VIAFILE)),$(OUTPUT_OPTION) $$@ $$(call dblquote, $$<)) \ |
795 --via $$(call dblquote, $(MULTIFILE_VIAFILE)),$(OUTPUT_OPTION) $$@ $$(call dblquote, $$<)) \ |
728 $(call endrule,compile) |
796 $(call endrule,compile) |
729 |
797 |
730 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME) |
798 ifeq ($(NO_DEPEND_GENERATE),) |
731 ifneq "$(DEPENDFILE)" "" |
799 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME) |
732 ifeq ($(NO_DEPEND_INCLUDE),) |
800 endif |
733 ifeq "$(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS)))" "" |
801 |
734 -include $(DEPENDFILE) |
802 ifneq ($(DEPENDFILE),) |
735 endif |
803 ifeq ($(NO_DEPEND_INCLUDE),) |
736 endif |
804 ifeq ($(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS))),) |
|
805 -include $(DEPENDFILE) |
|
806 endif |
|
807 endif |
737 endif |
808 endif |
738 |
809 |
739 # individual source file compilation |
810 # individual source file compilation |
740 SOURCETARGET_$(call sanitise,$(2)): $(1) |
811 SOURCETARGET_$(call sanitise,$(2)): $(1) |
741 |
812 |
807 $(CC_CORE_ARGS) \ |
878 $(CC_CORE_ARGS) \ |
808 $(LISTING_OPTION) \ |
879 $(LISTING_OPTION) \ |
809 $(OPTION_COMPILER) \ |
880 $(OPTION_COMPILER) \ |
810 $(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS)) \ |
881 $(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS)) \ |
811 $(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$(call concat, $(PREINCLUDE_OPTION) ,$(call dblquote,$(PREINCLUDE)))\ |
882 $(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$(call concat, $(PREINCLUDE_OPTION) ,$(call dblquote,$(PREINCLUDE)))\ |
812 $(if $(SET_ARMINC),$(if $(RVCTINC),$(COMPILER_SYSTEM_INCLUDE_OPTION)$(call dblquoteitem,$(RVCTINC)),),) \ |
883 $(if $(SET_ARMINC),$(if $(RVCTINC),$(COMPILER_SYSTEM_INCLUDE_OPTION)$(call dblquote,$(RVCTINC)),),) \ |
813 $(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquote,$$(<D)) \ |
884 $(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquote,$$(<D)) \ |
814 $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(USERINCLUDE))) \ |
885 $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(USERINCLUDE))) \ |
815 $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE))) \ |
886 $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE))) \ |
816 $(if $(NOHIDEALL),--no_hide_all,) \ |
887 $(if $(NOHIDEALL),--no_hide_all,) \ |
817 $(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME)) \ |
888 $(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME))) \ |
818 $$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) \ |
889 $$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) \ |
819 $(call endrule,e32listing) |
890 $(call endrule,e32listing) |
820 |
891 |
821 CLEANTARGETS:=$$(CLEANTARGETS) $(LISTINGTARGET) |
892 CLEANTARGETS:=$$(CLEANTARGETS) $(LISTINGTARGET) |
822 |
893 |
823 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME) |
894 ifeq ($(NO_DEPEND_GENERATE),)) |
824 ifneq "$(DEPENDFILE)" "" |
895 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME) |
825 ifeq ($(NO_DEPEND_INCLUDE),) |
896 endif |
826 ifeq "$(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS)))" "" |
897 |
827 -include $(DEPENDFILE) |
898 ifneq ($(DEPENDFILE),) |
828 endif |
899 ifeq ($(NO_DEPEND_INCLUDE),) |
829 endif |
900 ifeq ($(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS))),) |
|
901 -include $(DEPENDFILE) |
|
902 endif |
|
903 endif |
830 endif |
904 endif |
831 |
905 |
832 endef |
906 endef |
833 |
907 |
834 # No point at all in generating listing targetsif we aren't going to make them |
908 # No point at all in generating listing targetsif we aren't going to make them |
850 |
924 |
851 define e32freeze |
925 define e32freeze |
852 |
926 |
853 FREEZE:: $(1) |
927 FREEZE:: $(1) |
854 $(call startrule,freeze,,$(RESOLVED_DEFFILE)) \ |
928 $(call startrule,freeze,,$(RESOLVED_DEFFILE)) \ |
855 $(EFREEZE) $(EFREEZE_REMOVE_OPTION) "$(RESOLVED_DEFFILE)" $(FIVESPACES) $(GENERATED_DEFFILE) \ |
929 $(EFREEZE) $(EFREEZE_REMOVE_OPTION) "$(RESOLVED_DEFFILE)" $(FIVESPACES) $(call dblquote,$(GENERATED_DEFFILE)) \ |
856 $(call endrule,freeze) |
930 $(call endrule,freeze) |
857 endef |
931 endef |
858 |
932 |
859 # DEFFILE should only be generated for target types that have a def file |
933 # Only freeze once - udeb and urel cannot differ |
860 ifeq ($(MAKEDEFFILE),1) |
|
861 # Eval freeze only once - no point making the DEFFILE for urel *and* udeb. |
|
862 ifeq ($($(FREEZEGUARD)),) |
934 ifeq ($($(FREEZEGUARD)),) |
863 $(eval $(call e32freeze,$(E32TARGET))) |
935 # For most freezing activity we need the temporary .def file generated in the final post-link |
864 $(FREEZEGUARD):=1 |
936 # that lists the current exports - FREEZE can therefore be dependent on the final post-linked binary, |
865 endif |
937 # with the side-effect that a build is triggered if someone tries to freeze without having built. |
|
938 # |
|
939 # However, there's one case where we don't want to be dependent on the post-linked binary in this way, |
|
940 # and that's when (a) there are missing exports, (b) the user's aware of them and (c) they're deliberately freezing to |
|
941 # remove them using EFREEZE's remove option. Being dependent on the post-linked binary in this case, where ELF2E32 |
|
942 # actually fails to generate a final binary, would mean that the freeze would never happen and post-linking would |
|
943 # just be continually re-attempted (to fail each time). |
|
944 # |
|
945 # So, as a special case, if the user is explicitly attempting to freeze and perform removals, we make FREEZE dependent |
|
946 # on the temporary .def file instead. This has no rule to actually make it, but gives a hint as to what is wrong if |
|
947 # the users performs a freeze with remove without having explicitly built previously. |
|
948 # |
|
949 ifneq ($(EFREEZE_REMOVE_OPTION),) |
|
950 $(eval $(call e32freeze,$(GENERATED_DEFFILE))) |
|
951 else |
|
952 $(eval $(call e32freeze,$(E32TARGET))) |
|
953 endif |
|
954 $(FREEZEGUARD):=1 |
866 endif |
955 endif |
867 |
956 |
868 endif |
957 endif |
869 |
958 |
870 CLEANTARGETS:=$(CLEANTARGETS) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT),$(CPPFILES_LINKOBJECTS) $(CFILES_LINKOBJECTS)) |
959 CLEANTARGETS:=$(CLEANTARGETS) $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT),$(CPPFILES_LINKOBJECTS) $(CFILES_LINKOBJECTS)) |
910 $(eval e32abiv2_PREFILE_OPTIONS:= $(LICENSERETRY_OPTION) $(PREPROCESSOR_OPTION) $(CPP_OPTION) \ |
999 $(eval e32abiv2_PREFILE_OPTIONS:= $(LICENSERETRY_OPTION) $(PREPROCESSOR_OPTION) $(CPP_OPTION) \ |
911 $(SYMBIAN_CCFLAGS) $(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS) $(CIADEFS)) $(CPP_LANG_OPTION) \ |
1000 $(SYMBIAN_CCFLAGS) $(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS) $(CIADEFS)) $(CPP_LANG_OPTION) \ |
912 $(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$$(call concat, $(PREINCLUDE_OPTION) ,$$(call dblquote,$(PREINCLUDE))) \ |
1001 $(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$$(call concat, $(PREINCLUDE_OPTION) ,$$(call dblquote,$(PREINCLUDE))) \ |
913 $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(USERINCLUDE))) \ |
1002 $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(USERINCLUDE))) \ |
914 $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(SYSTEMINCLUDE))) \ |
1003 $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(SYSTEMINCLUDE))) \ |
915 $(if $(ARMINC),$(if $(RVCTINC), $(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquoteitem,$(RVCTINC)),),) ) |
1004 $(if $(ARMINC),$(if $(RVCTINC), $(COMPILER_SYSTEM_INCLUDE_OPTION)$$(call dblquote,$(RVCTINC)),),) ) |
916 |
1005 |
917 |
1006 |
918 $(e32abiv2_PREFILE): $1 $(PROJECT_META) $(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT) |
1007 $(e32abiv2_PREFILE): $1 $(PROJECT_META) $(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT) |
919 $(call startrule,cia2cpp,,$1) \ |
1008 $(call startrule,cia2cpp,,$1) \ |
920 $(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \ |
1009 $(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \ |
921 $(CC) $(e32abiv2_PREFILE_OPTIONS) $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) && \ |
1010 $(CC) $(e32abiv2_PREFILE_OPTIONS) $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) \ |
922 $(CC) -M $(e32abiv2_PREFILE_OPTIONS) --depend_format=unix \ |
1011 $(if $(NO_DEPEND_GENERATE),,&& $(CC) -M $(e32abiv2_PREFILE_OPTIONS) --depend_format=unix $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) > $(call dblquote,$(e32abiv2_PREFILE).d)) \ |
923 $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) > $(call dblquote,$(e32abiv2_PREFILE).d) \ |
|
924 $(call endrule,cia2cpp) |
1012 $(call endrule,cia2cpp) |
925 |
1013 |
926 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME) |
1014 ifeq ($(NO_DEPEND_GENERATE),) |
927 ifneq "$(DEPENDFILE)" "" |
1015 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME) |
928 ifeq ($(NO_DEPEND_INCLUDE),) |
1016 endif |
929 ifeq "$(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS)))" "" |
1017 |
930 -include $(DEPENDFILE) |
1018 ifneq ($(DEPENDFILE),) |
931 endif |
1019 ifeq ($(NO_DEPEND_INCLUDE),) |
932 endif |
1020 ifeq ($(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS))),) |
|
1021 -include $(DEPENDFILE) |
|
1022 endif |
|
1023 endif |
933 endif |
1024 endif |
934 |
1025 |
935 endef |
1026 endef |
936 |
1027 |
937 # Create a rule for each cia file |
1028 # Create a rule for each cia file |
958 |
1049 |
959 $(1): $(2) $(PROJECT_META) $(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT) |
1050 $(1): $(2) $(PROJECT_META) $(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT) |
960 $(call startrule,asmcompile,,$(2)) \ |
1051 $(call startrule,asmcompile,,$(2)) \ |
961 $(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \ |
1052 $(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \ |
962 $(CC) $(e32abiv2_asm_OPTIONS) \ |
1053 $(CC) $(e32abiv2_asm_OPTIONS) \ |
963 $(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME)) \ |
1054 $(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME))) \ |
964 $$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ \ |
1055 $$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ \ |
965 $(call endrule,asmcompile) |
1056 $(call endrule,asmcompile) |
|
1057 ifeq ($(NO_DEPEND_GENERATE),) |
966 $(call startrule,asmdependencies) \ |
1058 $(call startrule,asmdependencies) \ |
967 $(CC) -M $(subst --no_rtti,,$(e32abiv2_asm_OPTIONS)) --depend_format=unix \ |
1059 $(CC) -M $(subst --no_rtti,,$(e32abiv2_asm_OPTIONS)) --depend_format=unix \ |
968 $(OUTPUT_OPTION) $$@ $$(call dblquote,$2) > $(call dblquote,$(DEPENDFILENAME)) \ |
1060 $(OUTPUT_OPTION) $$@ $$(call dblquote,$2) > $(call dblquote,$(DEPENDFILENAME)) \ |
969 $(call endrule,asmdependencies) |
1061 $(call endrule,asmdependencies) |
970 |
1062 endif |
971 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME) |
1063 |
972 ifneq "$(DEPENDFILE)" "" |
1064 ifeq ($(NO_DEPEND_GENERATE),) |
973 ifeq ($(NO_DEPEND_INCLUDE),) |
1065 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME) |
974 ifeq "$(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS)))" "" |
1066 endif |
975 -include $(DEPENDFILE) |
1067 |
976 endif |
1068 ifneq ($(DEPENDFILE),) |
977 endif |
1069 ifeq ($(NO_DEPEND_INCLUDE),) |
|
1070 ifeq ($(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS))),) |
|
1071 -include $(DEPENDFILE) |
|
1072 endif |
|
1073 endif |
978 endif |
1074 endif |
979 |
1075 |
980 CREATABLEPATHS:=$$(CREATABLEPATHS) $(INTERMEDIATEPATH) |
1076 CREATABLEPATHS:=$$(CREATABLEPATHS) $(INTERMEDIATEPATH) |
981 |
1077 |
982 endef |
1078 endef |