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