aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile198
1 files changed, 53 insertions, 145 deletions
diff --git a/Makefile b/Makefile
index 668b50d..e8c5636 100644
--- a/Makefile
+++ b/Makefile
@@ -1,162 +1,70 @@
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved. This file is offered as-is,
-# without any warranty.
+.POSIX:
+CONFIGFILE = config.mk
+include $(CONFIGFILE)
-# The package path prefix, if you want to install to another root, set DESTDIR to that root
-PREFIX = /usr
-# The command path excluding prefix
-BIN = /bin
-# The resource path excluding prefix
-DATA = /share
-# The documenation path excluding prefix and /share
-DOC = /doc
-# The command path including prefix
-BINDIR = $(PREFIX)$(BIN)
-# The resource path including prefix
-DATADIR = $(PREFIX)$(DATA)
-# The documentation path including prefix and /share
-DOCDIR = $(DATADIR)$(DOC)
-# 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 = nightshift
-# The name of the package as it should be installed
-PKGNAME = nightshift
+PYFILES =\
+ __main__.py\
+ interface.py
-# Python source files
-PYFILES = __main__.py interface.py
+EXAMPLES =\
+ examples/x-window-focus
-# Configuration script example files
-EXAMPLES = x-window-focus
+all: nightshift nightshift.bash nightshift.zsh nightshift.fish
-# Build rules
+nightshift: nightshift.zip
+ printf '#!%s\n' '$(SHEBANG)' | cat - nightshift.zip > $@
+ chmod -- a+x $@
-.PHONY: default
-default: command shell
+nightshift.zip: $(PYFILES)
+ zip $@ $(PYFILES)
-.PHONY: all
-all: command shell
+nightshift.bash: completion
+ auto-auto-complete bash --output $@ --source completion
-.PHONY: command
-command: bin/nightshift
+nightshift.zsh: completion
+ auto-auto-complete zsh --output $@ --source completion
-# Build rules for Python source files
+nightshift.fish: completion
+ auto-auto-complete fish --output $@ --source completion
-bin/nightshift: obj/nightshift.zip
- mkdir -p bin
- echo '#!$(SHEBANG)' > $@
- cat $< >> $@
- chmod a+x $@
+install:
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/bin"
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/share/licenses"
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/share/doc/nightshift/examples"
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/share/bash-completion/completions"
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/share/zsh/site-functions"
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/share/fish/completions"
+ test ! -d "$(DESTDIR)$(PREFIX)/share/licenses/nightshift"
+ test ! -d "$(DESTDIR)$(PREFIX)/share/bash-completion/completions/nightshift"
+ test ! -d "$(DESTDIR)$(PREFIX)/share/zsh/site-functions/_nightshift"
+ test ! -d "$(DESTDIR)$(PREFIX)/share/fish/completions/nightshift.fish"
+ cp -- nightshift "$(DESTDIR)$(PREFIX)/bin/"
+ cp -- LICENSE "$(DESTDIR)$(PREFIX)/share/licenses/nightshift"
+ cp -- $(EXAMPLES) "$(DESTDIR)$(PREFIX)/share/doc/nightshift/examples/"
+ cp -- nightshift.bash "$(DESTDIR)$(PREFIX)/share/bash-completion/completions/nightshift"
+ cp -- nightshift.zsh "$(DESTDIR)$(PREFIX)/share/zsh/site-functions/_nightshift"
+ cp -- nightshift.fish "$(DESTDIR)$(PREFIX)/share/fish/completions/nightshift.fish"
-obj/nightshift.zip: $(foreach F,$(PYFILES),src/$(F))
- @mkdir -p obj
- cd src && zip ../$@ $(foreach F,$(PYFILES),$(F))
-
-# Build rules for shell auto-completion
-
-.PHONY: shell
-shell: bash zsh fish
-
-.PHONY: bash
-bash: bin/nightshift.bash
-bin/nightshift.bash: src/completion
- @mkdir -p bin
- auto-auto-complete bash --output $@ --source $<
-
-.PHONY: zsh
-zsh: bin/nightshift.zsh
-bin/nightshift.zsh: src/completion
- @mkdir -p bin
- auto-auto-complete zsh --output $@ --source $<
-
-.PHONY: fish
-fish: bin/nightshift.fish
-bin/nightshift.fish: src/completion
- @mkdir -p bin
- auto-auto-complete fish --output $@ --source $<
-
-
-# Install rules
-
-.PHONY: install
-install: install-base install-examples install-shell
-
-.PHONY: install
-install-all: install-base install-examples install-shell
-
-# Install base
-
-.PHONY: install-base
-install-base: install-command install-license
-
-.PHONY: install-command
-install-command: bin/nightshift
- install -dm755 -- "$(DESTDIR)$(BINDIR)"
- install -m755 $< -- "$(DESTDIR)$(BINDIR)/$(COMMAND)"
-
-.PHONY: install-license
-install-license:
- install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
- install -m644 COPYING -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
-
-# Install documentation
-
-.PHONY: install-examples
-install-examples: $(foreach E,$(EXAMPLES),examples/$(E))
- install -dm755 -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples"
- install -m644 $^ -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples"
-
-# Install shell auto-completion
-
-.PHONY: install-shell
-install-shell: install-bash install-zsh install-fish
-
-.PHONY: install-bash
-install-bash: bin/nightshift.bash
- install -dm755 -- "$(DESTDIR)$(DATADIR)/bash-completion/completions"
- install -m644 $< -- "$(DESTDIR)$(DATADIR)/bash-completion/completions/$(COMMAND)"
-
-.PHONY: install-zsh
-install-zsh: bin/nightshift.zsh
- install -dm755 -- "$(DESTDIR)$(DATADIR)/zsh/site-functions"
- install -m644 $< -- "$(DESTDIR)$(DATADIR)/zsh/site-functions/_$(COMMAND)"
-
-.PHONY: install-fish
-install-fish: bin/nightshift.fish
- install -dm755 -- "$(DESTDIR)$(DATADIR)/fish/completions"
- install -m644 $< -- "$(DESTDIR)$(DATADIR)/fish/completions/$(COMMAND).fish"
-
-
-# Uninstall rules
-
-.PHONY: uninstall
uninstall:
- -rm -- "$(DESTDIR)$(BINDIR)/$(COMMAND)"
- -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING"
- -rmdir -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
- -rm -- $(foreach E,$(EXAMPLES),"$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples/$(E)")
- -rmdir -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples"
- -rmdir -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)"
- -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 rules
+ -rm -f -- "$(DESTDIR)$(PREFIX)/bin/nightshift"
+ -rm -f -- "$(DESTDIR)$(PREFIX)/share/licenses/nightshift"
+ -cd -- "$(DESTDIR)$(PREFIX)/share/doc/nightshift/" && rm -f -- $(EXAMPLES)
+ -rmdir -- "$(DESTDIR)$(PREFIX)/share/doc/nightshift/examples"
+ -rmdir -- "$(DESTDIR)$(PREFIX)/share/doc/nightshift"
+ -rm -f -- "$(DESTDIR)$(PREFIX)/share/fish/completions/nightshift.fish"
+ -rmdir -- "$(DESTDIR)$(PREFIX)/share/fish/completions"
+ -rmdir -- "$(DESTDIR)$(PREFIX)/share/fish"
+ -rm -f -- "$(DESTDIR)$(PREFIX)/share/zsh/site-functions/_nightshift"
+ -rmdir -- "$(DESTDIR)$(PREFIX)/share/zsh/site-functions"
+ -rmdir -- "$(DESTDIR)$(PREFIX)/share/zsh"
+ -rm -f -- "$(DESTDIR)$(PREFIX)/share/bash-completion/completions/nightshift"
+ -rmdir -- "$(DESTDIR)$(PREFIX)/share/bash-completion/completions"
+ -rmdir -- "$(DESTDIR)$(PREFIX)/share/bash-completion"
-.PHONY: all
clean:
- -rm -r bin obj
+ -rm -f -- nightshift nightshift.zip nightshift.bash nightshift.fish nightshift.zsh
+.PHONY: all install uninstall clean