git-gui: extract script to generate "tclIndex"

Extract script to generate "tclIndex". This change allows us to reuse the build logic with the Meson build system. Signed-off-by: Patrick Steinhardt <ps@pks.im>

Patrick Steinhardt committed Mar 11, 2025 at 11:07 UTC 2cc5b0facfa4781b7dd4d572bdf22ec448054023
2 files changed +34 -14
Makefile
+2 -14
@@ -75,7 +75,6 @@ ifndef V
75 QUIET_INDEX = $(QUIET)echo ' ' INDEX $(dir $@) &&
76 QUIET_MSGFMT0 = $(QUIET)printf ' MSGFMT %12s ' $@ && v=`
77 QUIET_MSGFMT1 = 2>&1` && echo "$$v" | sed -e 's/fuzzy translations/fuzzy/' | sed -e 's/ messages*//g'
78 - QUIET_2DEVNULL = 2>/dev/null
78
79 INSTALL_D0 = dir=
80 INSTALL_D1 = && echo ' ' DEST $$dir && $(INSTALL) -d -m 755 "$$dir"
@@ -226,19 +225,8 @@ update-po:: $(PO_TEMPLATE)
225 $(ALL_MSGFILES): %.msg : %.po
226 $(QUIET_MSGFMT0)$(MSGFMT) --statistics --tcl -l $(basename $(notdir $<)) -d $(dir $@) $< $(QUIET_MSGFMT1)
227
229 -lib/tclIndex: $(ALL_LIBFILES) GIT-GUI-BUILD-OPTIONS
230 - $(QUIET_INDEX)if echo \
231 - $(foreach p,$(PRELOAD_FILES),source $p\;) \
232 - auto_mkindex lib $(patsubst lib/%,%,$(sort $(ALL_LIBFILES))) \
233 - | $(TCL_PATH) $(QUIET_2DEVNULL); then : ok; \
234 - else \
235 - echo >&2 " * $(TCL_PATH) failed; using unoptimized loading"; \
236 - rm -f $@ ; \
237 - echo '# Autogenerated by git-gui Makefile' >$@ && \
238 - echo >>$@ && \
239 - $(foreach p,$(PRELOAD_FILES) $(sort $(ALL_LIBFILES)),echo '$(subst lib/,,$p)' >>$@ &&) \
240 - echo >>$@ ; \
241 - fi
228 +lib/tclIndex: $(ALL_LIBFILES) generate-tclindex.sh GIT-GUI-BUILD-OPTIONS
229 + $(QUIET_INDEX)$(SHELL_PATH) generate-tclindex.sh . ./GIT-GUI-BUILD-OPTIONS $(ALL_LIBFILES)
230
231 GIT-GUI-BUILD-OPTIONS: FORCE
232 @sed \
generate-tclindex.sh new
+32
@@ -0,0 +1,32 @@
1 +#!/bin/sh
2 +
3 +if test "$#" -lt 3
4 +then
5 + echo >&2 "usage: $0 <BUILD_DIR> <BUILD_OPTIONS> <LIBFILE> [<LIBFILE>...]"
6 + exit 1
7 +fi
8 +
9 +BUILD_DIR="$1"
10 +BUILD_OPTIONS="$2"
11 +shift 2
12 +LIBFILES="$(echo "$@" | sort | sed 's|lib/||g')"
13 +
14 +. "$BUILD_OPTIONS"
15 +
16 +cd "$BUILD_DIR"
17 +
18 +if {
19 + echo "source lib/class.tcl;"
20 + echo "auto_mkindex lib $LIBFILES"
21 +} | "$TCL_PATH"
22 +then
23 + : ok
24 +else
25 + echo >&2 " * $TCL_PATH failed; using unoptimized loading"
26 + rm -f $@
27 + echo '# Autogenerated by git-gui Makefile' >lib/tclIndex
28 + echo >>lib/tclIndex
29 + echo "class.tcl" >>lib/tclIndex
30 + printf "%s\n" $LIBFILES >>lib/tclIndex
31 + echo >>lib/tclIndex
32 +fi