Skip to content

Commit b189f7e

Browse files
committed
record thirdparty dependency versions on install. Use module search mode for older versions of protobuf. Fix curl and nlohmann-json flags
1 parent 28be5f9 commit b189f7e

File tree

4 files changed

+76
-27
lines changed

4 files changed

+76
-27
lines changed

CMakeLists.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,23 @@ if(WITH_PROMETHEUS)
388388
set(CMAKE_CXX_CLANG_TIDY ${SAVED_CMAKE_CXX_CLANG_TIDY})
389389
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE
390390
${SAVED_CMAKE_CXX_INCLUDE_WHAT_YOU_USE})
391+
392+
# Get the version of the prometheus-cpp submodule
393+
find_package(Git QUIET)
394+
if(Git_FOUND)
395+
execute_process(
396+
COMMAND ${GIT_EXECUTABLE} describe --tags --always
397+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/third_party/prometheus-cpp
398+
OUTPUT_VARIABLE prometheus-cpp_VERSION
399+
OUTPUT_STRIP_TRAILING_WHITESPACE)
400+
string(REGEX REPLACE "^v" "" prometheus-cpp_VERSION
401+
"${prometheus-cpp_VERSION}")
402+
endif()
403+
404+
message(
405+
STATUS
406+
"Using local prometheus-cpp from submodule. Version = ${prometheus-cpp_VERSION}"
407+
)
391408
else()
392409
message(
393410
FATAL_ERROR

cmake/find-package-support-functions.cmake

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ function (is_dependency_required dependency_in components_in is_required_out)
161161
message(FATAL_ERROR " is_dependency_required: The BUILT_WITH_${dependency_in} flag is required but not defined in the 'thirdparty-built-with-flags.cmake' file")
162162
elseif(NOT BUILT_WITH_${dependency_in})
163163
set(${is_required_out} FALSE PARENT_SCOPE)
164-
message(DEBUG "is_dependency_required: ${dependency_in} is not required because that package was not built with it.")
165164
else()
166165
foreach(component IN LISTS ${components_in})
167166
set(is_required_by_component FALSE)
@@ -205,6 +204,11 @@ function(find_required_dependencies components_in)
205204
message(DEBUG "find_required_dependencies: calling find_dependency(${dependency})...")
206205
find_dependency(${dependency})
207206
endif()
207+
if(${dependency}_FOUND AND DEFINED BUILT_WITH_${dependency}_VERSION AND DEFINED ${dependency}_VERSION)
208+
if(NOT ${dependency}_VERSION VERSION_EQUAL ${BUILT_WITH_${dependency}_VERSION})
209+
message(WARNING "find_required_dependencies: found ${dependency} version ${${dependency}_VERSION} which does not match the opentelemetry-cpp built with version ${BUILT_WITH_${dependency}_VERSION}.")
210+
endif()
211+
endif()
208212
endif()
209213
endforeach()
210214
endfunction()

cmake/templates/thirdparty-built-with-flags.cmake.in

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ if(@WITH_ABSEIL@)
2525
elseif(@WITH_OTLP_HTTP@ OR @WITH_OTLP_FILE@ OR @WITH_OTLP_GRPC@)
2626
if( @WITH_OTLP_GRPC@ )
2727
set(BUILT_WITH_absl TRUE)
28-
elseif("@Protobuf_VERSION@" VERSION_GREATER_EQUAL "3.22.0")
28+
elseif(@Protobuf_VERSION@ VERSION_GREATER_EQUAL 3.22.0)
2929
set(BUILT_WITH_absl TRUE)
3030
endif()
3131
endif()
3232

3333
# CURL and ZLIB:
34-
if(@WITH_HTTP_CLIENT_CURL@ AND NOT "@BUILD_SHARED_LIBS@")
34+
if(@WITH_HTTP_CLIENT_CURL@)
3535
if("@CURL_FOUND@")
3636
set(BUILT_WITH_CURL TRUE)
3737
endif()
@@ -41,7 +41,7 @@ if(@WITH_HTTP_CLIENT_CURL@ AND NOT "@BUILD_SHARED_LIBS@")
4141
endif()
4242

4343
# nlohmann_json:
44-
if("@USE_NLOHMANN_JSON@" AND "@nlohmann_json_FOUND@")
44+
if("@USE_NLOHMANN_JSON@")
4545
set(BUILT_WITH_nlohmann_json TRUE)
4646
endif()
4747

@@ -66,4 +66,55 @@ if(@WITH_OPENTRACING@)
6666
set(BUILT_WITH_OpenTracing TRUE)
6767
endif()
6868

69+
#-----------------------------------------------------------------------
70+
# Third party dependency versions
71+
#-----------------------------------------------------------------------
72+
if(BUILT_WITH_absl)
73+
set(BUILT_WITH_absl_VERSION @absl_VERSION@)
74+
endif()
75+
76+
if(BUILT_WITH_CURL)
77+
set(BUILT_WITH_CURL_VERSION @CURL_VERSION_STRING@)
78+
endif()
79+
80+
if(BUILT_WITH_ZLIB)
81+
set(BUILT_WITH_ZLIB_VERSION @ZLIB_VERSION@)
82+
endif()
83+
84+
if(BUILT_WITH_nlohmann_json)
85+
set(BUILT_WITH_nlohmann_json_VERSION @nlohmann_json_VERSION@)
86+
endif()
87+
88+
if(BUILT_WITH_Protobuf)
89+
set(BUILT_WITH_Protobuf_VERSION @Protobuf_VERSION@)
90+
endif()
6991

92+
if(BUILT_WITH_gRPC)
93+
set(BUILT_WITH_gRPC_VERSION @gRPC_VERSION@)
94+
endif()
95+
96+
if(BUILT_WITH_prometheus-cpp)
97+
set(BUILT_WITH_prometheus-cpp_VERSION @prometheus-cpp_VERSION@)
98+
endif()
99+
100+
if(BUILT_WITH_OpenTracing)
101+
set(BUILT_WITH_OpenTracing_VERSION @OpenTracing_VERSION@)
102+
endif()
103+
104+
#-----------------------------------------------------------------------
105+
# Flags to determine if CONFIG search mode should be used in find_dependency(...)
106+
#-----------------------------------------------------------------------
107+
set(FIND_DEPENDENCY_absl_USE_CONFIG TRUE)
108+
set(FIND_DEPENDENCY_Threads_USE_CONFIG FALSE)
109+
set(FIND_DEPENDENCY_ZLIB_USE_CONFIG FALSE)
110+
set(FIND_DEPENDENCY_CURL_USE_CONFIG FALSE)
111+
set(FIND_DEPENDENCY_nlohmann_json_USE_CONFIG TRUE)
112+
set(FIND_DEPENDENCY_gRPC_USE_CONFIG TRUE)
113+
set(FIND_DEPENDENCY_prometheus-cpp_USE_CONFIG TRUE)
114+
set(FIND_DEPENDENCY_OpenTracing_USE_CONFIG TRUE)
115+
116+
if(DEFINED BUILT_WITH_Protobuf_VERSION AND BUILT_WITH_Protobuf_VERSION VERSION_GREATER_EQUAL 3.22.0)
117+
set(FIND_DEPENDENCY_Protobuf_USE_CONFIG TRUE)
118+
else()
119+
set(FIND_DEPENDENCY_Protobuf_USE_CONFIG FALSE)
120+
endif()

cmake/thirdparty-dependency-definitions.cmake

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,6 @@ set(THIRD_PARTY_DEPENDENCIES_SUPPORTED
1717
OpenTracing
1818
)
1919

20-
#-----------------------------------------------------------------------
21-
# Flags to determine if CONFIG search mode should be used in find_dependency(...)
22-
#-----------------------------------------------------------------------
23-
24-
# absl
25-
set(FIND_DEPENDENCY_absl_USE_CONFIG TRUE)
26-
# Threads
27-
set(FIND_DEPENDENCY_Threads_USE_CONFIG FALSE)
28-
# ZLIB
29-
set(FIND_DEPENDENCY_ZLIB_USE_CONFIG FALSE)
30-
# CURL
31-
set(FIND_DEPENDENCY_CURL_USE_CONFIG FALSE)
32-
# nlohmann_json
33-
set(FIND_DEPENDENCY_nlohmann_json_USE_CONFIG TRUE)
34-
# Protobuf
35-
set(FIND_DEPENDENCY_Protobuf_USE_CONFIG TRUE)
36-
# gRPC
37-
set(FIND_DEPENDENCY_gRPC_USE_CONFIG TRUE)
38-
# prometheus-cpp
39-
set(FIND_DEPENDENCY_prometheus-cpp_USE_CONFIG TRUE)
40-
# OpenTracing
41-
set(FIND_DEPENDENCY_OpenTracing_USE_CONFIG TRUE)
42-
4320
#-----------------------------------------------------------------------
4421
# THIRD_PARTY to COMPONENT dependencies
4522
# These are the components that may require the third party dependency

0 commit comments

Comments
 (0)