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