From 79aff77771a8f3a3d62852de6619a955fd4c2634 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Tue, 1 Jun 2021 04:26:35 +0300 Subject: [PATCH] Fix checks and build to work on Cygwin --- CMakeLists.txt | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b87b18..de543c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.5...3.16) project(boost_stacktrace VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX) -function(stacktrace_add_library suffix opt) +function(stacktrace_add_library suffix opt libs defs) if(NOT opt) return() @@ -30,11 +30,13 @@ function(stacktrace_add_library suffix opt) Boost::static_assert Boost::type_traits Boost::winapi + PRIVATE + ${libs} ) target_compile_definitions(boost_stacktrace_${suffix} PUBLIC BOOST_STACKTRACE_NO_LIB - PRIVATE BOOST_STACKTRACE_SOURCE + PRIVATE BOOST_STACKTRACE_SOURCE ${defs} ) if(BUILD_SHARED_LIBS) @@ -54,22 +56,23 @@ include(CheckCXXSourceCompiles) function(stacktrace_check var source incs libs defs) set(CMAKE_REQUIRED_INCLUDES "${incs}") + list(APPEND CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/build") set(CMAKE_REQUIRED_LIBRARIES "${libs}") set(CMAKE_REQUIRED_DEFINITIONS "${defs}") - check_cxx_source_compiles("#include <${CMAKE_CURRENT_SOURCE_DIR}/${source}>" ${var}) + check_cxx_source_compiles("#include \"${source}\"" ${var}) set(${var} ${${var}} PARENT_SCOPE) endfunction() -stacktrace_check(BOOST_STACKTRACE_HAS_BACKTRACE build/has_backtrace.cpp "" "backtrace" "") +stacktrace_check(BOOST_STACKTRACE_HAS_BACKTRACE has_backtrace.cpp "" "backtrace" "") set(_default_addr2line ON) if(WIN32 AND NOT CMAKE_CXX_PLATFORM_ID MATCHES "Cygwin") set(_default_addr2line OFF) endif() -stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG build/has_windbg.cpp "" "" "") -stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG_CACHED build/has_windbg_cached.cpp "${CMAKE_CURRENT_SOURCE_DIR}/../config/include" "" "") +stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG has_windbg.cpp "" "dbgeng;ole32" "") +stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG_CACHED has_windbg_cached.cpp "${CMAKE_CURRENT_SOURCE_DIR}/../config/include" "dbgeng;ole32" "") option(BOOST_STACKTRACE_ENABLE_NOOP "Boost.Stacktrace: build boost_stacktrace_noop" ON) option(BOOST_STACKTRACE_ENABLE_BACKTRACE "Boost.Stacktrace: build boost_stacktrace_backtrace" ${BOOST_STACKTRACE_HAS_BACKTRACE}) @@ -89,16 +92,12 @@ message(STATUS "Boost.Stacktrace: " "windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED}" ) -stacktrace_add_library(noop ${BOOST_STACKTRACE_ENABLE_NOOP}) -stacktrace_add_library(backtrace ${BOOST_STACKTRACE_ENABLE_BACKTRACE}) -stacktrace_add_library(addr2line ${BOOST_STACKTRACE_ENABLE_ADDR2LINE}) -stacktrace_add_library(basic ${BOOST_STACKTRACE_ENABLE_BASIC}) -stacktrace_add_library(windbg ${BOOST_STACKTRACE_ENABLE_WINDBG}) -stacktrace_add_library(windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED}) - -if(BOOST_STACKTRACE_ENABLE_BACKTRACE) - target_link_libraries(boost_stacktrace_backtrace PRIVATE backtrace) -endif() +stacktrace_add_library(noop ${BOOST_STACKTRACE_ENABLE_NOOP} "" "") +stacktrace_add_library(backtrace ${BOOST_STACKTRACE_ENABLE_BACKTRACE} "backtrace" "") +stacktrace_add_library(addr2line ${BOOST_STACKTRACE_ENABLE_ADDR2LINE} "" "") +stacktrace_add_library(basic ${BOOST_STACKTRACE_ENABLE_BASIC} "" "") +stacktrace_add_library(windbg ${BOOST_STACKTRACE_ENABLE_WINDBG} "dbgeng;ole32" "_GNU_SOURCE=1") +stacktrace_add_library(windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED} "dbgeng;ole32" "_GNU_SOURCE=1") if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")