diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5aa9ee8 --- /dev/null +++ b/Makefile @@ -0,0 +1,169 @@ +# +# Copyright (c) 2013, ARM Limited. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# Neither the name of ARM nor the names of its contributors may be used +# to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +# Decrease the verbosity of the make script +# can be made verbose by passing V=1 at the make command line +ifdef V + KBUILD_VERBOSE = $(V) +else + KBUILD_VERBOSE = 0 +endif + +ifeq "$(KBUILD_VERBOSE)" "0" + Q=@ +else + Q= +endif + +DEBUG ?= 0 +BL_COMMON_OBJS = misc_helpers.o cache_helpers.o tlb_helpers.o \ + semihosting_call.o mmio.o pl011.o semihosting.o \ + std.o bl_common.o platform_helpers.o sysreg_helpers.o + +ARCH := aarch64 + +all: $(patsubst %,%.bin,bl1 bl2 bl31) ; + + +#$(info $(filter bl2.%, $(MAKECMDGOALS))) +#$(info $(filter bl1.%, $(MAKECMDGOALS))) +#$(info $(MAKECMDGOALS)) + +$(info Including bl1.mk) +include bl1/bl1.mk + +$(info Including bl2.mk) +include bl2/bl2.mk + +$(info Including bl31.mk) +include bl31/bl31.mk + +OBJS += $(BL_COMMON_OBJS) + +INCLUDES += -Ilib/include/ -Iinclude/aarch64/ -Iinclude/ \ + -Idrivers/arm/interconnect/cci-400/ \ + -Idrivers/arm/peripherals/pl011/ \ + -Iplat/fvp -Idrivers/power \ + -Iarch/system/gic -Icommon/psci + +ASFLAGS += -D__ASSEMBLY__ $(INCLUDES) +CFLAGS := -Wall -std=c99 -c -Os -DDEBUG=$(DEBUG) $(INCLUDES) ${CFLAGS} + +LDFLAGS += -O1 +BL1_LDFLAGS := -Map=$(BL1_MAPFILE) --script $(BL1_LINKERFILE) --entry=$(BL1_ENTRY_POINT) +BL2_LDFLAGS := -Map=$(BL2_MAPFILE) --script $(BL2_LINKERFILE) --entry=$(BL2_ENTRY_POINT) +BL31_LDFLAGS := -Map=$(BL31_MAPFILE) --script $(BL31_LINKERFILE) --entry=$(BL31_ENTRY_POINT) + + +vpath %.ld.S bl1:bl2:bl31 +vpath %.c bl1:bl2:bl31 +vpath %.c bl1/${ARCH}:bl2/${ARCH}:bl31/${ARCH} +vpath %.S bl1/${ARCH}:bl2/${ARCH}:bl31/${ARCH} + + +ifneq ($(DEBUG), 0) +#CFLAGS += -g -O0 +CFLAGS += -g +# -save-temps -fverbose-asm +ASFLAGS += -g -Wa,--gdwarf-2 +endif + + +CC = $(CROSS_COMPILE)gcc +CPP = $(CROSS_COMPILE)cpp +AS = $(CROSS_COMPILE)gcc +AR = $(CROSS_COMPILE)ar +LD = $(CROSS_COMPILE)ld +OC = $(CROSS_COMPILE)objcopy +OD = $(CROSS_COMPILE)objdump +NM = $(CROSS_COMPILE)nm +PP = $(CROSS_COMPILE)gcc -E $(CFLAGS) + + +distclean: clean + @echo " DISTCLEAN" + $(Q)rm -rf *.zi + $(Q)rm -rf *.dump + $(Q)rm -rf *.bin + $(Q)rm -f *.axf + $(Q)rm -f *.i *.s + $(Q)rm -f *.ar + $(Q)rm -f *.map + $(Q)rm -f *.scf + $(Q)rm -f *.txt + $(Q)rm -f *.elf + $(Q)rm -rf *.bin + $(Q)rm -f $(LISTFILE) + +clean: + @echo " CLEAN" + $(Q)rm -f *.o *.ld + +.PHONY: dump + +dump: + @echo " OBJDUMP" + $(OD) -d bl1.elf > bl1.dump + $(OD) -d bl2.elf > bl2.dump + $(OD) -d bl31.elf > bl31.dump + +%.o: %.S + @echo " AS $<" + $(Q)$(AS) $(ASFLAGS) -c $< -o $@ + +%.o: %.c + @echo " CC $<" + $(Q)$(CC) $(CFLAGS) -c $< -o $@ + +%.ld: %.ld.S + @echo " LDS $<" + $(Q)$(AS) $(ASFLAGS) -P -E $< -o $@ + + +bl1.elf: $(OBJS) $(BL1_OBJS) bl1.ld + @echo " LD $@" + $(Q)$(LD) -o $@ $(LDFLAGS) $(BL1_LDFLAGS) $(OBJS) $(BL1_OBJS) + @echo "Built $@ successfully" + @echo + +bl2.elf: $(OBJS) $(BL2_OBJS) bl2.ld + @echo " LD $@" + $(Q)$(LD) -o $@ $(LDFLAGS) $(BL2_LDFLAGS) $(OBJS) $(BL2_OBJS) + @echo "Built $@ successfully" + @echo + +bl31.elf: $(OBJS) $(BL31_OBJS) bl31.ld + @echo " LD $@" + $(Q)$(LD) -o $@ $(LDFLAGS) $(BL31_LDFLAGS) $(OBJS) $(BL31_OBJS) + @echo "Built $@ successfully" + @echo + +%.bin: %.elf + $(OC) -O binary $< $@ |