1*54fd6939SJiyong Park# 2*54fd6939SJiyong Park# Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3*54fd6939SJiyong Park# 4*54fd6939SJiyong Park# SPDX-License-Identifier: BSD-3-Clause 5*54fd6939SJiyong Park# 6*54fd6939SJiyong Park 7*54fd6939SJiyong Park################################################################################ 8*54fd6939SJiyong Park# Helpers for finding and referencing platform directories 9*54fd6939SJiyong Park################################################################################ 10*54fd6939SJiyong Park 11*54fd6939SJiyong Parkifndef PLAT_HELPERS_MK 12*54fd6939SJiyong Park PLAT_HELPERS_MK := $(lastword $(MAKEFILE_LIST)) 13*54fd6939SJiyong Park 14*54fd6939SJiyong Park ifeq (${PLAT},) 15*54fd6939SJiyong Park $(error "Error: Unknown platform. Please use PLAT=<platform name> to specify the platform") 16*54fd6939SJiyong Park endif 17*54fd6939SJiyong Park 18*54fd6939SJiyong Park # TF_PLATFORM_ROOT can be overridden for when building tools directly 19*54fd6939SJiyong Park TF_PLATFORM_ROOT ?= plat/ 20*54fd6939SJiyong Park PLAT_MAKEFILE := platform.mk 21*54fd6939SJiyong Park 22*54fd6939SJiyong Park # Generate the platforms list by recursively searching for all directories 23*54fd6939SJiyong Park # under /plat containing a PLAT_MAKEFILE. Append each platform with a `|` 24*54fd6939SJiyong Park # char and strip out the final '|'. 25*54fd6939SJiyong Park ALL_PLATFORM_MK_FILES := $(call rwildcard,${TF_PLATFORM_ROOT},${PLAT_MAKEFILE}) 26*54fd6939SJiyong Park ALL_PLATFORM_DIRS := $(patsubst %/,%,$(dir ${ALL_PLATFORM_MK_FILES})) 27*54fd6939SJiyong Park ALL_PLATFORMS := $(sort $(notdir ${ALL_PLATFORM_DIRS})) 28*54fd6939SJiyong Park 29*54fd6939SJiyong Park PLAT_MAKEFILE_FULL := $(filter %/${PLAT}/${PLAT_MAKEFILE},${ALL_PLATFORM_MK_FILES}) 30*54fd6939SJiyong Park PLATFORM_LIST := $(subst ${space},|,${ALL_PLATFORMS}) 31*54fd6939SJiyong Park ifeq ($(PLAT_MAKEFILE_FULL),) 32*54fd6939SJiyong Park $(error "Error: Invalid platform. The following platforms are available: ${PLATFORM_LIST}") 33*54fd6939SJiyong Park endif 34*54fd6939SJiyong Park 35*54fd6939SJiyong Park # Record the directory where the platform make file was found. 36*54fd6939SJiyong Park PLAT_DIR := $(dir ${PLAT_MAKEFILE_FULL}) 37*54fd6939SJiyong Park 38*54fd6939SJiyong Parkendif 39