Back to home page

sPhenix code displayed by LXR

 
 

    


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})