Try again to fix libdwarf #includes
This commit is contained in:
parent
5d64a98d08
commit
399e52f460
@ -371,13 +371,22 @@ if(CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF)
|
|||||||
# libdwarf::dwarf-shared under fetchcontent
|
# 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>>)
|
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>>)
|
||||||
endif()
|
endif()
|
||||||
include(CheckIncludeFileCXX)
|
# include(CheckIncludeFileCXX)
|
||||||
# There seems to be no consistency at all about where libdwarf decides to place its headers........ Figure out if
|
# # include(CheckIncludeFile)
|
||||||
# it's libdwarf/libdwarf.h and libdwarf/dwarf.h or just libdwarf.h and dwarf.h
|
# # There seems to be no consistency at all about where libdwarf decides to place its headers........ Figure out if
|
||||||
CHECK_INCLUDE_FILE_CXX("libdwarf/libdwarf.h" LIBDWARF_IS_NESTED)
|
# # it's libdwarf/libdwarf.h and libdwarf/dwarf.h or just libdwarf.h and dwarf.h
|
||||||
if(${LIBDWARF_IS_NESTED})
|
# get_cmake_property(_variableNames VARIABLES)
|
||||||
target_compile_definitions(${target_name} PRIVATE CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH)
|
# list (SORT _variableNames)
|
||||||
endif()
|
# 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()
|
else()
|
||||||
target_link_libraries(${target_name} PRIVATE libdwarf::dwarf-static)
|
target_link_libraries(${target_name} PRIVATE libdwarf::dwarf-static)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
#include <cpptrace/cpptrace.hpp>
|
#include <cpptrace/cpptrace.hpp>
|
||||||
#include "symbols.hpp"
|
#include "symbols.hpp"
|
||||||
#include "../utils/common.hpp"
|
#include "../utils/common.hpp"
|
||||||
#include "../utils/dwarf.hpp"
|
#include "../utils/dwarf.hpp" // has dwarf #includes
|
||||||
#include "../utils/error.hpp"
|
#include "../utils/error.hpp"
|
||||||
#include "../binary/object.hpp"
|
#include "../binary/object.hpp"
|
||||||
#include "../utils/utils.hpp"
|
#include "../utils/utils.hpp"
|
||||||
@ -20,14 +20,6 @@
|
|||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#ifdef CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH
|
|
||||||
#include <libdwarf/libdwarf.h>
|
|
||||||
#include <libdwarf/dwarf.h>
|
|
||||||
#else
|
|
||||||
#include <libdwarf.h>
|
|
||||||
#include <dwarf.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// It's been tricky to piece together how to handle all this dwarf stuff. Some resources I've used are
|
// It's been tricky to piece together how to handle all this dwarf stuff. Some resources I've used are
|
||||||
// https://www.prevanders.net/libdwarf.pdf
|
// https://www.prevanders.net/libdwarf.pdf
|
||||||
// https://github.com/davea42/libdwarf-addr2line
|
// https://github.com/davea42/libdwarf-addr2line
|
||||||
|
|||||||
@ -10,11 +10,21 @@
|
|||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
#ifdef CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH
|
#ifdef CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH
|
||||||
#include <libdwarf/libdwarf.h>
|
#include <libdwarf/libdwarf.h>
|
||||||
#include <libdwarf/dwarf.h>
|
#include <libdwarf/dwarf.h>
|
||||||
#else
|
#else
|
||||||
#include <libdwarf.h>
|
#ifdef __has_include
|
||||||
#include <dwarf.h>
|
#ifdef __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
|
#endif
|
||||||
|
|
||||||
namespace cpptrace {
|
namespace cpptrace {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user