Files
ttrpg-fortunes/Makefile
Malin Freeborn b0aea6b533 use local fortunes directory
This stops interference with package managers, who never respond kindly
to outside interference.
2025-04-14 15:35:33 +02:00

43 lines
1.5 KiB
Makefile

########## Variables ##########
fortune_directory = /usr/local/share/fortune
# This just equals 'ttrpg.dat', but if someone wants to split it into separate
# files, e.g. 'D20.dat' and 'WW.dat', the they would be included.
dat_files = $(wildcard *.dat)
# Each .dat file has a corresponding fortune file to be included. This
# apparently convoluted mess is just here to select fortune files, and not the
# Makefile and README.
fortune_files = $(patsubst %.dat, %, $(dat_files))
fortune_files += $(dat_files)
# `patsubst` = 'path substitution', so
# 'ttrpg' --> /usr/share/fortune/ttrpg
# Now `make` knows (at long last) what you want installed.
targets = $(patsubst %, $(fortune_directory)/%, $(fortune_files))
########## Rules ##########
.PHONY: install
install: $(targets)
# Ignore the `$(targets): ` section; the rule is about how to make
# /usr/share/fortune/[that] from [this].
# The next linen says you just install this (`$<`) from that (`$@`).
# We use `install` rather than the more familiar `cp`, because cause back in the
# days of Unix-yore, Xenox had a patent on the concept of a copy and
# Mathematicians had to do their own legal work as international law hadn't been
# established. Now I'd like to digress from my prepared remarks to discuss how
# I invented the terlet...
$(targets): $(fortune_directory)/%: % | $(fortune_directory)
install -pm644 $< $@
$(fortune_directory):
mkdir $@
uninstall:
$(RM) $(targets)
! test -d $(fortune_directory) || rmdir --ignore-fail-on-non-empty $(fortune_directory)