diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/configure b/configure new file mode 100755 index 0000000..86a4e0b --- /dev/null +++ b/configure @@ -0,0 +1,138 @@ +#!/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" \ + " --with-netcat=opt Whether to build netcat [yes,no,auto](default: auto)" \ + " --with-less-t=opt Whether to build mandoc with 'less -T' tagfile support" \ + " [yes,no,auto](default: auto)" \ + " --with-fts=opt 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=auto +lesst=auto +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 ;; + --with-less-t) lesst=yes ;; + --without-less-t) lesst=no ;; + --with-less-t=*) lesst=${arg#*=} ;; + --with-netcat) netcat=yes ;; + --without-netcat) netcat=no ;; + --with-netcat=*) netcat=${arg#*=} ;; + -*) 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}" "${PKG_CONFIG:=pkg-config}" + +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 + +case $netcat in + auto|yes) + printf 'checking for libtls... ' + if tlslib=$("$PKG_CONFIG" --static --libs libtls 2>/dev/null); then + out "$tlslib" + out "TLSLIB = $tlslib" "BIN += nc" >>config.mk + out "MAN += usr.bin/nc/nc.1" >>config.mk + else + out "none" + [ "$netcat" = yes ] && die "No tls library found" + fi +esac + +printf 'checking for zlib... ' +if [ "$zlib" = 1 ]; then + zlib=$($PKG_CONFIG --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 + $PKG_CONFIG --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 + +case $lesst in + auto|yes) + 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 + [ "$lesst" = yes ] && die "less doesn't support '-T' flag" + fi +esac + +out "written config.mk" "Run 'make' to compile otools" +trap - EXIT INT |