blob: edb7585432b00c40053f9634055c069d1d1f4dfb (
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
|
#!/bin/sh -e
die() {
printf '%s: %s\n' "${0##*/}" "$*" >&2
exit 1
}
out() { printf '%s\n' "$@" ;}
usage() {
out "usage: $0 [options]" \
"Options:" \
" --prefix=dir Set prefix directory" \
" --bindir=dir Set directory where executables will be installed" \
" --manprefix=dir Set directory where manual pages will be installed" \
" --disable-netcat Don't build netcat" \
" --with-fts=option One of glibc, musl-fts, none, auto (default: auto)" \
" --with-system-zlib Use system zlib"
exit 1
}
prefix=/usr/local
# We don't want expansion
# shellcheck disable=2016
{
bindir='$(PREFIX)/bin'
manprefix='${PREFIX}/share/man'
}
fts=auto
netcat=1
host=
for arg; do
case $arg in
--help) usage ;;
--prefix=*) prefix=${arg#*=} ;;
--bindir=*) bindir=${arg#*=} ;;
--manprefix=*) manprefix=${arg#*=} ;;
--with-fts=*) fts=${arg#*=} ;;
--with-system-zlib) zlib=1 ;;
--disable-netcat) netcat=0 ;;
-*) die "Unknown flag: '$arg'" ;;
*=*) export "$arg";;
*) die "Unknown option: '$arg'"
esac
done
trap 'rm -f config.mk' EXIT
trap 'rm -f config.mk; exit 1' INT
: ${CC:=cc}
printf 'checking system type... '
[ "$host" ] || host=$($CC -dumpmachine 2>/dev/null) || die "Could not determine host"
out "$host"
case $host in
*linux*) ;;
*) die "Unsupported system: $host"
esac
cat <<EOF >config.mk
PREFIX = $prefix
BINDIR = $bindir
MANPREFIX = $manprefix
AR = ${AR:-ar}
CC = ${CC:-cc}
RANLIB = ${RANLIB:-ranlib}
RM = rm -f
YACC = ${YACC:-yacc}
EOF
[ "$netcat" = 1 ] && {
printf 'checking for libtls... '
tlslib=$(pkgconf --static --libs libtls) || die "No tls library found"
out "$tlslib"
out "TLSLIB = $tlslib" "BIN += nc" >>config.mk
}
printf 'checking for zlib... '
if [ "$zlib" = 1 ]; then
zlib=$(pkgconf --static --libs zlib)
out "$zlib"
out "ZLIB = $zlib" >> config.mk
else
zlib=lib/libz/libz.a
out "in source"
out "ZLIB = $zlib" "MANDOCLIBS += $zlib" "GREPLIBS += $zlib" >>config.mk
fi
printf 'checking for fts... '
if [ "$fts" = auto ]; then
if out "#include <fts.h>" | $CC -E - >/dev/null 2>&1; then
fts=glibc
pkgconf --exists musl-fts && fts=musl-fts
else
fts=none
fi
fi
out "$fts"
case $fts in
glibc) out "CFLAGS += -DHAVE_FTS" ;;
musl-fts) out "CFLAGS += -DHAVE_FTS" "LIBFTS = -lfts" ;;
none) out "LIBOBJ += lib/libc/gen/fts.o"
esac >>config.mk
printf "Checking if less supports '-T'... "
if echo | less -T test >/dev/null 2>&1; then
out yes
out "CFLAGS += -DHAVE_LESS_T" >>config.mk
else
out no
fi
out "written config.mk" "Run 'make' to compile otools"
trap - EXIT INT
|