diff -r 000000000000 -r 83f4b4db085c toolsandutils/buildsystem/extension/base/integrator_lmnand2_miniboot.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolsandutils/buildsystem/extension/base/integrator_lmnand2_miniboot.mk Tue Feb 02 01:39:43 2010 +0200 @@ -0,0 +1,215 @@ +# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +# To guarantee there is a slash at the end of EPOCROOT in case there is not. +# This is needed to ensure compatibility with SBSv1. +TMPROOT:=$(subst \,/,$(EPOCROOT)) +EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/ + +include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk + + +## Set the source directory +BLDINFDIR := ../../../unref/orphan/cedgen/base/integrator/. +SRCDIR = $(EXTENSION_ROOT)/nandboot/miniboot +SPECSRCDIR = $(EXTENSION_ROOT)/../integratormotherboard/nandboot/miniboot +TARGETDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH) +EPOCINCDIR = $(EPOCROOT)epoc32/include/integrator/logic/lmnand2 + +#Rules +vpath %.s . $(SPECSRCDIR) $(SRCDIR) +vpath %.inc . $(SRCDIR) $(SPECSRCDIR) $(EPOCINCDIR) +vpath %.ginc . $(BUILDLOC) + + +# Build directory (EPOCBLD too long) +#BUILDLOC = $(EPOCROOT)epoc32/build/integrator/logic/lmnand2/nandboot/miniboot/$(PLATFORM_PATH)/$(CFG_PATH) +BUILDLOC = $(EPOCBLD)/$(PLATFORM_PATH)/$(CFG_PATH) + +## Set the target name +INCLUDES := nand.inc +SPECINCLUDES := arm.inc +EPOCINCLUDES := nand_fbr_offset.inc + +SRC := miniboot.s arm.s +TARGET = $(TARGETDIR)/_lmnand2_miniboot.bin +TMPTARGET = $(BUILDLOC)/miniboot.exe + +# Set the code and data base addresses +LINKBASE = 0x0000000 + +ARMASM_OUT := $(shell armasm 2>&1) +ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT)) +# Use GCC toolchain if no other is available +TOOLVER := GCC +RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_4))) +ifeq "$(RVCTSTR)" "RVCT" + TOOLVER := RVCT + OP := -- + OB := o +endif + +ifeq "$(TOOLVER)" "RVCT" + ASM_MACROS += USE_CXSF + + ASM := armasm + LINK := armlink + FROMELF := fromelf + OBJEXT := o + INCEXT := inc + + ASMINCPATHCMD := $(foreach dir,$(SRCDIR),$(join -I ,$(dir))) $(foreach dir,$(EPOCINCDIR),$(join -I ,$(dir))) + SPECASMINCPATHCMD := $(foreach dir,$(SPECSRCDIR),$(join -I ,$(dir))) + ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),$(OP)predefine "$(macro) SETL {TRUE}") + AFLAGS := -g $(OP)keep $(ASM_MACRO_CMD) $(ASMINCPATHCMD) $(SPECASMINCPATHCMD) + + SYMOPT := $(OP)symdefs + ASMTYP := ARMASM + LINKFILE := + define do_asm + $(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $< + endef + + LFLAGS := $(OP)ro-base $(LINKBASE) $(OP)entry $(LINKBASE) $(OP)map + + define do_link + $(LINK) $(LFLAGS) -$(OB) $@ $(filter %.$(OBJEXT),$^) + endef + + define do_strip + $(FROMELF) $(OP)bin $(OP)output $@ $< + endef +endif + + +#GCC build options +ifeq "$(TOOLVER)" "GCC" + ASM := as + AFLAGS := -mapcs-32 -R -n -I$(BUILDLOC) + + LINKFLAGS = -n -x --section-alignment 4 --file-alignment 2 -no-whole-archive + OBJEXT := o + INCEXT := ginc + LINKFILE = $(SRCDIR)/miniboot.lnk + define do_includes + perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@ + endef + define do_asm + perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $(join $(basename $@),.s) + $(AS) $(AFLAGS) -o $@ $(join $(basename $@),.s) + endef + define do_link + ld -o "$(TMPTARGET)" --start $(FULLOBJECTS) --script=$(LINKFILE) + endef + define do_strip + strip -O binary -o "$(TARGET)" "$(TMPTARGET)" + $(ERASE) $(call slash2generic,"$(TMPTARGET)") + # $(ERASE) "$(TMPTARGET)" + echo Built $(TARGET) + endef + PROCESS_INCLUDES := 1 +endif + + +OBJECTS := $(foreach f,$(SRC),$(basename $(f)).$(OBJEXT)) + +FULLOBJECTS := $(addprefix $(BUILDLOC)/,$(OBJECTS)) + + +#Include processing + + +ifdef PROCESS_INCLUDES + +GCCSRC := $(addprefix $(BUILDLOC)/,$(SRC)) + +FULLINCLUDES := $(foreach f,$(INCLUDES),$(basename $(f)).$(INCEXT)) +FULLINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLINCLUDES)) + +SPECFULLINCLUDES := $(foreach f,$(SPECINCLUDES),$(basename $(f)).$(INCEXT)) +SPECFULLINCLUDES := $(addprefix $(BUILDLOC)/,$(SPECFULLINCLUDES)) + +EPOCFULLINCLUDES := $(foreach f,$(EPOCINCLUDES),$(basename $(f)).$(INCEXT)) +EPOCFULLINCLUDES := $(addprefix $(BUILDLOC)/,$(EPOCFULLINCLUDES)) + +#Creation of headers +$(FULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc + $(do_includes) +$(SPECFULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc + $(do_includes) +$(EPOCFULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc + $(do_includes) + +else + +#Armasm sytax specifc asm rule goes here +FULLINCLUDES := $(addprefix $(SRCDIR)/,$(INCLUDES)) +SPECFULLINCLUDES:= $(addprefix $(SPECSRCDIR)/,$(SPECINCLUDES)) +EPOCFULLINCLUDES:= $(addprefix $(EPOCINCDIR)/,$(EPOCINCLUDES)) + +endif + + +#Strip +$(TARGET) : $(TMPTARGET) + $(do_strip) + +#Link +$(TMPTARGET) : $(FULLOBJECTS) + $(do_link) + +#Objects +$(FULLOBJECTS): $(BUILDLOC)/%.$(OBJEXT): %.s $(FULLINCLUDES) $(SPECFULLINCLUDES) $(EPOCFULLINCLUDES) + $(do_asm) + +# make directories +$(TARGETDIR): + $(call ifnotexistd,"$(TARGETDIR)") + +$(BUILDLOC): + $(call ifnotexistd,"$(BUILDLOC)") + + +MAKMAKE : + echo Nothing to do + +FREEZE : + echo Nothing to do + +LIB : + echo Nothing to do + +CLEANLIB : + echo Nothing to do + +RESOURCE : + echo Nothing to do + +FINAL : + echo Nothing to do + + + +BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET) + +RELEASABLES : + @echo "$(TARGET)" + +CLEAN : + -$(ERASE) $(call slash2generic,"$(TARGET)") + -$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*") +# -$(ERASE) "$(TARGET)" +# -$(ERASE) "$(BUILDLOC)/*.*" +