From 5d64a98d08f5ed7d9e581412e04d8a0d66e0ba49 Mon Sep 17 00:00:00 2001 From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com> Date: Sun, 14 Jan 2024 03:11:33 -0600 Subject: [PATCH] Handle libdwarf's sporadic header placement better --- CMakeLists.txt | 10 +++++++--- cmake/OptionVariables.cmake | 2 -- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a48ff10..5b0f3f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -371,15 +371,19 @@ if(CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF) # libdwarf::dwarf-shared under fetchcontent target_link_libraries(${target_name} PRIVATE $,libdwarf::dwarf-static,$,libdwarf::dwarf-shared,libdwarf::dwarf>>) endif() + include(CheckIncludeFileCXX) + # 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 + CHECK_INCLUDE_FILE_CXX("libdwarf/libdwarf.h" LIBDWARF_IS_NESTED) + 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() if(UNIX) target_link_libraries(${target_name} PRIVATE ${CMAKE_DL_LIBS}) endif() - if(CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH) # user override - target_compile_definitions(${target_name} PRIVATE CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH) - endif() endif() if(CPPTRACE_GET_SYMBOLS_WITH_DBGHELP) diff --git a/cmake/OptionVariables.cmake b/cmake/OptionVariables.cmake index abdc269..377290d 100644 --- a/cmake/OptionVariables.cmake +++ b/cmake/OptionVariables.cmake @@ -158,7 +158,6 @@ if(PROJECT_IS_TOP_LEVEL) endif() option(CPPTRACE_USE_EXTERNAL_LIBDWARF "" OFF) -option(CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH "" OFF) option(CPPTRACE_CONAN "" OFF) option(CPPTRACE_VCPKG "" OFF) option(CPPTRACE_SANITIZER_BUILD "" OFF) @@ -168,7 +167,6 @@ mark_as_advanced( CPPTRACE_ADDR2LINE_PATH CPPTRACE_ADDR2LINE_SEARCH_SYSTEM_PATH CPPTRACE_SANITIZER_BUILD - CPPTRACE_USE_NESTED_LIBDWARF_HEADER_PATH CPPTRACE_CONAN CPPTRACE_VCPKG )