Skip to content

Commit 79aff77

Browse files
committed
Fix checks and build to work on Cygwin
1 parent 1be59df commit 79aff77

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

CMakeLists.txt

+15-16
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.5...3.16)
66

77
project(boost_stacktrace VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
88

9-
function(stacktrace_add_library suffix opt)
9+
function(stacktrace_add_library suffix opt libs defs)
1010

1111
if(NOT opt)
1212
return()
@@ -30,11 +30,13 @@ function(stacktrace_add_library suffix opt)
3030
Boost::static_assert
3131
Boost::type_traits
3232
Boost::winapi
33+
PRIVATE
34+
${libs}
3335
)
3436

3537
target_compile_definitions(boost_stacktrace_${suffix}
3638
PUBLIC BOOST_STACKTRACE_NO_LIB
37-
PRIVATE BOOST_STACKTRACE_SOURCE
39+
PRIVATE BOOST_STACKTRACE_SOURCE ${defs}
3840
)
3941

4042
if(BUILD_SHARED_LIBS)
@@ -54,22 +56,23 @@ include(CheckCXXSourceCompiles)
5456
function(stacktrace_check var source incs libs defs)
5557

5658
set(CMAKE_REQUIRED_INCLUDES "${incs}")
59+
list(APPEND CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/build")
5760
set(CMAKE_REQUIRED_LIBRARIES "${libs}")
5861
set(CMAKE_REQUIRED_DEFINITIONS "${defs}")
59-
check_cxx_source_compiles("#include <${CMAKE_CURRENT_SOURCE_DIR}/${source}>" ${var})
62+
check_cxx_source_compiles("#include \"${source}\"" ${var})
6063
set(${var} ${${var}} PARENT_SCOPE)
6164

6265
endfunction()
6366

64-
stacktrace_check(BOOST_STACKTRACE_HAS_BACKTRACE build/has_backtrace.cpp "" "backtrace" "")
67+
stacktrace_check(BOOST_STACKTRACE_HAS_BACKTRACE has_backtrace.cpp "" "backtrace" "")
6568

6669
set(_default_addr2line ON)
6770
if(WIN32 AND NOT CMAKE_CXX_PLATFORM_ID MATCHES "Cygwin")
6871
set(_default_addr2line OFF)
6972
endif()
7073

71-
stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG build/has_windbg.cpp "" "" "")
72-
stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG_CACHED build/has_windbg_cached.cpp "${CMAKE_CURRENT_SOURCE_DIR}/../config/include" "" "")
74+
stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG has_windbg.cpp "" "dbgeng;ole32" "")
75+
stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG_CACHED has_windbg_cached.cpp "${CMAKE_CURRENT_SOURCE_DIR}/../config/include" "dbgeng;ole32" "")
7376

7477
option(BOOST_STACKTRACE_ENABLE_NOOP "Boost.Stacktrace: build boost_stacktrace_noop" ON)
7578
option(BOOST_STACKTRACE_ENABLE_BACKTRACE "Boost.Stacktrace: build boost_stacktrace_backtrace" ${BOOST_STACKTRACE_HAS_BACKTRACE})
@@ -89,16 +92,12 @@ message(STATUS "Boost.Stacktrace: "
8992
"windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED}"
9093
)
9194

92-
stacktrace_add_library(noop ${BOOST_STACKTRACE_ENABLE_NOOP})
93-
stacktrace_add_library(backtrace ${BOOST_STACKTRACE_ENABLE_BACKTRACE})
94-
stacktrace_add_library(addr2line ${BOOST_STACKTRACE_ENABLE_ADDR2LINE})
95-
stacktrace_add_library(basic ${BOOST_STACKTRACE_ENABLE_BASIC})
96-
stacktrace_add_library(windbg ${BOOST_STACKTRACE_ENABLE_WINDBG})
97-
stacktrace_add_library(windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED})
98-
99-
if(BOOST_STACKTRACE_ENABLE_BACKTRACE)
100-
target_link_libraries(boost_stacktrace_backtrace PRIVATE backtrace)
101-
endif()
95+
stacktrace_add_library(noop ${BOOST_STACKTRACE_ENABLE_NOOP} "" "")
96+
stacktrace_add_library(backtrace ${BOOST_STACKTRACE_ENABLE_BACKTRACE} "backtrace" "")
97+
stacktrace_add_library(addr2line ${BOOST_STACKTRACE_ENABLE_ADDR2LINE} "" "")
98+
stacktrace_add_library(basic ${BOOST_STACKTRACE_ENABLE_BASIC} "" "")
99+
stacktrace_add_library(windbg ${BOOST_STACKTRACE_ENABLE_WINDBG} "dbgeng;ole32" "_GNU_SOURCE=1")
100+
stacktrace_add_library(windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED} "dbgeng;ole32" "_GNU_SOURCE=1")
102101

103102
if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
104103

0 commit comments

Comments
 (0)