cmake: Add introspection module

Co-authored-by: Cory Fields <cory-nospam-@coryfields.com>
Co-authored-by: Vasil Dimov <vd@FreeBSD.org>
This commit is contained in:
Hennadii Stepanov
2024-03-23 16:50:57 +00:00
parent 27d687fc1f
commit 07069e2bb0
5 changed files with 365 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
# Copyright (c) 2023-present The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or https://opensource.org/license/mit/.
include_guard(GLOBAL)
include(CheckCXXSourceCompiles)
include(CMakePushCheckState)
# This avoids running the linker.
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
macro(check_cxx_source_links source)
set(CMAKE_TRY_COMPILE_TARGET_TYPE EXECUTABLE)
check_cxx_source_compiles("${source}" ${ARGN})
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
endmacro()
macro(check_cxx_source_compiles_with_flags flags source)
cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_FLAGS ${flags})
list(JOIN CMAKE_REQUIRED_FLAGS " " CMAKE_REQUIRED_FLAGS)
check_cxx_source_compiles("${source}" ${ARGN})
cmake_pop_check_state()
endmacro()
macro(check_cxx_source_links_with_flags flags source)
cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_FLAGS ${flags})
list(JOIN CMAKE_REQUIRED_FLAGS " " CMAKE_REQUIRED_FLAGS)
check_cxx_source_links("${source}" ${ARGN})
cmake_pop_check_state()
endmacro()
macro(check_cxx_source_links_with_libs libs source)
cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_LIBRARIES "${libs}")
check_cxx_source_links("${source}" ${ARGN})
cmake_pop_check_state()
endmacro()