xref: /arm-trusted-firmware/make_helpers/plat_helpers.mk (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
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