@@ -9,7 +9,7 @@ set(package_name "cpptrace")
9
9
10
10
project (
11
11
cpptrace
12
- VERSION 0.8.2
12
+ VERSION 0.8.3
13
13
DESCRIPTION "Simple, portable, and self-contained stacktrace library for C++11 and newer "
14
14
HOMEPAGE_URL "https://github.com/jeremy-rifkin/cpptrace"
15
15
LANGUAGES C CXX
@@ -34,12 +34,20 @@ endif()
34
34
if (PROJECT_IS_TOP_LEVEL)
35
35
if (CMAKE_GENERATOR STREQUAL "Ninja" )
36
36
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 ()
38
42
elseif ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID} " STREQUAL "AppleClang" )
39
43
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics" )
40
44
endif ()
41
45
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 ()
43
51
elseif ("${CMAKE_C_COMPILER_ID} " STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID} " STREQUAL "AppleClang" )
44
52
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcolor-diagnostics" )
45
53
endif ()
@@ -119,6 +127,7 @@ target_sources(
119
127
src/demangle/demangle_with_cxxabi.cpp
120
128
src/demangle/demangle_with_nothing.cpp
121
129
src/demangle/demangle_with_winapi.cpp
130
+ src/jit/jit_objects.cpp
122
131
src/snippets/snippet.cpp
123
132
src/symbols/dwarf/debug_map_resolver.cpp
124
133
src/symbols/dwarf/dwarf_options.cpp
@@ -136,7 +145,11 @@ target_sources(
136
145
src/unwind/unwind_with_nothing.cpp
137
146
src/unwind/unwind_with_unwind.cpp
138
147
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
139
151
src/utils/microfmt.cpp
152
+ src/utils/string_view.cpp
140
153
src/utils/utils.cpp
141
154
src/platform/dbghelp_utils.cpp
142
155
)
@@ -154,9 +167,15 @@ target_include_directories(
154
167
src
155
168
)
156
169
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
+
157
176
set (
158
177
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>
160
179
$<$<CXX_COMPILER_ID:GNU>:-Wuseless-cast -Wmaybe-uninitialized>
161
180
$<$<CXX_COMPILER_ID:MSVC >:/W4 /permissive->
162
181
)
@@ -176,6 +195,11 @@ target_compile_options(
176
195
${warning_options}
177
196
)
178
197
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
+
179
203
set (CPPTRACE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR} )
180
204
set (CPPTRACE_VERSION_MINOR ${PROJECT_VERSION_MINOR} )
181
205
set (CPPTRACE_VERSION_PATCH ${PROJECT_VERSION_PATCH} )
@@ -243,19 +267,19 @@ endif()
243
267
# =================================================== Back-end setup ===================================================
244
268
245
269
if (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)
247
271
endif ()
248
272
249
273
if (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)
251
275
endif ()
252
276
253
277
if (HAS_DLADDR1)
254
- target_compile_definitions (${target_name} PUBLIC CPPTRACE_HAS_DLADDR1)
278
+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_HAS_DLADDR1)
255
279
endif ()
256
280
257
281
if (HAS_MACH_VM)
258
- target_compile_definitions (${target_name} PUBLIC HAS_MACH_VM )
282
+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_HAS_MACH_VM )
259
283
endif ()
260
284
261
285
# Symbols
@@ -267,20 +291,20 @@ if(CPPTRACE_GET_SYMBOLS_WITH_LIBBACKTRACE)
267
291
message (WARNING "Cpptrace: Using libbacktrace for symbols but libbacktrace doesn't appear installed or configured properly. You may need to specify CPPTRACE_BACKTRACE_PATH." )
268
292
endif ()
269
293
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)
271
295
target_link_libraries (${target_name} PRIVATE backtrace ${CMAKE_DL_LIBS} )
272
296
endif ()
273
297
274
298
if (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)
276
300
target_link_libraries (${target_name} PRIVATE ${CMAKE_DL_LIBS} )
277
301
endif ()
278
302
279
303
if (CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE)
280
304
# set(CPPTRACE_ADDR2LINE_PATH "" CACHE STRING "Absolute path to the addr2line executable you want to use.")
281
305
# option(CPPTRACE_ADDR2LINE_SEARCH_SYSTEM_PATH "" OFF)
282
306
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)
284
308
else ()
285
309
if ("${CPPTRACE_ADDR2LINE_PATH} " STREQUAL "" )
286
310
if (APPLE )
@@ -292,16 +316,16 @@ if(CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE)
292
316
set (CPPTRACE_ADDR2LINE_PATH_FINAL "${CPPTRACE_ADDR2LINE_PATH} " )
293
317
endif ()
294
318
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} " )
296
320
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)
298
322
if (UNIX )
299
323
target_link_libraries (${target_name} PRIVATE ${CMAKE_DL_LIBS} )
300
324
endif ()
301
325
endif ()
302
326
303
327
if (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)
305
329
if (CPPTRACE_USE_EXTERNAL_LIBDWARF)
306
330
if (NOT CPPTRACE_FIND_LIBDWARF_WITH_PKGCONFIG)
307
331
find_package (libdwarf REQUIRED)
@@ -412,20 +436,20 @@ if(CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF)
412
436
endif ()
413
437
414
438
if (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)
416
440
target_link_libraries (${target_name} PRIVATE dbghelp)
417
441
endif ()
418
442
419
443
if (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)
421
445
endif ()
422
446
423
447
# Unwinding
424
448
if (CPPTRACE_UNWIND_WITH_UNWIND)
425
449
if (NOT HAS_UNWIND)
426
450
message (WARNING "Cpptrace: CPPTRACE_UNWIND_WITH_UNWIND specified but libgcc unwind doesn't seem to be available." )
427
451
endif ()
428
- target_compile_definitions (${target_name} PUBLIC CPPTRACE_UNWIND_WITH_UNWIND)
452
+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_UNWIND_WITH_UNWIND)
429
453
endif ()
430
454
431
455
if (CPPTRACE_UNWIND_WITH_LIBUNWIND)
@@ -461,56 +485,56 @@ if(CPPTRACE_UNWIND_WITH_LIBUNWIND)
461
485
target_include_directories (${target_name} PRIVATE ${LIBUNWIND_INCLUDE_DIRS} )
462
486
target_link_libraries (${target_name} PRIVATE ${LIBUNWIND_LDFLAGS} )
463
487
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)
465
489
endif ()
466
490
endif ()
467
491
468
492
if (CPPTRACE_UNWIND_WITH_EXECINFO)
469
493
if (NOT HAS_EXECINFO)
470
494
message (WARNING "Cpptrace: CPPTRACE_UNWIND_WITH_EXECINFO specified but execinfo.h doesn't seem to be available." )
471
495
endif ()
472
- target_compile_definitions (${target_name} PUBLIC CPPTRACE_UNWIND_WITH_EXECINFO)
496
+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_UNWIND_WITH_EXECINFO)
473
497
endif ()
474
498
475
499
if (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)
477
501
endif ()
478
502
479
503
if (CPPTRACE_UNWIND_WITH_DBGHELP)
480
504
if (NOT HAS_STACKWALK)
481
505
message (WARNING "Cpptrace: CPPTRACE_UNWIND_WITH_DBGHELP specified but dbghelp stackwalk64 doesn't seem to be available." )
482
506
endif ()
483
- target_compile_definitions (${target_name} PUBLIC CPPTRACE_UNWIND_WITH_DBGHELP)
507
+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_UNWIND_WITH_DBGHELP)
484
508
target_link_libraries (${target_name} PRIVATE dbghelp)
485
509
endif ()
486
510
487
511
if (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)
489
513
endif ()
490
514
491
515
# Demangling
492
516
if (CPPTRACE_DEMANGLE_WITH_CXXABI)
493
517
if (NOT HAS_CXXABI)
494
518
message (WARNING "Cpptrace: CPPTRACE_DEMANGLE_WITH_CXXABI specified but cxxabi.h doesn't seem to be available." )
495
519
endif ()
496
- target_compile_definitions (${target_name} PUBLIC CPPTRACE_DEMANGLE_WITH_CXXABI)
520
+ target_compile_definitions (${target_name} PRIVATE CPPTRACE_DEMANGLE_WITH_CXXABI)
497
521
endif ()
498
522
499
523
if (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)
501
525
target_link_libraries (${target_name} PRIVATE dbghelp)
502
526
endif ()
503
527
504
528
if (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)
506
530
endif ()
507
531
508
532
if (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} )
510
534
endif ()
511
535
512
536
if (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} )
514
538
endif ()
515
539
516
540
# ====================================================== Install =======================================================
0 commit comments