Skip to content

Commit 8112767

Browse files
authored
deps: bump libcurl to 8.8.0 (#135)
- Fix crashes on macOS Sonoma: curl/curl#11893 - Disable more curl features. - Debug build do not enable sanitizer anymore. * msvc: link against ws2_32.lib
1 parent 26e666f commit 8112767

File tree

4 files changed

+76
-32
lines changed

4 files changed

+76
-32
lines changed

CMakeLists.txt

Lines changed: 55 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11
# Note: Make sure that this version is the same as that in
22
# "./CheckRequiredCMakeVersion.cmake".
33
cmake_minimum_required(VERSION 3.24)
4+
cmake_policy(SET CMP0077 NEW)
45

56
project(dd-trace-cpp)
67

7-
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
8-
option(BUILD_STATIC_LIBS "Build static libraries" OFF)
8+
set(CMAKE_CXX_STANDARD 17)
9+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
10+
set(CMAKE_CXX_EXTENSIONS OFF)
11+
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
12+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
13+
14+
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
15+
option(BUILD_STATIC_LIBS "Build static libraries" ON)
16+
17+
set(DD_TRACE_TRANSPORT "curl" CACHE STRING "HTTP transport that dd-trace-cpp uses to communicate with the Datadog Agent, can be either 'none' or 'curl'")
918

1019
# Consumer of the library using FetchContent do not need
1120
# to build unit tests, fuzzers and examples.
@@ -20,26 +29,20 @@ endif()
2029

2130
if (NOT CMAKE_BUILD_TYPE)
2231
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
23-
elseif (CMAKE_BUILD_TYPE STREQUAL "Debug")
24-
set(DD_TRACE_ENABLE_SANITIZE ON)
2532
endif ()
2633

27-
# Linking this library requires libcurl and threads.
34+
# Linking this library requires threads.
2835
find_package(Threads REQUIRED)
2936
include(cmake/deps/curl.cmake)
3037

31-
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
32-
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
33-
set(CMAKE_CXX_STANDARD 17)
34-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
35-
set(CMAKE_CXX_EXTENSIONS OFF)
36-
3738
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/src/datadog/version.cpp DD_TRACE_VERSION_CPP_CONTENTS REGEX "#define DD_TRACE_VERSION( |_NUM )")
3839
string(REGEX MATCH "#define DD_TRACE_VERSION \"[^\"]*" DD_TRACE_VERSION ${DD_TRACE_VERSION_CPP_CONTENTS})
3940
string(REGEX REPLACE "[^\"]+\"" "" DD_TRACE_VERSION ${DD_TRACE_VERSION})
4041
message(STATUS "dd-trace-cpp version=[${DD_TRACE_VERSION}]")
4142
unset(DD_TRACE_VERSION_CPP_CONTENTS)
4243

44+
message(STATUS "dd-trace-cpp transport=${DD_TRACE_TRANSPORT}")
45+
4346
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
4447
message(STATUS "Compiler: MSVC ${CMAKE_CXX_COMPILER_VERSION}")
4548
include(cmake/compiler/msvc.cmake)
@@ -73,19 +76,15 @@ endif ()
7376
add_library(dd_trace_cpp-objects OBJECT)
7477
add_library(dd_trace::obj ALIAS dd_trace_cpp-objects)
7578

76-
add_dependencies(dd_trace_cpp-objects libcurl)
77-
7879
target_sources(dd_trace_cpp-objects
7980
PRIVATE
8081
src/datadog/base64.cpp
8182
src/datadog/cerr_logger.cpp
8283
src/datadog/clock.cpp
8384
src/datadog/config_manager.cpp
8485
src/datadog/collector_response.cpp
85-
src/datadog/curl.cpp
8686
src/datadog/datadog_agent_config.cpp
8787
src/datadog/datadog_agent.cpp
88-
src/datadog/default_http_client_curl.cpp
8988
# src/datadog/default_http_client_null.cpp use libcurl
9089
src/datadog/environment.cpp
9190
src/datadog/error.cpp
@@ -200,19 +199,20 @@ target_sources(dd_trace_cpp-objects PUBLIC
200199
src/datadog/w3c_propagation.h
201200
)
202201

203-
# TODO: define public/private
204202
# Headers location are different depending of whether we are building
205203
# or installing the library.
206-
# target_include_directories(dd_trace_cpp-objects
207-
# PUBLIC
208-
# $<INSTALL_INTERFACE:src>
209-
# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
210-
# )
204+
target_include_directories(dd_trace_cpp-objects
205+
PUBLIC
206+
$<INSTALL_INTERFACE:src>
207+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
208+
)
209+
210+
add_dependencies(dd_trace_cpp-objects Threads::Threads)
211211

212212
target_link_libraries(dd_trace_cpp-objects
213-
PRIVATE
214-
libcurl
213+
PUBLIC
215214
Threads::Threads
215+
PRIVATE
216216
dd_trace::specs
217217
)
218218

@@ -221,11 +221,27 @@ if (BUILD_SHARED_LIBS)
221221
add_library(dd_trace_cpp-shared SHARED $<TARGET_OBJECTS:dd_trace_cpp-objects>)
222222
add_library(dd_trace::shared ALIAS dd_trace_cpp-shared)
223223

224-
add_dependencies(dd_trace_cpp-shared dd_trace_cpp-objects)
224+
if (DD_TRACE_TRANSPORT STREQUAL "curl")
225+
add_dependencies(dd_trace_cpp-shared CURL::libcurl_shared)
226+
227+
target_sources(dd_trace_cpp-shared
228+
PRIVATE
229+
src/datadog/curl.cpp
230+
src/datadog/default_http_client_curl.cpp
231+
)
232+
233+
target_link_libraries(dd_trace_cpp-shared
234+
PRIVATE
235+
CURL::libcurl_shared
236+
)
237+
endif ()
238+
239+
add_dependencies(dd_trace_cpp-shared dd_trace_cpp-objects CURL::libcurl_shared)
225240

226241
target_link_libraries(dd_trace_cpp-shared
227242
PUBLIC
228243
dd_trace::obj
244+
CURL::libcurl_shared
229245
PRIVATE
230246
dd_trace::specs
231247
)
@@ -244,6 +260,21 @@ if (BUILD_STATIC_LIBS)
244260
add_library(dd_trace_cpp-static STATIC $<TARGET_OBJECTS:dd_trace_cpp-objects>)
245261
add_library(dd_trace::static ALIAS dd_trace_cpp-static)
246262

263+
if (DD_TRACE_TRANSPORT STREQUAL "curl")
264+
add_dependencies(dd_trace_cpp-static CURL::libcurl_static)
265+
266+
target_sources(dd_trace_cpp-static
267+
PRIVATE
268+
src/datadog/curl.cpp
269+
src/datadog/default_http_client_curl.cpp
270+
)
271+
272+
target_link_libraries(dd_trace_cpp-static
273+
PRIVATE
274+
CURL::libcurl_static
275+
)
276+
endif ()
277+
247278
add_dependencies(dd_trace_cpp-static dd_trace_cpp-objects)
248279

249280
target_link_libraries(dd_trace_cpp-static

cmake/compiler/msvc.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ target_compile_options(dd_trace_cpp-specs
4141
/D_WIN32_WINNT=${win_ver}
4242
)
4343

44+
target_link_options(dd_trace_cpp-specs
45+
INTERFACE
46+
ws2_32.lib
47+
)
48+
4449
if (CMAKE_BUILD_TYPE STREQUAL "Debug|RelWithDebInfo")
4550
target_compile_options(dd_trace_cpp-specs
4651
INTERFACE

cmake/deps/curl.cmake

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,34 @@ include(FetchContent)
22

33
# No need to build curl executable
44
SET(BUILD_CURL_EXE OFF)
5-
SET(BUILD_SHARED_LIBS OFF)
6-
SET(BUILD_STATIC_LIBS ON)
5+
set(BUILD_LIBCURL_DOCS OFF)
6+
set(BUILD_MISC_DOCS OFF)
77

8-
# Disables all protocols except HTTP
8+
# Disable all protocols except HTTP
99
SET(HTTP_ONLY ON)
10+
11+
# Disable curl features
12+
SET(USE_ZLIB OFF)
13+
SET(USE_LIBIDN2 OFF)
1014
SET(CURL_ENABLE_SSL OFF)
1115
SET(CURL_BROTLI OFF)
1216
SET(CURL_ZSTD OFF)
1317
SET(CURL_ZLIB OFF)
14-
SET(USE_ZLIB OFF)
15-
SET(USE_LIBIDN2 OFF)
1618
SET(CURL_USE_LIBSSH2 OFF)
1719
SET(CURL_USE_LIBPSL OFF)
1820
SET(CURL_DISABLE_HSTS ON)
1921
set(CURL_CA_PATH "none")
2022
set(CURL_CA_PATH_SET FALSE)
23+
set(CURL_DISABLE_INSTALL ON)
24+
set(CURL_DISABLE_ALTSVC ON)
25+
set(CURL_DISABLE_SRP ON)
26+
27+
set(SHARE_LIB_OBJECT ON)
2128

2229
FetchContent_Declare(
2330
curl
24-
URL "https://github.com/curl/curl/releases/download/curl-7_85_0/curl-7.85.0.tar.gz"
25-
URL_MD5 "4e9eb4f434e9be889e510f038754d3de"
31+
URL "https://github.com/curl/curl/releases/download/curl-8_8_0/curl-8.8.0.tar.gz"
32+
URL_MD5 "2300048f61e6196678281a8612a873ef"
2633
)
2734

2835
FetchContent_MakeAvailable(curl)

test/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ add_executable(tests
4040

4141
target_link_libraries(tests
4242
PRIVATE
43-
libcurl
43+
# TODO: Remove dependency on libcurl
44+
CURL::libcurl_static
4445
dd_trace_cpp-static
4546
dd_trace::specs
4647
)

0 commit comments

Comments
 (0)