Merge branch 'master' of https://github.com/j6t/git-gui
* 'master' of https://github.com/j6t/git-gui: git-gui: wire up support for the Meson build system git-gui: stop including GIT-VERSION-FILE file git-gui: extract script to generate macOS app git-gui: extract script to generate macOS wrapper git-gui: extract script to generate "tclIndex" git-gui: extract script to generate "git-gui" git-gui: drop no-op GITGUI_SCRIPT replacement git-gui: make output of GIT-VERSION-GEN source'able git-gui: prepare GIT-VERSION-GEN for out-of-tree builds git-gui: replace GIT-GUI-VARS with GIT-GUI-BUILD-OPTIONS
This commit is contained in:
1
git-gui/.gitattributes
vendored
1
git-gui/.gitattributes
vendored
@@ -4,3 +4,4 @@ git-gui.sh encoding=UTF-8
|
|||||||
/po/*.po encoding=UTF-8
|
/po/*.po encoding=UTF-8
|
||||||
/GIT-VERSION-GEN eol=lf
|
/GIT-VERSION-GEN eol=lf
|
||||||
Makefile whitespace=!indent,trail,space
|
Makefile whitespace=!indent,trail,space
|
||||||
|
meson.build whitespace=space
|
||||||
|
|||||||
2
git-gui/.gitignore
vendored
2
git-gui/.gitignore
vendored
@@ -2,7 +2,7 @@
|
|||||||
config.mak
|
config.mak
|
||||||
Git Gui.app*
|
Git Gui.app*
|
||||||
git-gui.tcl
|
git-gui.tcl
|
||||||
|
GIT-GUI-BUILD-OPTIONS
|
||||||
GIT-VERSION-FILE
|
GIT-VERSION-FILE
|
||||||
GIT-GUI-VARS
|
|
||||||
git-gui
|
git-gui
|
||||||
lib/tclIndex
|
lib/tclIndex
|
||||||
|
|||||||
7
git-gui/GIT-GUI-BUILD-OPTIONS.in
Normal file
7
git-gui/GIT-GUI-BUILD-OPTIONS.in
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
GITGUI_GITEXECDIR=@GITGUI_GITEXECDIR@
|
||||||
|
GITGUI_LIBDIR=@GITGUI_LIBDIR@
|
||||||
|
GITGUI_RELATIVE=@GITGUI_RELATIVE@
|
||||||
|
SHELL_PATH=@SHELL_PATH@
|
||||||
|
TCLTK_PATH=@TCLTK_PATH@
|
||||||
|
TCL_PATH=@TCL_PATH@
|
||||||
|
TKEXECUTABLE=@TKEXECUTABLE@
|
||||||
@@ -1,19 +1,33 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
GVF=GIT-VERSION-FILE
|
|
||||||
DEF_VER=0.21.GITGUI
|
DEF_VER=0.21.GITGUI
|
||||||
|
|
||||||
LF='
|
LF='
|
||||||
'
|
'
|
||||||
|
|
||||||
|
if test "$#" -ne 2
|
||||||
|
then
|
||||||
|
echo >&2 "usage: $0 <SOURCE_DIR> <OUTPUT>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SOURCE_DIR="$1"
|
||||||
|
OUTPUT="$2"
|
||||||
|
|
||||||
|
# Protect us from reading Git version information outside of the Git directory
|
||||||
|
# in case it is not a repository itself, but embedded in an unrelated
|
||||||
|
# repository.
|
||||||
|
GIT_CEILING_DIRECTORIES="$SOURCE_DIR/.."
|
||||||
|
export GIT_CEILING_DIRECTORIES
|
||||||
|
|
||||||
tree_search ()
|
tree_search ()
|
||||||
{
|
{
|
||||||
head=$1
|
head=$1
|
||||||
tree=$2
|
tree=$2
|
||||||
for p in $(git rev-list --parents --max-count=1 $head 2>/dev/null)
|
for p in $(git -C "$SOURCE_DIR" rev-list --parents --max-count=1 $head 2>/dev/null)
|
||||||
do
|
do
|
||||||
test $tree = $(git rev-parse $p^{tree} 2>/dev/null) &&
|
test $tree = $(git -C "$SOURCE_DIR" rev-parse $p^{tree} 2>/dev/null) &&
|
||||||
vn=$(git describe --abbrev=4 $p 2>/dev/null) &&
|
vn=$(git -C "$SOURCE_DIR" describe --abbrev=4 $p 2>/dev/null) &&
|
||||||
case "$vn" in
|
case "$vn" in
|
||||||
gitgui-[0-9]*) echo $vn; break;;
|
gitgui-[0-9]*) echo $vn; break;;
|
||||||
esac
|
esac
|
||||||
@@ -34,14 +48,14 @@ tree_search ()
|
|||||||
# If we are at the toplevel or the merge assumption fails
|
# If we are at the toplevel or the merge assumption fails
|
||||||
# try looking for a gitgui-* tag.
|
# try looking for a gitgui-* tag.
|
||||||
|
|
||||||
if test -f version &&
|
if test -f "$SOURCE_DIR"/version &&
|
||||||
VN=$(cat version)
|
VN=$(cat "$SOURCE_DIR"/version)
|
||||||
then
|
then
|
||||||
: happy
|
: happy
|
||||||
elif prefix="$(git rev-parse --show-prefix 2>/dev/null)"
|
elif prefix="$(git -C "$SOURCE_DIR" rev-parse --show-prefix 2>/dev/null)"
|
||||||
test -n "$prefix" &&
|
test -n "$prefix" &&
|
||||||
head=$(git rev-list --max-count=1 HEAD -- . 2>/dev/null) &&
|
head=$(git -C "$SOURCE_DIR" rev-list --max-count=1 HEAD -- . 2>/dev/null) &&
|
||||||
tree=$(git rev-parse --verify "HEAD:$prefix" 2>/dev/null) &&
|
tree=$(git -C "$SOURCE_DIR" rev-parse --verify "HEAD:$prefix" 2>/dev/null) &&
|
||||||
VN=$(tree_search $head $tree)
|
VN=$(tree_search $head $tree)
|
||||||
case "$VN" in
|
case "$VN" in
|
||||||
gitgui-[0-9]*) : happy ;;
|
gitgui-[0-9]*) : happy ;;
|
||||||
@@ -49,7 +63,7 @@ elif prefix="$(git rev-parse --show-prefix 2>/dev/null)"
|
|||||||
esac
|
esac
|
||||||
then
|
then
|
||||||
VN=$(echo "$VN" | sed -e 's/^gitgui-//;s/-/./g');
|
VN=$(echo "$VN" | sed -e 's/^gitgui-//;s/-/./g');
|
||||||
elif VN=$(git describe --abbrev=4 HEAD 2>/dev/null) &&
|
elif VN=$(git -C "$SOURCE_DIR" describe --abbrev=4 HEAD 2>/dev/null) &&
|
||||||
case "$VN" in
|
case "$VN" in
|
||||||
gitgui-[0-9]*) : happy ;;
|
gitgui-[0-9]*) : happy ;;
|
||||||
*) (exit 1) ;;
|
*) (exit 1) ;;
|
||||||
@@ -60,7 +74,7 @@ else
|
|||||||
VN="$DEF_VER"
|
VN="$DEF_VER"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dirty=$(sh -c 'git diff-index --name-only HEAD' 2>/dev/null) || dirty=
|
dirty=$(git -C "$SOURCE_DIR" diff-index --name-only HEAD 2>/dev/null) || dirty=
|
||||||
case "$dirty" in
|
case "$dirty" in
|
||||||
'')
|
'')
|
||||||
;;
|
;;
|
||||||
@@ -68,13 +82,13 @@ case "$dirty" in
|
|||||||
VN="$VN-dirty" ;;
|
VN="$VN-dirty" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if test -r $GVF
|
if test -r "$OUTPUT"
|
||||||
then
|
then
|
||||||
VC=$(sed -e 's/^GITGUI_VERSION = //' <$GVF)
|
VC=$(sed -e 's/^GITGUI_VERSION=//' <"$OUTPUT")
|
||||||
else
|
else
|
||||||
VC=unset
|
VC=unset
|
||||||
fi
|
fi
|
||||||
test "$VN" = "$VC" || {
|
test "$VN" = "$VC" || {
|
||||||
echo >&2 "GITGUI_VERSION=$VN"
|
echo >&2 "GITGUI_VERSION=$VN"
|
||||||
echo "GITGUI_VERSION = $VN" >$GVF
|
echo "GITGUI_VERSION=$VN" >"$OUTPUT"
|
||||||
}
|
}
|
||||||
|
|||||||
111
git-gui/Makefile
111
git-gui/Makefile
@@ -9,10 +9,7 @@ all::
|
|||||||
#
|
#
|
||||||
|
|
||||||
GIT-VERSION-FILE: FORCE
|
GIT-VERSION-FILE: FORCE
|
||||||
@$(SHELL_PATH) ./GIT-VERSION-GEN
|
@$(SHELL_PATH) ./GIT-VERSION-GEN . $@
|
||||||
ifneq ($(MAKECMDGOALS),clean)
|
|
||||||
-include GIT-VERSION-FILE
|
|
||||||
endif
|
|
||||||
|
|
||||||
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
|
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
|
||||||
uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
|
uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
|
||||||
@@ -76,7 +73,6 @@ ifndef V
|
|||||||
QUIET_INDEX = $(QUIET)echo ' ' INDEX $(dir $@) &&
|
QUIET_INDEX = $(QUIET)echo ' ' INDEX $(dir $@) &&
|
||||||
QUIET_MSGFMT0 = $(QUIET)printf ' MSGFMT %12s ' $@ && v=`
|
QUIET_MSGFMT0 = $(QUIET)printf ' MSGFMT %12s ' $@ && v=`
|
||||||
QUIET_MSGFMT1 = 2>&1` && echo "$$v" | sed -e 's/fuzzy translations/fuzzy/' | sed -e 's/ messages*//g'
|
QUIET_MSGFMT1 = 2>&1` && echo "$$v" | sed -e 's/fuzzy translations/fuzzy/' | sed -e 's/ messages*//g'
|
||||||
QUIET_2DEVNULL = 2>/dev/null
|
|
||||||
|
|
||||||
INSTALL_D0 = dir=
|
INSTALL_D0 = dir=
|
||||||
INSTALL_D1 = && echo ' ' DEST $$dir && $(INSTALL) -d -m 755 "$$dir"
|
INSTALL_D1 = && echo ' ' DEST $$dir && $(INSTALL) -d -m 755 "$$dir"
|
||||||
@@ -114,7 +110,8 @@ ifeq ($(uname_S),Darwin)
|
|||||||
TKFRAMEWORK = /System/Library/Frameworks/Tk.framework/Resources/Wish\ Shell.app
|
TKFRAMEWORK = /System/Library/Frameworks/Tk.framework/Resources/Wish\ Shell.app
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
TKEXECUTABLE = $(shell basename "$(TKFRAMEWORK)" .app)
|
TKEXECUTABLE = $(TKFRAMEWORK)/Contents/MacOS/$(shell basename "$(TKFRAMEWORK)" .app)
|
||||||
|
TKEXECUTABLE_SQ = $(subst ','\'',$(TKEXECUTABLE))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(findstring $(firstword -$(MAKEFLAGS)),s),s)
|
ifeq ($(findstring $(firstword -$(MAKEFLAGS)),s),s)
|
||||||
@@ -128,21 +125,17 @@ gitexecdir_SQ = $(subst ','\'',$(gitexecdir))
|
|||||||
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
|
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
|
||||||
TCL_PATH_SQ = $(subst ','\'',$(TCL_PATH))
|
TCL_PATH_SQ = $(subst ','\'',$(TCL_PATH))
|
||||||
TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH))
|
TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH))
|
||||||
TCLTK_PATH_SED = $(subst ','\'',$(subst \,\\,$(TCLTK_PATH)))
|
|
||||||
|
|
||||||
gg_libdir ?= $(sharedir)/git-gui/lib
|
gg_libdir ?= $(sharedir)/git-gui/lib
|
||||||
libdir_SQ = $(subst ','\'',$(gg_libdir))
|
libdir_SQ = $(subst ','\'',$(gg_libdir))
|
||||||
libdir_SED = $(subst ','\'',$(subst \,\\,$(gg_libdir_sed_in)))
|
|
||||||
exedir = $(dir $(gitexecdir))share/git-gui/lib
|
exedir = $(dir $(gitexecdir))share/git-gui/lib
|
||||||
|
|
||||||
GITGUI_SCRIPT := $$0
|
|
||||||
GITGUI_RELATIVE :=
|
GITGUI_RELATIVE :=
|
||||||
GITGUI_MACOSXAPP :=
|
GITGUI_MACOSXAPP :=
|
||||||
|
|
||||||
ifeq ($(exedir),$(gg_libdir))
|
ifeq ($(exedir),$(gg_libdir))
|
||||||
GITGUI_RELATIVE := 1
|
GITGUI_RELATIVE := 1
|
||||||
endif
|
endif
|
||||||
gg_libdir_sed_in := $(gg_libdir)
|
|
||||||
ifeq ($(uname_S),Darwin)
|
ifeq ($(uname_S),Darwin)
|
||||||
ifeq ($(shell test -d $(TKFRAMEWORK) && echo y),y)
|
ifeq ($(shell test -d $(TKFRAMEWORK) && echo y),y)
|
||||||
GITGUI_MACOSXAPP := YesPlease
|
GITGUI_MACOSXAPP := YesPlease
|
||||||
@@ -159,41 +152,15 @@ endif
|
|||||||
ifdef GITGUI_MACOSXAPP
|
ifdef GITGUI_MACOSXAPP
|
||||||
GITGUI_MAIN := git-gui.tcl
|
GITGUI_MAIN := git-gui.tcl
|
||||||
|
|
||||||
git-gui: GIT-VERSION-FILE GIT-GUI-VARS
|
git-gui: generate-macos-wrapper.sh GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
|
||||||
$(QUIET_GEN)rm -f $@ $@+ && \
|
$(QUIET_GEN)$(SHELL_PATH) generate-macos-wrapper.sh "$@" ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE
|
||||||
echo '#!$(SHELL_PATH_SQ)' >$@+ && \
|
|
||||||
echo 'if test "z$$*" = zversion ||' >>$@+ && \
|
|
||||||
echo ' test "z$$*" = z--version' >>$@+ && \
|
|
||||||
echo then >>$@+ && \
|
|
||||||
echo ' 'echo \'git-gui version '$(GITGUI_VERSION)'\' >>$@+ && \
|
|
||||||
echo else >>$@+ && \
|
|
||||||
echo ' libdir="$${GIT_GUI_LIB_DIR:-$(libdir_SQ)}"' >>$@+ && \
|
|
||||||
echo ' 'exec \"'$$libdir/Git Gui.app/Contents/MacOS/$(subst \,,$(TKEXECUTABLE))'\" \
|
|
||||||
'"$$0" "$$@"' >>$@+ && \
|
|
||||||
echo fi >>$@+ && \
|
|
||||||
chmod +x $@+ && \
|
|
||||||
mv $@+ $@
|
|
||||||
|
|
||||||
Git\ Gui.app: GIT-VERSION-FILE GIT-GUI-VARS \
|
Git\ Gui.app: GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS \
|
||||||
macosx/Info.plist \
|
macosx/Info.plist \
|
||||||
macosx/git-gui.icns \
|
macosx/git-gui.icns \
|
||||||
macosx/AppMain.tcl \
|
macosx/AppMain.tcl \
|
||||||
$(TKFRAMEWORK)/Contents/MacOS/$(TKEXECUTABLE)
|
$(TKEXECUTABLE)
|
||||||
$(QUIET_GEN)rm -rf '$@' '$@'+ && \
|
$(QUIET_GEN)$(SHELL_PATH) generate-macos-app.sh . "$@" ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE
|
||||||
mkdir -p '$@'+/Contents/MacOS && \
|
|
||||||
mkdir -p '$@'+/Contents/Resources/Scripts && \
|
|
||||||
cp '$(subst ','\'',$(subst \,,$(TKFRAMEWORK)/Contents/MacOS/$(TKEXECUTABLE)))' \
|
|
||||||
'$@'+/Contents/MacOS && \
|
|
||||||
cp macosx/git-gui.icns '$@'+/Contents/Resources && \
|
|
||||||
sed -e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \
|
|
||||||
-e 's/@@GITGUI_TKEXECUTABLE@@/$(TKEXECUTABLE)/g' \
|
|
||||||
macosx/Info.plist \
|
|
||||||
>'$@'+/Contents/Info.plist && \
|
|
||||||
sed -e 's|@@gitexecdir@@|$(gitexecdir_SQ)|' \
|
|
||||||
-e 's|@@GITGUI_LIBDIR@@|$(libdir_SED)|' \
|
|
||||||
macosx/AppMain.tcl \
|
|
||||||
>'$@'+/Contents/Resources/Scripts/AppMain.tcl && \
|
|
||||||
mv '$@'+ '$@'
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef GITGUI_WINDOWS_WRAPPER
|
ifdef GITGUI_WINDOWS_WRAPPER
|
||||||
@@ -203,18 +170,8 @@ git-gui: windows/git-gui.sh
|
|||||||
cp $< $@
|
cp $< $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(GITGUI_MAIN): git-gui.sh GIT-VERSION-FILE GIT-GUI-VARS
|
$(GITGUI_MAIN): git-gui.sh GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
|
||||||
$(QUIET_GEN)rm -f $@ $@+ && \
|
$(QUIET_GEN)$(SHELL_PATH) generate-git-gui.sh "$<" "$@" ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE
|
||||||
sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
|
|
||||||
-e 's|@@SHELL_PATH@@|$(SHELL_PATH_SQ)|' \
|
|
||||||
-e '1,30s|^ argv0=$$0| argv0=$(GITGUI_SCRIPT)|' \
|
|
||||||
-e '1,30s|^ exec wish | exec '\''$(TCLTK_PATH_SED)'\'' |' \
|
|
||||||
-e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \
|
|
||||||
-e 's|@@GITGUI_RELATIVE@@|$(GITGUI_RELATIVE)|' \
|
|
||||||
-e '$(GITGUI_RELATIVE)s|@@GITGUI_LIBDIR@@|$(libdir_SED)|' \
|
|
||||||
git-gui.sh >$@+ && \
|
|
||||||
chmod +x $@+ && \
|
|
||||||
mv $@+ $@
|
|
||||||
|
|
||||||
XGETTEXT ?= xgettext
|
XGETTEXT ?= xgettext
|
||||||
ifdef NO_MSGFMT
|
ifdef NO_MSGFMT
|
||||||
@@ -239,35 +196,21 @@ update-po:: $(PO_TEMPLATE)
|
|||||||
$(ALL_MSGFILES): %.msg : %.po
|
$(ALL_MSGFILES): %.msg : %.po
|
||||||
$(QUIET_MSGFMT0)$(MSGFMT) --statistics --tcl -l $(basename $(notdir $<)) -d $(dir $@) $< $(QUIET_MSGFMT1)
|
$(QUIET_MSGFMT0)$(MSGFMT) --statistics --tcl -l $(basename $(notdir $<)) -d $(dir $@) $< $(QUIET_MSGFMT1)
|
||||||
|
|
||||||
lib/tclIndex: $(ALL_LIBFILES) GIT-GUI-VARS
|
lib/tclIndex: $(ALL_LIBFILES) generate-tclindex.sh GIT-GUI-BUILD-OPTIONS
|
||||||
$(QUIET_INDEX)if echo \
|
$(QUIET_INDEX)$(SHELL_PATH) generate-tclindex.sh . ./GIT-GUI-BUILD-OPTIONS $(ALL_LIBFILES)
|
||||||
$(foreach p,$(PRELOAD_FILES),source $p\;) \
|
|
||||||
auto_mkindex lib $(patsubst lib/%,%,$(sort $(ALL_LIBFILES))) \
|
|
||||||
| $(TCL_PATH) $(QUIET_2DEVNULL); then : ok; \
|
|
||||||
else \
|
|
||||||
echo >&2 " * $(TCL_PATH) failed; using unoptimized loading"; \
|
|
||||||
rm -f $@ ; \
|
|
||||||
echo '# Autogenerated by git-gui Makefile' >$@ && \
|
|
||||||
echo >>$@ && \
|
|
||||||
$(foreach p,$(PRELOAD_FILES) $(sort $(ALL_LIBFILES)),echo '$(subst lib/,,$p)' >>$@ &&) \
|
|
||||||
echo >>$@ ; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
TRACK_VARS = \
|
GIT-GUI-BUILD-OPTIONS: FORCE
|
||||||
$(subst ','\'',SHELL_PATH='$(SHELL_PATH_SQ)') \
|
@sed \
|
||||||
$(subst ','\'',TCL_PATH='$(TCL_PATH_SQ)') \
|
-e 's|@GITGUI_GITEXECDIR@|$(gitexecdir_SQ)|' \
|
||||||
$(subst ','\'',TCLTK_PATH='$(TCLTK_PATH_SQ)') \
|
-e 's|@GITGUI_LIBDIR@|$(libdir_SQ)|' \
|
||||||
$(subst ','\'',gitexecdir='$(gitexecdir_SQ)') \
|
-e 's|@GITGUI_RELATIVE@|$(GITGUI_RELATIVE)|' \
|
||||||
$(subst ','\'',gg_libdir='$(libdir_SQ)') \
|
-e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
|
||||||
GITGUI_MACOSXAPP=$(GITGUI_MACOSXAPP) \
|
-e 's|@TCLTK_PATH@|$(TCLTK_PATH_SQ)|' \
|
||||||
#end TRACK_VARS
|
-e 's|@TCL_PATH@|$(TCL_PATH_SQ)|' \
|
||||||
|
-e 's|@TKEXECUTABLE@|$(TKEXECUTABLE_SQ)|' \
|
||||||
GIT-GUI-VARS: FORCE
|
$@.in >$@+
|
||||||
@VARS='$(TRACK_VARS)'; \
|
@if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo "Unsubstituted build options in $@" >&2 && exit 1; fi
|
||||||
if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \
|
@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
|
||||||
echo >&2 " * new locations or Tcl/Tk interpreter"; \
|
|
||||||
echo >$@ "$$VARS"; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
ifdef GITGUI_MACOSXAPP
|
ifdef GITGUI_MACOSXAPP
|
||||||
all:: git-gui Git\ Gui.app
|
all:: git-gui Git\ Gui.app
|
||||||
@@ -317,13 +260,13 @@ endif
|
|||||||
$(QUIET)$(REMOVE_D0)'$(DESTDIR_SQ)$(libdir_SQ)' $(REMOVE_D1)
|
$(QUIET)$(REMOVE_D0)'$(DESTDIR_SQ)$(libdir_SQ)' $(REMOVE_D1)
|
||||||
$(QUIET)$(REMOVE_D0)`dirname '$(DESTDIR_SQ)$(libdir_SQ)'` $(REMOVE_D1)
|
$(QUIET)$(REMOVE_D0)`dirname '$(DESTDIR_SQ)$(libdir_SQ)'` $(REMOVE_D1)
|
||||||
|
|
||||||
dist-version:
|
dist-version: GIT-VERSION-FILE
|
||||||
@mkdir -p $(TARDIR)
|
@mkdir -p $(TARDIR)
|
||||||
@echo $(GITGUI_VERSION) > $(TARDIR)/version
|
@sed 's|^GITGUI_VERSION=||' <GIT-VERSION-FILE >$(TARDIR)/version
|
||||||
|
|
||||||
clean::
|
clean::
|
||||||
$(RM_RF) $(GITGUI_MAIN) lib/tclIndex po/*.msg $(PO_TEMPLATE)
|
$(RM_RF) $(GITGUI_MAIN) lib/tclIndex po/*.msg $(PO_TEMPLATE)
|
||||||
$(RM_RF) GIT-VERSION-FILE GIT-GUI-VARS
|
$(RM_RF) GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
|
||||||
ifdef GITGUI_MACOSXAPP
|
ifdef GITGUI_MACOSXAPP
|
||||||
$(RM_RF) 'Git Gui.app'* git-gui
|
$(RM_RF) 'Git Gui.app'* git-gui
|
||||||
endif
|
endif
|
||||||
|
|||||||
29
git-gui/generate-git-gui.sh
Executable file
29
git-gui/generate-git-gui.sh
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if test "$#" -ne 4
|
||||||
|
then
|
||||||
|
echo >&2 "usage: $0 <INPUT> <OUTPUT> <BUILD_OPTIONS> <VERSION_FILE>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
INPUT="$1"
|
||||||
|
OUTPUT="$2"
|
||||||
|
BUILD_OPTIONS="$3"
|
||||||
|
VERSION_FILE="$4"
|
||||||
|
|
||||||
|
. "${BUILD_OPTIONS}"
|
||||||
|
. "${VERSION_FILE}"
|
||||||
|
|
||||||
|
rm -f "$OUTPUT" "$OUTPUT+"
|
||||||
|
sed \
|
||||||
|
-e "1s|#!.*/sh|#!$SHELL_PATH|" \
|
||||||
|
-e "s|@@SHELL_PATH@@|$SHELL_PATH|" \
|
||||||
|
-e "1,30s|^ exec wish | exec '$TCLTK_PATH' |" \
|
||||||
|
-e "s|@@GITGUI_VERSION@@|$GITGUI_VERSION|g" \
|
||||||
|
-e "s|@@GITGUI_RELATIVE@@|$GITGUI_RELATIVE|" \
|
||||||
|
-e "${GITGUI_RELATIVE}s|@@GITGUI_LIBDIR@@|$GITGUI_LIBDIR|" \
|
||||||
|
"$INPUT" >"$OUTPUT"+
|
||||||
|
chmod +x "$OUTPUT"+
|
||||||
|
mv "$OUTPUT"+ "$OUTPUT"
|
||||||
30
git-gui/generate-macos-app.sh
Executable file
30
git-gui/generate-macos-app.sh
Executable file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SOURCE_DIR="$1"
|
||||||
|
OUTPUT="$2"
|
||||||
|
BUILD_OPTIONS="$3"
|
||||||
|
VERSION_FILE="$4"
|
||||||
|
|
||||||
|
. "$BUILD_OPTIONS"
|
||||||
|
. "$VERSION_FILE"
|
||||||
|
|
||||||
|
rm -rf "$OUTPUT" "$OUTPUT+"
|
||||||
|
|
||||||
|
mkdir -p "$OUTPUT+/Contents/MacOS"
|
||||||
|
mkdir -p "$OUTPUT+/Contents/Resources/Scripts"
|
||||||
|
|
||||||
|
cp "$TKEXECUTABLE" "$OUTPUT+/Contents/MacOS"
|
||||||
|
cp "$SOURCE_DIR/macosx/git-gui.icns" "$OUTPUT+/Contents/Resources"
|
||||||
|
sed \
|
||||||
|
-e "s/@@GITGUI_VERSION@@/$GITGUI_VERSION/g" \
|
||||||
|
-e "s/@@GITGUI_TKEXECUTABLE@@/$(basename "$TKEXECUTABLE")/g" \
|
||||||
|
"$SOURCE_DIR/macosx/Info.plist" \
|
||||||
|
>"$OUTPUT+/Contents/Info.plist"
|
||||||
|
sed \
|
||||||
|
-e "s|@@gitexecdir@@|$GITGUI_GITEXECDIR|" \
|
||||||
|
-e "s|@@GITGUI_LIBDIR@@|$GITGUI_LIBDIR|" \
|
||||||
|
"$SOURCE_DIR/macosx/AppMain.tcl" \
|
||||||
|
>"$OUTPUT+/Contents/Resources/Scripts/AppMain.tcl"
|
||||||
|
mv "$OUTPUT+" "$OUTPUT"
|
||||||
35
git-gui/generate-macos-wrapper.sh
Executable file
35
git-gui/generate-macos-wrapper.sh
Executable file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if test "$#" -ne 3
|
||||||
|
then
|
||||||
|
echo >&2 "usage: $0 <OUTPUT> <BUILD_OPTIONS> <VERSION_FILE>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
OUTPUT="$1"
|
||||||
|
BUILD_OPTIONS="$2"
|
||||||
|
VERSION_FILE="$3"
|
||||||
|
|
||||||
|
. "$BUILD_OPTIONS"
|
||||||
|
|
||||||
|
rm -f "$OUTPUT" "$OUTPUT+"
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "#!$SHELL_PATH"
|
||||||
|
cat "$BUILD_OPTIONS" "$VERSION_FILE"
|
||||||
|
cat <<-'EOF'
|
||||||
|
if test "z$*" = zversion ||
|
||||||
|
test "z$*" = z--version
|
||||||
|
then
|
||||||
|
echo "git-gui version $GITGUI_VERSION"
|
||||||
|
else
|
||||||
|
libdir="${GIT_GUI_LIB_DIR:-$GITGUI_LIBDIR}"
|
||||||
|
exec "$libdir/Git Gui.app/Contents/MacOS/$(basename "$TKEXECUTABLE")" "$0" "$@"
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
) >"$OUTPUT+"
|
||||||
|
|
||||||
|
chmod +x "$OUTPUT+"
|
||||||
|
mv "$OUTPUT+" "$OUTPUT"
|
||||||
32
git-gui/generate-tclindex.sh
Executable file
32
git-gui/generate-tclindex.sh
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if test "$#" -lt 3
|
||||||
|
then
|
||||||
|
echo >&2 "usage: $0 <BUILD_DIR> <BUILD_OPTIONS> <LIBFILE> [<LIBFILE>...]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
BUILD_DIR="$1"
|
||||||
|
BUILD_OPTIONS="$2"
|
||||||
|
shift 2
|
||||||
|
LIBFILES="$(echo "$@" | sort | sed 's|lib/||g')"
|
||||||
|
|
||||||
|
. "$BUILD_OPTIONS"
|
||||||
|
|
||||||
|
cd "$BUILD_DIR"
|
||||||
|
|
||||||
|
if {
|
||||||
|
echo "source lib/class.tcl;"
|
||||||
|
echo "auto_mkindex lib $LIBFILES"
|
||||||
|
} | "$TCL_PATH"
|
||||||
|
then
|
||||||
|
: ok
|
||||||
|
else
|
||||||
|
echo >&2 " * $TCL_PATH failed; using unoptimized loading"
|
||||||
|
rm -f $@
|
||||||
|
echo '# Autogenerated by git-gui Makefile' >lib/tclIndex
|
||||||
|
echo >>lib/tclIndex
|
||||||
|
echo "class.tcl" >>lib/tclIndex
|
||||||
|
printf "%s\n" $LIBFILES >>lib/tclIndex
|
||||||
|
echo >>lib/tclIndex
|
||||||
|
fi
|
||||||
74
git-gui/lib/meson.build
Normal file
74
git-gui/lib/meson.build
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
libfiles = [
|
||||||
|
'about.tcl',
|
||||||
|
'blame.tcl',
|
||||||
|
'branch_checkout.tcl',
|
||||||
|
'branch_create.tcl',
|
||||||
|
'branch_delete.tcl',
|
||||||
|
'branch_rename.tcl',
|
||||||
|
'branch.tcl',
|
||||||
|
'browser.tcl',
|
||||||
|
'checkout_op.tcl',
|
||||||
|
'choose_font.tcl',
|
||||||
|
'choose_repository.tcl',
|
||||||
|
'choose_rev.tcl',
|
||||||
|
'chord.tcl',
|
||||||
|
'class.tcl',
|
||||||
|
'commit.tcl',
|
||||||
|
'console.tcl',
|
||||||
|
'database.tcl',
|
||||||
|
'date.tcl',
|
||||||
|
'diff.tcl',
|
||||||
|
'encoding.tcl',
|
||||||
|
'error.tcl',
|
||||||
|
'index.tcl',
|
||||||
|
'line.tcl',
|
||||||
|
'logo.tcl',
|
||||||
|
'merge.tcl',
|
||||||
|
'mergetool.tcl',
|
||||||
|
'option.tcl',
|
||||||
|
'remote_add.tcl',
|
||||||
|
'remote_branch_delete.tcl',
|
||||||
|
'remote.tcl',
|
||||||
|
'search.tcl',
|
||||||
|
'shortcut.tcl',
|
||||||
|
'spellcheck.tcl',
|
||||||
|
'sshkey.tcl',
|
||||||
|
'status_bar.tcl',
|
||||||
|
'themed.tcl',
|
||||||
|
'tools_dlg.tcl',
|
||||||
|
'tools.tcl',
|
||||||
|
'transport.tcl',
|
||||||
|
'win32.tcl',
|
||||||
|
]
|
||||||
|
|
||||||
|
nontcl_libfiles = [
|
||||||
|
'git-gui.ico',
|
||||||
|
'win32_shortcut.js',
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach file : libfiles + nontcl_libfiles
|
||||||
|
configure_file(
|
||||||
|
input: file,
|
||||||
|
output: file,
|
||||||
|
copy: true,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'git-gui/lib',
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
custom_target(
|
||||||
|
output: 'tclIndex',
|
||||||
|
command: [
|
||||||
|
shell,
|
||||||
|
meson.project_source_root() / 'generate-tclindex.sh',
|
||||||
|
meson.project_build_root(),
|
||||||
|
meson.project_build_root() / 'GIT-GUI-BUILD-OPTIONS',
|
||||||
|
libfiles,
|
||||||
|
],
|
||||||
|
depend_files: [
|
||||||
|
libfiles,
|
||||||
|
build_options,
|
||||||
|
],
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'git-gui/lib',
|
||||||
|
)
|
||||||
148
git-gui/meson.build
Normal file
148
git-gui/meson.build
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
project('git-gui',
|
||||||
|
meson_version: '>=0.61.0',
|
||||||
|
)
|
||||||
|
|
||||||
|
fs = import('fs')
|
||||||
|
|
||||||
|
shell = find_program('sh')
|
||||||
|
tclsh = find_program('tclsh')
|
||||||
|
wish = find_program('wish')
|
||||||
|
|
||||||
|
build_options_config = configuration_data()
|
||||||
|
if target_machine.system() == 'windows'
|
||||||
|
build_options_config.set('GITGUI_RELATIVE', '1')
|
||||||
|
else
|
||||||
|
build_options_config.set('GITGUI_RELATIVE', '')
|
||||||
|
endif
|
||||||
|
build_options_config.set_quoted('GITGUI_GITEXECDIR', get_option('prefix') / get_option('libexecdir') / 'git-core')
|
||||||
|
build_options_config.set_quoted('GITGUI_LIBDIR', get_option('prefix') / get_option('datadir') / 'git-gui/lib')
|
||||||
|
build_options_config.set_quoted('SHELL_PATH', fs.as_posix(shell.full_path()))
|
||||||
|
build_options_config.set_quoted('TCLTK_PATH', fs.as_posix(wish.full_path()))
|
||||||
|
build_options_config.set_quoted('TCL_PATH', fs.as_posix(tclsh.full_path()))
|
||||||
|
if target_machine.system() == 'darwin'
|
||||||
|
tkexecutables = [
|
||||||
|
'/Library/Frameworks/Tk.framework/Resources/Wish.app/Contents/MacOS/Wish',
|
||||||
|
'/System/Library/Frameworks/Tk.framework/Resources/Wish.app/Contents/MacOS/Wish',
|
||||||
|
'/System/Library/Frameworks/Tk.framework/Resources/Wish Shell.app/Contents/MacOS/Wish Shell',
|
||||||
|
]
|
||||||
|
tkexecutable = find_program(tkexecutables)
|
||||||
|
build_options_config.set_quoted('TKEXECUTABLE', tkexecutable.full_path())
|
||||||
|
else
|
||||||
|
build_options_config.set('TKEXECUTABLE', '')
|
||||||
|
endif
|
||||||
|
|
||||||
|
build_options = configure_file(
|
||||||
|
input: 'GIT-GUI-BUILD-OPTIONS.in',
|
||||||
|
output: 'GIT-GUI-BUILD-OPTIONS',
|
||||||
|
configuration: build_options_config,
|
||||||
|
)
|
||||||
|
|
||||||
|
version_file = custom_target(
|
||||||
|
input: 'GIT-VERSION-GEN',
|
||||||
|
output: 'GIT-VERSION-FILE',
|
||||||
|
command: [
|
||||||
|
shell,
|
||||||
|
'@INPUT@',
|
||||||
|
meson.current_source_dir(),
|
||||||
|
'@OUTPUT@',
|
||||||
|
],
|
||||||
|
build_always_stale: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
input: 'git-gui--askpass',
|
||||||
|
output: 'git-gui--askpass',
|
||||||
|
copy: true,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('libexecdir') / 'git-core',
|
||||||
|
)
|
||||||
|
|
||||||
|
gitgui_main = 'git-gui'
|
||||||
|
gitgui_main_install_dir = get_option('libexecdir') / 'git-core'
|
||||||
|
|
||||||
|
if target_machine.system() == 'windows'
|
||||||
|
gitgui_main = 'git-gui.tcl'
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
input: 'windows/git-gui.sh',
|
||||||
|
output: 'git-gui',
|
||||||
|
copy: true,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('libexecdir') / 'git-core',
|
||||||
|
)
|
||||||
|
elif target_machine.system() == 'darwin'
|
||||||
|
gitgui_main = 'git-gui.tcl'
|
||||||
|
gitgui_main_install_dir = get_option('datadir') / 'git-gui/lib'
|
||||||
|
|
||||||
|
custom_target(
|
||||||
|
output: 'git-gui',
|
||||||
|
command: [
|
||||||
|
shell,
|
||||||
|
meson.current_source_dir() / 'generate-macos-wrapper.sh',
|
||||||
|
'@OUTPUT@',
|
||||||
|
meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS',
|
||||||
|
meson.current_build_dir() / 'GIT-VERSION-FILE',
|
||||||
|
],
|
||||||
|
depends: [
|
||||||
|
version_file,
|
||||||
|
],
|
||||||
|
depend_files: [
|
||||||
|
build_options,
|
||||||
|
],
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('libexecdir') / 'git-core',
|
||||||
|
)
|
||||||
|
|
||||||
|
custom_target(
|
||||||
|
output: 'Git Gui.app',
|
||||||
|
command: [
|
||||||
|
shell,
|
||||||
|
meson.current_source_dir() / 'generate-macos-app.sh',
|
||||||
|
meson.current_source_dir(),
|
||||||
|
meson.current_build_dir() / 'Git Gui.app',
|
||||||
|
meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS',
|
||||||
|
meson.current_build_dir() / 'GIT-VERSION-FILE',
|
||||||
|
],
|
||||||
|
depends: [
|
||||||
|
version_file,
|
||||||
|
],
|
||||||
|
depend_files: [
|
||||||
|
build_options,
|
||||||
|
'macosx/AppMain.tcl',
|
||||||
|
'macosx/Info.plist',
|
||||||
|
'macosx/git-gui.icns',
|
||||||
|
],
|
||||||
|
build_by_default: true,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'git-gui/lib',
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
custom_target(
|
||||||
|
input: 'git-gui.sh',
|
||||||
|
output: gitgui_main,
|
||||||
|
command: [
|
||||||
|
shell,
|
||||||
|
meson.current_source_dir() / 'generate-git-gui.sh',
|
||||||
|
'@INPUT@',
|
||||||
|
'@OUTPUT@',
|
||||||
|
meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS',
|
||||||
|
meson.current_build_dir() / 'GIT-VERSION-FILE',
|
||||||
|
],
|
||||||
|
depends: [
|
||||||
|
version_file,
|
||||||
|
],
|
||||||
|
depend_files: [
|
||||||
|
build_options,
|
||||||
|
],
|
||||||
|
install: true,
|
||||||
|
install_dir: gitgui_main_install_dir,
|
||||||
|
)
|
||||||
|
|
||||||
|
install_symlink('git-citool',
|
||||||
|
install_dir: get_option('libexecdir') / 'git-core',
|
||||||
|
pointing_to: 'git-gui',
|
||||||
|
)
|
||||||
|
|
||||||
|
subdir('lib')
|
||||||
|
subdir('po')
|
||||||
38
git-gui/po/meson.build
Normal file
38
git-gui/po/meson.build
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
languages = [
|
||||||
|
'bg',
|
||||||
|
'de',
|
||||||
|
'el',
|
||||||
|
'fr',
|
||||||
|
'hu',
|
||||||
|
'it',
|
||||||
|
'ja',
|
||||||
|
'nb',
|
||||||
|
'pt_br',
|
||||||
|
'pt_pt',
|
||||||
|
'ru',
|
||||||
|
'sv',
|
||||||
|
'vi',
|
||||||
|
'zh_cn',
|
||||||
|
]
|
||||||
|
|
||||||
|
msgfmt = find_program('msgfmt', required: false)
|
||||||
|
if not msgfmt.found()
|
||||||
|
subdir_done()
|
||||||
|
endif
|
||||||
|
|
||||||
|
foreach language : languages
|
||||||
|
custom_target(
|
||||||
|
input: language + '.po',
|
||||||
|
output: language + '.msg',
|
||||||
|
command: [
|
||||||
|
msgfmt,
|
||||||
|
'--statistics',
|
||||||
|
'--tcl',
|
||||||
|
'--locale=' + language,
|
||||||
|
'-d', meson.current_build_dir(),
|
||||||
|
'@INPUT@',
|
||||||
|
],
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'git-gui/lib/msgs',
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
Reference in New Issue
Block a user