# # Copyright (C) 2014-2017 Amlogic, Inc. All rights reserved. # # This software is provided to you pursuant to Software License Agreement # (SLA) with Amlogic Inc ("Amlogic"). This software may be used # only in accordance with the terms of this agreement. # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions and derivatives of the Software. # # Redistribution and use in source and binary forms, with or without # modification is strictly prohibited without prior written permission from # Amlogic. # # 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. # # 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 OWNER 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. # current_dir := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) prebuild_gcc := $(current_dir)/../../../prebuild/ $(info bl33z ARCH=$(AARCH)) ifeq ($(AARCH),aarch64) DIR_EXIST := $(shell [ -d $(prebuild_gcc)/arm-gnu-toolchain-13.3.rel1-x86_64-aarch64-none-elf ] && echo "1" || echo "0" ) ifeq ($(DIR_EXIST),1) CROSS_COMPILE :=$(prebuild_gcc)/arm-gnu-toolchain-13.3.rel1-x86_64-aarch64-none-elf/bin/aarch64-none-elf- else CROSS_COMPILE ?=/opt/arm-gnu-toolchain-13.3.rel1-x86_64-aarch64-none-elf/bin/aarch64-none-elf- endif endif ifeq ($(AARCH),aarch32) CROSS_COMPILE ?=/opt/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf- endif export CROSS_COMPILE $(info CROSS_COMPILE=$(CROSS_COMPILE)) ifeq ($(strip $(CROSS_COMPILE)),) $(error ### error ### CROSS_COMPILE is empty, please check toolchain configuration.) endif ################################################################################ # Toolchain ################################################################################ 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 ASFLAGS_aarch64 = -mgeneral-regs-only TF_CFLAGS_aarch64 = -mgeneral-regs-only -mstrict-align ASFLAGS_aarch32 = -march=armv8-a TF_CFLAGS_aarch32 = -march=armv8-a ASFLAGS += -nostdinc -ffreestanding -Wa,--fatal-warnings \ -Werror -Wmissing-include-dirs \ -D__ASSEMBLY__ $(ASFLAGS_$(ARCH)) \ ${DEFINES} ${INCLUDES} TF_CFLAGS += -nostdinc -ffreestanding -Wall \ -Werror -Wmissing-include-dirs \ -std=c99 -c -Os \ $(TF_CFLAGS_$(ARCH)) \ ${DEFINES} ${INCLUDES} TF_CFLAGS += -ffunction-sections -fdata-sections LDFLAGS += --fatal-warnings -O1 LDFLAGS += --gc-sections ARMCC_$(CONFIG_ENABLE_ARMCC_DEBUGROM)=$(shell echo __CC_ARM | armcc -E - | tail -n 1) ifneq ($(ARMCC_y),) targetCompiler=arm else targetCompiler=gcc endif MAKEFLAGS += --no-print-directory .PHONY: all clean realclean distclean PLAT = $(info Building PLAT = ${PLAT}) SOC = $(shell echo ${PLAT} | cut -d '_' -f 1) ifeq ($(SOC),s4d) SOC = s4 endif ifeq ($(SOC),t5d) SOC = t5 endif ifeq ($(SOC),t7c) SOC = t7 endif #list="sc2 s4 t3 t7 p1 a1 a5 t5w" list=$(shell find ./include/asm/ -name "regs.h" | cut -d '/' -f 4 | cut -d '-' -f 2- | sort) $(info amlogic soc list: $(list)) ifeq ($(findstring $(SOC), $(list)), $(SOC)) $(info support the soc: $(SOC)) else $(error soc($(SOC)) is not support, exit!!!) endif all: $(Q)$(MAKE) -f Makefile.$(targetCompiler) PLAT=${SOC} realclean distclean: $(Q)$(MAKE) -f Makefile.$(targetCompiler) PLAT=${PLAT} distclean