From aae361242f30eafacf46085ed731b1524bfd3be9 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 24 Feb 2026 01:35:02 +0100 Subject: [PATCH] cmake: replace internal option with a new `testbins` target To allow building test binaries without test certs, replacing `_CURL_SKIP_BUILD_CERTS` internal option with a build target that is similar to `testdeps`, but without building the test certificates. To make building test binaries a little bit faster, with less noisy output, and without having to reconfigure the build. Closes #20708 --- docs/INSTALL-CMAKE.md | 5 +++-- tests/CMakeLists.txt | 11 ++++++++--- tests/certs/CMakeLists.txt | 6 +----- tests/libtest/CMakeLists.txt | 2 +- tests/server/CMakeLists.txt | 2 +- tests/tunit/CMakeLists.txt | 2 +- tests/unit/CMakeLists.txt | 2 +- 7 files changed, 16 insertions(+), 14 deletions(-) diff --git a/docs/INSTALL-CMAKE.md b/docs/INSTALL-CMAKE.md index 552a40bcfa..9ef9ba6aaa 100644 --- a/docs/INSTALL-CMAKE.md +++ b/docs/INSTALL-CMAKE.md @@ -552,9 +552,10 @@ Note: These variables are internal and subject to change. ## Useful build targets -- `testdeps`: Build test dependencies (servers, tools, test certificates). +- `testbins`: Build test binaries (servers, tools). Individual targets: `curlinfo`, `libtests`, `servers`, `tunits`, `units` - Test certificates: `build-certs`, `clean-certs` +- `testdeps`: Build test dependencies (test binaries, test certificates). + Test certificates: `build-certs` (clean with `clean-certs`) - `tests`: Run tests (`runtests.pl`). Customize via the `TFLAGS` environment variable, e.g. `TFLAGS=1621`. Other flavors: `test-am`, `test-ci`, `test-event`, `test-full`, `test-nonflaky`, `test-quiet`, `test-torture` - `curl-pytest`: Run tests (pytest). diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1b79c57447..d806e8c4bb 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -29,14 +29,17 @@ mark_as_advanced(TEST_NGHTTPX) # Consumed variables: TEST_NGHTTPX configure_file("config.in" "${CMAKE_CURRENT_BINARY_DIR}/config" @ONLY) -add_custom_target(testdeps) +add_custom_target(testbins) if(BUILD_CURL_EXE) - add_dependencies(testdeps "curlinfo") + add_dependencies(testbins "curlinfo") endif() if(CURL_BUILD_EVERYTHING) - set_target_properties(testdeps PROPERTIES EXCLUDE_FROM_ALL FALSE) + set_target_properties(testbins PROPERTIES EXCLUDE_FROM_ALL FALSE) endif() +add_custom_target(testdeps) +add_dependencies(testdeps "testbins") + if(CURL_CLANG_TIDY) add_custom_target(tests-clang-tidy) add_dependencies(testdeps tests-clang-tidy) @@ -63,6 +66,7 @@ function(curl_add_runtests _targetname _test_flags) list(APPEND _depends "${EXE_NAME}") endif() list(APPEND _depends "testdeps") + list(APPEND _depends "build-certs") endif() set(_setenvs "") if(CMAKE_CONFIGURATION_TYPES) @@ -100,6 +104,7 @@ function(curl_add_pytests _targetname _test_flags) list(APPEND _depends "${EXE_NAME}" "curlinfo") endif() list(APPEND _depends "libtests") + list(APPEND _depends "build-certs") endif() string(REPLACE " " ";" _test_flags_list "${_test_flags}") add_custom_target(${_targetname} diff --git a/tests/certs/CMakeLists.txt b/tests/certs/CMakeLists.txt index d0e1f55b85..399483a738 100644 --- a/tests/certs/CMakeLists.txt +++ b/tests/certs/CMakeLists.txt @@ -31,11 +31,7 @@ add_custom_command(OUTPUT ${GENERATEDCERTS} VERBATIM ) add_custom_target(build-certs DEPENDS ${GENERATEDCERTS}) - -option(_CURL_SKIP_BUILD_CERTS "Skip building certs with testdeps" OFF) # Internal option to increase perf for build tests -if(NOT _CURL_SKIP_BUILD_CERTS) - add_dependencies(testdeps build-certs) -endif() +add_dependencies(testdeps build-certs) add_custom_target(clean-certs COMMAND ${CMAKE_COMMAND} -E remove ${GENERATEDCERTS} diff --git a/tests/libtest/CMakeLists.txt b/tests/libtest/CMakeLists.txt index c0f7fe1093..60c8676568 100644 --- a/tests/libtest/CMakeLists.txt +++ b/tests/libtest/CMakeLists.txt @@ -52,7 +52,7 @@ add_custom_command(OUTPUT "${BUNDLE}.c" VERBATIM) add_executable(${BUNDLE} EXCLUDE_FROM_ALL "${BUNDLE}.c") -add_dependencies(testdeps ${BUNDLE}) +add_dependencies(testbins ${BUNDLE}) target_link_libraries(${BUNDLE} ${LIB_SELECTED} ${CURL_LIBS}) target_include_directories(${BUNDLE} PRIVATE "${PROJECT_BINARY_DIR}/lib" # for "curl_config.h" diff --git a/tests/server/CMakeLists.txt b/tests/server/CMakeLists.txt index 3c83d397d6..716724ab05 100644 --- a/tests/server/CMakeLists.txt +++ b/tests/server/CMakeLists.txt @@ -39,7 +39,7 @@ add_custom_command(OUTPUT "${BUNDLE}.c" VERBATIM) add_executable(${BUNDLE} EXCLUDE_FROM_ALL "${BUNDLE}.c") -add_dependencies(testdeps ${BUNDLE}) +add_dependencies(testbins ${BUNDLE}) target_link_libraries(${BUNDLE} ${CURL_NETWORK_AND_TIME_LIBS}) target_include_directories(${BUNDLE} PRIVATE "${PROJECT_BINARY_DIR}/lib" # for "curl_config.h" diff --git a/tests/tunit/CMakeLists.txt b/tests/tunit/CMakeLists.txt index 2ab4f274e6..a10d240a08 100644 --- a/tests/tunit/CMakeLists.txt +++ b/tests/tunit/CMakeLists.txt @@ -39,7 +39,7 @@ add_custom_command(OUTPUT "${BUNDLE}.c" VERBATIM) add_executable(${BUNDLE} EXCLUDE_FROM_ALL "${BUNDLE}.c") -add_dependencies(testdeps ${BUNDLE}) +add_dependencies(testbins ${BUNDLE}) target_link_libraries(${BUNDLE} curltool ${LIB_SELECTED}) target_include_directories(${BUNDLE} PRIVATE "${PROJECT_BINARY_DIR}/lib" # for "curl_config.h" diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index 2692db5ef5..8d27fc0a5b 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -40,7 +40,7 @@ add_custom_command(OUTPUT "${BUNDLE}.c" add_executable(${BUNDLE} EXCLUDE_FROM_ALL "${BUNDLE}.c") add_dependencies(${BUNDLE} curlu-unitprotos) -add_dependencies(testdeps ${BUNDLE}) +add_dependencies(testbins ${BUNDLE}) target_link_libraries(${BUNDLE} curlu) target_include_directories(${BUNDLE} PRIVATE "${PROJECT_BINARY_DIR}/lib" # for "curl_config.h", "unitprotos.h"