99#
1010
1111GIT-VERSION-FILE : FORCE
12- @$(SHELL_PATH ) ./GIT-VERSION-GEN
13- ifneq ($(MAKECMDGOALS ) ,clean)
14- -include GIT-VERSION-FILE
15- endif
12+ @$(SHELL_PATH ) ./GIT-VERSION-GEN . $@
1613
1714uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
1815uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
@@ -76,7 +73,6 @@ ifndef V
7673 QUIET_INDEX = $(QUIET)echo ' ' INDEX $(dir $@) &&
7774 QUIET_MSGFMT0 = $(QUIET)printf ' MSGFMT %12s ' $@ && v=`
7875 QUIET_MSGFMT1 = 2>&1` && echo "$$v" | sed -e 's/fuzzy translations/fuzzy/' | sed -e 's/ messages*//g'
79- QUIET_2DEVNULL = 2>/dev/null
8076
8177 INSTALL_D0 = dir=
8278 INSTALL_D1 = && echo ' ' DEST $$dir && $(INSTALL) -d -m 755 "$$dir"
@@ -114,7 +110,8 @@ ifeq ($(uname_S),Darwin)
114110 TKFRAMEWORK = /System/Library/Frameworks/Tk.framework/Resources/Wish\ Shell.app
115111 endif
116112 endif
117- TKEXECUTABLE = $(shell basename "$(TKFRAMEWORK)" .app)
113+ TKEXECUTABLE = $(TKFRAMEWORK)/Contents/MacOS/$(shell basename "$(TKFRAMEWORK)" .app)
114+ TKEXECUTABLE_SQ = $(subst ','\'',$(TKEXECUTABLE))
118115endif
119116
120117ifeq ($(findstring $(firstword -$(MAKEFLAGS ) ) ,s) ,s)
@@ -128,21 +125,17 @@ gitexecdir_SQ = $(subst ','\'',$(gitexecdir))
128125SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH ) )
129126TCL_PATH_SQ = $(subst ','\'',$(TCL_PATH ) )
130127TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH ) )
131- TCLTK_PATH_SED = $(subst ','\'',$(subst \,\\,$(TCLTK_PATH ) ) )
132128
133129gg_libdir ?= $(sharedir ) /git-gui/lib
134130libdir_SQ = $(subst ','\'',$(gg_libdir ) )
135- libdir_SED = $(subst ','\'',$(subst \,\\,$(gg_libdir_sed_in ) ) )
136131exedir = $(dir $(gitexecdir ) ) share/git-gui/lib
137132
138- GITGUI_SCRIPT := $$0
139133GITGUI_RELATIVE :=
140134GITGUI_MACOSXAPP :=
141135
142136ifeq ($(exedir ) ,$(gg_libdir ) )
143137 GITGUI_RELATIVE := 1
144138endif
145- gg_libdir_sed_in := $(gg_libdir )
146139ifeq ($(uname_S ) ,Darwin)
147140 ifeq ($(shell test -d $(TKFRAMEWORK) && echo y),y)
148141 GITGUI_MACOSXAPP := YesPlease
@@ -159,41 +152,15 @@ endif
159152ifdef GITGUI_MACOSXAPP
160153GITGUI_MAIN := git-gui.tcl
161154
162- git-gui : GIT-VERSION-FILE GIT-GUI-VARS
163- $(QUIET_GEN ) rm -f $@ $@ + && \
164- echo ' #!$(SHELL_PATH_SQ)' > $@ + && \
165- echo ' if test "z$$*" = zversion ||' >> $@ + && \
166- echo ' test "z$$*" = z--version' >> $@ + && \
167- echo then >> $@ + && \
168- echo ' ' echo \' git-gui version ' $(GITGUI_VERSION)' \' >> $@ + && \
169- echo else >> $@ + && \
170- echo ' libdir="$${GIT_GUI_LIB_DIR:-$(libdir_SQ)}"' >> $@ + && \
171- echo ' ' exec \" ' $$libdir/Git Gui.app/Contents/MacOS/$(subst \,,$(TKEXECUTABLE))' \" \
172- ' "$$0" "$$@"' >> $@ + && \
173- echo fi >> $@ + && \
174- chmod +x $@ + && \
175- mv $@ + $@
176-
177- Git\ Gui.app : GIT-VERSION-FILE GIT-GUI-VARS \
155+ git-gui : generate-macos-wrapper.sh GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
156+ $(QUIET_GEN )$(SHELL_PATH ) generate-macos-wrapper.sh " $@ " ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE
157+
158+ Git\ Gui.app : GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS \
178159 macosx/Info.plist \
179160 macosx/git-gui.icns \
180161 macosx/AppMain.tcl \
181- $(TKFRAMEWORK ) /Contents/MacOS/$(TKEXECUTABLE )
182- $(QUIET_GEN ) rm -rf ' $@' ' $@' + && \
183- mkdir -p ' $@' +/Contents/MacOS && \
184- mkdir -p ' $@' +/Contents/Resources/Scripts && \
185- cp ' $(subst ' ,' \' ' ,$(subst \,,$(TKFRAMEWORK)/Contents/MacOS/$(TKEXECUTABLE)))' \
186- ' $@' +/Contents/MacOS && \
187- cp macosx/git-gui.icns ' $@' +/Contents/Resources && \
188- sed -e ' s/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \
189- -e ' s/@@GITGUI_TKEXECUTABLE@@/$(TKEXECUTABLE)/g' \
190- macosx/Info.plist \
191- > ' $@' +/Contents/Info.plist && \
192- sed -e ' s|@@gitexecdir@@|$(gitexecdir_SQ)|' \
193- -e ' s|@@GITGUI_LIBDIR@@|$(libdir_SED)|' \
194- macosx/AppMain.tcl \
195- > ' $@' +/Contents/Resources/Scripts/AppMain.tcl && \
196- mv ' $@' + ' $@'
162+ $(TKEXECUTABLE )
163+ $(QUIET_GEN )$(SHELL_PATH ) generate-macos-app.sh . " $@ " ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE
197164endif
198165
199166ifdef GITGUI_WINDOWS_WRAPPER
@@ -203,18 +170,8 @@ git-gui: windows/git-gui.sh
203170 cp $< $@
204171endif
205172
206- $(GITGUI_MAIN ) : git-gui.sh GIT-VERSION-FILE GIT-GUI-VARS
207- $(QUIET_GEN ) rm -f $@ $@ + && \
208- sed -e ' 1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
209- -e ' s|@@SHELL_PATH@@|$(SHELL_PATH_SQ)|' \
210- -e ' 1,30s|^ argv0=$$0| argv0=$(GITGUI_SCRIPT)|' \
211- -e ' 1,30s|^ exec wish | exec ' \' ' $(TCLTK_PATH_SED)' \' ' |' \
212- -e ' s/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \
213- -e ' s|@@GITGUI_RELATIVE@@|$(GITGUI_RELATIVE)|' \
214- -e ' $(GITGUI_RELATIVE)s|@@GITGUI_LIBDIR@@|$(libdir_SED)|' \
215- git-gui.sh > $@ + && \
216- chmod +x $@ + && \
217- mv $@ + $@
173+ $(GITGUI_MAIN ) : git-gui.sh GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
174+ $(QUIET_GEN )$(SHELL_PATH ) generate-git-gui.sh " $<" " $@ " ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE
218175
219176XGETTEXT ?= xgettext
220177ifdef NO_MSGFMT
@@ -239,35 +196,21 @@ update-po:: $(PO_TEMPLATE)
239196$(ALL_MSGFILES ) : % .msg : % .po
240197 $(QUIET_MSGFMT0 )$(MSGFMT ) --statistics --tcl -l $(basename $(notdir $< ) ) -d $(dir $@ ) $< $(QUIET_MSGFMT1 )
241198
242- lib/tclIndex : $(ALL_LIBFILES ) GIT-GUI-VARS
243- $(QUIET_INDEX ) if echo \
244- $(foreach p,$(PRELOAD_FILES ) ,source $p\;) \
245- auto_mkindex lib $(patsubst lib/% ,% ,$(sort $(ALL_LIBFILES ) ) ) \
246- | $(TCL_PATH ) $(QUIET_2DEVNULL ) ; then : ok; \
247- else \
248- echo >&2 " * $( TCL_PATH) failed; using unoptimized loading" ; \
249- rm -f $@ ; \
250- echo ' # Autogenerated by git-gui Makefile' > $@ && \
251- echo >> $@ && \
252- $(foreach p,$(PRELOAD_FILES ) $(sort $(ALL_LIBFILES ) ) ,echo '$(subst lib/,,$p) ' >>$@ &&) \
253- echo >> $@ ; \
254- fi
255-
256- TRACK_VARS = \
257- $(subst ','\'',SHELL_PATH='$(SHELL_PATH_SQ ) ') \
258- $(subst ','\'',TCL_PATH='$(TCL_PATH_SQ ) ') \
259- $(subst ','\'',TCLTK_PATH='$(TCLTK_PATH_SQ ) ') \
260- $(subst ','\'',gitexecdir='$(gitexecdir_SQ ) ') \
261- $(subst ','\'',gg_libdir='$(libdir_SQ ) ') \
262- GITGUI_MACOSXAPP=$(GITGUI_MACOSXAPP ) \
263- # end TRACK_VARS
264-
265- GIT-GUI-VARS : FORCE
266- @VARS=' $(TRACK_VARS)' ; \
267- if test x" $$ VARS" ! = x" ` cat $@ 2> /dev/null` " ; then \
268- echo >&2 " * new locations or Tcl/Tk interpreter" ; \
269- echo > $@ " $$ VARS" ; \
270- fi
199+ lib/tclIndex : $(ALL_LIBFILES ) generate-tclindex.sh GIT-GUI-BUILD-OPTIONS
200+ $(QUIET_INDEX )$(SHELL_PATH ) generate-tclindex.sh . ./GIT-GUI-BUILD-OPTIONS $(ALL_LIBFILES )
201+
202+ GIT-GUI-BUILD-OPTIONS : FORCE
203+ @sed \
204+ -e ' s|@GITGUI_GITEXECDIR@|$(gitexecdir_SQ)|' \
205+ -e ' s|@GITGUI_LIBDIR@|$(libdir_SQ)|' \
206+ -e ' s|@GITGUI_RELATIVE@|$(GITGUI_RELATIVE)|' \
207+ -e ' s|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
208+ -e ' s|@TCLTK_PATH@|$(TCLTK_PATH_SQ)|' \
209+ -e ' s|@TCL_PATH@|$(TCL_PATH_SQ)|' \
210+ -e ' s|@TKEXECUTABLE@|$(TKEXECUTABLE_SQ)|' \
211+ $@ .in > $@ +
212+ @if grep -q ' ^[A-Z][A-Z_]*=@.*@$$' $@ +; then echo " Unsubstituted build options in $@ " >&2 && exit 1; fi
213+ @if cmp $@ + $@ > /dev/null 2>&1 ; then $(RM ) $@ +; else mv $@ + $@ ; fi
271214
272215ifdef GITGUI_MACOSXAPP
273216all :: git-gui Git\ Gui.app
@@ -317,13 +260,13 @@ endif
317260 $(QUIET)$(REMOVE_D0)'$(DESTDIR_SQ)$(libdir_SQ)' $(REMOVE_D1)
318261 $(QUIET)$(REMOVE_D0)`dirname '$(DESTDIR_SQ)$(libdir_SQ)'` $(REMOVE_D1)
319262
320- dist-version :
263+ dist-version : GIT-VERSION-FILE
321264 @mkdir -p $(TARDIR )
322- @echo $( GITGUI_VERSION ) > $(TARDIR ) /version
265+ @sed ' s|^ GITGUI_VERSION=|| ' < GIT-VERSION-FILE > $(TARDIR ) /version
323266
324267clean ::
325268 $(RM_RF ) $(GITGUI_MAIN ) lib/tclIndex po/* .msg $(PO_TEMPLATE )
326- $(RM_RF ) GIT-VERSION-FILE GIT-GUI-VARS
269+ $(RM_RF ) GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
327270ifdef GITGUI_MACOSXAPP
328271 $(RM_RF) 'Git Gui.app'* git-gui
329272endif
0 commit comments