@@ -9,7 +9,7 @@ set(package_name "cpptrace")
99
1010project (
1111 cpptrace
12- VERSION 0.8.2
12+ VERSION 0.8.3
1313 DESCRIPTION "Simple, portable, and self-contained stacktrace library for C++11 and newer "
1414 HOMEPAGE_URL "https://github.com/jeremy-rifkin/cpptrace"
1515 LANGUAGES C CXX
@@ -34,12 +34,20 @@ endif()
3434if (PROJECT_IS_TOP_LEVEL)
3535 if (CMAKE_GENERATOR STREQUAL "Ninja" )
3636 if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU" )
37- SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always" )
37+ include (CheckCXXCompilerFlag)
38+ check_cxx_compiler_flag(-fdiagnostics-color=always HAS_CXX_FDIAGNOSTICS_COLOR)
39+ if (HAS_CXX_FDIAGNOSTICS_COLOR)
40+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always" )
41+ endif ()
3842 elseif ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID} " STREQUAL "AppleClang" )
3943 SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics" )
4044 endif ()
4145 if ("${CMAKE_C_COMPILER_ID} " STREQUAL "GNU" )
42- SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always" )
46+ include (CheckCCompilerFlag)
47+ check_c_compiler_flag(-fdiagnostics-color=always HAS_C_FDIAGNOSTICS_COLOR)
48+ if (HAS_C_FDIAGNOSTICS_COLOR)
49+ SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always" )
50+ endif ()
4351 elseif ("${CMAKE_C_COMPILER_ID} " STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID} " STREQUAL "AppleClang" )
4452 SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcolor-diagnostics" )
4553 endif ()
@@ -119,6 +127,7 @@ target_sources(
119127 src/demangle/demangle_with_cxxabi.cpp
120128 src/demangle/demangle_with_nothing.cpp
121129 src/demangle/demangle_with_winapi.cpp
130+ src/jit/jit_objects.cpp
122131 src/snippets/snippet.cpp
123132 src/symbols/dwarf/debug_map_resolver.cpp
124133 src/symbols/dwarf/dwarf_options.cpp
@@ -136,7 +145,11 @@ target_sources(
136145 src/unwind/unwind_with_nothing.cpp
137146 src/unwind/unwind_with_unwind.cpp
138147 src/unwind/unwind_with_winapi.cpp
148+ src/utils/io/file.cpp
149+ src/utils/io/memory_file_view.cpp
150+ src/utils/error.cpp
139151 src/utils/microfmt.cpp
152+ src/utils/string_view.cpp
140153 src/utils/utils.cpp
141154 src/platform/dbghelp_utils.cpp
142155)
@@ -154,9 +167,15 @@ target_include_directories(
154167 src
155168)
156169
170+ if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" AND "${CMAKE_CXX_COMPILER_FRONTEND_VARIANT} " STREQUAL "MSVC" )
171+ set (IS_CLANG_CL 1)
172+ else ()
173+ set (IS_CLANG_CL 0)
174+ endif ()
175+
157176set (
158177 warning_options
159- $<$<NOT :$<CXX_COMPILER_ID:MSVC >>:-Wall -Wextra -Werror=return-type -Wundef>
178+ $<$<NOT :$<OR :$< CXX_COMPILER_ID:MSVC >,$< STREQUAL : ${IS_CLANG_CL} ,1> >>:-Wall -Wextra -Werror=return-type -Wundef>
160179 $<$<CXX_COMPILER_ID:GNU>:-Wuseless-cast -Wmaybe-uninitialized>
161180 $<$<CXX_COMPILER_ID:MSVC >:/W4 /permissive->
162181)
@@ -176,6 +195,11 @@ target_compile_options(
176195 ${warning_options}
177196)
178197
198+ if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0)
199+ # https://godbolt.org/z/qYh89E6rq
200+ target_compile_options (${target_name} PRIVATE -Wno-missing-field-initializers)
201+ endif ()
202+
179203set (CPPTRACE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR} )
180204set (CPPTRACE_VERSION_MINOR ${PROJECT_VERSION_MINOR} )
181205set (CPPTRACE_VERSION_PATCH ${PROJECT_VERSION_PATCH} )
@@ -243,19 +267,19 @@ endif()
243267# =================================================== Back-end setup ===================================================
244268
245269if (HAS_CXX_EXCEPTION_TYPE)
246- target_compile_definitions (${target_name} PUBLIC CPPTRACE_HAS_CXX_EXCEPTION_TYPE)
270+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_HAS_CXX_EXCEPTION_TYPE)
247271endif ()
248272
249273if (HAS_DL_FIND_OBJECT)
250- target_compile_definitions (${target_name} PUBLIC CPPTRACE_HAS_DL_FIND_OBJECT)
274+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_HAS_DL_FIND_OBJECT)
251275endif ()
252276
253277if (HAS_DLADDR1)
254- target_compile_definitions (${target_name} PUBLIC CPPTRACE_HAS_DLADDR1)
278+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_HAS_DLADDR1)
255279endif ()
256280
257281if (HAS_MACH_VM)
258- target_compile_definitions (${target_name} PUBLIC HAS_MACH_VM )
282+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_HAS_MACH_VM )
259283endif ()
260284
261285# Symbols
@@ -267,20 +291,20 @@ if(CPPTRACE_GET_SYMBOLS_WITH_LIBBACKTRACE)
267291 message (WARNING "Cpptrace: Using libbacktrace for symbols but libbacktrace doesn't appear installed or configured properly. You may need to specify CPPTRACE_BACKTRACE_PATH." )
268292 endif ()
269293 endif ()
270- target_compile_definitions (${target_name} PUBLIC CPPTRACE_GET_SYMBOLS_WITH_LIBBACKTRACE)
294+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_GET_SYMBOLS_WITH_LIBBACKTRACE)
271295 target_link_libraries (${target_name} PRIVATE backtrace ${CMAKE_DL_LIBS} )
272296endif ()
273297
274298if (CPPTRACE_GET_SYMBOLS_WITH_LIBDL)
275- target_compile_definitions (${target_name} PUBLIC CPPTRACE_GET_SYMBOLS_WITH_LIBDL)
299+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_GET_SYMBOLS_WITH_LIBDL)
276300 target_link_libraries (${target_name} PRIVATE ${CMAKE_DL_LIBS} )
277301endif ()
278302
279303if (CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE)
280304 # set(CPPTRACE_ADDR2LINE_PATH "" CACHE STRING "Absolute path to the addr2line executable you want to use.")
281305 # option(CPPTRACE_ADDR2LINE_SEARCH_SYSTEM_PATH "" OFF)
282306 if (CPPTRACE_ADDR2LINE_SEARCH_SYSTEM_PATH)
283- target_compile_definitions (${target_name} PUBLIC CPPTRACE_ADDR2LINE_SEARCH_SYSTEM_PATH)
307+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_ADDR2LINE_SEARCH_SYSTEM_PATH)
284308 else ()
285309 if ("${CPPTRACE_ADDR2LINE_PATH} " STREQUAL "" )
286310 if (APPLE )
@@ -292,16 +316,16 @@ if(CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE)
292316 set (CPPTRACE_ADDR2LINE_PATH_FINAL "${CPPTRACE_ADDR2LINE_PATH} " )
293317 endif ()
294318 message (STATUS "Cpptrace: Using ${CPPTRACE_ADDR2LINE_PATH_FINAL} for addr2line path" )
295- target_compile_definitions (${target_name} PUBLIC CPPTRACE_ADDR2LINE_PATH="${CPPTRACE_ADDR2LINE_PATH_FINAL} " )
319+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_ADDR2LINE_PATH="${CPPTRACE_ADDR2LINE_PATH_FINAL} " )
296320 endif ()
297- target_compile_definitions (${target_name} PUBLIC CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE)
321+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE)
298322 if (UNIX )
299323 target_link_libraries (${target_name} PRIVATE ${CMAKE_DL_LIBS} )
300324 endif ()
301325endif ()
302326
303327if (CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF)
304- target_compile_definitions (${target_name} PUBLIC CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF)
328+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF)
305329 if (CPPTRACE_USE_EXTERNAL_LIBDWARF)
306330 if (NOT CPPTRACE_FIND_LIBDWARF_WITH_PKGCONFIG)
307331 find_package (libdwarf REQUIRED)
@@ -412,20 +436,20 @@ if(CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF)
412436endif ()
413437
414438if (CPPTRACE_GET_SYMBOLS_WITH_DBGHELP)
415- target_compile_definitions (${target_name} PUBLIC CPPTRACE_GET_SYMBOLS_WITH_DBGHELP)
439+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_GET_SYMBOLS_WITH_DBGHELP)
416440 target_link_libraries (${target_name} PRIVATE dbghelp)
417441endif ()
418442
419443if (CPPTRACE_GET_SYMBOLS_WITH_NOTHING)
420- target_compile_definitions (${target_name} PUBLIC CPPTRACE_GET_SYMBOLS_WITH_NOTHING)
444+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_GET_SYMBOLS_WITH_NOTHING)
421445endif ()
422446
423447# Unwinding
424448if (CPPTRACE_UNWIND_WITH_UNWIND)
425449 if (NOT HAS_UNWIND)
426450 message (WARNING "Cpptrace: CPPTRACE_UNWIND_WITH_UNWIND specified but libgcc unwind doesn't seem to be available." )
427451 endif ()
428- target_compile_definitions (${target_name} PUBLIC CPPTRACE_UNWIND_WITH_UNWIND)
452+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_UNWIND_WITH_UNWIND)
429453endif ()
430454
431455if (CPPTRACE_UNWIND_WITH_LIBUNWIND)
@@ -461,56 +485,56 @@ if(CPPTRACE_UNWIND_WITH_LIBUNWIND)
461485 target_include_directories (${target_name} PRIVATE ${LIBUNWIND_INCLUDE_DIRS} )
462486 target_link_libraries (${target_name} PRIVATE ${LIBUNWIND_LDFLAGS} )
463487 endif ()
464- target_compile_definitions (${target_name} PUBLIC CPPTRACE_UNWIND_WITH_LIBUNWIND UNW_LOCAL_ONLY)
488+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_UNWIND_WITH_LIBUNWIND UNW_LOCAL_ONLY)
465489 endif ()
466490endif ()
467491
468492if (CPPTRACE_UNWIND_WITH_EXECINFO)
469493 if (NOT HAS_EXECINFO)
470494 message (WARNING "Cpptrace: CPPTRACE_UNWIND_WITH_EXECINFO specified but execinfo.h doesn't seem to be available." )
471495 endif ()
472- target_compile_definitions (${target_name} PUBLIC CPPTRACE_UNWIND_WITH_EXECINFO)
496+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_UNWIND_WITH_EXECINFO)
473497endif ()
474498
475499if (CPPTRACE_UNWIND_WITH_WINAPI)
476- target_compile_definitions (${target_name} PUBLIC CPPTRACE_UNWIND_WITH_WINAPI)
500+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_UNWIND_WITH_WINAPI)
477501endif ()
478502
479503if (CPPTRACE_UNWIND_WITH_DBGHELP)
480504 if (NOT HAS_STACKWALK)
481505 message (WARNING "Cpptrace: CPPTRACE_UNWIND_WITH_DBGHELP specified but dbghelp stackwalk64 doesn't seem to be available." )
482506 endif ()
483- target_compile_definitions (${target_name} PUBLIC CPPTRACE_UNWIND_WITH_DBGHELP)
507+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_UNWIND_WITH_DBGHELP)
484508 target_link_libraries (${target_name} PRIVATE dbghelp)
485509endif ()
486510
487511if (CPPTRACE_UNWIND_WITH_NOTHING)
488- target_compile_definitions (${target_name} PUBLIC CPPTRACE_UNWIND_WITH_NOTHING)
512+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_UNWIND_WITH_NOTHING)
489513endif ()
490514
491515# Demangling
492516if (CPPTRACE_DEMANGLE_WITH_CXXABI)
493517 if (NOT HAS_CXXABI)
494518 message (WARNING "Cpptrace: CPPTRACE_DEMANGLE_WITH_CXXABI specified but cxxabi.h doesn't seem to be available." )
495519 endif ()
496- target_compile_definitions (${target_name} PUBLIC CPPTRACE_DEMANGLE_WITH_CXXABI)
520+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_DEMANGLE_WITH_CXXABI)
497521endif ()
498522
499523if (CPPTRACE_DEMANGLE_WITH_WINAPI)
500- target_compile_definitions (${target_name} PUBLIC CPPTRACE_DEMANGLE_WITH_WINAPI)
524+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_DEMANGLE_WITH_WINAPI)
501525 target_link_libraries (${target_name} PRIVATE dbghelp)
502526endif ()
503527
504528if (CPPTRACE_DEMANGLE_WITH_NOTHING)
505- target_compile_definitions (${target_name} PUBLIC CPPTRACE_DEMANGLE_WITH_NOTHING)
529+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_DEMANGLE_WITH_NOTHING)
506530endif ()
507531
508532if (NOT "${CPPTRACE_BACKTRACE_PATH} " STREQUAL "" )
509- target_compile_definitions (${target_name} PUBLIC CPPTRACE_BACKTRACE_PATH=${CPPTRACE_BACKTRACE_PATH} )
533+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_BACKTRACE_PATH=${CPPTRACE_BACKTRACE_PATH} )
510534endif ()
511535
512536if (NOT "${CPPTRACE_HARD_MAX_FRAMES} " STREQUAL "" )
513- target_compile_definitions (${target_name} PUBLIC CPPTRACE_HARD_MAX_FRAMES=${CPPTRACE_HARD_MAX_FRAMES} )
537+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_HARD_MAX_FRAMES=${CPPTRACE_HARD_MAX_FRAMES} )
514538endif ()
515539
516540# ====================================================== Install =======================================================
0 commit comments