]>
Commit | Line | Data |
---|---|---|
41bdcda3 SP |
1 | all:: |
2 | ||
0b5ea163 SP |
3 | # Define V=1 to have a more verbose compile. |
4 | # | |
cd38c86f JS |
5 | # Define NO_MSGFMT if you do not have msgfmt from the GNU gettext |
6 | # package and want to use our rough pure Tcl po->msg translator. | |
7 | # TCL_PATH must be vaild for this to work. | |
8 | # | |
0b5ea163 | 9 | |
f1cee4e6 SP |
10 | GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE |
11 | @$(SHELL_PATH) ./GIT-VERSION-GEN | |
12 | -include GIT-VERSION-FILE | |
13 | ||
82a2d6bd SP |
14 | uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not') |
15 | ||
bb616ddd | 16 | SCRIPT_SH = git-gui.sh |
41bdcda3 | 17 | GITGUI_BUILT_INS = git-citool |
bb616ddd | 18 | ALL_PROGRAMS = $(GITGUI_BUILT_INS) $(patsubst %.sh,%,$(SCRIPT_SH)) |
f522c9b5 | 19 | ALL_LIBFILES = $(wildcard lib/*.tcl) |
b9e7efb8 | 20 | PRELOAD_FILES = lib/class.tcl |
41bdcda3 SP |
21 | |
22 | ifndef SHELL_PATH | |
23 | SHELL_PATH = /bin/sh | |
24 | endif | |
b3678bac | 25 | |
663e7cf8 SP |
26 | ifndef gitexecdir |
27 | gitexecdir := $(shell git --exec-path) | |
28 | endif | |
29 | ||
f522c9b5 | 30 | ifndef sharedir |
ea75ee35 | 31 | sharedir := $(dir $(gitexecdir))share |
f522c9b5 SP |
32 | endif |
33 | ||
663e7cf8 SP |
34 | ifndef INSTALL |
35 | INSTALL = install | |
36 | endif | |
b3678bac | 37 | |
042f53c5 SP |
38 | RM_F ?= rm -f |
39 | RMDIR ?= rmdir | |
40 | ||
573fe6d7 SP |
41 | INSTALL_D0 = $(INSTALL) -d -m755 # space is required here |
42 | INSTALL_D1 = | |
43 | INSTALL_R0 = $(INSTALL) -m644 # space is required here | |
44 | INSTALL_R1 = | |
45 | INSTALL_X0 = $(INSTALL) -m755 # space is required here | |
46 | INSTALL_X1 = | |
47 | INSTALL_L0 = rm -f # space is required here | |
48 | INSTALL_L1 = && ln # space is required here | |
49 | INSTALL_L2 = | |
50 | INSTALL_L3 = | |
51 | ||
042f53c5 SP |
52 | REMOVE_D0 = $(RMDIR) # space is required here |
53 | REMOVE_D1 = || true | |
54 | REMOVE_F0 = $(RM_F) # space is required here | |
55 | REMOVE_F1 = | |
56 | CLEAN_DST = true | |
57 | ||
0b5ea163 | 58 | ifndef V |
573fe6d7 SP |
59 | QUIET = @ |
60 | QUIET_GEN = $(QUIET)echo ' ' GEN $@ && | |
61 | QUIET_BUILT_IN = $(QUIET)echo ' ' BUILTIN $@ && | |
62 | QUIET_INDEX = $(QUIET)echo ' ' INDEX $(dir $@) && | |
12fb2233 SP |
63 | QUIET_MSGFMT0 = $(QUIET)printf ' MSGFMT %12s ' $@ && v=` |
64 | QUIET_MSGFMT1 = 2>&1` && echo "$$v" | sed -e 's/fuzzy translations/fuzzy/' | sed -e 's/ messages//g' | |
b9e7efb8 | 65 | QUIET_2DEVNULL = 2>/dev/null |
573fe6d7 SP |
66 | |
67 | INSTALL_D0 = dir= | |
68 | INSTALL_D1 = && echo ' ' DEST $$dir && $(INSTALL) -d -m755 "$$dir" | |
69 | INSTALL_R0 = src= | |
70 | INSTALL_R1 = && echo ' ' INSTALL 644 `basename $$src` && $(INSTALL) -m644 $$src | |
71 | INSTALL_X0 = src= | |
72 | INSTALL_X1 = && echo ' ' INSTALL 755 `basename $$src` && $(INSTALL) -m755 $$src | |
73 | ||
74 | INSTALL_L0 = dst= | |
75 | INSTALL_L1 = && src= | |
76 | INSTALL_L2 = && dst= | |
77 | INSTALL_L3 = && echo ' ' 'LINK ' `basename "$$dst"` '->' `basename "$$src"` && rm -f "$$dst" && ln "$$src" "$$dst" | |
042f53c5 SP |
78 | |
79 | CLEAN_DST = echo ' ' UNINSTALL | |
80 | REMOVE_D0 = dir= | |
81 | REMOVE_D1 = && echo ' ' REMOVE $$dir && test -d "$$dir" && $(RMDIR) "$$dir" || true | |
82 | REMOVE_F0 = dst= | |
83 | REMOVE_F1 = && echo ' ' REMOVE `basename "$$dst"` && $(RM_F) "$$dst" | |
0b5ea163 SP |
84 | endif |
85 | ||
f522c9b5 | 86 | TCL_PATH ?= tclsh |
845d377b JH |
87 | TCLTK_PATH ?= wish |
88 | ||
0c3b4aac AR |
89 | ifeq ($(findstring $(MAKEFLAGS),s),s) |
90 | QUIET_GEN = | |
91 | QUIET_BUILT_IN = | |
92 | endif | |
93 | ||
b3678bac SP |
94 | DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) |
95 | gitexecdir_SQ = $(subst ','\'',$(gitexecdir)) | |
41bdcda3 | 96 | SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) |
b9e7efb8 | 97 | TCL_PATH_SQ = $(subst ','\'',$(TCL_PATH)) |
845d377b | 98 | TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH)) |
2f7c9a7f | 99 | TCLTK_PATH_SED = $(subst ','\'',$(subst \,\\,$(TCLTK_PATH))) |
41bdcda3 | 100 | |
c63fe3b2 SP |
101 | gg_libdir ?= $(sharedir)/git-gui/lib |
102 | libdir_SQ = $(subst ','\'',$(gg_libdir)) | |
2f7c9a7f SP |
103 | libdir_SED = $(subst ','\'',$(subst \,\\,$(gg_libdir))) |
104 | exedir = $(dir $(gitexecdir))share/git-gui/lib | |
f522c9b5 | 105 | |
2f7c9a7f SP |
106 | GITGUI_SCRIPT := $$0 |
107 | GITGUI_RELATIVE := | |
108 | ||
109 | ifeq ($(exedir),$(gg_libdir)) | |
110 | GITGUI_RELATIVE := 1 | |
111 | endif | |
112 | ||
113 | ifeq ($(uname_O),Cygwin) | |
114 | GITGUI_SCRIPT := `cygpath --windows --absolute "$(GITGUI_SCRIPT)"` | |
115 | ifeq ($(GITGUI_RELATIVE),) | |
116 | gg_libdir := $(shell cygpath --windows --absolute "$(gg_libdir)") | |
117 | endif | |
118 | endif | |
ea75ee35 | 119 | |
bb616ddd | 120 | $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh |
0b5ea163 | 121 | $(QUIET_GEN)rm -f $@ $@+ && \ |
bb616ddd | 122 | sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ |
2f7c9a7f SP |
123 | -e '1,30s|^ argv0=$$0| argv0=$(GITGUI_SCRIPT)|' \ |
124 | -e '1,30s|^ exec wish | exec '\''$(TCLTK_PATH_SED)'\'' |' \ | |
7e81d4ee | 125 | -e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \ |
2f7c9a7f SP |
126 | -e 's|@@GITGUI_RELATIVE@@|$(GITGUI_RELATIVE)|' \ |
127 | -e '$(GITGUI_RELATIVE)s|@@GITGUI_LIBDIR@@|$(libdir_SED)|' \ | |
0b5ea163 | 128 | $@.sh >$@+ && \ |
0b5ea163 | 129 | chmod +x $@+ && \ |
41bdcda3 SP |
130 | mv $@+ $@ |
131 | ||
132 | $(GITGUI_BUILT_INS): git-gui | |
0b5ea163 | 133 | $(QUIET_BUILT_IN)rm -f $@ && ln git-gui $@ |
41bdcda3 | 134 | |
38450480 | 135 | XGETTEXT ?= xgettext |
cd38c86f JS |
136 | ifdef NO_MSGFMT |
137 | MSGFMT ?= $(TCL_PATH) po/po2msg.sh | |
138 | else | |
139 | MSGFMT ?= msgfmt | |
140 | endif | |
141 | ||
b2bd3100 | 142 | msgsdir = $(gg_libdir)/msgs |
38450480 CS |
143 | msgsdir_SQ = $(subst ','\'',$(msgsdir)) |
144 | PO_TEMPLATE = po/git-gui.pot | |
145 | ALL_POFILES = $(wildcard po/*.po) | |
146 | ALL_MSGFILES = $(subst .po,.msg,$(ALL_POFILES)) | |
147 | ||
148 | $(PO_TEMPLATE): $(SCRIPT_SH) $(ALL_LIBFILES) | |
149 | $(XGETTEXT) -kmc -LTcl -o $@ $(SCRIPT_SH) $(ALL_LIBFILES) | |
150 | update-po:: $(PO_TEMPLATE) | |
151 | $(foreach p, $(ALL_POFILES), echo Updating $p ; msgmerge -U $p $(PO_TEMPLATE) ; ) | |
152 | $(ALL_MSGFILES): %.msg : %.po | |
87b63de4 | 153 | $(QUIET_MSGFMT0)$(MSGFMT) --statistics --tcl $< -l $(basename $(notdir $<)) -d $(dir $@) $(QUIET_MSGFMT1) |
38450480 | 154 | |
f522c9b5 | 155 | lib/tclIndex: $(ALL_LIBFILES) |
b9e7efb8 SP |
156 | $(QUIET_INDEX)if echo \ |
157 | $(foreach p,$(PRELOAD_FILES),source $p\;) \ | |
1f07c4e5 | 158 | auto_mkindex lib '*.tcl' \ |
b9e7efb8 SP |
159 | | $(TCL_PATH) $(QUIET_2DEVNULL); then : ok; \ |
160 | else \ | |
161 | echo 1>&2 " * $(TCL_PATH) failed; using unoptimized loading"; \ | |
162 | rm -f $@ ; \ | |
163 | echo '# Autogenerated by git-gui Makefile' >$@ && \ | |
164 | echo >>$@ && \ | |
165 | $(foreach p,$(PRELOAD_FILES) $(ALL_LIBFILES),echo '$(subst lib/,,$p)' >>$@ &&) \ | |
166 | echo >>$@ ; \ | |
167 | fi | |
f522c9b5 | 168 | |
bb616ddd | 169 | # These can record GITGUI_VERSION |
c6a5e403 | 170 | $(patsubst %.sh,%,$(SCRIPT_SH)): GIT-VERSION-FILE GIT-GUI-VARS |
b9e7efb8 | 171 | lib/tclIndex: GIT-GUI-VARS |
c6a5e403 SP |
172 | |
173 | TRACK_VARS = \ | |
174 | $(subst ','\'',SHELL_PATH='$(SHELL_PATH_SQ)') \ | |
b9e7efb8 | 175 | $(subst ','\'',TCL_PATH='$(TCL_PATH_SQ)') \ |
c6a5e403 | 176 | $(subst ','\'',TCLTK_PATH='$(TCLTK_PATH_SQ)') \ |
ea75ee35 | 177 | $(subst ','\'',gitexecdir='$(gitexecdir_SQ)') \ |
c63fe3b2 | 178 | $(subst ','\'',gg_libdir='$(libdir_SQ)') \ |
c6a5e403 SP |
179 | #end TRACK_VARS |
180 | ||
181 | GIT-GUI-VARS: .FORCE-GIT-GUI-VARS | |
182 | @VARS='$(TRACK_VARS)'; \ | |
183 | if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \ | |
184 | echo 1>&2 " * new locations or Tcl/Tk interpreter"; \ | |
185 | echo 1>$@ "$$VARS"; \ | |
186 | fi | |
bb616ddd | 187 | |
38450480 | 188 | all:: $(ALL_PROGRAMS) lib/tclIndex $(ALL_MSGFILES) |
b3678bac SP |
189 | |
190 | install: all | |
573fe6d7 SP |
191 | $(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(gitexecdir_SQ)' $(INSTALL_D1) |
192 | $(QUIET)$(INSTALL_X0)git-gui $(INSTALL_X1) '$(DESTDIR_SQ)$(gitexecdir_SQ)' | |
193 | $(QUIET)$(foreach p,$(GITGUI_BUILT_INS), $(INSTALL_L0)'$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' $(INSTALL_L1)'$(DESTDIR_SQ)$(gitexecdir_SQ)/git-gui' $(INSTALL_L2)'$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' $(INSTALL_L3) &&) true | |
194 | $(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(libdir_SQ)' $(INSTALL_D1) | |
195 | $(QUIET)$(INSTALL_R0)lib/tclIndex $(INSTALL_R1) '$(DESTDIR_SQ)$(libdir_SQ)' | |
196 | $(QUIET)$(foreach p,$(ALL_LIBFILES), $(INSTALL_R0)$p $(INSTALL_R1) '$(DESTDIR_SQ)$(libdir_SQ)' &&) true | |
38450480 CS |
197 | $(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(msgsdir_SQ)' $(INSTALL_D1) |
198 | $(QUIET)$(foreach p,$(ALL_MSGFILES), $(INSTALL_R0)$p $(INSTALL_R1) '$(DESTDIR_SQ)$(msgsdir_SQ)' &&) true | |
41bdcda3 | 199 | |
042f53c5 SP |
200 | uninstall: |
201 | $(QUIET)$(CLEAN_DST) '$(DESTDIR_SQ)$(gitexecdir_SQ)' | |
202 | $(QUIET)$(REMOVE_F0)'$(DESTDIR_SQ)$(gitexecdir_SQ)'/git-gui $(REMOVE_F1) | |
203 | $(QUIET)$(foreach p,$(GITGUI_BUILT_INS), $(REMOVE_F0)'$(DESTDIR_SQ)$(gitexecdir_SQ)'/$p $(REMOVE_F1) &&) true | |
204 | $(QUIET)$(CLEAN_DST) '$(DESTDIR_SQ)$(libdir_SQ)' | |
205 | $(QUIET)$(REMOVE_F0)'$(DESTDIR_SQ)$(libdir_SQ)'/tclIndex $(REMOVE_F1) | |
206 | $(QUIET)$(foreach p,$(ALL_LIBFILES), $(REMOVE_F0)'$(DESTDIR_SQ)$(libdir_SQ)'/$(notdir $p) $(REMOVE_F1) &&) true | |
4baba57f SP |
207 | $(QUIET)$(CLEAN_DST) '$(DESTDIR_SQ)$(msgsdir_SQ)' |
208 | $(QUIET)$(foreach p,$(ALL_MSGFILES), $(REMOVE_F0)'$(DESTDIR_SQ)$(msgsdir_SQ)'/$(notdir $p) $(REMOVE_F1) &&) true | |
042f53c5 | 209 | $(QUIET)$(REMOVE_D0)'$(DESTDIR_SQ)$(gitexecdir_SQ)' $(REMOVE_D1) |
4baba57f | 210 | $(QUIET)$(REMOVE_D0)'$(DESTDIR_SQ)$(msgsdir_SQ)' $(REMOVE_D1) |
042f53c5 SP |
211 | $(QUIET)$(REMOVE_D0)'$(DESTDIR_SQ)$(libdir_SQ)' $(REMOVE_D1) |
212 | $(QUIET)$(REMOVE_D0)`dirname '$(DESTDIR_SQ)$(libdir_SQ)'` $(REMOVE_D1) | |
213 | ||
bb616ddd | 214 | dist-version: |
5d643cd3 SP |
215 | @mkdir -p $(TARDIR) |
216 | @echo $(GITGUI_VERSION) > $(TARDIR)/version | |
217 | ||
41bdcda3 | 218 | clean:: |
38450480 | 219 | rm -f $(ALL_PROGRAMS) lib/tclIndex po/*.msg |
f522c9b5 | 220 | rm -f GIT-VERSION-FILE GIT-GUI-VARS |
f1cee4e6 | 221 | |
042f53c5 | 222 | .PHONY: all install uninstall dist-version clean |
f1cee4e6 | 223 | .PHONY: .FORCE-GIT-VERSION-FILE |
c6a5e403 | 224 | .PHONY: .FORCE-GIT-GUI-VARS |