123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- # Extra tools for working with FetchContent on older CMake
- #
- # Copyright (c) 2024 Netdata Inc.
- # SPDX-License-Identifier: GPL-3.0-or-later
- # FetchContent_MakeAvailable_NoInstall
- #
- # Add a sub-project with FetchContent, but with the EXCLUDE_FROM_ALL
- # argument for the add_subdirectory part.
- #
- # CMake 3.28 and newer provide a way to do this with an extra argument
- # on FetchContent_Declare, but older versions need you to implement
- # the logic yourself. Once we no longer support CMake versions older
- # than 3.28, we can get rid of this macro.
- #
- # Unlike FetchContent_MakeAvailble, this only accepts a single project
- # to make available.
- macro(FetchContent_MakeAvailable_NoInstall name)
- include(FetchContent)
- if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28)
- FetchContent_MakeAvailable(${name})
- else()
- FetchContent_GetProperties(${name})
- if(NOT ${name}_POPULATED)
- FetchContent_Populate(${name})
- add_subdirectory(${${name}_SOURCE_DIR} ${${name}_BINARY_DIR} EXCLUDE_FROM_ALL)
- endif()
- endif()
- endmacro()
- # NETDATA_PROPAGATE_TOOLCHAIN_ARGS
- #
- # Defines a set of CMake flags to be passed to CMAKE_ARGS for
- # FetchContent_Declare and ExternalProject_Add to ensure that toolchain
- # configuration propagates correctly to sub-projects.
- #
- # This needs to be explicitly included for any sub-project that needs
- # to be built for the target system.
- #
- # This also needs to _NOT_ have any generator expressions, as they are not
- # supported for the required usage of this variable in CMake 3.30 or newer.
- set(NETDATA_PROPAGATE_TOOLCHAIN_ARGS
- "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}")
- if(DEFINED CMAKE_C_COMPILER_TARGET)
- set(NETDATA_PROPAGATE_TOOLCHAIN_ARGS "${NETDATA_PROPAGATE_TOOLCHAIN_ARGS} -DCMAKE_C_COMPILER_TARGET=${CMAKE_C_COMPILER_TARGET}")
- endif()
- if(DEFINED CMAKE_CXX_COMPILER_TARGET)
- set(NETDATA_PROPAGATE_TOOLCHAIN_ARGS "${NETDATA_PROPAGATE_TOOLCHAIN_ARGS} -DCMAKE_CXX_COMPILER_TARGET=${CMAKE_CXX_COMPILER_TARGET}")
- endif()
|