Skip to content

Commit e9cabbb

Browse files
committed
set cmake minimum version to 3.14. Fix issues found in tested with the min version
1 parent 08b9b3a commit e9cabbb

File tree

29 files changed

+114
-102
lines changed

29 files changed

+114
-102
lines changed

CMakeLists.txt

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,7 @@
11
# Copyright The OpenTelemetry Authors
22
# SPDX-License-Identifier: Apache-2.0
33

4-
cmake_minimum_required(VERSION 3.10)
5-
6-
# See https://cmake.org/cmake/help/latest/policy/CMP0074.html required by
7-
# certain version of zlib which CURL depends on.
8-
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12")
9-
cmake_policy(SET CMP0074 NEW)
10-
endif()
11-
12-
# Allow to use normal variable for option()
13-
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13")
14-
cmake_policy(SET CMP0077 NEW)
15-
endif()
16-
17-
# Prefer CMAKE_MSVC_RUNTIME_LIBRARY if possible
18-
if(POLICY CMP0091)
19-
cmake_policy(SET CMP0091 NEW)
20-
endif()
4+
cmake_minimum_required(VERSION 3.14)
215

226
if(POLICY CMP0092)
237
# https://cmake.org/cmake/help/latest/policy/CMP0092.html#policy:CMP0092 Make
@@ -36,8 +20,10 @@ project(opentelemetry-cpp)
3620
# Mark variables as used so cmake doesn't complain about them
3721
mark_as_advanced(CMAKE_TOOLCHAIN_FILE)
3822

39-
# Prefer cmake CONFIG to auto resolve dependencies. This is important to
40-
# properly find protobuf versions 3.22.0 and above
23+
# Note: CMAKE_FIND_PACKAGE_PREFER_CONFIG requires cmake 3.15
24+
# Prefer cmake CONFIG to auto resolve dependencies.
25+
# This is important to properly find protobuf versions
26+
# 3.22.0 and above due to the abseil-cpp dependency.
4127
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
4228

4329
# Don't use customized cmake modules if vcpkg is used to resolve dependence.
@@ -420,9 +406,18 @@ if(WITH_OTLP_GRPC
420406
OR WITH_OTLP_HTTP
421407
OR WITH_OTLP_FILE)
422408

423-
find_package(Protobuf)
424-
# Protobuf 3.22 or upper require abseil-cpp, we can find it in
425-
# opentelemetry-cpp-config.cmake
409+
# Note: remove once cmake 3.14 is no longer supported
410+
# including the CMakeFindDependencyMacro is required with cmake 3.14
411+
# due to an issue with the gRPCConfig.cmake file.
412+
include(CMakeFindDependencyMacro)
413+
414+
# Protobuf 3.22 and up requires abseil-cpp. This is found using the
415+
# CONFIG search mode. In cmake 3.14 we must manually
416+
# try config mode first then fall back to MODULE mode
417+
find_package(Protobuf CONFIG)
418+
if(NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND)
419+
find_package(Protobuf MODULE)
420+
endif()
426421

427422
if(WITH_OTLP_GRPC)
428423
find_package(gRPC CONFIG)
@@ -441,7 +436,7 @@ if(WITH_OTLP_GRPC
441436
endif()
442437

443438
if(NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND)
444-
find_package(Protobuf REQUIRED)
439+
find_package(Protobuf CONFIG REQUIRED)
445440
endif()
446441
if(NOT gRPC_FOUND AND WITH_OTLP_GRPC)
447442
find_package(gRPC CONFIG)
@@ -800,10 +795,10 @@ if(gRPC_FOUND)
800795
message(STATUS "gRPC: ${gRPC_VERSION}")
801796
endif()
802797
if(CURL_FOUND)
803-
message(STATUS "CURL: ${CURL_VERSION}")
798+
message(STATUS "CURL: ${CURL_VERSION_STRING}")
804799
endif()
805800
if(ZLIB_FOUND)
806-
message(STATUS "ZLIB: ${ZLIB_VERSION}")
801+
message(STATUS "ZLIB: ${ZLIB_VERSION_STRING}")
807802
endif()
808803
if(USE_NLOHMANN_JSON)
809804
message(STATUS "nlohmann-json: ${nlohmann_json_VERSION}")

ci/do_ci.ps1

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,8 @@ switch ($action) {
388388
-DWITH_ELASTICSEARCH=ON `
389389
-DWITH_ETW=ON `
390390
-DWITH_EXAMPLES=ON `
391+
-DWITH_EXAMPLES_HTTP=ON `
392+
-DBUILD_W3CTRACECONTEXT_TEST=ON `
391393
-DOPENTELEMETRY_INSTALL=ON
392394

393395
$exit = $LASTEXITCODE
@@ -435,19 +437,21 @@ switch ($action) {
435437
)
436438
$EXPECTED_COMPONENTS_STRING = $EXPECTED_COMPONENTS -join ";"
437439

438-
cmake -S "$SRC_DIR\install\test\cmake" `
439-
-B "$BUILD_DIR\install_test" `
440-
$CMAKE_OPTIONS `
440+
mkdir "$BUILD_DIR\install_test"
441+
cd "$BUILD_DIR\install_test"
442+
443+
cmake $CMAKE_OPTIONS `
441444
"-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" `
442445
"-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" `
443-
"-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING"
446+
"-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING" `
447+
-S "$SRC_DIR\install\test\cmake"
444448

445449
$exit = $LASTEXITCODE
446450
if ($exit -ne 0) {
447451
exit $exit
448452
}
449453

450-
ctest -C Debug --test-dir "$BUILD_DIR\install_test" --output-on-failure
454+
ctest -C Debug --output-on-failure
451455
$exit = $LASTEXITCODE
452456
if ($exit -ne 0) {
453457
exit $exit
@@ -528,20 +532,22 @@ switch ($action) {
528532
"ext_dll"
529533
)
530534
$EXPECTED_COMPONENTS_STRING = $EXPECTED_COMPONENTS -join ";"
531-
532-
cmake -S "$SRC_DIR\install\test\cmake" `
533-
-B "$BUILD_DIR\install_test" `
534-
$CMAKE_OPTIONS `
535+
536+
mkdir "$BUILD_DIR\install_test"
537+
cd "$BUILD_DIR\install_test"
538+
539+
cmake $CMAKE_OPTIONS `
535540
"-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" `
536541
"-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" `
537-
"-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING"
542+
"-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING" `
543+
-S "$SRC_DIR\install\test\cmake"
538544

539545
$exit = $LASTEXITCODE
540546
if ($exit -ne 0) {
541547
exit $exit
542548
}
543549

544-
ctest -C Debug --test-dir "$BUILD_DIR\install_test" --output-on-failure
550+
ctest -C Debug --output-on-failure
545551
$exit = $LASTEXITCODE
546552
if ($exit -ne 0) {
547553
exit $exit

ci/do_ci.sh

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -265,13 +265,14 @@ elif [[ "$1" == "cmake.opentracing_shim.install.test" ]]; then
265265
"shims_opentracing"
266266
)
267267
EXPECTED_COMPONENTS_STRING=$(IFS=\;; echo "${EXPECTED_COMPONENTS[*]}")
268-
cmake -S "${SRC_DIR}/install/test/cmake" \
269-
-B "${BUILD_DIR}/install_test" \
270-
"${CMAKE_OPTIONS[@]}" \
268+
mkdir -p "${BUILD_DIR}/install_test"
269+
cd "${BUILD_DIR}/install_test"
270+
cmake "${CMAKE_OPTIONS[@]}" \
271271
"-DCMAKE_PREFIX_PATH=${INSTALL_TEST_DIR}" \
272272
"-DINSTALL_TEST_CMAKE_OPTIONS=${CMAKE_OPTIONS_STRING}" \
273-
"-DINSTALL_TEST_COMPONENTS=${EXPECTED_COMPONENTS_STRING}"
274-
ctest --test-dir "${BUILD_DIR}/install_test" --output-on-failure
273+
"-DINSTALL_TEST_COMPONENTS=${EXPECTED_COMPONENTS_STRING}" \
274+
-S "${SRC_DIR}/install/test/cmake"
275+
ctest --output-on-failure
275276
exit 0
276277
elif [[ "$1" == "cmake.c++20.test" ]]; then
277278
cd "${BUILD_DIR}"
@@ -476,6 +477,8 @@ elif [[ "$1" == "cmake.install.test" ]]; then
476477
-DWITH_ZIPKIN=ON \
477478
-DWITH_ELASTICSEARCH=ON \
478479
-DWITH_EXAMPLES=ON \
480+
-DWITH_EXAMPLES_HTTP=ON \
481+
-DBUILD_W3CTRACECONTEXT_TEST=ON \
479482
-DOPENTELEMETRY_INSTALL=ON \
480483
"${SRC_DIR}"
481484

@@ -502,14 +505,14 @@ elif [[ "$1" == "cmake.install.test" ]]; then
502505
"exporters_zipkin"
503506
)
504507
EXPECTED_COMPONENTS_STRING=$(IFS=\;; echo "${EXPECTED_COMPONENTS[*]}")
505-
506-
cmake -S "${SRC_DIR}/install/test/cmake" \
507-
-B "${BUILD_DIR}/install_test" \
508-
"${CMAKE_OPTIONS[@]}" \
508+
mkdir -p "${BUILD_DIR}/install_test"
509+
cd "${BUILD_DIR}/install_test"
510+
cmake "${CMAKE_OPTIONS[@]}" \
509511
"-DCMAKE_PREFIX_PATH=${INSTALL_TEST_DIR}" \
510512
"-DINSTALL_TEST_CMAKE_OPTIONS=${CMAKE_OPTIONS_STRING}" \
511-
"-DINSTALL_TEST_COMPONENTS=${EXPECTED_COMPONENTS_STRING}"
512-
ctest --test-dir "${BUILD_DIR}/install_test" --output-on-failure
513+
"-DINSTALL_TEST_COMPONENTS=${EXPECTED_COMPONENTS_STRING}" \
514+
-S "${SRC_DIR}/install/test/cmake"
515+
ctest --output-on-failure
513516
exit 0
514517
elif [[ "$1" == "cmake.test_example_plugin" ]]; then
515518
# Build the plugin

ci/install_protobuf.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ if [ -e "../CMakeLists.txt" ]; then
7070
else
7171
cmake ../cmake "${CPP_PROTOBUF_BUILD_OPTIONS[@]}"
7272
fi
73-
cmake --build . -j $(nproc)
74-
cmake --install .
73+
make -j $(nproc)
74+
make install
7575
popd
7676
ldconfig

ci/setup_grpc.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,9 @@ if [[ $build_internal_abseil_cpp -ne 0 ]]; then
114114
ABSEIL_CPP_BUILD_OPTIONS=(${ABSEIL_CPP_BUILD_OPTIONS[@]} "-DBUILD_SHARED_LIBS=$build_shared_libs")
115115
fi
116116
cmake "${ABSEIL_CPP_BUILD_OPTIONS[@]}" ..
117-
cmake --build . -j${nproc} --target install && popd
117+
make -j $(nproc)
118+
make install
119+
popd
118120
fi
119121
mkdir -p build && pushd build
120122

@@ -144,8 +146,8 @@ echo "Building gRPC ${install_grpc_version}"
144146
echo "CMake build options:" "${GRPC_BUILD_OPTIONS[@]}"
145147

146148
cmake "${GRPC_BUILD_OPTIONS[@]}" ..
147-
cmake --build . -j$(nproc)
148-
cmake --install .
149+
make -j $(nproc)
150+
make install
149151
popd
150152
popd
151153

cmake/tools.cmake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,15 @@ function(patch_protobuf_targets)
9494
endfunction()
9595

9696
function(project_build_tools_get_imported_location OUTPUT_VAR_NAME TARGET_NAME)
97+
98+
# The following if statement was added to support cmake versions < 3.19
99+
get_target_property(TARGET_TYPE ${TARGET_NAME} TYPE)
100+
if(TARGET_TYPE STREQUAL "INTERFACE_LIBRARY")
101+
# For interface libraries, do not attempt to retrieve imported location.
102+
set(${OUTPUT_VAR_NAME} "" PARENT_SCOPE)
103+
return()
104+
endif()
105+
97106
if(CMAKE_BUILD_TYPE)
98107
string(TOUPPER "IMPORTED_LOCATION_${CMAKE_BUILD_TYPE}"
99108
TRY_SPECIFY_IMPORTED_LOCATION)

docker/grpc/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright The OpenTelemetry Authors
22
# SPDX-License-Identifier: Apache-2.0
33

4-
cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
4+
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
55

66
project(
77
dependencies

install/test/cmake/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright The OpenTelemetry Authors
22
# SPDX-License-Identifier: Apache-2.0
33

4-
cmake_minimum_required(VERSION 3.10)
4+
cmake_minimum_required(VERSION 3.14)
55
project(opentelemetry-cpp-component-install-tests LANGUAGES CXX)
66

77
if(NOT INSTALL_TEST_CMAKE_OPTIONS)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright The OpenTelemetry Authors
22
# SPDX-License-Identifier: Apache-2.0
33

4-
cmake_minimum_required(VERSION 3.10)
4+
cmake_minimum_required(VERSION 3.14)
55

66
project(opentelemetry-cpp-api-install-test LANGUAGES CXX)
77

@@ -11,7 +11,7 @@ find_package(GTest REQUIRED)
1111
include(GoogleTest)
1212

1313
add_executable(api_test ${INSTALL_TEST_SRC_DIR}/test_api.cc)
14-
target_link_libraries(api_test PRIVATE opentelemetry-cpp::api GTest::gtest
15-
GTest::gtest_main)
14+
target_link_libraries(api_test PRIVATE opentelemetry-cpp::api GTest::GTest
15+
GTest::Main)
1616

1717
gtest_discover_tests(api_test)

install/test/cmake/component_tests/exporters_elasticsearch/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright The OpenTelemetry Authors
22
# SPDX-License-Identifier: Apache-2.0
33

4-
cmake_minimum_required(VERSION 3.10)
4+
cmake_minimum_required(VERSION 3.14)
55
project(opentelemetry-cpp-exporters-elasticsearch-install-test LANGUAGES CXX)
66

77
find_package(opentelemetry-cpp REQUIRED COMPONENTS exporters_elasticsearch)
@@ -17,7 +17,7 @@ add_executable(exporters_elasticsearch_test
1717
${INSTALL_TEST_SRC_DIR}/test_exporters_elasticsearch.cc)
1818
target_link_libraries(
1919
exporters_elasticsearch_test
20-
PRIVATE opentelemetry-cpp::elasticsearch_log_record_exporter GTest::gtest
21-
GTest::gtest_main)
20+
PRIVATE opentelemetry-cpp::elasticsearch_log_record_exporter GTest::GTest
21+
GTest::Main)
2222

2323
gtest_discover_tests(exporters_elasticsearch_test)

0 commit comments

Comments
 (0)