aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile221
1 files changed, 190 insertions, 31 deletions
diff --git a/Makefile b/Makefile
index d974ec0..f4b1f9d 100644
--- a/Makefile
+++ b/Makefile
@@ -3,51 +3,210 @@
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
+# The package path prefix, if you want to install to another root, set DESTDIR to that root
PREFIX = /usr
-DATA = /share
+# The command path excluding prefix
BIN = /bin
-PKGNAME = auto-auto-complete
+# The resource path excluding prefix
+DATA = /share
+# The command path including prefix
+BINDIR = $(PREFIX)$(BIN)
+# The resource path including prefix
+DATADIR = $(PREFIX)$(DATA)
+# The generic documentation path including prefix
+DOCDIR = $(DATADIR)/doc
+# The info manual documentation path including prefix
+INFODIR = $(DATADIR)/info
+# The license base path including prefix
+LICENSEDIR = $(DATADIR)/licenses
+
+# Python 3 command to use in shebangs
SHEBANG = /usr$(BIN)/env python3
+# The name of the command as it should be installed
COMMAND = auto-auto-complete
-LICENSES = $(PREFIX)$(DATA)
+# The name of the package as it should be installed
+PKGNAME = auto-auto-complete
+
+# Build rules
-all: auto-auto-complete #doc
+.PHONY: default
+default: command # info # shell
-#doc: info
-#
-#info: auto-auto-complete.info.gz
-#
-#%.info.gz: info/%.texinfo
-# makeinfo "$<"
-# gzip -9 -f "$*.info"
+.PHONY: all
+all: command # doc # shell
-auto-auto-complete: auto-auto-complete.py
+
+# Build rules for the command
+
+.PHONY: command
+command: bin/auto-auto-complete
+
+bin/auto-auto-complete: src/auto-auto-complete.py
+ @mkdir -p bin
cp "$<" "$@"
sed -i 's:#!/usr/bin/env python3:#!$(SHEBANG):' "$@"
-install: auto-auto-complete #auto-auto-complete.info.gz
- install -dm755 "$(DESTDIR)$(PREFIX)$(BIN)"
- install -m755 auto-auto-complete "$(DESTDIR)$(PREFIX)$(BIN)/$(COMMAND)"
- install -dm755 "$(DESTDIR)$(LICENSES)/$(PKGNAME)"
- install -m644 COPYING LICENSE "$(DESTDIR)$(LICENSES)/$(PKGNAME)"
- install -dm755 "$(DESTDIR)$(PREFIX)$(DATA)/doc/$(PKGNAME)"
- install -m644 example "$(DESTDIR)$(PREFIX)$(DATA)/doc/$(PKGNAME)"
-# install -dm755 "$(DESTDIR)$(PREFIX)$(DATA)/info"
-# install -m644 auto-auto-complete.info.gz "$(DESTDIR)$(PREFIX)$(DATA)/info/$(PKGNAME).info.gz"
+
+# Build rules for documentation
+
+.PHONY: doc
+doc: info pdf dvi ps
+
+.PHONY: info
+info: bin/auto-auto-complete.info
+bin/%.info: info/%.texinfo info/fdl.texinfo
+ @mkdir -p bin
+ makeinfo $<
+ mv $*.pdf $@
+
+.PHONY: pdf
+pdf: bin/auto-auto-complete.pdf
+bin/%.pdf: info/%.texinfo info/fdl.texinfo
+ @mkdir -p obj bin
+ cd obj ; yes X | texi2pdf ../$<
+ mv obj/$*.pdf $@
+
+.PHONY: dvi
+dvi: bin/auto-auto-complete.dvi
+bin/%.dvi: info/%.texinfo info/fdl.texinfo
+ @mkdir -p obj bin
+ cd obj ; yes X | $(TEXI2DVI) ../$<
+ mv obj/$*.pdf $@
+
+.PHONY: ps
+ps: bin/auto-auto-complete.ps
+bin/%.ps: info/%.texinfo info/fdl.texinfo
+ @mkdir -p obj bin
+ cd obj ; yes X | texi2pdf --ps ../$<
+ mv obj/$*.pdf $@
+
+
+# Build rules for shell auto-completion
+
+.PHONY: shell
+shell: bash zsh fish
+
+.PHONY: bash
+bash: bin/auto-auto-complete.bash
+bin/auto-auto-complete.bash: src/completion bin/auto-auto-complete
+ @mkdir -p bin
+ bin/auto-auto-complete bash --output $@ --source $<
+
+.PHONY: zsh
+zsh: bin/auto-auto-complete.zsh
+bin/auto-auto-complete.zsh: src/completion bin/auto-auto-complete
+ @mkdir -p bin
+ bin/auto-auto-complete zsh --output $@ --source $<
+
+.PHONY: fish
+fish: bin/auto-auto-complete.fish
+bin/auto-auto-complete.fish: src/completion bin/auto-auto-complete
+ @mkdir -p bin
+ bin/auto-auto-complete fish --output $@ --source $<
+
+
+# Install rules
+
+.PHONY: install
+install: install-base install-examples # install-info # install-shell
+
+.PHONY: install
+install-all: install-base install-doc # install-shell
+
+# Install base rules
+
+.PHONY: install-base
+install-base: install-command install-license
+
+.PHONY: install-command-bin
+install-command: bin/auto-auto-complete
+ install -dm755 -- "$(DESTDIR)$(BINDIR)"
+ install -m755 $< -- "$(DESTDIR)$(BINDIR)/$(COMMAND)"
+
+.PHONY: install-license
+install-license:
+ install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ install -m644 COPYING LICENSE -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+
+# Install documentation
+
+.PHONY: install-doc
+install-doc: install-examples # install-info install-pdf install-ps install-dvi
+
+.PHONY: install-examples
+install-examples: doc/example
+ install -dm755 -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)"
+ install -m644 $^ -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/example"
+
+.PHONY: install-info
+install-info: bin/auto-auto-complete.info
+ install -dm755 -- "$(DESTDIR)$(INFODIR)"
+ install -m644 $< -- "$(DESTDIR)$(INFODIR)/$(PKGNAME).info"
+
+.PHONY: install-pdf
+install-pdf: bin/auto-auto-complete.pdf
+ install -dm755 -- "$(DESTDIR)$(DOCDIR)"
+ install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).pdf"
+
+.PHONY: install-ps
+install-ps: bin/auto-auto-complete.ps
+ install -dm755 -- "$(DESTDIR)$(DOCDIR)"
+ install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).ps"
+
+.PHONY: install-dvi
+install-dvi: bin/auto-auto-complete.dvi
+ install -dm755 -- "$(DESTDIR)$(DOCDIR)"
+ install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).dvi"
+
+# Install shell auto-completion
+
+.PHONY: install-shell
+install-shell: install-bash install-zsh install-fish
+
+.PHONY: install-bash
+install-bash: bin/auto-auto-complete.bash
+ install -dm755 -- "$(DESTDIR)$(DATADIR)/bash-completion/completions"
+ install -m644 $< -- "$(DESTDIR)$(DATADIR)/bash-completion/completions/$(COMMAND)"
+
+.PHONY: install-zsh
+install-zsh: bin/auto-auto-complete.zsh
+ install -dm755 -- "$(DESTDIR)$(DATADIR)/zsh/site-functions"
+ install -m644 $< -- "$(DESTDIR)$(DATADIR)/zsh/site-functions/_$(COMMAND)"
+
+.PHONY: install-fish
+install-fish: bin/auto-auto-complete.fish
+ install -dm755 -- "$(DESTDIR)$(DATADIR)/fish/completions"
+ install -m644 $< -- "$(DESTDIR)$(DATADIR)/fish/completions/$(COMMAND).fish"
+
+
+# Uninstall rules
uninstall:
- rm -- "$(DESTDIR)$(PREFIX)$(BIN)/$(COMMAND)"
- rm -- "$(DESTDIR)$(LICENSES)/$(PKGNAME)/COPYING"
- rm -- "$(DESTDIR)$(LICENSES)/$(PKGNAME)/LICENSE"
- rm -- "$(DESTDIR)$(PREFIX)$(DATA)/doc/$(PKGNAME)/example"
- rmdir -- "$(DESTDIR)$(PREFIX)$(DATA)/doc/$(PKGNAME)"
-# rmdir -- "$(DESTDIR)$(LICENSES)/$(PKGNAME)"
-# rm -- "$(DESTDIR)$(PREFIX)$(DATA)/info/$(PKGNAME).info.gz"
+ -rm -- "$(DESTDIR)$(BINDIR)/$(COMMAND)"
+ -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING"
+ -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"
+ -rmdir -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ -rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/example"
+ -rmdir -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)"
+ -rm -- "$(DESTDIR)$(INFODIR)/$(PKGNAME).info"
+ -rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).pdf"
+ -rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).ps"
+ -rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).dvi"
+ -rm -- "$(DESTDIR)$(DATADIR)/fish/completions/$(COMMAND).fish"
+ -rmdir -- "$(DESTDIR)$(DATADIR)/fish/completions"
+ -rmdir -- "$(DESTDIR)$(DATADIR)/fish"
+ -rm -- "$(DESTDIR)$(DATADIR)/zsh/site-functions/_$(COMMAND)"
+ -rmdir -- "$(DESTDIR)$(DATADIR)/zsh/site-functions"
+ -rmdir -- "$(DESTDIR)$(DATADIR)/zsh"
+ -rm -- "$(DESTDIR)$(DATADIR)/bash-completion/completions/$(COMMAND)"
+ -rmdir -- "$(DESTDIR)$(DATADIR)/bash-completion/completions"
+ -rmdir -- "$(DESTDIR)$(DATADIR)/bash-completion"
-clean:
- -rm -f auto-auto-complete #auto-auto-complete.info.gz
+# Clean rules
-.PHONY: all install uninstall clean
+.PHONY: clean
+clean:
+ -rm -fr bin obj