Back to home page

EIC code displayed by LXR

 
 

    


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 # With the libbacktrace backend, Boost.Stacktrace keeps one libbacktrace state
0036 # per thread by default. libbacktrace never frees a state, and each one loads
0037 # its own copy of the debug info on first use, so every thread that symbolizes
0038 # a stack trace permanently costs as much memory as the debug info of all
0039 # loaded libraries. Share a single state instead; FpeMonitor serializes access
0040 # to it. This has no effect with the other backends.
0041 set(_fpe_options "-DBOOST_STACKTRACE_BACKTRACE_FORCE_STATIC")
0042 
0043 # In case we're going to run clang-tidy, let's unconditionally turn off backtrace
0044 if(ACTS_RUN_CLANG_TIDY)
0045     list(APPEND _fpe_options "-DBOOST_STACKTRACE_USE_NOOP=1")
0046 else()
0047     include(CheckCXXSourceCompiles)
0048 
0049     find_library(dl_LIBRARY dl)
0050     find_package(Backtrace)
0051     find_program(addr2line_EXECUTABLE addr2line)
0052     if(APPLE)
0053         list(APPEND _fpe_options -D_GNU_SOURCE)
0054     else()
0055         if(dl_LIBRARY)
0056             target_link_libraries(ActsPluginFpeMonitoring PUBLIC ${dl_LIBRARY})
0057 
0058             set(_backtrace_setup_complete FALSE)
0059 
0060             find_path(
0061                 boost_stacktrace_include
0062                 NAMES "boost/stacktrace.hpp"
0063                 REQUIRED
0064                 PATHS ${Boost_INCLUDE_DIRS}
0065             )
0066             if(Backtrace_FOUND)
0067                 # check if we need to link against bracktrace or not
0068                 set(backtrace_include "")
0069 
0070                 file(
0071                     WRITE
0072                         "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0073                     "
0074         #include <boost/stacktrace.hpp>
0075         int main() {}
0076         "
0077                 )
0078 
0079                 message(
0080                     CHECK_START
0081                     "Does backtrace work with the default include"
0082                 )
0083 
0084                 try_compile(
0085                     _backtrace_default_header
0086                     "${CMAKE_BINARY_DIR}"
0087                     "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0088                     LINK_LIBRARIES ${dl_LIBRARY}
0089                     CMAKE_FLAGS
0090                         "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0091                     COMPILE_DEFINITIONS -DBOOST_STACKTRACE_USE_BACKTRACE
0092                     OUTPUT_VARIABLE __OUTPUT
0093                 )
0094 
0095                 if(_backtrace_default_header)
0096                     message(CHECK_PASS "yes")
0097                 else()
0098                     message(CHECK_FAIL "no")
0099 
0100                     file(GLOB hints "/usr/lib/gcc/*/*/include")
0101                     find_file(
0102                         backtrace_header
0103                         NAMES "backtrace.h"
0104                         HINTS ${hints}
0105                     )
0106 
0107                     if(${backtrace_header} STREQUAL "backtrace_header-NOTFOUND")
0108                         message(STATUS "Could not find backtrace header file")
0109                     else()
0110                         set(backtrace_include
0111                             "-DBOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE=\"${backtrace_header}\""
0112                         )
0113 
0114                         file(
0115                             WRITE
0116                                 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0117                             "
0118             #include <boost/stacktrace.hpp>
0119             int main() {}
0120             "
0121                         )
0122 
0123                         message(
0124                             CHECK_START
0125                             "Does backtrace work with explicit include"
0126                         )
0127 
0128                         try_compile(
0129                             _backtrace_explicit_header
0130                             "${CMAKE_BINARY_DIR}"
0131                             "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0132                             LINK_LIBRARIES ${dl_LIBRARY}
0133                             CMAKE_FLAGS
0134                                 "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0135                             COMPILE_DEFINITIONS
0136                                 -DBOOST_STACKTRACE_USE_BACKTRACE
0137                                 ${backtrace_include}
0138                             OUTPUT_VARIABLE __OUTPUT
0139                         )
0140 
0141                         if(_backtrace_explicit_header)
0142                             message(CHECK_PASS "yes")
0143                             list(APPEND _fpe_options "${backtrace_include}")
0144                         else()
0145                             message(CHECK_FAIL "no")
0146                         endif()
0147                     endif()
0148                 endif()
0149 
0150                 file(
0151                     WRITE
0152                         "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0153                     "#include <boost/stacktrace.hpp>\n"
0154                     "#include <iostream>\n"
0155                     "int main() { std::cout << boost::stacktrace::stacktrace(); }\n"
0156                 )
0157 
0158                 message(CHECK_START "Does backtrace work without linker flag")
0159                 try_compile(
0160                     _backtrace_nolink
0161                     "${CMAKE_BINARY_DIR}"
0162                     "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0163                     LINK_LIBRARIES ${dl_LIBRARY}
0164                     CMAKE_FLAGS
0165                         "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0166                     COMPILE_DEFINITIONS
0167                         -DBOOST_STACKTRACE_USE_BACKTRACE
0168                         ${backtrace_include}
0169                     OUTPUT_VARIABLE __OUTPUT
0170                 )
0171 
0172                 if(_backtrace_nolink)
0173                     message(CHECK_PASS "yes")
0174                     set(_backtrace_setup_complete TRUE)
0175                 else()
0176                     message(CHECK_FAIL "no")
0177 
0178                     file(
0179                         WRITE
0180                             "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0181                         "#include <boost/stacktrace.hpp>\n"
0182                         "#include <iostream>\n"
0183                         "int main() { std::cout << boost::stacktrace::stacktrace(); }\n"
0184                     )
0185 
0186                     message(CHECK_START "Does backtrace work with linker flag")
0187                     try_compile(
0188                         _backtrace_link
0189                         "${CMAKE_BINARY_DIR}"
0190                         "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/backtrace.cpp"
0191                         LINK_LIBRARIES backtrace ${dl_LIBRARY}
0192                         CMAKE_FLAGS
0193                             "-DINCLUDE_DIRECTORIES=${boost_stacktrace_include}"
0194                         COMPILE_DEFINITIONS
0195                             -DBOOST_STACKTRACE_USE_BACKTRACE
0196                             ${backtrace_include}
0197                         OUTPUT_VARIABLE __OUTPUT
0198                     )
0199 
0200                     if(_backtrace_link)
0201                         message(CHECK_PASS "yes")
0202                         list(
0203                             APPEND _fpe_options
0204                             -DBOOST_STACKTRACE_USE_BACKTRACE
0205                         )
0206                         target_link_libraries(
0207                             ActsPluginFpeMonitoring
0208                             PUBLIC backtrace
0209                         )
0210 
0211                         set(_backtrace_setup_complete TRUE)
0212                     else()
0213                         message(CHECK_FAIL "no")
0214                     endif()
0215                 endif()
0216             endif()
0217         endif()
0218 
0219         if(NOT _backtrace_setup_complete)
0220             if(NOT ${dl_LIBRARY} STREQUAL "dl_LIBRARY-NOTFOUND")
0221                 message(STATUS "ld lib available: use boost basic fallback")
0222             else()
0223                 message(STATUS "Unable to set up stacktraces: use noop")
0224                 list(APPEND _fpe_options -DBOOST_STACKTRACE_USE_NOOP)
0225             endif()
0226         endif()
0227     endif()
0228 endif()
0229 
0230 target_compile_options(ActsPluginFpeMonitoring PUBLIC "${_fpe_options}")