Commit | Line | Data |
---|---|---|
b4d2b04c JH |
1 | all:: |
2 | ||
eec10252 JH |
3 | # Define V=1 to have a more verbose compile. |
4 | # | |
5 | ||
b4d2b04c JH |
6 | GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE |
7 | @$(SHELL_PATH) ./GIT-VERSION-GEN | |
8 | -include GIT-VERSION-FILE | |
9 | ||
3ed02de2 | 10 | SCRIPT_SH = git-gui.sh |
b4d2b04c | 11 | GITGUI_BUILT_INS = git-citool |
3ed02de2 | 12 | ALL_PROGRAMS = $(GITGUI_BUILT_INS) $(patsubst %.sh,%,$(SCRIPT_SH)) |
5f5dbd71 | 13 | ALL_LIBFILES = $(wildcard lib/*.tcl) |
e986e26a | 14 | PRELOAD_FILES = lib/class.tcl |
b4d2b04c JH |
15 | |
16 | ifndef SHELL_PATH | |
17 | SHELL_PATH = /bin/sh | |
18 | endif | |
19 | ||
67c75759 JH |
20 | ifndef gitexecdir |
21 | gitexecdir := $(shell git --exec-path) | |
22 | endif | |
23 | ||
5f5dbd71 SP |
24 | ifndef sharedir |
25 | sharedir := $(dir $(gitexecdir))/share | |
26 | endif | |
27 | ||
67c75759 JH |
28 | ifndef INSTALL |
29 | INSTALL = install | |
30 | endif | |
b4d2b04c | 31 | |
eec10252 JH |
32 | ifndef V |
33 | QUIET_GEN = @echo ' ' GEN $@; | |
34 | QUIET_BUILT_IN = @echo ' ' BUILTIN $@; | |
5f5dbd71 | 35 | QUIET_INDEX = @echo ' ' INDEX $(dir $@); |
e986e26a | 36 | QUIET_2DEVNULL = 2>/dev/null |
eec10252 JH |
37 | endif |
38 | ||
5f5dbd71 | 39 | TCL_PATH ?= tclsh |
c182ec90 JH |
40 | TCLTK_PATH ?= wish |
41 | ||
27ebd6e0 JH |
42 | ifeq ($(findstring $(MAKEFLAGS),s),s) |
43 | QUIET_GEN = | |
44 | QUIET_BUILT_IN = | |
45 | endif | |
46 | ||
b4d2b04c JH |
47 | DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) |
48 | gitexecdir_SQ = $(subst ','\'',$(gitexecdir)) | |
b4d2b04c | 49 | SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) |
e986e26a | 50 | TCL_PATH_SQ = $(subst ','\'',$(TCL_PATH)) |
c182ec90 | 51 | TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH)) |
b4d2b04c | 52 | |
5f5dbd71 SP |
53 | libdir ?= $(sharedir)/git-gui/lib |
54 | libdir_SQ = $(subst ','\'',$(libdir)) | |
55 | ||
3ed02de2 | 56 | $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh |
eec10252 | 57 | $(QUIET_GEN)rm -f $@ $@+ && \ |
3ed02de2 | 58 | sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ |
c182ec90 | 59 | -e 's|^exec wish "$$0"|exec $(subst |,'\|',$(TCLTK_PATH_SQ)) "$$0"|' \ |
67c75759 | 60 | -e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \ |
5f5dbd71 | 61 | -e 's|@@GITGUI_LIBDIR@@|$(libdir_SQ)|' \ |
eec10252 | 62 | $@.sh >$@+ && \ |
eec10252 | 63 | chmod +x $@+ && \ |
b4d2b04c JH |
64 | mv $@+ $@ |
65 | ||
66 | $(GITGUI_BUILT_INS): git-gui | |
eec10252 | 67 | $(QUIET_BUILT_IN)rm -f $@ && ln git-gui $@ |
b4d2b04c | 68 | |
5f5dbd71 | 69 | lib/tclIndex: $(ALL_LIBFILES) |
e986e26a JH |
70 | $(QUIET_INDEX)if echo \ |
71 | $(foreach p,$(PRELOAD_FILES),source $p\;) \ | |
2b93bfac | 72 | auto_mkindex lib '*.tcl' \ |
e986e26a JH |
73 | | $(TCL_PATH) $(QUIET_2DEVNULL); then : ok; \ |
74 | else \ | |
75 | echo 1>&2 " * $(TCL_PATH) failed; using unoptimized loading"; \ | |
76 | rm -f $@ ; \ | |
77 | echo '# Autogenerated by git-gui Makefile' >$@ && \ | |
78 | echo >>$@ && \ | |
79 | $(foreach p,$(PRELOAD_FILES) $(ALL_LIBFILES),echo '$(subst lib/,,$p)' >>$@ &&) \ | |
80 | echo >>$@ ; \ | |
81 | fi | |
5f5dbd71 | 82 | |
3ed02de2 | 83 | # These can record GITGUI_VERSION |
5f5dbd71 | 84 | $(patsubst %.sh,%,$(SCRIPT_SH)): GIT-VERSION-FILE GIT-GUI-VARS |
e986e26a | 85 | lib/tclIndex: GIT-GUI-VARS |
5f5dbd71 SP |
86 | |
87 | TRACK_VARS = \ | |
88 | $(subst ','\'',SHELL_PATH='$(SHELL_PATH_SQ)') \ | |
e986e26a | 89 | $(subst ','\'',TCL_PATH='$(TCL_PATH_SQ)') \ |
5f5dbd71 SP |
90 | $(subst ','\'',TCLTK_PATH='$(TCLTK_PATH_SQ)') \ |
91 | $(subst ','\'',libdir='$(libdir_SQ)') \ | |
92 | #end TRACK_VARS | |
93 | ||
94 | GIT-GUI-VARS: .FORCE-GIT-GUI-VARS | |
95 | @VARS='$(TRACK_VARS)'; \ | |
96 | if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \ | |
97 | echo 1>&2 " * new locations or Tcl/Tk interpreter"; \ | |
98 | echo 1>$@ "$$VARS"; \ | |
99 | fi | |
3ed02de2 | 100 | |
5f5dbd71 | 101 | all:: $(ALL_PROGRAMS) lib/tclIndex |
b4d2b04c JH |
102 | |
103 | install: all | |
104 | $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(gitexecdir_SQ)' | |
105 | $(INSTALL) git-gui '$(DESTDIR_SQ)$(gitexecdir_SQ)' | |
106 | $(foreach p,$(GITGUI_BUILT_INS), rm -f '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' && ln '$(DESTDIR_SQ)$(gitexecdir_SQ)/git-gui' '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' ;) | |
5f5dbd71 SP |
107 | $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(libdir_SQ)' |
108 | $(INSTALL) -m644 lib/tclIndex '$(DESTDIR_SQ)$(libdir_SQ)' | |
109 | $(foreach p,$(ALL_LIBFILES), $(INSTALL) -m644 $p '$(DESTDIR_SQ)$(libdir_SQ)' ;) | |
b4d2b04c | 110 | |
3ed02de2 | 111 | dist-version: |
67c75759 JH |
112 | @mkdir -p $(TARDIR) |
113 | @echo $(GITGUI_VERSION) > $(TARDIR)/version | |
114 | ||
b4d2b04c | 115 | clean:: |
5f5dbd71 SP |
116 | rm -f $(ALL_PROGRAMS) lib/tclIndex |
117 | rm -f GIT-VERSION-FILE GIT-GUI-VARS | |
b4d2b04c | 118 | |
67c75759 | 119 | .PHONY: all install dist-version clean |
b4d2b04c | 120 | .PHONY: .FORCE-GIT-VERSION-FILE |
5f5dbd71 | 121 | .PHONY: .FORCE-GIT-GUI-VARS |