meson: wire up gitk and git-gui

Wire up both gitk and git-gui in Meson as subprojects. These two
programs should be the last missing pieces for feature compatibility
with our Makefile for distributors.

Note that Meson expects subprojects to live in the "subprojects/"
directory. Create symlinks to fulfill this requirement.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Patrick Steinhardt 2026-02-04 09:38:11 +01:00 committed by Junio C Hamano
parent b2826b52eb
commit 1e3962c6b7
4 changed files with 20 additions and 0 deletions

View File

@ -239,7 +239,9 @@ git = find_program('git', dirs: program_path, native: true, required: false)
sed = find_program('sed', dirs: program_path, native: true)
shell = find_program('sh', dirs: program_path, native: true)
tar = find_program('tar', dirs: program_path, native: true)
tclsh = find_program('tclsh', required: get_option('git_gui'), native: false)
time = find_program('time', dirs: program_path, required: get_option('benchmarks'))
wish = find_program('wish', required: get_option('git_gui').enabled() or get_option('gitk').enabled(), native: false)

# Detect the target shell that is used by Git at runtime. Note that we prefer
# "/bin/sh" over a PATH-based lookup, which provides a working shell on most
@ -2250,6 +2252,16 @@ configure_file(
configuration: build_options_config,
)

gitk_option = get_option('gitk').disable_auto_if(not wish.found())
if gitk_option.allowed()
subproject('gitk')
endif

git_gui_option = get_option('git_gui').disable_auto_if(not tclsh.found() or not wish.found())
if git_gui_option.allowed()
subproject('git-gui')
endif

# Development environments can be used via `meson devenv -C <builddir>`. This
# allows you to execute test scripts directly with the built Git version and
# puts the built version of Git in your PATH.
@ -2276,6 +2288,8 @@ summary({
'curl': curl,
'expat': expat,
'gettext': intl,
'gitk': gitk_option.allowed(),
'git-gui': git_gui_option.allowed(),
'gitweb': gitweb_option.allowed(),
'iconv': iconv,
'pcre2': pcre2,

View File

@ -43,6 +43,10 @@ option('expat', type: 'feature', value: 'enabled',
description: 'Build helpers used to push to remotes with the HTTP transport.')
option('gettext', type: 'feature', value: 'auto',
description: 'Build translation files.')
option('gitk', type: 'feature', value: 'auto',
description: 'Build the Gitk graphical repository browser. Requires Tcl/Tk.')
option('git_gui', type: 'feature', value: 'auto',
description: 'Build the git-gui graphical user interface for Git. Requires Tcl/Tk.')
option('gitweb', type: 'feature', value: 'auto',
description: 'Build Git web interface. Requires Perl.')
option('iconv', type: 'feature', value: 'auto',

1
subprojects/git-gui Symbolic link
View File

@ -0,0 +1 @@
../git-gui

1
subprojects/gitk Symbolic link
View File

@ -0,0 +1 @@
../gitk-git