# HG changeset patch # User mikek # Date 1277486687 -3600 # Node ID 59148e28d9f6f921a1ac360b6d4ec8490eb3937c # Parent d23856282806ec555389171fe7ee5ce20282c498 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. diff -r d23856282806 -r 59148e28d9f6 toolsandutils/buildsystem/extension/base/bootstrap.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) diff -r d23856282806 -r 59148e28d9f6 toolsandutils/buildsystem/shell/cmd.mk --- 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 diff -r d23856282806 -r 59148e28d9f6 toolsandutils/buildsystem/shell/sh.mk --- 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