Another attempt to resolve libdwarf header issues
This commit is contained in:
parent
3e46d2a570
commit
2100723312
@ -366,27 +366,37 @@ if(CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF)
|
||||
target_link_libraries(${target_name} PRIVATE ${LIBDWARF_LIBRARIES})
|
||||
else()
|
||||
# if LIBDWARF_LIBRARIES wasn't set by find_package, try looking for libdwarf::dwarf-static,
|
||||
# libdwarf::dwarf-shared, then libdwarf::dwarf
|
||||
# libdwarf::dwarf-shared, libdwarf::dwarf, then libdwarf
|
||||
# libdwarf v0.8.0 installs with the target libdwarf::dwarf somehow, despite creating libdwarf::dwarf-static or
|
||||
# libdwarf::dwarf-shared under fetchcontent
|
||||
target_link_libraries(${target_name} PRIVATE $<IF:$<TARGET_EXISTS:libdwarf::dwarf-static>,libdwarf::dwarf-static,$<IF:$<TARGET_EXISTS:libdwarf::dwarf-shared>,libdwarf::dwarf-shared,libdwarf::dwarf>>)
|
||||
if(TARGET libdwarf::dwarf-static)
|
||||
set(LIBDWARF_LIBRARIES libdwarf::dwarf-static)
|
||||
elseif(TARGET libdwarf::dwarf-shared)
|
||||
set(LIBDWARF_LIBRARIES libdwarf::dwarf-shared)
|
||||
elseif(TARGET libdwarf::dwarf)
|
||||
set(LIBDWARF_LIBRARIES libdwarf::dwarf)
|
||||
elseif(TARGET libdwarf)
|
||||
set(LIBDWARF_LIBRARIES libdwarf)
|
||||
else()
|
||||
message(FATAL_ERROR "Couldn't find libdwarf target name to link against")
|
||||
endif()
|
||||
target_link_libraries(${target_name} PRIVATE ${LIBDWARF_LIBRARIES})
|
||||
endif()
|
||||
# There seems to be no consistency at all about where libdwarf decides to place its headers........ Figure out if
|
||||
# it's libdwarf/libdwarf.h and libdwarf/dwarf.h or just libdwarf.h and dwarf.h
|
||||
include(CheckIncludeFileCXX)
|
||||
# libdwarf's cmake doesn't properly set variables to indicate where its libraries live
|
||||
get_target_property(LIBDWARF_INTERFACE_INCLUDE_DIRECTORIES ${LIBDWARF_LIBRARIES} INTERFACE_INCLUDE_DIRECTORIES)
|
||||
set(CMAKE_REQUIRED_INCLUDES ${LIBDWARF_INTERFACE_INCLUDE_DIRECTORIES})
|
||||
CHECK_INCLUDE_FILE_CXX("libdwarf/libdwarf.h" LIBDWARF_IS_NESTED)
|
||||
CHECK_INCLUDE_FILE_CXX("libdwarf.h" LIBDWARF_IS_NOT_NESTED)
|
||||
# check_include_file("libdwarf/libdwarf.h" LIBDWARF_IS_NESTED)
|
||||
# check_support(LIBDWARF_IS_NESTED nested_libdwarf_include.cpp "" "" "")
|
||||
if(${LIBDWARF_IS_NESTED})
|
||||
target_compile_definitions(${target_name} PRIVATE CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH)
|
||||
elseif(NOT LIBDWARF_IS_NOT_NESTED)
|
||||
message(FATAL_ERROR "Couldn't find libdwarf.h")
|
||||
endif()
|
||||
# include(CheckIncludeFileCXX)
|
||||
# # include(CheckIncludeFile)
|
||||
# # There seems to be no consistency at all about where libdwarf decides to place its headers........ Figure out if
|
||||
# # it's libdwarf/libdwarf.h and libdwarf/dwarf.h or just libdwarf.h and dwarf.h
|
||||
# get_cmake_property(_variableNames VARIABLES)
|
||||
# list (SORT _variableNames)
|
||||
# foreach (_variableName ${_variableNames})
|
||||
# message(STATUS "${_variableName}=${${_variableName}}")
|
||||
# endforeach()
|
||||
# CHECK_INCLUDE_FILE_CXX("libdwarf/libdwarf.h" LIBDWARF_IS_NESTED CMAKE_REQUIRED_LIBRARIES ${LIBDWARF_LIBRARIES})
|
||||
# CHECK_INCLUDE_FILE_CXX("libdwarf.h" LIBDWARF_IS_NOT_NESTED CMAKE_REQUIRED_LIBRARIES ${LIBDWARF_LIBRARIES})
|
||||
# # check_include_file("libdwarf/libdwarf.h" LIBDWARF_IS_NESTED)
|
||||
# # check_support(LIBDWARF_IS_NESTED nested_libdwarf_include.cpp "" "" "")
|
||||
# if(${LIBDWARF_IS_NESTED})
|
||||
# target_compile_definitions(${target_name} PRIVATE CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH)
|
||||
# endif()
|
||||
else()
|
||||
target_link_libraries(${target_name} PRIVATE libdwarf::dwarf-static)
|
||||
endif()
|
||||
|
||||
@ -12,20 +12,10 @@
|
||||
#ifdef CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH
|
||||
#include <libdwarf/libdwarf.h>
|
||||
#include <libdwarf/dwarf.h>
|
||||
#else
|
||||
#ifdef __has_include
|
||||
#if __has_include(<libdwarf/libdwarf.h>)
|
||||
#include <libdwarf/libdwarf.h>
|
||||
#include <libdwarf/dwarf.h>
|
||||
#else
|
||||
#include <libdwarf.h>
|
||||
#include <dwarf.h>
|
||||
#endif
|
||||
#else
|
||||
#include <libdwarf.h>
|
||||
#include <dwarf.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
namespace cpptrace {
|
||||
namespace detail {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user