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