Makefileon commit gitk: New way of constructing menus that allows for Alt+letter accelerators (f2d0bbb)
   1# The default target of this Makefile is...
   2all::
   3
   4prefix ?= $(HOME)
   5bindir ?= $(prefix)/bin
   6sharedir ?= $(prefix)/share
   7gitk_libdir   ?= $(sharedir)/gitk/lib
   8msgsdir    ?= $(gitk_libdir)/msgs
   9msgsdir_SQ  = $(subst ','\'',$(msgsdir))
  10
  11TCL_PATH ?= tclsh
  12TCLTK_PATH ?= wish
  13INSTALL ?= install
  14RM ?= rm -f
  15
  16DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
  17bindir_SQ = $(subst ','\'',$(bindir))
  18TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH))
  19
  20## po-file creation rules
  21XGETTEXT   ?= xgettext
  22ifdef NO_MSGFMT
  23        MSGFMT ?= $(TCL_PATH) po/po2msg.sh
  24else
  25        MSGFMT ?= msgfmt
  26        ifneq ($(shell $(MSGFMT) --tcl -l C -d . /dev/null 2>/dev/null; echo $$?),0)
  27                MSGFMT := $(TCL_PATH) po/po2msg.sh
  28        endif
  29endif
  30
  31PO_TEMPLATE = po/gitk.pot
  32ALL_POFILES = $(wildcard po/*.po)
  33ALL_MSGFILES = $(subst .po,.msg,$(ALL_POFILES))
  34
  35ifndef V
  36        QUIET          = @
  37        QUIET_GEN      = $(QUIET)echo '   ' GEN $@ &&
  38endif
  39
  40all:: gitk-wish $(ALL_MSGFILES)
  41
  42install:: all
  43        $(INSTALL) -m 755 gitk-wish '$(DESTDIR_SQ)$(bindir_SQ)'/gitk
  44        $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(msgsdir_SQ)'
  45        $(foreach p,$(ALL_MSGFILES), $(INSTALL) -m 644 $p '$(DESTDIR_SQ)$(msgsdir_SQ)' &&) true
  46
  47uninstall::
  48        $(foreach p,$(ALL_MSGFILES), $(RM) '$(DESTDIR_SQ)$(msgsdir_SQ)'/$(notdir $p) &&) true
  49        $(RM) '$(DESTDIR_SQ)$(bindir_SQ)'/gitk
  50
  51clean::
  52        $(RM) gitk-wish po/*.msg
  53
  54gitk-wish: gitk
  55        $(QUIET_GEN)$(RM) $@ $@+ && \
  56        sed -e '1,3s|^exec .* "$$0"|exec $(subst |,'\|',$(TCLTK_PATH_SQ)) "$$0"|' <gitk >$@+ && \
  57        chmod +x $@+ && \
  58        mv -f $@+ $@
  59
  60$(PO_TEMPLATE): gitk
  61        $(XGETTEXT) -kmc -LTcl -o $@ gitk
  62update-po:: $(PO_TEMPLATE)
  63        $(foreach p, $(ALL_POFILES), echo Updating $p ; msgmerge -U $p $(PO_TEMPLATE) ; )
  64$(ALL_MSGFILES): %.msg : %.po
  65        @echo Generating catalog $@
  66        $(MSGFMT) --statistics --tcl $< -l $(basename $(notdir $<)) -d $(dir $@)
  67