cmake: determine list of extra built-ins dynamically

In 0a21d0e08902 (Makefile: mark git-maintenance as a builtin, 2020-12-01), we marked git-maintenance as a builtin in the Makefile, but forgot to do the same in `CMakeLists.txt`. Rather than always play catch-up and adjust `git_builtin_extra` manually, use the `BUILT_INS` definitions in the Makefile as authoritative source and generate `git_builtin_extra` dynamically. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Johannes Schindelin committed Dec 4, 2020 at 19:33 UTC 7fe07275be5225a942ba8d9725b0c7e0a60d3eb7
1 file changed +11 -4
contrib/buildsystems/CMakeLists.txt
+11 -4
@@ -114,6 +114,16 @@ macro(parse_makefile_for_scripts list_var regex lang)
114 endif()
115 endmacro()
116
117 +macro(parse_makefile_for_executables list_var regex)
118 + file(STRINGS ${CMAKE_SOURCE_DIR}/Makefile ${list_var} REGEX "^${regex} \\+= git-(.*)")
119 + string(REPLACE "${regex} +=" "" ${list_var} ${${list_var}})
120 + string(STRIP ${${list_var}} ${list_var}) #remove trailing/leading whitespaces
121 + string(REPLACE "git-" "" ${list_var} ${${list_var}}) #strip `git-` prefix
122 + string(REPLACE "\$X" ";" ${list_var} ${${list_var}}) #strip $X, ; is for converting the string into a list
123 + list(TRANSFORM ${list_var} STRIP) #remove trailing/leading whitespaces for each element in list
124 + list(REMOVE_ITEM ${list_var} "") #remove empty list elements
125 +endmacro()
126 +
127 include(CheckTypeSize)
128 include(CheckCSourceRuns)
129 include(CheckCSourceCompiles)
@@ -673,10 +683,7 @@ if(CURL_FOUND)
683 endif()
684 endif()
685
676 -set(git_builtin_extra
677 - cherry cherry-pick format-patch fsck-objects
678 - init merge-subtree restore show
679 - stage status switch whatchanged)
686 +parse_makefile_for_executables(git_builtin_extra "BUILT_INS")
687
688 #Creating hardlinks
689 foreach(s ${git_SOURCES} ${git_builtin_extra})