#
# SPDX-License-Identifier: BSD-3-Clause
# SPDX-FileCopyrightText: Copyright TF-RMM Contributors.
#

#
# Common config options
#
arm_config_option(
    NAME MAX_CPUS
    HELP "Maximum number of CPUs supported by RMM"
    TYPE STRING
    DEFAULT 16)

#
# The RMM is mapped with 4K pages, and all RMM APIs use the same granularity.
#
arm_config_option(
    NAME GRANULE_SIZE
    HELP "Granule Size used by RMM"
    TYPE STRING
    DEFAULT 4096)

arm_config_option(
    NAME RMM_DOCS
    HELP "RMM Documentation build"
    TYPE BOOL
    DEFAULT OFF)

# TODO: Move to lib/arch once MbedTLS compilation is moved to build phase.
arm_config_option(
    NAME RMM_FPU_USE_AT_REL2
    HELP "Enable Advanced SIMD support in RMM"
    TYPE BOOL
    DEFAULT ON
    DEPENDS (RMM_ARCH STREQUAL aarch64)
    ELSE OFF)

#
# Introduce a pseudo-library purely for applying flags to RMM's libraries.
# This is applied to any targets created after this point.
#

add_library(rmm-common INTERFACE)

target_compile_definitions(rmm-common
    INTERFACE "$<$<CONFIG:Debug>:DEBUG>")

if(MAX_CPUS EQUAL 0x0)
    message(FATAL_ERROR "MAX_CPUS is not initialized")
endif()

target_compile_definitions(rmm-common
    INTERFACE "MAX_CPUS=${MAX_CPUS}U")

if(NOT(GRANULE_SIZE EQUAL 4096))
    message(FATAL_ERROR "GRANULE_SIZE is not initialized correctly")
endif()

target_compile_definitions(rmm-common
    INTERFACE "GRANULE_SIZE=U(${GRANULE_SIZE})")

if(RMM_FPU_USE_AT_REL2)
    target_compile_definitions(rmm-common
        INTERFACE "RMM_FPU_USE_AT_REL2=1")
endif()

#
# Project name and version
#
target_compile_definitions(rmm-common
    INTERFACE "NAME=\"${PROJECT_NAME}\"")

target_compile_definitions(rmm-common
    INTERFACE "VERSION=\"${PROJECT_VERSION}\"")

#
# Get git commit information
#
find_package(Git)
if(GIT_FOUND)
  execute_process(
    COMMAND ${GIT_EXECUTABLE} describe --always --dirty --tags
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
    OUTPUT_VARIABLE COMMIT_INFO
    OUTPUT_STRIP_TRAILING_WHITESPACE
  )
endif()

target_compile_definitions(rmm-common
    INTERFACE "COMMIT_INFO=\"${COMMIT_INFO}\"")

link_libraries(rmm-common)
