blob: c3e96f53ec68342a41157c0b35771fc863932be4 [file] [log] [blame]
#-------------------------------------------------------------------------------
# Copyright (c) 2022-2024, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
# Use libfdt path from the environment if defined
if (DEFINED ENV{TS_LIBFDT_PATH})
set(LIBFDT_PATH $ENV{TS_LIBFDT_PATH} CACHE PATH "Location of libfdt" FORCE)
endif()
# Otherwise clone the dtc repo (which contains libfdt)
set(DTC_URL "https://github.com/dgibson/dtc" CACHE STRING "dtc repository URL")
set(DTC_REFSPEC "v1.6.1" CACHE STRING "dtc git refspec")
set(DTC_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/dtc-src" CACHE PATH "Location of dtc source")
set(GIT_OPTIONS
GIT_REPOSITORY ${DTC_URL}
GIT_TAG ${DTC_REFSPEC}
)
include(${TS_ROOT}/tools/cmake/common/LazyFetch.cmake REQUIRED)
LazyFetch_MakeAvailable(
DEP_NAME dtc
FETCH_OPTIONS "${GIT_OPTIONS}"
SOURCE_DIR ${DTC_SOURCE_DIR}
)
find_path(LIBFDT_PATH
NAMES fdt.c
PATHS ${DTC_SOURCE_DIR}/libfdt
NO_DEFAULT_PATH
REQUIRED
DOC "Location of libfdt"
)
# Add libfdt source files to the target
if (NOT DEFINED TGT)
message(FATAL_ERROR "mandatory parameter TGT is not defined.")
endif()
target_sources(${TGT} PRIVATE
"${LIBFDT_PATH}/fdt.c"
"${LIBFDT_PATH}/fdt_ro.c"
"${LIBFDT_PATH}/fdt_wip.c"
"${LIBFDT_PATH}/fdt_sw.c"
"${LIBFDT_PATH}/fdt_rw.c"
"${LIBFDT_PATH}/fdt_strerror.c"
"${LIBFDT_PATH}/fdt_empty_tree.c"
"${LIBFDT_PATH}/fdt_addresses.c"
"${LIBFDT_PATH}/fdt_overlay.c"
"${LIBFDT_PATH}/fdt_check.c"
)
target_include_directories(${TGT} PRIVATE ${LIBFDT_PATH})