Re: [PATCH] cmake: accommodate for `UNIT_TEST_SOURCES`
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Aug 16, 2025, 17:09 UTC
- Message-ID
- <3a5e72a3-ae92-5fa7-2bf8-4276afcfd863@gmx.de>
- In-Reply-To
- <pull.1947.git.1754256267117.gitgitgadget@gmail.com>
Hi Junio,
this patch is still required; I sent this before -rc0 was released so that it could be included in v2.51.0 final. Could you please still merge it?
Thanks, Johannes
On Sun, 3 Aug 2025, Johannes Schindelin via GitGitGadget wrote:
Show 51 quoted lines
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> As part of 9bbc981c6f2 (t/unit-tests: finalize migration of
> reftable-related tests, 2025-07-24), the explicit list of
> `UNIT_TEST_PROGRAMS` was turned into a wildcard pattern-derived list.
>
> Let's do the same in the CMake definition.
>
> This fixes build errors with symptoms like this:
>
> CMake Error at CMakeLists.txt:132 (string):
> string sub-command REPLACE requires at least four arguments.
> Call Stack (most recent call first):
> CMakeLists.txt:1037 (parse_makefile_for_scripts)
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
> cmake: accommodate for UNIT_TEST_SOURCES
>
> This fix is needed to build Git using CMake in the wake of the recent
> migration of the reftable tests from being regression tests written in
> Unix shell script to being unit tests in pure C.
>
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1947%2Fdscho%2Freftable-vs-cmake-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1947/dscho/reftable-vs-cmake-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/1947
>
> contrib/buildsystems/CMakeLists.txt | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
> index 25b495fa737..edb0fc04ad7 100644
> --- a/contrib/buildsystems/CMakeLists.txt
> +++ b/contrib/buildsystems/CMakeLists.txt
> @@ -1005,7 +1005,9 @@ parse_makefile_for_sources(clar-test_SOURCES ${CMAKE_SOURCE_DIR}/Makefile "CLAR_
> list(TRANSFORM clar-test_SOURCES REPLACE "\\$\\(UNIT_TEST_DIR\\)/" "${CMAKE_SOURCE_DIR}/t/unit-tests/")
> add_library(clar-test-lib STATIC ${clar-test_SOURCES})
>
> -parse_makefile_for_scripts(unit_test_PROGRAMS "UNIT_TEST_PROGRAMS" "")
> +file(GLOB unit_test_PROGRAMS "${CMAKE_SOURCE_DIR}/t/unit-tests/t-*.c")
> +list(TRANSFORM unit_test_PROGRAMS REPLACE "${CMAKE_SOURCE_DIR}/" "")
> +list(TRANSFORM unit_test_PROGRAMS REPLACE ".c" "")
> foreach(unit_test ${unit_test_PROGRAMS})
> add_executable("${unit_test}" "${CMAKE_SOURCE_DIR}/t/unit-tests/${unit_test}.c")
> target_link_libraries("${unit_test}" unit-test-lib clar-test-lib common-main)
>
> base-commit: 866e6a391f466baeeb98bc585845ea638322c04b
> --
> gitgitgadget
>
>