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/ActsPlugins
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 PATHS ${Boost_INCLUDE_DIRS}
0037 )
0038 if(Backtrace_FOUND)
0039 # check if we need to link against bracktrace or not
0040 set(backtrace_include "")
0041
0042 file(
0043 WRITE
0044 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0045 "
0046 #include <boost/stacktrace.hpp>
0047 int main() {}
0048 "
0049 )
0050
0051 message(CHECK_START "Does backtrace work with the default include")
0052
0053 try_compile(
0054 _backtrace_default_header
0055 "${CMAKE_BINARY_DIR}"
0056 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0057 LINK_LIBRARIES ${dl_LIBRARY}
0058 CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0059 COMPILE_DEFINITIONS -DBOOST_STACKTRACE_USE_BACKTRACE
0060 OUTPUT_VARIABLE __OUTPUT
0061 )
0062
0063 if(_backtrace_default_header)
0064 message(CHECK_PASS "yes")
0065 else()
0066 message(CHECK_FAIL "no")
0067
0068 file(GLOB hints "/usr/lib/gcc/*/*/include")
0069 find_file(backtrace_header NAMES "backtrace.h" HINTS ${hints})
0070
0071 if(${backtrace_header} STREQUAL "backtrace_header-NOTFOUND")
0072 message(STATUS "Could not find backtrace header file")
0073 else()
0074 set(backtrace_include
0075 "-DBOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE=\"${backtrace_header}\""
0076 )
0077
0078 file(
0079 WRITE
0080 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0081 "
0082 #include <boost/stacktrace.hpp>
0083 int main() {}
0084 "
0085 )
0086
0087 message(
0088 CHECK_START
0089 "Does backtrace work with explicit include"
0090 )
0091
0092 try_compile(
0093 _backtrace_explicit_header
0094 "${CMAKE_BINARY_DIR}"
0095 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0096 LINK_LIBRARIES ${dl_LIBRARY}
0097 CMAKE_FLAGS
0098 "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0099 COMPILE_DEFINITIONS
0100 -DBOOST_STACKTRACE_USE_BACKTRACE
0101 ${backtrace_include}
0102 OUTPUT_VARIABLE __OUTPUT
0103 )
0104
0105 if(_backtrace_explicit_header)
0106 message(CHECK_PASS "yes")
0107 list(APPEND _fpe_options "${backtrace_include}")
0108 else()
0109 message(CHECK_FAIL "no")
0110 endif()
0111 endif()
0112 endif()
0113
0114 file(
0115 WRITE
0116 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0117 "#include <boost/stacktrace.hpp>\n"
0118 "#include <iostream>\n"
0119 "int main() { std::cout << boost::stacktrace::stacktrace(); }\n"
0120 )
0121
0122 message(CHECK_START "Does backtrace work without linker flag")
0123 try_compile(
0124 _backtrace_nolink
0125 "${CMAKE_BINARY_DIR}"
0126 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0127 LINK_LIBRARIES ${dl_LIBRARY}
0128 CMAKE_FLAGS "-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_nolink)
0136 message(CHECK_PASS "yes")
0137 set(_backtrace_setup_complete TRUE)
0138 else()
0139 message(CHECK_FAIL "no")
0140
0141 file(
0142 WRITE
0143 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0144 "#include <boost/stacktrace.hpp>\n"
0145 "#include <iostream>\n"
0146 "int main() { std::cout << boost::stacktrace::stacktrace(); }\n"
0147 )
0148
0149 message(CHECK_START "Does backtrace work with linker flag")
0150 try_compile(
0151 _backtrace_link
0152 "${CMAKE_BINARY_DIR}"
0153 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0154 LINK_LIBRARIES backtrace ${dl_LIBRARY}
0155 CMAKE_FLAGS
0156 "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0157 COMPILE_DEFINITIONS
0158 -DBOOST_STACKTRACE_USE_BACKTRACE
0159 ${backtrace_include}
0160 OUTPUT_VARIABLE __OUTPUT
0161 )
0162
0163 if(_backtrace_link)
0164 message(CHECK_PASS "yes")
0165 list(APPEND _fpe_options -DBOOST_STACKTRACE_USE_BACKTRACE)
0166 target_link_libraries(
0167 ActsPluginFpeMonitoring
0168 PUBLIC backtrace
0169 )
0170
0171 set(_backtrace_setup_complete TRUE)
0172 else()
0173 message(CHECK_FAIL "no")
0174 endif()
0175 endif()
0176 endif()
0177
0178 if(NOT _backtrace_setup_complete)
0179 message(STATUS "Unable to set up stacktrace setup: use noop")
0180 list(APPEND _fpe_options -BOOST_STACKTRACE_USE_NOOP)
0181 endif()
0182 endif()
0183 endif()
0184
0185 target_compile_options(ActsPluginFpeMonitoring PUBLIC "${_fpe_options}")