aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 31ba0b8da850f34331274777191bb8c35febb0a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File: Makefile for coupons
# Location: coupons source package
# Author: bgstack15
# Startdate: 2022-09-09
# Title: Makefile for coupons source package
# Purpose: To use traditional Unix make utility
# History:
# Usage:
# Reference:
#    bgscripts Makefile
# Improve:
# Document:
# Dependencies:
#    build-devuan: txt2man

APPNAME    = coupons
APPVERSION = 0.0.1
SRCDIR     = $(CURDIR)
prefix     = /usr
BINDIR     = $(DESTDIR)$(prefix)/bin
LIBEXECDIR = $(DESTDIR)$(prefix)/libexec
# for debian use /var/cache/apache2
CACHEDIR   = $(DESTDIR)/var/cache/httpd
# for debian use /etc/apache2/sites-available
APACHEDIR  = $(DESTDIR)/etc/httpd/conf.d

# variables for deplist
DEPTYPE = dep
SEPARATOR = ,

awkbin     :=$(shell which awk)
chmodbin   :=$(shell which chmod)
cpbin      :=$(shell which cp)
echobin    :=$(shell which echo)
falsebin   :=$(shell which false)
findbin    :=$(shell which find)
grepbin    :=$(shell which grep)
gzipbin    :=$(shell which gzip)
installbin :=$(shell which install)
rmbin      :=$(shell which rm)
rmdirbin   :=$(shell which rmdir)
sedbin     :=$(shell which sed)
sortbin    :=$(shell which sort)
truebin    :=$(shell which true)
txt2manwrapper :=usr/bin/txt2man-wrapper
uniqbin    :=$(shell which uniq)
xargsbin   :=$(shell which xargs)

with_man ?= YES
with_httpd ?= YES

all: build_man

ifeq ($(with_man),YES)
install: build_man install_files
else
install: install_files
endif

.PHONY: clean install install_files build_man uninstall list deplist deplist_opts

list:
	@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | ${awkbin} -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | ${sortbin} | ${grepbin} -E -v -e '^[^[:alnum:]]' -e '^$@$$'

deplist:
	@# deplist 2020-04-18 input must be comma separated
	@# DEPTYPE( dep , rec , sug ) for depends, recommends, or suggests
	@if test -z "${DISTRO}" ; then ${echobin} "Please run \`make deplist\` with DISTRO= one of: `make deplist_opts 2>&1 1>/dev/null | ${xargsbin}`. Aborted." 1>&2 ; exit 1 ; fi
	@if ! ${echobin} "${DEPTYPE}" | grep -qE "^(dep|rec|sug)$$" ; then ${echobin} "Please run \`make deplist\` with DEPTYPE= one of: dep, rec, sug. Undefined will use \`dep\`. Aborted." 1>&2 ; exit 1; fi
	@${grepbin} -h --exclude-dir='doc' -riIE "\<${DEPTYPE}-" ${SRCDIR} | ${awkbin} -v "domain=${DISTRO}" -v "deptype=${DEPTYPE}" 'tolower($$2) ~ deptype"-"domain {$$1="";$$2="";print}' | tr ',' '\n' | ${sortbin} | ${uniqbin} | ${sedbin} -r -e 's/^\s*//' -e "s/\s*\$$/${SEPARATOR}/" | ${xargsbin}

deplist_opts:
	@# deplist_opts 2020-04-18 find all available dependency domains
	@${grepbin} -h -o -riIE '\<(dep|rec|sug)-[^\ :]+:' ${SRCDIR} | ${sedbin} -r -e 's/(dep|rec|sug)-//;' -e 's/:$$//;' | ${sortbin} | ${uniqbin} 1>&2

install_files: 
	@ls usr/share/man/man*/*gz 1>/dev/null 2>&1 && echo "Including man pages." || :
	@${echobin} Installing files to ${DESTDIR}
	${installbin} -m 0755 -d ${LIBEXECDIR}/${APPNAME} \
		${LIBEXECDIR}/${APPNAME}/static/images \
		${LIBEXECDIR}/${APPNAME}/templates \
		${CACHEDIR}/${APPNAME} ${BINDIR}
	${installbin} -m 0755 -t ${LIBEXECDIR}/${APPNAME} coupons.py coupons_web.py
	${installbin} -m 0644 -t ${LIBEXECDIR}/${APPNAME}/static static/*.*
	${installbin} -m 0644 -t ${LIBEXECDIR}/${APPNAME}/static/images static/images/*
	${installbin} -m 0644 -t ${LIBEXECDIR}/${APPNAME}/templates templates/*
ifeq ($(with_httpd),YES)
	${installbin} -m 0755 -d ${APACHEDIR}
	${installbin} -m 0644 -t ${APACHEDIR} extra/wsgi-coupons.conf
	@# substitute variables in the apache config file
	${sedbin} -i -r -e "/XDG_CACHE_HOME/{s@(XDG_CACHE_HOME )[^ ]+@\1${CACHEDIR}@}" -e "/WSGIScriptAlias|\<Directory/{s@\/usr\/libexec\/coupons@${LIBEXECDIR}/${APPNAME}@};" ${APACHEDIR}/wsgi-coupons.conf
endif

MAN_TXT:=$(wildcard usr/share/man/man*/*.txt)
MAN_GZ:= $(subst .txt,.gz,$(MAN_TXT))

build_man: $(MAN_GZ)

$(MAN_GZ): %.gz: %.txt
	${txt2manwrapper} - < $< | ${gzipbin} > $@

uninstall:
	@${echobin} SRCDIR=${SRCDIR}
	# remove all installed files
	${rmbin} -rf ${LIBEXECDIR}/${APPNAME} \
		${CACHEDIR}/${APPNAME} \
		${APACHEDIR}/wsgi-coupons.conf

clean:
	-@#${echobin} "target $@ not implemented yet! Gotta say unh." && ${falsebin}
	-${rmbin} -f usr/share/man/man*/*.gz || :
bgstack15