Updates for conda

This commit is contained in:
Jeremy 2024-05-03 20:07:09 -05:00
parent 0db934caf7
commit d7c19a5544
No known key found for this signature in database
GPG Key ID: 19AA8270105E8EB4
4 changed files with 26 additions and 6 deletions

View File

@ -350,7 +350,12 @@ endif()
if(CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF)
target_compile_definitions(${target_name} PUBLIC CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF)
if(CPPTRACE_USE_EXTERNAL_LIBDWARF)
find_package(libdwarf REQUIRED)
if(NOT CPPTRACE_FIND_LIBDWARF_WITH_PKGCONFIG)
find_package(libdwarf REQUIRED)
else()
find_package(PkgConfig)
pkg_check_modules(LIBDWARF REQUIRED libdwarf)
endif()
else()
include(FetchContent)
# First, dependencies: Zstd and zlib (currently relying on system zlib)
@ -440,8 +445,13 @@ if(CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF)
# 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})
if(NOT CPPTRACE_CONDA_LIBDWARF_WEIRDNESS)
get_target_property(LIBDWARF_INTERFACE_INCLUDE_DIRECTORIES ${LIBDWARF_LIBRARIES} INTERFACE_INCLUDE_DIRECTORIES)
set(CMAKE_REQUIRED_INCLUDES ${LIBDWARF_INTERFACE_INCLUDE_DIRECTORIES})
else()
set(CMAKE_REQUIRED_INCLUDES ${LIBDWARF_INCLUDE_DIRS})
target_compile_definitions(${target_name} PRIVATE CPPTRACE_CONDA_LIBDWARF_WEIRDNESS)
endif()
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)

View File

@ -159,9 +159,11 @@ if(PROJECT_IS_TOP_LEVEL)
endif()
option(CPPTRACE_USE_EXTERNAL_LIBDWARF "" OFF)
option(CPPTRACE_FIND_LIBDWARF_WITH_PKGCONFIG "" OFF)
option(CPPTRACE_USE_EXTERNAL_ZSTD "" OFF)
option(CPPTRACE_CONAN "" OFF)
option(CPPTRACE_VCPKG "" OFF)
option(CPPTRACE_CONDA_LIBDWARF_WEIRDNESS "" OFF)
option(CPPTRACE_SANITIZER_BUILD "" OFF)
option(CPPTRACE_WERROR_BUILD "" OFF)
option(CPPTRACE_POSITION_INDEPENDENT_CODE "" ON)
@ -174,4 +176,5 @@ mark_as_advanced(
CPPTRACE_WERROR_BUILD
CPPTRACE_CONAN
CPPTRACE_VCPKG
CPPTRACE_CONDA_LIBDWARF_WEIRDNESS
)

View File

@ -14,7 +14,9 @@ if(@CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF@)
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH_OLD}")
unset(CMAKE_MODULE_PATH_OLD)
endif()
find_dependency(libdwarf REQUIRED)
if(NOT @CPPTRACE_FIND_LIBDWARF_WITH_PKGCONFIG@)
find_dependency(libdwarf REQUIRED)
endif()
endif()
# We cannot modify an existing IMPORT target

View File

@ -13,8 +13,13 @@
#include <libdwarf/libdwarf.h>
#include <libdwarf/dwarf.h>
#else
#include <libdwarf.h>
#include <dwarf.h>
#ifndef CPPTRACE_CONDA_LIBDWARF_WEIRDNESS
#include <libdwarf.h>
#include <dwarf.h>
#else
#include <libdwarf.h>
#include <libdwarf-0/dwarf.h>
#endif
#endif
namespace cpptrace {