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.
--- 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