1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
# Source (GPLv2): https://github.com/SimonKagstrom/kcov/blob/master/cmake/FindElfutils.cmake
# - Try to find libdwarf
# Once done this will define
#
# LIBDWARF_FOUND - system has libdwarf
# LIBDWARF_INCLUDE_DIRS - the libdwarf include directory
# LIBDWARF_LIBRARIES - Link these to use libdwarf
# LIBDWARF_DEFINITIONS - Compiler switches required for using libdwarf
#
# Locate libelf library at first
if (NOT LIBELF_FOUND)
find_package(LibElf)
endif (NOT LIBELF_FOUND)
if (LIBDWARF_LIBRARIES AND LIBDWARF_INCLUDE_DIRS)
set(LibDwarf_FIND_QUIETLY ON)
endif (LIBDWARF_LIBRARIES AND LIBDWARF_INCLUDE_DIRS)
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH ON)
pkg_check_modules(PC_LIBDW QUIET libdw)
endif ()
find_path(DWARF_INCLUDE_DIR
NAMES
dwarf.h
HINTS
${PC_LIBDW_INCLUDE_DIRS}
PATHS
/usr/include
/usr/local/include
/opt/local/include
/sw/include
ENV CPATH) # PATH and INCLUDE will also work
find_path(LIBDW_INCLUDE_DIR
NAMES
elfutils/libdw.h
HINTS
${PC_LIBDW_INCLUDE_DIRS}
PATHS
/usr/include
/usr/local/include
/opt/local/include
/sw/include
ENV CPATH)
if (DWARF_INCLUDE_DIR AND LIBDW_INCLUDE_DIR)
set(LIBDWARF_INCLUDE_DIRS ${DWARF_INCLUDE_DIR} ${LIBDW_INCLUDE_DIR})
endif (DWARF_INCLUDE_DIR AND LIBDW_INCLUDE_DIR)
find_library(LIBDW_LIBRARY
NAMES
dw
HINTS
${PC_LIBDW_LIBRARY_DIRS}
PATHS
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
ENV LIBRARY_PATH # PATH and LIB will also work
ENV LD_LIBRARY_PATH)
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBDWARF_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(ElfUtils DEFAULT_MSG
LIBDW_LIBRARY
LIBDW_INCLUDE_DIR)
mark_as_advanced(LIBDW_INCLUDE_DIR LIBDW_LIBRARY)
set(LIBDW_LIBRARIES ${LIBDW_LIBRARY})
set(LIBDW_INCLUDE_DIRS ${LIBDW_INCLUDE_DIR})
|