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