@@ -8,6 +8,7 @@ option(BUILD_COVERAGE "Build code with code coverage profiling instrumentation"
88option (BUILD_EXAMPLE "Build the example program (example/)" OFF )
99option (BUILD_TESTING "Build the unit tests (test/)" OFF )
1010option (SANITIZE "Build with address sanitizer and undefined behavior sanitizer" OFF )
11+ option (FUZZ_W3C_PROPAGATION "Build a fuzzer for W3C propagation" OFF )
1112
1213set (CMAKE_BUILD_TYPE "RelWithDebInfo" )
1314set (CMAKE_POSITION_INDEPENDENT_CODE ON )
@@ -20,12 +21,26 @@ include(ProcessorCount)
2021ProcessorCount(NUM_PROCESSORS)
2122set (MAKE_JOB_COUNT ${NUM_PROCESSORS} CACHE STRING "Number of jobs to use when building libcurl" )
2223
23- if (SANITIZE )
24+ function (add_sanitizers )
2425 add_compile_options (-fsanitize=address)
2526 add_link_options (-fsanitize=address)
2627 add_compile_options (-fsanitize=undefined)
2728 add_link_options (-fsanitize=undefined)
28- # Thread sanitizer fails with "unexpected memory mapping".
29+ endfunction ()
30+
31+ if (FUZZ_W3C_PROPAGATION)
32+ add_compile_options (-fsanitize=fuzzer)
33+ add_link_options (-fsanitize=fuzzer)
34+ add_sanitizers()
35+ add_subdirectory (fuzz/w3c-propagation)
36+ endif ()
37+
38+ if (SANITIZE)
39+ add_sanitizers()
40+ endif ()
41+
42+ if (BUILD_TESTING)
43+ set (CMAKE_BUILD_TYPE "Debug" )
2944endif ()
3045
3146include (ExternalProject)
@@ -70,7 +85,9 @@ target_sources(dd_trace_cpp PRIVATE
7085 src/datadog/error.cpp
7186 src/datadog/event_scheduler.cpp
7287 src/datadog/expected.cpp
88+ src/datadog/extracted_data.cpp
7389 src/datadog/glob.cpp
90+ src/datadog/hex.cpp
7491 src/datadog/http_client.cpp
7592 src/datadog/id_generator.cpp
7693 src/datadog/limiter.cpp
@@ -103,6 +120,7 @@ target_sources(dd_trace_cpp PRIVATE
103120 src/datadog/trace_sampler.cpp
104121 src/datadog/trace_segment.cpp
105122 src/datadog/version .cpp
123+ src/datadog/w3c_propagation.cpp
106124)
107125
108126# This library's public headers are just its source headers.
@@ -125,7 +143,9 @@ target_sources(dd_trace_cpp PUBLIC
125143 src/datadog/error.h
126144 src/datadog/event_scheduler.h
127145 src/datadog/expected.h
146+ src/datadog/extracted_data.h
128147 src/datadog/glob.h
148+ src/datadog/hex.h
129149 src/datadog/http_client.h
130150 src/datadog/id_generator.h
131151 src/datadog/json_fwd.hpp
@@ -160,6 +180,7 @@ target_sources(dd_trace_cpp PUBLIC
160180 src/datadog/trace_sampler.h
161181 src/datadog/trace_segment.h
162182 src/datadog/version .h
183+ src/datadog/w3c_propagation.h
163184)
164185
165186add_dependencies (dd_trace_cpp curl)
0 commit comments