Warning, /sdk/elf-dissector/cmake/FindDwarf.cmake is written in an unsupported language. File is not indexed.

0001 include(CheckCSourceCompiles)
0002 include(CMakePushCheckState)
0003 
0004 find_path(Dwarf_INCLUDE_DIR libdwarf.h PATH_SUFFIXES libdwarf)
0005 
0006 find_library(Dwarf_LIBRARY NAMES dwarf)
0007 
0008 # test if libdwarf requires libelf to link
0009 cmake_push_check_state()
0010 set(CMAKE_REQUIRED_INCLUDES ${Dwarf_INCLUDE_DIR})
0011 set(CMAKE_REQUIRED_LIBRARIES ${Dwarf_LIBRARY})
0012 check_c_source_compiles("
0013 #include <libdwarf.h>
0014 int main(int argc, char** argv) {
0015     Dwarf_Die die;
0016     return dwarf_tag(die, 0, 0);
0017 }" DWARF_LINKS_WITHOUT_LIBELF)
0018 
0019 if(NOT DWARF_LINKS_WITHOUT_LIBELF)
0020     find_library(elf_LIBRARY NAMES elf)
0021     if (NOT elf_LIBRARY)
0022        message(WARNING "elf library not found")
0023     endif()
0024     set(CMAKE_REQUIRED_LIBRARIES ${Dwarf_LIBRARY} ${elf_LIBRARY})
0025     check_c_source_compiles("
0026     #include <libdwarf.h>
0027     int main(int argc, char** argv) {
0028         Dwarf_Die die;
0029         return dwarf_tag(die, 0, 0);
0030     }" DWARF_NEEDS_LIBELF)
0031 endif()
0032 cmake_pop_check_state()
0033 
0034 if(NOT DWARF_LINKS_WITHOUT_LIBELF AND NOT DWARF_NEEDS_LIBELF)
0035     message(WARNING "Can't get libdwarf to link!?")
0036     return()
0037 endif()
0038 
0039 include(FindPackageHandleStandardArgs)
0040 find_package_handle_standard_args(Dwarf DEFAULT_MSG Dwarf_LIBRARY Dwarf_INCLUDE_DIR)
0041 
0042 if(DWARF_FOUND AND NOT TARGET Dwarf::Dwarf)
0043     add_library(Dwarf::Dwarf UNKNOWN IMPORTED)
0044     set_target_properties(Dwarf::Dwarf PROPERTIES
0045         IMPORTED_LOCATION "${Dwarf_LIBRARY}"
0046         INTERFACE_INCLUDE_DIRECTORIES "${Dwarf_INCLUDE_DIR}"
0047     )
0048     if(DWARF_NEEDS_LIBELF)
0049         set_target_properties(Dwarf::Dwarf PROPERTIES INTERFACE_LINK_LIBRARIES ${elf_LIBRARY})
0050     endif()
0051 endif()
0052 
0053 mark_as_advanced(Dwarf_LIBRARY Elf_LIBRARY Dwarf_INCLUDE_DIR)
0054 
0055 include(FeatureSummary)
0056 set_package_properties(libdwarf-devel PROPERTIES URL http://www.dwarfstd.org/
0057     DESCRIPTION "DWARF debug information library")