blob: d06aa124d7321a2c74036961bc2bd4cbe4ca35b6 [file] [log] [blame]
Rui Miguel Silva427e8202021-12-03 16:36:51 +00001#-------------------------------------------------------------------------------
2# Copyright (c) 2021-2022 Linaro Limited
3# Copyright (c) 2021-2022, Arm Limited. All rights reserved.
4#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7#-------------------------------------------------------------------------------
8
9set (LIBMETAL_URL "https://github.com/OpenAMP/libmetal.git"
10 CACHE STRING "libmetal repository URL")
11set (LIBMETAL_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/libmetal_install"
12 CACHE DIR "libmetal installation directory")
13set(LIBMETAL_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/libmetal"
14 CACHE DIR "libmetal source-code")
15set (LIBMETAL_PACKAGE_DIR "${LIBMETAL_INSTALL_DIR}/libmetal/cmake"
16 CACHE DIR "libmetal CMake package directory")
17set (LIBMETAL_TARGET_NAME "libmetal")
18set (LIBMETAL_REFSPEC "f252f0e007fbfb8b3a52b1d5901250ddac96baad"
19 CACHE STRING "The version of libmetal to use")
20set(LIBMETAL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/libmetal-build")
21
22set(GIT_OPTIONS
23 GIT_REPOSITORY ${LIBMETAL_URL}
24 GIT_TAG ${LIBMETAL_REFSPEC}
25 GIT_SHALLOW FALSE
26)
27
28if(NOT LIBMETAL_DEBUG)
29 set(LIBMETAL_BUILD_TYPE "Release")
30else()
31 set(LIBMETAL_BUILD_TYPE "Debug")
32endif()
33
34include(FetchContent)
35
36# Checking git
37find_program(GIT_COMMAND "git")
38if (NOT GIT_COMMAND)
39 message(FATAL_ERROR "Please install git")
40endif()
41
42# Only pass libc settings to libmetal if needed. For environments where the
43# standard library is not overridden, this is not needed.
44if(TARGET stdlib::c)
45 include(${TS_ROOT}/tools/cmake/common/PropertyCopy.cmake)
46
47 # Save libc settings
48 save_interface_target_properties(TGT stdlib::c PREFIX LIBC)
49 # Translate libc settings to cmake code fragment. Will be inserted into
50 # libmetal-init-cache.cmake.in when LazyFetch configures the file.
51 translate_interface_target_properties(PREFIX LIBC RES _cmake_fragment)
52 unset_saved_properties(LIBC)
53endif()
54
55include(${TS_ROOT}/tools/cmake/common/LazyFetch.cmake REQUIRED)
56LazyFetch_MakeAvailable(DEP_NAME libmetal
57 FETCH_OPTIONS "${GIT_OPTIONS}"
58 INSTALL_DIR "${LIBMETAL_INSTALL_DIR}"
59 CACHE_FILE "${TS_ROOT}/external/openamp/libmetal-init-cache.cmake.in"
60 SOURCE_DIR "${LIBMETAL_SOURCE_DIR}"
61)
62unset(_cmake_fragment)
63
64#Create an imported target to have clean abstraction in the build-system.
65add_library(libmetal STATIC IMPORTED)
66set_property(TARGET libmetal PROPERTY IMPORTED_LOCATION "${LIBMETAL_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}metal${CMAKE_STATIC_LIBRARY_SUFFIX}")
67set_property(TARGET libmetal PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${LIBMETAL_INSTALL_DIR}/include")