From a14f5be3b1ffcbace44b4273a0b37615f3fb23f7 Mon Sep 17 00:00:00 2001 From: Xavier Roche Date: Thu, 19 Mar 2026 14:48:24 +0100 Subject: [PATCH] Make libdatadog fetching optional Add DDPROF_FETCH_LIBDATADOG option (ON by default). When OFF, the fetch script is skipped and find_package(Datadog) resolves through standard CMake search paths. This lets build systems like Conan provide libdatadog as a proper dependency. Co-Authored-By: Claude Opus 4.6 (1M context) --- CMakeLists.txt | 1 + cmake/Findlibdatadog.cmake | 15 ++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index df0fe12b..1af81560 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,6 +61,7 @@ option(DDPROF_ALLOCATOR "Define the type of allocator (STANDARD / JEMALLOC)" STA option(BUILD_BENCHMARKS "Enable benchmarks" OFF) option(BUILD_DDPROF_TESTING "Enable tests" ON) option(STRIP_DEBUG_INFO "Strip debug info from the final binaries" OFF) +option(DDPROF_FETCH_LIBDATADOG "Download libdatadog from GitHub releases" ON) if(USE_LOADER AND USE_AUXILIARY) message(FATAL_ERROR "USE_LOADER and USE_AUXILIARY are incompatible") diff --git a/cmake/Findlibdatadog.cmake b/cmake/Findlibdatadog.cmake index 69920f3f..a1ca017e 100644 --- a/cmake/Findlibdatadog.cmake +++ b/cmake/Findlibdatadog.cmake @@ -9,12 +9,17 @@ set(TAG_LIBDATADOG set(Datadog_ROOT ${VENDOR_PATH}/libdatadog-${TAG_LIBDATADOG}) -message(STATUS "${CMAKE_SOURCE_DIR}/tools/fetch_libddprof.sh ${TAG_LIBDATADOG} ${LIBDATADOG_ROOT}") -execute_process( - COMMAND "${CMAKE_SOURCE_DIR}/tools/fetch_libdatadog.sh" ${TAG_LIBDATADOG} ${Datadog_ROOT} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND_ERROR_IS_FATAL ANY) +if(DDPROF_FETCH_LIBDATADOG) + message(STATUS "${CMAKE_SOURCE_DIR}/tools/fetch_libddprof.sh ${TAG_LIBDATADOG} ${LIBDATADOG_ROOT}") + execute_process( + COMMAND "${CMAKE_SOURCE_DIR}/tools/fetch_libdatadog.sh" ${TAG_LIBDATADOG} ${Datadog_ROOT} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND_ERROR_IS_FATAL ANY) -set(DataDog_DIR "${Datadog_ROOT}/cmake") + set(DataDog_DIR "${Datadog_ROOT}/cmake") +endif() + +# When DDPROF_FETCH_LIBDATADOG=OFF, the consumer must provide Datadog through +# CMAKE_PREFIX_PATH or a CMake config generator (e.g. Conan CMakeDeps). # Prefer static library to shared library set(CMAKE_FIND_LIBRARY_SUFFIXES_BACKUP ${CMAKE_FIND_LIBRARY_SUFFIXES})