blob: 6594826a2740f057cafbc0bf24a0ed4c8b02be03 [file] [log] [blame]
Rui Miguel Silva427e8202021-12-03 16:36:51 +00001#-------------------------------------------------------------------------------
2# Copyright (c) 2022 Linaro Limited
Gyorgy Szingc9b6b632023-02-15 10:45:26 +01003# Copyright (c) 2022-2023, Arm Limited. All rights reserved.
Rui Miguel Silva427e8202021-12-03 16:36:51 +00004#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7#-------------------------------------------------------------------------------
8
9set (OPENAMP_URL "https://github.com/OpenAMP/open-amp.git"
Gyorgy Szingc9b6b632023-02-15 10:45:26 +010010 CACHE STRING "OpenAMP repository URL")
Rui Miguel Silva427e8202021-12-03 16:36:51 +000011set (OPENAMP_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/openamp_install"
Gyorgy Szingc9b6b632023-02-15 10:45:26 +010012 CACHE PATH "OpenAMP installation directory")
Rui Miguel Silva427e8202021-12-03 16:36:51 +000013set (OPENAMP_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/openamp"
Gyorgy Szingc9b6b632023-02-15 10:45:26 +010014 CACHE PATH "OpenAMP source code directory")
Rui Miguel Silva427e8202021-12-03 16:36:51 +000015set (OPENAMP_PACKAGE_DIR "${OPENAMP_INSTALL_DIR}/openamp/cmake"
Gyorgy Szingc9b6b632023-02-15 10:45:26 +010016 CACHE PATH "OpenAMP CMake package directory")
Rui Miguel Silva427e8202021-12-03 16:36:51 +000017set (OPENAMP_REFSPEC "347397decaa43372fc4d00f965640ebde042966d"
Gyorgy Szingc9b6b632023-02-15 10:45:26 +010018 CACHE STRING "The version of openamp to use")
Rui Miguel Silva427e8202021-12-03 16:36:51 +000019
Gyorgy Szingc9b6b632023-02-15 10:45:26 +010020set(GIT_OPTIONS_OPENAMP
Rui Miguel Silva427e8202021-12-03 16:36:51 +000021 GIT_REPOSITORY ${OPENAMP_URL}
22 GIT_TAG ${OPENAMP_REFSPEC}
23 GIT_SHALLOW FALSE
24)
25
26if(NOT OPENAMP_DEBUG)
27 set(OPENAMP_BUILD_TYPE "Release")
28else()
29 set(OPENAMP_BUILD_TYPE "Debug")
30endif()
31
Gyorgy Szingc9b6b632023-02-15 10:45:26 +010032# Add libmetal dependency
33include(${TS_ROOT}/external/openamp/libmetal.cmake)
34
Rui Miguel Silva427e8202021-12-03 16:36:51 +000035include(FetchContent)
36
37# Checking git
38find_program(GIT_COMMAND "git")
39if (NOT GIT_COMMAND)
40 message(FATAL_ERROR "Please install git")
41endif()
42
43# Only pass libc settings to openamp if needed. For environments where the
44# standard library is not overridden, this is not needed.
45if(TARGET stdlib::c)
46 include(${TS_ROOT}/tools/cmake/common/PropertyCopy.cmake)
47
48 # Save libc settings
49 save_interface_target_properties(TGT stdlib::c PREFIX LIBC)
50 # Translate libc settings to cmake code fragment. Will be inserted into
51 # libmetal-init-cache.cmake.in when LazyFetch configures the file.
52 translate_interface_target_properties(PREFIX LIBC RES _cmake_fragment)
53 unset_saved_properties(LIBC)
54endif()
55
56include(${TS_ROOT}/tools/cmake/common/LazyFetch.cmake REQUIRED)
57LazyFetch_MakeAvailable(DEP_NAME openamp
Gyorgy Szingc9b6b632023-02-15 10:45:26 +010058 FETCH_OPTIONS "${GIT_OPTIONS_OPENAMP}"
Rui Miguel Silva427e8202021-12-03 16:36:51 +000059 INSTALL_DIR "${OPENAMP_INSTALL_DIR}"
60 CACHE_FILE "${TS_ROOT}/external/openamp/openamp-init-cache.cmake.in"
61 SOURCE_DIR "${OPENAMP_SOURCE_DIR}"
62)
63unset(_cmake_fragment)
64
65#Create an imported target to have clean abstraction in the build-system.
66add_library(openamp STATIC IMPORTED)
67set_property(TARGET openamp PROPERTY IMPORTED_LOCATION "${OPENAMP_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}open_amp${CMAKE_STATIC_LIBRARY_SUFFIX}")
68set_property(TARGET openamp PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${OPENAMP_INSTALL_DIR}/include")
Gyorgy Szingc9b6b632023-02-15 10:45:26 +010069target_link_libraries(openamp INTERFACE libmetal)