From fa8154fc214a922339f35d0121ae37426af23165 Mon Sep 17 00:00:00 2001 From: Jonas Kattendick Date: Sat, 25 Jan 2025 13:33:26 +0100 Subject: [PATCH] build(make): follow GNU install dir conventions --- Makefile | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 5da5863..dc82570 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,45 @@ -PREFIX := /usr/local +SHELL = /bin/sh -./agenda.1.gz: ./agenda.1 - gzip -fk ./agenda.1 +# See the following link regarding GNU Makefile conventions. +# https://www.gnu.org/software/make/manual/html_node/Makefile-Conventions.html + +# This seems stupid. Isn't install a coreutil anyways? +# INSTALL := install +# INSTALL_PROGRAM := $(INSTALL) +# INSTALL_DATA := ${INSTALL} -m 644 + +# Variables for installation directories. +# https://www.gnu.org/software/make/manual/html_node/Directory-Variables.html + +DESTDIR := + +prefix := /usr/local +exec_prefix := $(prefix) +bindir := $(exec_prefix)/bin +datarootdir := $(prefix)/share +datadir := $(datarootdir) +# libdir := $(prefix)/lib +mandir := $(datarootdir)/man +man1dir := $(mandir)/man1 + +.PHONY: all +all: ./agenda.1.gz .PHONY: install install: ./agenda.1.gz - install -m 755 -D ./agenda $(PREFIX)/bin/agenda - install -m 644 -D ./agenda.1.gz $(PREFIX)/share/man/man1/agenda.1.gz - install -m 644 -D ./completion.bash $(PREFIX)/share/bash-completion/completions/agenda + install -m 755 -D ./agenda $(DESTDIR)$(bindir)/agenda + install -m 644 -D ./agenda.1.gz $(DESTDIR)$(man1dir)/agenda.1.gz + install -m 644 -D ./completion.bash $(DESTDIR)$(datarootdir)/bash-completion/completions/agenda .PHONY: uninstall uninstall: - rm -f $(PREFIX)/bin/agenda - rm -f $(PREFIX)/share/man/man1/agenda.1.gz - rm -f $(PREFIX)/share/bash-completion/completions/agenda + rm -f $(DESTDIR)$(bindir)/agenda + rm -f $(DESTDIR)$(man1dir)/agenda.1.gz + rm -f $(DESTDIR)$(datarootdir)/bash-completion/completions/agenda .PHONY: clean clean: rm -f ./agenda.1.gz + +./agenda.1.gz: ./agenda.1 + gzip -fk ./agenda.1