1) Fix for Bug 3059 - bootstrap.mk breaks Raptor's include-path GCC_SURGE
authormikek
Fri, 25 Jun 2010 18:24:47 +0100
branchGCC_SURGE
changeset 55 59148e28d9f6
parent 53 d23856282806
child 56 626366955efb
1) Fix for Bug 3059 - bootstrap.mk breaks Raptor's include-path 2) Fix for Bug 3062 - bootstrap.mk mishandles vpath rules 3) Fix for Bug 3076 - [GCCE] bootstrap.mk invokes the wrong tools for gcce (strictly one half of the fix. The other half is in /kernelhwsrv/bsptemplate/asspandvariant/template_variant/bld.inf) 4) Fix for Bug 3107 - [GCCE] bootstrap.mk needs new assembler and linker commands for GCCE. 5) Fix for Bug 3109 - bootstrap.mk needs additional platform-abstraction macros for Linux/gcce builds.
toolsandutils/buildsystem/extension/base/bootstrap.mk
toolsandutils/buildsystem/shell/cmd.mk
toolsandutils/buildsystem/shell/sh.mk
--- a/toolsandutils/buildsystem/extension/base/bootstrap.mk	Wed Jun 23 15:48:26 2010 +0100
+++ b/toolsandutils/buildsystem/extension/base/bootstrap.mk	Fri Jun 25 18:24:47 2010 +0100
@@ -13,10 +13,15 @@
 # Description:
 #
 
-# To ensure that EPOCROOT always ends with a forward slash. 
+# To ensure that EPOCROOT always ends with a forward slash.
 TMPROOT:=$(subst \,/,$(EPOCROOT))
 EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
 
+HOST_PLATFORM := $(patsubst linux%,linux,$(HOSTPLATFORM_DIR))
+ifeq (linux,$(HOST_PLATFORM))
+INC_PATH := $(EPOCROOT)epoc32/include/platform
+endif
+
 ifndef CPU
 CPU := arm
 endif
@@ -75,6 +80,8 @@
 endif
 
 ifeq "$(CPU)" "arm"
+
+ifdef ARMCC
 ASMINCPATH := . $(EPOCBLDABS) $(ASMINCPATH) $(EXTENSION_ROOT) $(EPOCCPUINC)
 ARMASM_OUT := $(shell armasm 2>&1)
 ARMASM_OUT_RVCT := $(wordlist 1,6,$(ARMASM_OUT))
@@ -95,6 +102,27 @@
 endif
 endif
 
+ifdef GCCE
+TOOLVER := GCCE
+ifeq (linux,$(HOST_PLATFORM))
+EXE_SUFFIX :=
+else
+EXE_SUFFIX := .exe
+endif
+ifdef SBS_GCCE432BIN
+GCCEBIN := $(SBS_GCCE432BIN)
+else ifdef SBS_GCCE433BIN
+GCCEBIN := $(SBS_GCCE433BIN)
+else ifdef SBS_GCCE441BIN
+GCCEBIN := $(SBS_GCCE441BIN)
+endif
+GCCEASM := $(GCCEBIN)/arm-none-symbianelf-as$(EXE_SUFFIX)
+GCCELD := $(GCCEBIN)/arm-none-symbianelf-ld$(EXE_SUFFIX)
+GCCESTRIP := $(GCCEBIN)/arm-none-symbianelf-strip$(EXE_SUFFIX)
+endif
+
+endif
+
 ifeq "$(MEMMODEL)" "direct"
 CFG_MM := CFG_MMDirect
 endif
@@ -242,6 +270,42 @@
                         $(ERASE) $(call slash2generic,$(TEMPTRG)) 
                 endef
         endif
+        ifeq "$(TOOLVER)" "GCCE"
+                ASM_MACROS += USE_CXSF GNU_ASM
+                ASM := $(GCCEASM)
+				ASM_LIST_OPTS := -acdhlms
+                LINK := $(GCCELD)
+                STRIP := $(GCCESTRIP)
+                SRCEXT := s
+                INCEXT := ginc
+                OBJEXT := o
+                EXEEXT := in
+                ASMINCPATHCMD := $(foreach dir,$(ASMINCPATH),$(join -I ,$(dir)))
+                ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),--defsym $(macro)=1 )
+				AFLAGS := -g --keep-locals $(ASM_MACRO_CMD) $(ASMINCPATHCMD)
+				LFLAGS := --Ttext $(LINKBASE) --entry $(LINKBASE) --print-map
+                SYMOPT := -symdefs
+                ASMTYP := AS
+                PROCESS_INCLUDES := 1
+                ifndef LINKFILE
+                        LINKFILE := bootstrap.lnk
+                endif
+                define do_asm
+                        perl $(EPOCROOT)/epoc32/tools/armasm2as.pl $< $(join $(basename $@),.ss)
+                        $(ASM) $(AFLAGS) -o $@ $(ASM_LIST_OPTS)=$(join $(basename $@),.lst) $(join $(basename $@),.ss)
+                endef
+                define do_link
+                        $(call ifexistf,$(join $(basename $@),.lnk),$(ERASE) $(call slash2generic,$(join $(basename $@),.lnk)) )
+                        $(COPY) $(call normalise_path,$(filter %.lnk,$^)) $(join $(basename $@),.lnk)
+                        $(LINK) $(LFLAGS) $(SYMOPT)=$(join $(basename $@),.sym) -o $@ $(filter %.$(OBJEXT),$^)
+                        $(COPY) $@ $(join $(basename $(TRG)),.sym)
+                endef
+                define do_strip
+                        $(STRIP) -O binary -o $(TEMPTRG) $<
+                        $(COPY) $(TEMPTRG) $@
+                        $(ERASE) $(call slash2generic,$(TEMPTRG)) 
+                endef
+        endif
 endif
 
 
@@ -298,7 +362,7 @@
 vpath %.lnk . $(EXTENSION_ROOT) $(EPOCCPUINC)
 
 # How to link the object files 
-$(EPOCBLDABS)/$(NAME).$(EXEEXT): $(LINKOBJECTS) $(LINKFILE) $(call pipe,$(EPOCBLDABS)) 
+$(EPOCBLDABS)/$(NAME).$(EXEEXT): $(LINKOBJECTS) $(LINKFILE) $(call pipe,$(EPOCBLDABS))
 	$(do_link)
 
 # How to strip linked object to binary
@@ -314,7 +378,7 @@
 	perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
 
 $(FULLINCLUDES) : $(EPOCBLDABS)/%.$(INCEXT) : %.inc $(call pipe,$(EPOCBLDABS))
-	perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
+	perl $(EPOCROOT)/epoc32/tools/armasm2as.pl $< $(EPOCBLDABS)/$(notdir $@)
 
 $(FULLBASEOBJECTS) : $(EPOCBLDABS)/%.$(OBJEXT) : %.$(SRCEXT) $(FULLINCLUDES) $(FULLBASEINCLUDES) $(FULLGENINCLUDES) $(call pipe,$(EPOCBLDABS))
 	$(do_asm)
--- a/toolsandutils/buildsystem/shell/cmd.mk	Wed Jun 23 15:48:26 2010 +0100
+++ b/toolsandutils/buildsystem/shell/cmd.mk	Fri Jun 25 18:24:47 2010 +0100
@@ -132,5 +132,16 @@
 1
 endef
 
+# Macro to execute a command if a file exists.
+define ifexistf
+if exist $(1) $(2)
+endef
+
+# Macro ensure path delimiters are the right sort.
+define normalise_path
+$(subst /,\,$(1))
+endef
+
+
 # Configuration needs to be returned as upper case for abld
 CONFIGURATION:=REL
--- a/toolsandutils/buildsystem/shell/sh.mk	Wed Jun 23 15:48:26 2010 +0100
+++ b/toolsandutils/buildsystem/shell/sh.mk	Fri Jun 25 18:24:47 2010 +0100
@@ -113,5 +113,15 @@
 -$(ERASE) -f $(1)
 endef
 
+# Macro to execute a command if a file exists.
+define ifexistf
+if [ -f $(1) ]; then $(2); fi
+endef
+
+# Macro ensure path delimiters are the right sort.
+define normalise_path
+$(subst \,/,$(1))
+endef
+
 # Configuration needs to be returned as upper case for abld
 CONFIGURATION:=rel