1#!/bin/sh
2# Try and be like autotools configure, but without autotools
3
4# Ensure that we do not inherit these from env
5OS=
6BUILD=
7HOST=
8TARGET=
9RESTARTCMD=
10RCDIR=
11STATUSARG=
12
13for x do
14	opt=${x%%=*}
15	var=${x#*=}
16	case "$opt" in
17	--os|OS) OS=$var;;
18	--with-cc|CC) CC=$var;;
19	--debug) DEBUG=$var;;
20	--disable-debug) DEBUG=no;;
21	--enable-debug) DEBUG=yes;;
22	--prefix) PREFIX=$var;;
23	--sysconfdir) SYSCONFDIR=$var;;
24	--bindir|--sbindir) SBINDIR=$var;;
25	--libexecdir) LIBEXECDIR=$var;;
26	--statedir|--localstatedir) STATEDIR=$var;;
27	--dbdir) DBDIR=$var;;
28	--rundir) RUNDIR=$var;;
29	--mandir) MANDIR=$var;;
30	--with-ccopts|CFLAGS) CFLAGS=$var;;
31	CPPFLAGS) CPPFLAGS=$var;;
32	--build) BUILD=$var;;
33	--host) HOST=$var;;
34	--target) TARGET=$var;;
35	--libdir) LIBDIR=$var;;
36	--restartcmd) RESTARTCMD=$var;;
37	--rcdir) RCDIR=$var;;
38	--statusarg) STATUSARG=$var;;
39	--includedir) eval INCLUDEDIR="$INCLUDEDIR${INCLUDEDIR:+ }$var";;
40	--datadir|--infodir) ;; # ignore autotools
41	--disable-maintainer-mode|--disable-dependency-tracking) ;;
42	--help) echo "See the README file for available options"; exit 0;;
43	*) echo "$0: WARNING: unknown option $opt" >&2;;
44	esac
45done
46
47: ${SED:=sed}
48
49CONFIG_MK=config.mk
50
51if [ -z "$BUILD" ]; then
52	# autoconf target triplet: cpu-vendor-os
53	BUILD=$(uname -m)-unknown-$(uname -s | tr '[:upper:]' '[:lower:]')
54fi
55: ${HOST:=$BUILD}
56
57if [ -z "$OS" ]; then
58	echo "Deriving operating system from ... $HOST"
59	# Derive OS from cpu-vendor-[kernel-]os
60	CPU=${HOST%%-*}
61	REST=${HOST#*-}
62	if [ "$CPU" != "$REST" ]; then
63		VENDOR=${REST%%-*}
64		REST=${REST#*-}
65		if [ "$VENDOR" != "$REST" ]; then
66			# Use kernel if given, otherwise os
67			OS=${REST%%-*}
68		else
69			# 2 tupple
70			OS=$VENDOR
71			VENDOR=
72		fi
73	fi
74
75        # Work with cpu-kernel-os, ie Debian
76	case "$VENDOR" in
77	linux*|kfreebsd*) OS=$VENDOR; VENDOR= ;;
78	esac
79	# Special case
80	case "$OS" in
81	gnu*) OS=hurd;; # No HURD support as yet
82	esac
83fi
84
85echo "Configuring openresolv for ... $OS"
86rm -rf $CONFIG_MK
87echo "# $OS" >$CONFIG_MK
88
89case "$OS" in
90dragonfly*)
91	# This means /usr HAS to be mounted not via dhcpcd
92	: ${LIBEXECDIR:=${PREFIX:-/usr}/libexec/resolvconf}
93	;;
94linux*)
95	# cksum does't support -a and netpgp is rare
96	echo "CKSUM=		sha256sum --tag" >>$CONFIG_MK
97	echo "PGP=		gpg2" >>$CONFIG_MK
98	;;
99esac
100
101case "$OS" in
102dragonfly*|freebsd*)
103	# On FreeBSD, /etc/init.d/foo status returns 0 if foo is not enabled
104	# regardless of if it's not running.
105	# So we force onestatus to work around this silly bug.
106	if [ -z "$STATUSARG" ]; then
107		STATUSARG="onestatus"
108	fi
109	;;
110esac
111
112
113if [ -z "$LIBEXECDIR" ]; then
114	printf "Checking for directory /libexec ... "
115	if [ -d /libexec ]; then
116		echo "yes"
117		LIBEXECDIR=$PREFIX/libexec/resolvconf
118	else
119		echo "no"
120		LIBEXECDIR=$PREFIX/lib/resolvconf
121	fi
122fi
123if [ -z "$RUNDIR" ]; then
124	printf "Checking for directory /run ... "
125	if [ -d /run ]; then
126		echo "yes"
127		RUNDIR=/run
128	else
129		echo "no"
130		RUNDIR=/var/run
131	fi
132fi
133
134: ${SYSCONFDIR:=$PREFIX/etc}
135: ${SBINDIR:=$PREFIX/sbin}
136: ${LIBEXECDIR:=$PREFIX/libexec/resolvconf}
137: ${STATEDIR:=/var}
138: ${RUNDIR:=$STATEDIR/run}
139: ${MANDIR:=${PREFIX:-/usr}/share/man}
140
141eval SYSCONFDIR="$SYSCONFDIR"
142eval SBINDIR="$SBINDIR"
143eval LIBEXECDIR="$LIBEXECDIR"
144eval VARDIR="$RUNDIR/resolvconf"
145eval MANDIR="$MANDIR"
146
147for x in SYSCONFDIR SBINDIR LIBEXECDIR VARDIR MANDIR RESTARTCMD RCDIR STATUSARG
148do
149	eval v=\$$x
150	# Make files look nice for import
151	l=$((10 - ${#x}))
152	unset t
153	[ $l -gt 3 ] && t="	"
154	echo "$x=$t	$v" >>$CONFIG_MK
155done
156
157echo
158echo "   SYSCONFDIR =		$SYSCONFDIR"
159echo "   SBINDIR =		$SBINDIR"
160echo "   LIBEXECDIR =		$LIBEXECDIR"
161echo "   VARDIR =		$RUNDIR"
162echo "   MANDIR =		$MANDIR"
163echo
164echo "   RESTARTCMD =		$RESTARTCMD"
165echo "   RCDIR =		$RCDIR"
166echo "   STATUSARG =		$STATUSARG"
167echo
168