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