blob: bc02a2078a85a4c5ac184c4c9e59323502f91d2b [file] [log] [blame]
Evan Lloydf2697142015-12-02 18:17:37 +00001#
2# Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3#
dp-armfa3cf0b2017-05-03 09:38:09 +01004# SPDX-License-Identifier: BSD-3-Clause
Evan Lloydf2697142015-12-02 18:17:37 +00005#
6
7################################################################################
8# Helpers for finding and referencing platform directories
9################################################################################
10
11ifndef PLAT_HELPERS_MK
12 PLAT_HELPERS_MK := $(lastword $(MAKEFILE_LIST))
13
Andrey Skvortsov89c3a142024-02-18 11:43:12 +030014 PLAT:= ${DEFAULT_PLAT}
Evan Lloydf2697142015-12-02 18:17:37 +000015 ifeq (${PLAT},)
16 $(error "Error: Unknown platform. Please use PLAT=<platform name> to specify the platform")
17 endif
18
Heyi Guo335433a2018-03-01 18:57:58 +080019 # TF_PLATFORM_ROOT can be overridden for when building tools directly
20 TF_PLATFORM_ROOT ?= plat/
Evan Lloydf2697142015-12-02 18:17:37 +000021 PLAT_MAKEFILE := platform.mk
Andrey Skvortsov89c3a142024-02-18 11:43:12 +030022 PLAT_DEFAULTS_MAKEFILE := platform_defaults.mk
Evan Lloydf2697142015-12-02 18:17:37 +000023
24 # Generate the platforms list by recursively searching for all directories
25 # under /plat containing a PLAT_MAKEFILE. Append each platform with a `|`
26 # char and strip out the final '|'.
Heyi Guo335433a2018-03-01 18:57:58 +080027 ALL_PLATFORM_MK_FILES := $(call rwildcard,${TF_PLATFORM_ROOT},${PLAT_MAKEFILE})
Andrey Skvortsov89c3a142024-02-18 11:43:12 +030028 ALL_PLATFORM_MK_DEF_FILES := $(call rwildcard,${TF_PLATFORM_ROOT},${PLAT_DEFAULTS_MAKEFILE})
Evan Lloydf2697142015-12-02 18:17:37 +000029 ALL_PLATFORM_DIRS := $(patsubst %/,%,$(dir ${ALL_PLATFORM_MK_FILES}))
30 ALL_PLATFORMS := $(sort $(notdir ${ALL_PLATFORM_DIRS}))
31
32 PLAT_MAKEFILE_FULL := $(filter %/${PLAT}/${PLAT_MAKEFILE},${ALL_PLATFORM_MK_FILES})
Andrey Skvortsov89c3a142024-02-18 11:43:12 +030033 PLAT_DEFAULTS_MAKEFILE_FULL := $(filter %/${PLAT}/${PLAT_DEFAULTS_MAKEFILE},${ALL_PLATFORM_MK_DEF_FILES})
Evan Lloydf2697142015-12-02 18:17:37 +000034 PLATFORM_LIST := $(subst ${space},|,${ALL_PLATFORMS})
35 ifeq ($(PLAT_MAKEFILE_FULL),)
36 $(error "Error: Invalid platform. The following platforms are available: ${PLATFORM_LIST}")
37 endif
38
39 # Record the directory where the platform make file was found.
40 PLAT_DIR := $(dir ${PLAT_MAKEFILE_FULL})
41
42endif