Warning, /acts/Plugins/FpeMonitoring/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 acts_add_library(
0002 PluginFpeMonitoring
0003 SHARED
0004 src/FpeMonitor.cpp
0005 ACTS_INCLUDE_FOLDER include/Acts
0006 )
0007 target_include_directories(
0008 ActsPluginFpeMonitoring
0009 PUBLIC
0010 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>
0011 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
0012 )
0013
0014 target_link_libraries(ActsPluginFpeMonitoring PUBLIC Acts::Core)
0015
0016 # Fpe flags
0017 set(_fpe_options "")
0018
0019 include(CheckCXXSourceCompiles)
0020
0021 find_library(dl_LIBRARY dl)
0022 find_package(Backtrace)
0023 find_program(addr2line_EXECUTABLE addr2line)
0024 if(APPLE)
0025 list(APPEND _fpe_options -D_GNU_SOURCE)
0026 else()
0027 if(dl_LIBRARY)
0028 target_link_libraries(ActsPluginFpeMonitoring PUBLIC ${dl_LIBRARY})
0029
0030 set(_backtrace_setup_complete FALSE)
0031
0032 find_path(
0033 boost_stacktrace_include
0034 NAMES "boost/stacktrace.hpp"
0035 REQUIRED
0036 )
0037 if(Backtrace_FOUND)
0038 # check if we need to link against bracktrace or not
0039 set(backtrace_include "")
0040
0041 file(
0042 WRITE
0043 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0044 "
0045 #include <boost/stacktrace.hpp>
0046 int main() {}
0047 "
0048 )
0049
0050 message(CHECK_START "Does backtrace work with the default include")
0051
0052 try_compile(
0053 _backtrace_default_header
0054 "${CMAKE_BINARY_DIR}"
0055 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0056 LINK_LIBRARIES ${dl_LIBRARY}
0057 CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0058 COMPILE_DEFINITIONS -DBOOST_STACKTRACE_USE_BACKTRACE
0059 OUTPUT_VARIABLE __OUTPUT
0060 )
0061
0062 if(_backtrace_default_header)
0063 message(CHECK_PASS "yes")
0064 else()
0065 message(CHECK_FAIL "no")
0066
0067 file(GLOB hints "/usr/lib/gcc/*/*/include")
0068 find_file(backtrace_header NAMES "backtrace.h" HINTS ${hints})
0069
0070 if(${backtrace_header} STREQUAL "backtrace_header-NOTFOUND")
0071 message(STATUS "Could not find backtrace header file")
0072 else()
0073 set(backtrace_include
0074 "-DBOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE=\"${backtrace_header}\""
0075 )
0076
0077 file(
0078 WRITE
0079 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0080 "
0081 #include <boost/stacktrace.hpp>
0082 int main() {}
0083 "
0084 )
0085
0086 message(
0087 CHECK_START
0088 "Does backtrace work with explicit include"
0089 )
0090
0091 try_compile(
0092 _backtrace_explicit_header
0093 "${CMAKE_BINARY_DIR}"
0094 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0095 LINK_LIBRARIES ${dl_LIBRARY}
0096 CMAKE_FLAGS
0097 "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0098 COMPILE_DEFINITIONS
0099 -DBOOST_STACKTRACE_USE_BACKTRACE
0100 ${backtrace_include}
0101 OUTPUT_VARIABLE __OUTPUT
0102 )
0103
0104 if(_backtrace_explicit_header)
0105 message(CHECK_PASS "yes")
0106 list(APPEND _fpe_options "${backtrace_include}")
0107 else()
0108 message(CHECK_FAIL "no")
0109 endif()
0110 endif()
0111 endif()
0112
0113 file(
0114 WRITE
0115 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0116 "#include <boost/stacktrace.hpp>\n"
0117 "#include <iostream>\n"
0118 "int main() { std::cout << boost::stacktrace::stacktrace(); }\n"
0119 )
0120
0121 message(CHECK_START "Does backtrace work without linker flag")
0122 try_compile(
0123 _backtrace_nolink
0124 "${CMAKE_BINARY_DIR}"
0125 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0126 LINK_LIBRARIES ${dl_LIBRARY}
0127 CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0128 COMPILE_DEFINITIONS
0129 -DBOOST_STACKTRACE_USE_BACKTRACE
0130 ${backtrace_include}
0131 OUTPUT_VARIABLE __OUTPUT
0132 )
0133
0134 if(_backtrace_nolink)
0135 message(CHECK_PASS "yes")
0136 set(_backtrace_setup_complete TRUE)
0137 else()
0138 message(CHECK_FAIL "no")
0139
0140 file(
0141 WRITE
0142 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0143 "#include <boost/stacktrace.hpp>\n"
0144 "#include <iostream>\n"
0145 "int main() { std::cout << boost::stacktrace::stacktrace(); }\n"
0146 )
0147
0148 message(CHECK_START "Does backtrace work with linker flag")
0149 try_compile(
0150 _backtrace_link
0151 "${CMAKE_BINARY_DIR}"
0152 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0153 LINK_LIBRARIES backtrace ${dl_LIBRARY}
0154 CMAKE_FLAGS
0155 "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0156 COMPILE_DEFINITIONS
0157 -DBOOST_STACKTRACE_USE_BACKTRACE
0158 ${backtrace_include}
0159 OUTPUT_VARIABLE __OUTPUT
0160 )
0161
0162 if(_backtrace_link)
0163 message(CHECK_PASS "yes")
0164 list(APPEND _fpe_options -DBOOST_STACKTRACE_USE_BACKTRACE)
0165 target_link_libraries(
0166 ActsPluginFpeMonitoring
0167 PUBLIC backtrace
0168 )
0169
0170 set(_backtrace_setup_complete TRUE)
0171 else()
0172 message(CHECK_FAIL "no")
0173 endif()
0174 endif()
0175 endif()
0176
0177 if(NOT _backtrace_setup_complete)
0178 message(STATUS "Unable to set up stacktrace setup: use noop")
0179 list(APPEND _fpe_options -BOOST_STACKTRACE_USE_NOOP)
0180 endif()
0181 endif()
0182 endif()
0183
0184 target_compile_options(ActsPluginFpeMonitoring PUBLIC "${_fpe_options}")