toolsandutils/buildsystem/extension/base/bootstrap.mk
branchGCC_SURGE
changeset 55 59148e28d9f6
parent 27 71c3276dda83
child 57 e69da8462916
equal deleted inserted replaced
53:d23856282806 55:59148e28d9f6
    11 # Contributors:
    11 # Contributors:
    12 #
    12 #
    13 # Description:
    13 # Description:
    14 #
    14 #
    15 
    15 
    16 # To ensure that EPOCROOT always ends with a forward slash. 
    16 # To ensure that EPOCROOT always ends with a forward slash.
    17 TMPROOT:=$(subst \,/,$(EPOCROOT))
    17 TMPROOT:=$(subst \,/,$(EPOCROOT))
    18 EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
    18 EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
       
    19 
       
    20 HOST_PLATFORM := $(patsubst linux%,linux,$(HOSTPLATFORM_DIR))
       
    21 ifeq (linux,$(HOST_PLATFORM))
       
    22 INC_PATH := $(EPOCROOT)epoc32/include/platform
       
    23 endif
    19 
    24 
    20 ifndef CPU
    25 ifndef CPU
    21 CPU := arm
    26 CPU := arm
    22 endif
    27 endif
    23 
    28 
    73 ifdef EXTRA_INC_PATH
    78 ifdef EXTRA_INC_PATH
    74 ASMINCPATH := $(EXTRA_INC_PATH)
    79 ASMINCPATH := $(EXTRA_INC_PATH)
    75 endif
    80 endif
    76 
    81 
    77 ifeq "$(CPU)" "arm"
    82 ifeq "$(CPU)" "arm"
       
    83 
       
    84 ifdef ARMCC
    78 ASMINCPATH := . $(EPOCBLDABS) $(ASMINCPATH) $(EXTENSION_ROOT) $(EPOCCPUINC)
    85 ASMINCPATH := . $(EPOCBLDABS) $(ASMINCPATH) $(EXTENSION_ROOT) $(EPOCCPUINC)
    79 ARMASM_OUT := $(shell armasm 2>&1)
    86 ARMASM_OUT := $(shell armasm 2>&1)
    80 ARMASM_OUT_RVCT := $(wordlist 1,6,$(ARMASM_OUT))
    87 ARMASM_OUT_RVCT := $(wordlist 1,6,$(ARMASM_OUT))
    81 ARMASM_OUT_6 := $(word 6,$(ARMASM_OUT))
    88 ARMASM_OUT_6 := $(word 6,$(ARMASM_OUT))
    82 
    89 
    91         OP := --
    98         OP := --
    92 endif
    99 endif
    93 ifeq "$(ARMASM_OUT_6)" "2.37"
   100 ifeq "$(ARMASM_OUT_6)" "2.37"
    94         TOOLVER := 211
   101         TOOLVER := 211
    95 endif
   102 endif
       
   103 endif
       
   104 
       
   105 ifdef GCCE
       
   106 TOOLVER := GCCE
       
   107 ifeq (linux,$(HOST_PLATFORM))
       
   108 EXE_SUFFIX :=
       
   109 else
       
   110 EXE_SUFFIX := .exe
       
   111 endif
       
   112 ifdef SBS_GCCE432BIN
       
   113 GCCEBIN := $(SBS_GCCE432BIN)
       
   114 else ifdef SBS_GCCE433BIN
       
   115 GCCEBIN := $(SBS_GCCE433BIN)
       
   116 else ifdef SBS_GCCE441BIN
       
   117 GCCEBIN := $(SBS_GCCE441BIN)
       
   118 endif
       
   119 GCCEASM := $(GCCEBIN)/arm-none-symbianelf-as$(EXE_SUFFIX)
       
   120 GCCELD := $(GCCEBIN)/arm-none-symbianelf-ld$(EXE_SUFFIX)
       
   121 GCCESTRIP := $(GCCEBIN)/arm-none-symbianelf-strip$(EXE_SUFFIX)
       
   122 endif
       
   123 
    96 endif
   124 endif
    97 
   125 
    98 ifeq "$(MEMMODEL)" "direct"
   126 ifeq "$(MEMMODEL)" "direct"
    99 CFG_MM := CFG_MMDirect
   127 CFG_MM := CFG_MMDirect
   100 endif
   128 endif
   240                         $(STRIP) -O binary -o $(TEMPTRG) $<
   268                         $(STRIP) -O binary -o $(TEMPTRG) $<
   241                         $(COPY) $(TEMPTRG) $@
   269                         $(COPY) $(TEMPTRG) $@
   242                         $(ERASE) $(call slash2generic,$(TEMPTRG)) 
   270                         $(ERASE) $(call slash2generic,$(TEMPTRG)) 
   243                 endef
   271                 endef
   244         endif
   272         endif
       
   273         ifeq "$(TOOLVER)" "GCCE"
       
   274                 ASM_MACROS += USE_CXSF GNU_ASM
       
   275                 ASM := $(GCCEASM)
       
   276 				ASM_LIST_OPTS := -acdhlms
       
   277                 LINK := $(GCCELD)
       
   278                 STRIP := $(GCCESTRIP)
       
   279                 SRCEXT := s
       
   280                 INCEXT := ginc
       
   281                 OBJEXT := o
       
   282                 EXEEXT := in
       
   283                 ASMINCPATHCMD := $(foreach dir,$(ASMINCPATH),$(join -I ,$(dir)))
       
   284                 ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),--defsym $(macro)=1 )
       
   285 				AFLAGS := -g --keep-locals $(ASM_MACRO_CMD) $(ASMINCPATHCMD)
       
   286 				LFLAGS := --Ttext $(LINKBASE) --entry $(LINKBASE) --print-map
       
   287                 SYMOPT := -symdefs
       
   288                 ASMTYP := AS
       
   289                 PROCESS_INCLUDES := 1
       
   290                 ifndef LINKFILE
       
   291                         LINKFILE := bootstrap.lnk
       
   292                 endif
       
   293                 define do_asm
       
   294                         perl $(EPOCROOT)/epoc32/tools/armasm2as.pl $< $(join $(basename $@),.ss)
       
   295                         $(ASM) $(AFLAGS) -o $@ $(ASM_LIST_OPTS)=$(join $(basename $@),.lst) $(join $(basename $@),.ss)
       
   296                 endef
       
   297                 define do_link
       
   298                         $(call ifexistf,$(join $(basename $@),.lnk),$(ERASE) $(call slash2generic,$(join $(basename $@),.lnk)) )
       
   299                         $(COPY) $(call normalise_path,$(filter %.lnk,$^)) $(join $(basename $@),.lnk)
       
   300                         $(LINK) $(LFLAGS) $(SYMOPT)=$(join $(basename $@),.sym) -o $@ $(filter %.$(OBJEXT),$^)
       
   301                         $(COPY) $@ $(join $(basename $(TRG)),.sym)
       
   302                 endef
       
   303                 define do_strip
       
   304                         $(STRIP) -O binary -o $(TEMPTRG) $<
       
   305                         $(COPY) $(TEMPTRG) $@
       
   306                         $(ERASE) $(call slash2generic,$(TEMPTRG)) 
       
   307                 endef
       
   308         endif
   245 endif
   309 endif
   246 
   310 
   247 
   311 
   248 
   312 
   249 # Generic source files
   313 # Generic source files
   296 vpath %.$(SRCEXT) . $(EXTRA_SRC_PATH) $(EXTENSION_ROOT) $(BASESRCPATH)
   360 vpath %.$(SRCEXT) . $(EXTRA_SRC_PATH) $(EXTENSION_ROOT) $(BASESRCPATH)
   297 vpath %.$(OBJEXT) $(EPOCBLDABS)
   361 vpath %.$(OBJEXT) $(EPOCBLDABS)
   298 vpath %.lnk . $(EXTENSION_ROOT) $(EPOCCPUINC)
   362 vpath %.lnk . $(EXTENSION_ROOT) $(EPOCCPUINC)
   299 
   363 
   300 # How to link the object files 
   364 # How to link the object files 
   301 $(EPOCBLDABS)/$(NAME).$(EXEEXT): $(LINKOBJECTS) $(LINKFILE) $(call pipe,$(EPOCBLDABS)) 
   365 $(EPOCBLDABS)/$(NAME).$(EXEEXT): $(LINKOBJECTS) $(LINKFILE) $(call pipe,$(EPOCBLDABS))
   302 	$(do_link)
   366 	$(do_link)
   303 
   367 
   304 # How to strip linked object to binary
   368 # How to strip linked object to binary
   305 $(TRG): $(EPOCBLDABS)/$(NAME).$(EXEEXT)
   369 $(TRG): $(EPOCBLDABS)/$(NAME).$(EXEEXT)
   306 	$(do_strip)
   370 	$(do_strip)
   312 
   376 
   313 $(FULLBASEINCLUDES) : $(EPOCBLDABS)/%.$(INCEXT) : %.inc $(call pipe,$(EPOCBLDABS))
   377 $(FULLBASEINCLUDES) : $(EPOCBLDABS)/%.$(INCEXT) : %.inc $(call pipe,$(EPOCBLDABS))
   314 	perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
   378 	perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
   315 
   379 
   316 $(FULLINCLUDES) : $(EPOCBLDABS)/%.$(INCEXT) : %.inc $(call pipe,$(EPOCBLDABS))
   380 $(FULLINCLUDES) : $(EPOCBLDABS)/%.$(INCEXT) : %.inc $(call pipe,$(EPOCBLDABS))
   317 	perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
   381 	perl $(EPOCROOT)/epoc32/tools/armasm2as.pl $< $(EPOCBLDABS)/$(notdir $@)
   318 
   382 
   319 $(FULLBASEOBJECTS) : $(EPOCBLDABS)/%.$(OBJEXT) : %.$(SRCEXT) $(FULLINCLUDES) $(FULLBASEINCLUDES) $(FULLGENINCLUDES) $(call pipe,$(EPOCBLDABS))
   383 $(FULLBASEOBJECTS) : $(EPOCBLDABS)/%.$(OBJEXT) : %.$(SRCEXT) $(FULLINCLUDES) $(FULLBASEINCLUDES) $(FULLGENINCLUDES) $(call pipe,$(EPOCBLDABS))
   320 	$(do_asm)
   384 	$(do_asm)
   321 
   385 
   322 $(FULLOBJECTS) : $(EPOCBLDABS)/%.$(OBJEXT) : %.$(SRCEXT) $(FULLINCLUDES) $(FULLBASEINCLUDES) $(FULLGENINCLUDES) $(call pipe,$(EPOCBLDABS))
   386 $(FULLOBJECTS) : $(EPOCBLDABS)/%.$(OBJEXT) : %.$(SRCEXT) $(FULLINCLUDES) $(FULLBASEINCLUDES) $(FULLGENINCLUDES) $(call pipe,$(EPOCBLDABS))