+# The default target of this Makefile is...
+all::
+
+-include ../../config.mak.autogen
+-include ../../config.mak
+
prefix ?= /usr/local
+gitexecdir ?= $(prefix)/libexec/git-core
mandir ?= $(prefix)/share/man
-gitdir ?= $(shell git --exec-path)
+man1dir ?= $(mandir)/man1
+htmldir ?= $(prefix)/share/doc/git-doc
-gitver ?= $(word 3,$(shell git --version))
+../../GIT-VERSION-FILE: FORCE
+ $(MAKE) -C ../../ GIT-VERSION-FILE
+
+-include ../../GIT-VERSION-FILE
# this should be set to a 'standard' bsd-type install program
-INSTALL ?= install
-INSTALL_DATA = $(INSTALL) -c -m 0644
-INSTALL_EXE = $(INSTALL) -c -m 0755
-INSTALL_DIR = $(INSTALL) -c -d -m 0755
+INSTALL ?= install
+RM ?= rm -f
+
+ASCIIDOC = asciidoc
+XMLTO = xmlto
+
+ifndef SHELL_PATH
+ SHELL_PATH = /bin/sh
+endif
+SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
+
+ASCIIDOC_CONF = ../../Documentation/asciidoc.conf
+MANPAGE_XSL = ../../Documentation/manpage-normal.xsl
+
+GIT_SUBTREE_SH := git-subtree.sh
+GIT_SUBTREE := git-subtree
-default:
- @echo "git-subtree doesn't need to be built."
- @echo "Just copy it somewhere on your PATH, like /usr/local/bin."
- @echo
- @echo "Try: make doc"
- @echo " or: make test"
- @false
+GIT_SUBTREE_DOC := git-subtree.1
+GIT_SUBTREE_XML := git-subtree.xml
+GIT_SUBTREE_TXT := git-subtree.txt
+GIT_SUBTREE_HTML := git-subtree.html
+GIT_SUBTREE_TEST := ../../git-subtree
-install: install-exe install-doc
+all:: $(GIT_SUBTREE)
-install-exe: git-subtree.sh
- $(INSTALL_DIR) $(DESTDIR)/$(gitdir)
- $(INSTALL_EXE) $< $(DESTDIR)/$(gitdir)/git-subtree
+$(GIT_SUBTREE): $(GIT_SUBTREE_SH)
+ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' $< >$@
+ chmod +x $@
-install-doc: git-subtree.1
- $(INSTALL_DIR) $(DESTDIR)/$(mandir)/man1/
- $(INSTALL_DATA) $< $(DESTDIR)/$(mandir)/man1/
+doc: $(GIT_SUBTREE_DOC) $(GIT_SUBTREE_HTML)
-doc: git-subtree.1
+install: $(GIT_SUBTREE)
+ $(INSTALL) -d -m 755 $(DESTDIR)$(gitexecdir)
+ $(INSTALL) -m 755 $(GIT_SUBTREE) $(DESTDIR)$(gitexecdir)
-%.1: %.xml
- xmlto -m manpage-normal.xsl man $^
+install-doc: install-man install-html
-%.xml: %.txt
- asciidoc -b docbook -d manpage -f asciidoc.conf \
- -agit_version=$(gitver) $^
-
-test:
- ./test.sh
+install-man: $(GIT_SUBTREE_DOC)
+ $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)
+ $(INSTALL) -m 644 $^ $(DESTDIR)$(man1dir)
+
+install-html: $(GIT_SUBTREE_HTML)
+ $(INSTALL) -d -m 755 $(DESTDIR)$(htmldir)
+ $(INSTALL) -m 644 $^ $(DESTDIR)$(htmldir)
+
+$(GIT_SUBTREE_DOC): $(GIT_SUBTREE_XML)
+ $(XMLTO) -m $(MANPAGE_XSL) man $^
+
+$(GIT_SUBTREE_XML): $(GIT_SUBTREE_TXT)
+ $(ASCIIDOC) -b docbook -d manpage -f $(ASCIIDOC_CONF) \
+ -agit_version=$(GIT_VERSION) $^
+
+$(GIT_SUBTREE_HTML): $(GIT_SUBTREE_TXT)
+ $(ASCIIDOC) -b xhtml11 -d manpage -f $(ASCIIDOC_CONF) \
+ -agit_version=$(GIT_VERSION) $^
+
+$(GIT_SUBTREE_TEST): $(GIT_SUBTREE)
+ cp $< $@
+
+test: $(GIT_SUBTREE_TEST)
+ $(MAKE) -C t/ test
clean:
- rm -f *~ *.xml *.html *.1
- rm -rf subproj mainline
+ $(RM) $(GIT_SUBTREE)
+ $(RM) *.xml *.html *.1
+
+.PHONY: FORCE