diff --git a/CMakeLists.txt b/CMakeLists.txt index 4050294..7421562 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -142,24 +142,6 @@ if(WITH_OTLP_GRPC) set(GRPC_SHARED "-DBUILD_SHARED_LIBS=ON") endif() - include(ExternalProject) - ExternalProject_Add( - ${GRPC_PACKAGE_NAME} - GIT_REPOSITORY ${GRPC_GIT_REPOSITORY} - GIT_TAG ${GRPC_GIT_TAG} - PREFIX ${GRPC_PREFIX} - UPDATE_DISCONNECTED 1 - PATCH_COMMAND ${GRPC_PATCH_CMD} - CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH} ${GRPC_SHARED} -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_CROSSCOMPILING=OFF -DgRPC_ZLIB_PROVIDER=package -DgRPC_ABSL_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_RE2_PROVIDER=package -DgRPC_SSL_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DVCPKG_INSTALLED_DIR=${VCPKG_INSTALLED_DIR} ${TRIPLET_DEFINITIONS} - INSTALL_DIR ${GRPC_INSTALL_DIR} - INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${GRPC_INSTALL_DIR} --config $ - ) - - if(UNIX AND NOT APPLE AND NOT CYGWIN) - # needed for running protoc as part of the opentelemetry-cpp build - set(GRPC_LD_LIBRARY_PATH_ENV "LD_LIBRARY_PATH=${GRPC_INSTALL_LIB_DIR}") - endif() - if(WIN32) set(GRPC_LINK_LIBRARIES ${GRPC_INSTALL_LIB_DIR}/address_sorting.lib ${GRPC_INSTALL_LIB_DIR}/gpr.lib @@ -182,6 +164,26 @@ if(WITH_OTLP_GRPC) else() set(GRPC_LINK_LIBRARIES ${GRPC_INSTALL_LIB_DIR}/libgrpc++${CMAKE_SHARED_LIBRARY_SUFFIX}) endif() + + include(ExternalProject) + ExternalProject_Add( + ${GRPC_PACKAGE_NAME} + GIT_REPOSITORY ${GRPC_GIT_REPOSITORY} + GIT_TAG ${GRPC_GIT_TAG} + PREFIX ${GRPC_PREFIX} + UPDATE_DISCONNECTED 1 + PATCH_COMMAND ${GRPC_PATCH_CMD} + CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH} ${GRPC_SHARED} -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_CROSSCOMPILING=OFF -DgRPC_ZLIB_PROVIDER=package -DgRPC_ABSL_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_RE2_PROVIDER=package -DgRPC_SSL_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DVCPKG_INSTALLED_DIR=${VCPKG_INSTALLED_DIR} ${TRIPLET_DEFINITIONS} + BUILD_BYPRODUCTS ${GRPC_LINK_LIBRARIES} + INSTALL_DIR ${GRPC_INSTALL_DIR} + INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${GRPC_INSTALL_DIR} --config $ + ) + + if(UNIX AND NOT APPLE AND NOT CYGWIN) + # needed for running protoc as part of the opentelemetry-cpp build + set(GRPC_LD_LIBRARY_PATH_ENV "LD_LIBRARY_PATH=${GRPC_INSTALL_LIB_DIR}") + endif() + endif() # ###################################### @@ -287,6 +289,10 @@ if(NOT DEFINED OTEL_CPP_INSTALLED_DIR) set(OTEL_CPP_PATCH_CMD "") endif() + if(WITH_OTLP_GRPC) + set(OTEL_CPP_DEPENDS ${GRPC_PACKAGE_NAME}) + endif() + if(WIN32 OR APPLE) # Windows and Mac use the default build command # Note: examples are temporarily turned off (-DWITH_EXAMPLES=OFF) due to a build issue that is now fixed in #3284 @@ -296,6 +302,7 @@ if(NOT DEFINED OTEL_CPP_INSTALLED_DIR) GIT_REPOSITORY ${OTEL_CPP_GIT_REPOSITORY} GIT_TAG ${OTEL_CPP_GIT_TAG} PREFIX ${OTEL_CPP_PREFIX} + DEPENDS ${OTEL_CPP_DEPENDS} UPDATE_DISCONNECTED 1 PATCH_COMMAND ${OTEL_CPP_PATCH_CMD} CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH} -DgRPC_DIR=${GRPC_INSTALL_LIB_DIR}/cmake/grpc -DWITH_ABI_VERSION_1=OFF -DWITH_ABI_VERSION_2=ON -DWITH_OTLP_HTTP=${WITH_OTLP_HTTP} -DWITH_OTLP_GRPC=${WITH_OTLP_GRPC} -DWITH_OTLP_FILE=${WITH_OTLP_FILE} -DWITH_EXAMPLES=OFF -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_CXX_STANDARD=${OTEL_CPP_CXX_STANDARD} -DVCPKG_INSTALLED_DIR=${VCPKG_INSTALLED_DIR} ${TRIPLET_DEFINITIONS} @@ -312,6 +319,7 @@ if(NOT DEFINED OTEL_CPP_INSTALLED_DIR) GIT_REPOSITORY ${OTEL_CPP_GIT_REPOSITORY} GIT_TAG ${OTEL_CPP_GIT_TAG} PREFIX ${OTEL_CPP_PREFIX} + DEPENDS ${OTEL_CPP_DEPENDS} UPDATE_DISCONNECTED 1 PATCH_COMMAND ${OTEL_CPP_PATCH_CMD} CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH} -DgRPC_DIR=${GRPC_INSTALL_LIB_DIR}/cmake/grpc -DWITH_ABI_VERSION_1=OFF -DWITH_ABI_VERSION_2=ON -DWITH_OTLP_HTTP=${WITH_OTLP_HTTP} -DWITH_OTLP_GRPC=${WITH_OTLP_GRPC} -DWITH_OTLP_FILE=${WITH_OTLP_FILE} -DWITH_EXAMPLES=OFF -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_CXX_STANDARD=${OTEL_CPP_CXX_STANDARD} -DVCPKG_INSTALLED_DIR=${VCPKG_INSTALLED_DIR} ${TRIPLET_DEFINITIONS}