Warning, /acts/Plugins/FpeMonitoring/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 set(_fpe_platform_source src/FpeMonitorPlatformUnsupported.cpp)
0002 string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" _acts_fpe_arch)
0003
0004 if(APPLE)
0005 if(_acts_fpe_arch MATCHES "^(x86_64|amd64)$")
0006 set(_fpe_platform_source src/FpeMonitorPlatformDarwinX86_64.cpp)
0007 elseif(_acts_fpe_arch MATCHES "^(arm64|aarch64)$")
0008 set(_fpe_platform_source src/FpeMonitorPlatformDarwinArm64.cpp)
0009 endif()
0010 elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
0011 if(_acts_fpe_arch MATCHES "^(x86_64|amd64)$")
0012 set(_fpe_platform_source src/FpeMonitorPlatformLinuxX86_64.cpp)
0013 endif()
0014 endif()
0015
0016 acts_add_library(
0017 PluginFpeMonitoring
0018 src/FpeMonitor.cpp
0019 ${_fpe_platform_source}
0020 ACTS_INCLUDE_FOLDER include/ActsPlugins
0021 )
0022
0023 target_include_directories(
0024 ActsPluginFpeMonitoring
0025 PUBLIC
0026 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>
0027 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
0028 )
0029
0030 target_link_libraries(ActsPluginFpeMonitoring PUBLIC Acts::Core)
0031
0032 acts_compile_headers(PluginFpeMonitoring GLOB include/**/*.hpp)
0033
0034 # Fpe flags
0035 set(_fpe_options "")
0036
0037 # In case we're going to run clang-tidy, let's unconditionally turn off backtrace
0038 if(ACTS_RUN_CLANG_TIDY)
0039 list(APPEND _fpe_options "-DBOOST_STACKTRACE_USE_NOOP=1")
0040 else()
0041 include(CheckCXXSourceCompiles)
0042
0043 find_library(dl_LIBRARY dl)
0044 find_package(Backtrace)
0045 find_program(addr2line_EXECUTABLE addr2line)
0046 if(APPLE)
0047 list(APPEND _fpe_options -D_GNU_SOURCE)
0048 else()
0049 if(dl_LIBRARY)
0050 target_link_libraries(ActsPluginFpeMonitoring PUBLIC ${dl_LIBRARY})
0051
0052 set(_backtrace_setup_complete FALSE)
0053
0054 find_path(
0055 boost_stacktrace_include
0056 NAMES "boost/stacktrace.hpp"
0057 REQUIRED
0058 PATHS ${Boost_INCLUDE_DIRS}
0059 )
0060 if(Backtrace_FOUND)
0061 # check if we need to link against bracktrace or not
0062 set(backtrace_include "")
0063
0064 file(
0065 WRITE
0066 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0067 "
0068 #include <boost/stacktrace.hpp>
0069 int main() {}
0070 "
0071 )
0072
0073 message(
0074 CHECK_START
0075 "Does backtrace work with the default include"
0076 )
0077
0078 try_compile(
0079 _backtrace_default_header
0080 "${CMAKE_BINARY_DIR}"
0081 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0082 LINK_LIBRARIES ${dl_LIBRARY}
0083 CMAKE_FLAGS
0084 "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0085 COMPILE_DEFINITIONS -DBOOST_STACKTRACE_USE_BACKTRACE
0086 OUTPUT_VARIABLE __OUTPUT
0087 )
0088
0089 if(_backtrace_default_header)
0090 message(CHECK_PASS "yes")
0091 else()
0092 message(CHECK_FAIL "no")
0093
0094 file(GLOB hints "/usr/lib/gcc/*/*/include")
0095 find_file(
0096 backtrace_header
0097 NAMES "backtrace.h"
0098 HINTS ${hints}
0099 )
0100
0101 if(${backtrace_header} STREQUAL "backtrace_header-NOTFOUND")
0102 message(STATUS "Could not find backtrace header file")
0103 else()
0104 set(backtrace_include
0105 "-DBOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE=\"${backtrace_header}\""
0106 )
0107
0108 file(
0109 WRITE
0110 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0111 "
0112 #include <boost/stacktrace.hpp>
0113 int main() {}
0114 "
0115 )
0116
0117 message(
0118 CHECK_START
0119 "Does backtrace work with explicit include"
0120 )
0121
0122 try_compile(
0123 _backtrace_explicit_header
0124 "${CMAKE_BINARY_DIR}"
0125 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0126 LINK_LIBRARIES ${dl_LIBRARY}
0127 CMAKE_FLAGS
0128 "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0129 COMPILE_DEFINITIONS
0130 -DBOOST_STACKTRACE_USE_BACKTRACE
0131 ${backtrace_include}
0132 OUTPUT_VARIABLE __OUTPUT
0133 )
0134
0135 if(_backtrace_explicit_header)
0136 message(CHECK_PASS "yes")
0137 list(APPEND _fpe_options "${backtrace_include}")
0138 else()
0139 message(CHECK_FAIL "no")
0140 endif()
0141 endif()
0142 endif()
0143
0144 file(
0145 WRITE
0146 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0147 "#include <boost/stacktrace.hpp>\n"
0148 "#include <iostream>\n"
0149 "int main() { std::cout << boost::stacktrace::stacktrace(); }\n"
0150 )
0151
0152 message(CHECK_START "Does backtrace work without linker flag")
0153 try_compile(
0154 _backtrace_nolink
0155 "${CMAKE_BINARY_DIR}"
0156 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0157 LINK_LIBRARIES ${dl_LIBRARY}
0158 CMAKE_FLAGS
0159 "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0160 COMPILE_DEFINITIONS
0161 -DBOOST_STACKTRACE_USE_BACKTRACE
0162 ${backtrace_include}
0163 OUTPUT_VARIABLE __OUTPUT
0164 )
0165
0166 if(_backtrace_nolink)
0167 message(CHECK_PASS "yes")
0168 set(_backtrace_setup_complete TRUE)
0169 else()
0170 message(CHECK_FAIL "no")
0171
0172 file(
0173 WRITE
0174 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0175 "#include <boost/stacktrace.hpp>\n"
0176 "#include <iostream>\n"
0177 "int main() { std::cout << boost::stacktrace::stacktrace(); }\n"
0178 )
0179
0180 message(CHECK_START "Does backtrace work with linker flag")
0181 try_compile(
0182 _backtrace_link
0183 "${CMAKE_BINARY_DIR}"
0184 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0185 LINK_LIBRARIES backtrace ${dl_LIBRARY}
0186 CMAKE_FLAGS
0187 "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0188 COMPILE_DEFINITIONS
0189 -DBOOST_STACKTRACE_USE_BACKTRACE
0190 ${backtrace_include}
0191 OUTPUT_VARIABLE __OUTPUT
0192 )
0193
0194 if(_backtrace_link)
0195 message(CHECK_PASS "yes")
0196 list(
0197 APPEND _fpe_options
0198 -DBOOST_STACKTRACE_USE_BACKTRACE
0199 )
0200 target_link_libraries(
0201 ActsPluginFpeMonitoring
0202 PUBLIC backtrace
0203 )
0204
0205 set(_backtrace_setup_complete TRUE)
0206 else()
0207 message(CHECK_FAIL "no")
0208 endif()
0209 endif()
0210 endif()
0211 endif()
0212
0213 if(NOT _backtrace_setup_complete)
0214 if(NOT ${dl_LIBRARY} STREQUAL "dl_LIBRARY-NOTFOUND")
0215 message(STATUS "ld lib available: use boost basic fallback")
0216 else()
0217 message(STATUS "Unable to set up stacktraces: use noop")
0218 list(APPEND _fpe_options -DBOOST_STACKTRACE_USE_NOOP)
0219 endif()
0220 endif()
0221 endif()
0222 endif()
0223
0224 target_compile_options(ActsPluginFpeMonitoring PUBLIC "${_fpe_options}")