blob: 6268da75d909ac47b6c44ba414b4d8502554cad5 (
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
112
113
114
115
116
117
118
119
120
121
|
#!/bin/sh -e
version=Fossil
die() {
printf '%s: %s\n' "${0##*/}" "$*" >&2
exit 1
}
out() { printf '%s\n' "$@" ;}
_check() {
for arg; do
printf 'checking for %s... ' "$arg"
command -v "$arg" || { out no; die "'$arg' not found" ;}
done
}
_check_multi() {
c=$1; shift
printf 'checking for %s... ' "$c"
for arg; do command -v "$arg" && return 0; done
out no; die "no $c was found"
}
usage() {
out "usage: $0 [options]" \
"Options:" \
" --prefix=dir Set prefix directory" \
" --bindir=dir User executables [PREFIX/bin]" \
" --sysconfdir=dir System configuration directory [PREFIX/etc]" \
" --datarootdir=dir Data root directory [PREFIX/share]" \
" --mandir=dir Manual pages [DATAROOTDIR/man]" \
" --infodir=dir info documentation [DATAROOTDIR/info]" \
" --docdir=dir Documentation directory [DATAROOTDIR/doc/cpt]" \
" --with-docs=opt Whether to build the texinfo documentation [auto]" "" \
" MAKEINFO Name of the 'makeinfo' executable" \
" EMACS Name of the 'emacs' executable" "" \
"Use these variables to override the behaviour of '$0'."
exit 1
}
prefix=/usr/local
# We don't want expansion
# shellcheck disable=2016
{
sysconfdir='$(PREFIX)/etc'
bindir='$(PREFIX)/bin'
datarootdir='$(PREFIX)/share'
mandir='$(DATAROOTDIR)/man'
infodir='$(DATAROOTDIR)/info'
docdir='$(DATAROOTDIR)/doc/cpt'
}
docs=auto
for arg; do
case $arg in
-h|--help) usage ;;
--prefix=*) prefix=${arg#*=} ;;
--bindir=*) bindir=${arg#*=} ;;
--sysconfdir=*) sysconfdir=${arg#*=} ;;
--mandir=*) mandir=${arg#*=} ;;
--infodir=*) infodir=${arg#*=} ;;
--docdir=*) docdir=${arg#*=} ;;
--without-docs) docs=no ;;
--with-docs) docs=yes ;;
--with-docs=*) docs=${arg#*=} ;;
*-*) die "Unknown option: '$arg'" ;;
*=*) export "${arg:?}" ;;
*) die "Unknown argument: '$arg'"
esac
done
# If the prefix is /usr and sysconfdir is not modified, make it /etc
# shellcheck disable=2016
[ "$prefix" = /usr ] && [ "$sysconfdir" = '$(PREFIX)/etc' ] && sysconfdir=/etc
trap 'rm -f config.mk' EXIT
trap 'rm -f config.mk; exit 1' INT
: "${EMACS:=emacs}" "${MAKEINFO:=makeinfo}"
out "starting configuration..."
cat <<EOF > config.mk
PREFIX = $prefix
BINDIR = $bindir
SYSCONFDIR = $sysconfdir
DATAROOTDIR = $datarootdir
MANDIR = $mandir
INFODIR = $infodir
DOCDIR = $docdir
MAN1 = \$(MANDIR)/man1
VERSION = $version
EMACS = $EMACS
EOF
case $docs in
auto|yes)
printf 'checking for makeinfo... '
if makeinfo=$(command -v "$MAKEINFO"); then
out "$makeinfo"
docs=yes
out "MAKEINFO = $makeinfo" >>config.mk
else
out no
[ "$docs" = yes ] && die "'$MAKEINFO' not found"
docs=no
fi
esac
[ "$docs" = no ] && out "not building documentation"
out "DOCS = $docs" >>config.mk
out "checking runtime dependencies"
_check pax rsync sed awk grep b3sum
_check_multi "sha256 provider" sha256sum sha256 openssl
_check_multi "download utility" curl wget wget2 aria2c axel
trap - EXIT INT
out "written config.mk" "Run 'make' to build cpt"
|