Skip to content

Commit f2d6a5c

Browse files
committed
Enable building otel-cpp as external project on Linux
1 parent 461f05c commit f2d6a5c

File tree

1 file changed

+28
-14
lines changed

1 file changed

+28
-14
lines changed

CMakeLists.txt

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,19 @@ if(DEFINED OTEL_CPP_PREFIX)
5757
else()
5858
set(OTEL_CPP_PREFIX ${CMAKE_BINARY_DIR}/otel-cpp)
5959
endif()
60+
61+
if(WITH_OTLP_GRPC)
62+
set(OTEL_CPP_CXX_STANDARD 14) # Abseil requires at least Cxx14
63+
else()
64+
set(OTEL_CPP_CXX_STANDARD 11)
65+
endif()
66+
6067
ExternalProject_Add(
6168
${OTEL_CPP_PROJECT_NAME}
6269
GIT_REPOSITORY ${OTEL_CPP_GIT_REPOSITORY}
6370
GIT_TAG ${OTEL_CPP_GIT_TAG}
6471
PREFIX ${OTEL_CPP_PREFIX}
65-
CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DWITH_OTLP_HTTP=${WITH_OTLP_HTTP} -DWITH_OTLP_GRPC=${WITH_OTLP_GRPC} -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
72+
CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DWITH_OTLP_HTTP=${WITH_OTLP_HTTP} -DWITH_OTLP_GRPC=${WITH_OTLP_GRPC} -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_CXX_STANDARD=${OTEL_CPP_CXX_STANDARD}
6673
INSTALL_DIR ${OTEL_CPP_PREFIX}
6774
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${OTEL_CPP_PREFIX}
6875
)
@@ -163,27 +170,33 @@ if(WITH_OTLP_GRPC)
163170
endif()
164171
endif()
165172

173+
if(WIN32)
174+
set(OTEL_PROTO_LIBRARY_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
175+
else()
176+
set(OTEL_PROTO_LIBRARY_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
177+
endif()
178+
166179
target_compile_options(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTLP_MACROS})
167180

168181
# link against OpenTelemetry-cpp libraries and their dependencies
169-
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/opentelemetry_common${CMAKE_LINK_LIBRARY_SUFFIX}
170-
${OTEL_CPP_PREFIX}/lib/opentelemetry_otlp_recordable${CMAKE_LINK_LIBRARY_SUFFIX}
171-
${OTEL_CPP_PREFIX}/lib/opentelemetry_proto${CMAKE_LINK_LIBRARY_SUFFIX}
172-
${OTEL_CPP_PREFIX}/lib/opentelemetry_resources${CMAKE_LINK_LIBRARY_SUFFIX}
173-
${OTEL_CPP_PREFIX}/lib/opentelemetry_trace${CMAKE_LINK_LIBRARY_SUFFIX}
174-
${OTEL_CPP_PREFIX}/lib/opentelemetry_version${CMAKE_LINK_LIBRARY_SUFFIX}
175-
${OTEL_CPP_PREFIX}/lib/opentelemetry_logs${CMAKE_LINK_LIBRARY_SUFFIX}
182+
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_common${CMAKE_STATIC_LIBRARY_SUFFIX}
183+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_otlp_recordable${CMAKE_STATIC_LIBRARY_SUFFIX}
184+
${OTEL_CPP_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}opentelemetry_proto${OTEL_PROTO_LIBRARY_SUFFIX}
185+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_resources${CMAKE_STATIC_LIBRARY_SUFFIX}
186+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_trace${CMAKE_STATIC_LIBRARY_SUFFIX}
187+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_version${CMAKE_STATIC_LIBRARY_SUFFIX}
188+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_logs${CMAKE_STATIC_LIBRARY_SUFFIX}
176189
${Protobuf_LIBRARIES})
177190
if(WITH_OTLP_HTTP)
178-
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/opentelemetry_exporter_otlp_http${CMAKE_LINK_LIBRARY_SUFFIX}
179-
${OTEL_CPP_PREFIX}/lib/opentelemetry_exporter_otlp_http_client${CMAKE_LINK_LIBRARY_SUFFIX}
180-
${OTEL_CPP_PREFIX}/lib/opentelemetry_http_client_curl${CMAKE_LINK_LIBRARY_SUFFIX}
191+
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http${CMAKE_STATIC_LIBRARY_SUFFIX}
192+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http_client${CMAKE_STATIC_LIBRARY_SUFFIX}
193+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_http_client_curl${CMAKE_STATIC_LIBRARY_SUFFIX}
181194
${CURL_LIBRARIES})
182195
endif()
183196
if(WITH_OTLP_GRPC)
184-
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/opentelemetry_exporter_otlp_grpc${CMAKE_LINK_LIBRARY_SUFFIX}
185-
${OTEL_CPP_PREFIX}/lib/opentelemetry_exporter_otlp_grpc_client${CMAKE_LINK_LIBRARY_SUFFIX}
186-
${OTEL_CPP_PREFIX}/lib/opentelemetry_proto_grpc${CMAKE_LINK_LIBRARY_SUFFIX}
197+
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_grpc${CMAKE_STATIC_LIBRARY_SUFFIX}
198+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_grpc_client${CMAKE_STATIC_LIBRARY_SUFFIX}
199+
${OTEL_CPP_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}opentelemetry_proto_grpc${OTEL_PROTO_LIBRARY_SUFFIX}
187200
gRPC::grpc++
188201
absl::synchronization)
189202
endif()
@@ -193,6 +206,7 @@ if(UNIX AND NOT APPLE AND NOT CYGWIN)
193206
set(OPENTELEMETRY_PROXY_LINK_OPTIONS -Wl,--whole-archive
194207
"${OTEL_CPP_PREFIX}/lib/libopentelemetry_trace.a"
195208
"${OTEL_CPP_PREFIX}/lib/libopentelemetry_common.a"
209+
"${OTEL_CPP_PREFIX}/lib/libopentelemetry_otlp_recordable.a"
196210
${ABSL_LIBRARIES}
197211
${UPB_LIBRARIES} -Wl,--no-whole-archive)
198212
target_link_options(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS})

0 commit comments

Comments
 (0)