configure revision 282434
1219732Sume#!/bin/sh
2219732Sume# Try and be like autotools configure, but without autotools
3219732Sume
4219732Sume# Ensure that we do not inherit these from env
5219732SumeOS=
6219732SumeBUILD=
7219732SumeHOST=
8219732SumeTARGET=
9219732SumeRESTARTCMD=
10219732SumeRCDIR=
11219732Sume
12282434Sgjbfor x do
13219732Sume	opt=${x%%=*}
14219732Sume	var=${x#*=}
15219732Sume	case "$opt" in
16219732Sume	--os|OS) OS=$var;;
17219732Sume	--with-cc|CC) CC=$var;;
18219732Sume	--debug) DEBUG=$var;;
19219732Sume	--disable-debug) DEBUG=no;;
20219732Sume	--enable-debug) DEBUG=yes;;
21282434Sgjb	--prefix) PREFIX=$var;;
22219732Sume	--sysconfdir) SYSCONFDIR=$var;;
23219732Sume	--bindir|--sbindir) SBINDIR=$var;;
24219732Sume	--libexecdir) LIBEXECDIR=$var;;
25219732Sume	--statedir|--localstatedir) STATEDIR=$var;;
26219732Sume	--dbdir) DBDIR=$var;;
27219732Sume	--rundir) RUNDIR=$var;;
28219732Sume	--mandir) MANDIR=$var;;
29219732Sume	--with-ccopts|CFLAGS) CFLAGS=$var;;
30219732Sume	CPPFLAGS) CPPFLAGS=$var;;
31219732Sume	--build) BUILD=$var;;
32219732Sume	--host) HOST=$var;;
33219732Sume	--target) TARGET=$var;;
34219732Sume	--libdir) LIBDIR=$var;;
35219732Sume	--restartcmd) RESTARTCMD=$var;;
36219732Sume	--includedir) eval INCLUDEDIR="$INCLUDEDIR${INCLUDEDIR:+ }$var";;
37219732Sume	--datadir|--infodir) ;; # ignore autotools
38219732Sume	--disable-maintainer-mode|--disable-dependency-tracking) ;;
39219732Sume	--help) echo "See the README file for available options"; exit 0;;
40219732Sume	*) echo "$0: WARNING: unknown option $opt" >&2;;
41219732Sume	esac
42219732Sumedone
43219732Sume
44282434Sgjbif [ -z "$LIBEXECDIR" ]; then
45282434Sgjb	printf "Checking for directory /libexec ... "
46282434Sgjb	if [ -d /libexec ]; then
47282434Sgjb		echo "yes"
48282434Sgjb		LIBEXECDIR=$PREFIX/libexec/resolvconf
49282434Sgjb	else
50282434Sgjb		echo "no"
51282434Sgjb		LIBEXECDIR=$PREFIX/lib/resolvconf
52282434Sgjb	fi
53282434Sgjbfi
54282434Sgjbif [ -z "$RUNDIR" ]; then
55282434Sgjb	printf "Checking for directory /run ... "
56282434Sgjb	if [ -d /run ]; then
57282434Sgjb		echo "yes"
58282434Sgjb		RUNDIR=/run
59282434Sgjb	else
60282434Sgjb		echo "no"
61282434Sgjb		RUNDIR=/var/run
62282434Sgjb	fi
63282434Sgjbfi	
64282434Sgjb
65219732Sume: ${SED:=sed}
66219732Sume
67219732Sume: ${SYSCONFDIR:=$PREFIX/etc}
68219732Sume: ${SBINDIR:=$PREFIX/sbin}
69282434Sgjb: ${LIBEXECDIR:=$PREFIX/libexec/resolvconf}
70219732Sume: ${STATEDIR:=/var}
71219732Sume: ${RUNDIR:=$STATEDIR/run}
72219732Sume: ${MANDIR:=${PREFIX:-/usr}/share/man}
73219732Sume
74219732Sumeeval SYSCONFDIR="$SYSCONFDIR"
75219732Sumeeval SBINDIR="$SBINDIR"
76282434Sgjbeval LIBEXECDIR="$LIBEXECDIR"
77219732Sumeeval VARDIR="$RUNDIR/resolvconf"
78219732Sumeeval MANDIR="$MANDIR"
79219732Sume
80219732SumeCONFIG_MK=config.mk
81219732Sume
82219732Sumeif [ -z "$BUILD" ]; then
83282434Sgjb	# autoconf target triplet: cpu-vendor-os
84282434Sgjb	BUILD=$(uname -m)-unknown-$(uname -s | tr '[:upper:]' '[:lower:]')
85219732Sumefi
86282434Sgjb: ${HOST:=$BUILD}
87219732Sume
88219732Sumeif [ -z "$OS" ]; then
89282434Sgjb	echo "Deriving operating system from ... $HOST"
90282434Sgjb	# Derive OS from cpu-vendor-[kernel-]os
91282434Sgjb	CPU=${HOST%%-*}
92282434Sgjb	REST=${HOST#*-}
93219732Sume	if [ "$CPU" != "$REST" ]; then
94282434Sgjb		VENDOR=${REST%%-*}
95219732Sume		REST=${REST#*-}
96282434Sgjb		if [ "$VENDOR" != "$REST" ]; then
97282434Sgjb			# Use kernel if given, otherwise os
98219732Sume			OS=${REST%%-*}
99219732Sume		else
100219732Sume			# 2 tupple
101282434Sgjb			OS=$VENDOR
102282434Sgjb			VENDOR=
103219732Sume		fi
104219732Sume	fi
105282434Sgjb
106282434Sgjb        # Work with cpu-kernel-os, ie Debian
107282434Sgjb	case "$VENDOR" in
108282434Sgjb	linux*|kfreebsd*) OS=$VENDOR; VENDOR= ;;
109282434Sgjb	esac
110282434Sgjb	# Special case
111282434Sgjb	case "$OS" in
112282434Sgjb	gnu*) OS=hurd;; # No HURD support as yet
113282434Sgjb	esac
114219732Sumefi
115219732Sume
116219732Sumeecho "Configuring openresolv for ... $OS"
117219732Sumerm -rf $CONFIG_MK
118219732Sumeecho "# $OS" >$CONFIG_MK
119219732Sume
120219732Sumefor x in SYSCONFDIR SBINDIR LIBEXECDIR VARDIR MANDIR; do
121219732Sume	eval v=\$$x
122219732Sume	# Make files look nice for import
123219732Sume	l=$((10 - ${#x}))
124219732Sume	unset t
125219732Sume	[ $l -gt 3 ] && t="	"
126219732Sume	echo "$x=$t	$v" >>$CONFIG_MK
127219732Sumedone
128219732Sume
129282434Sgjbif [ -z "$RESTARTCMD" ]; then
130282434Sgjb	printf "Checking for systemd ... "
131282434Sgjb	if [ -x /bin/systemctl ]; then
132282434Sgjb		RESTARTCMD="/bin/systemctl try-restart \1"
133282434Sgjb		echo "yes"
134282434Sgjb	elif [ -x /usr/bin/systemctl ]; then
135282434Sgjb		RESTARTCMD="/usr/bin/systemctl try-restart \1"
136282434Sgjb		echo "yes"
137282434Sgjb	else
138282434Sgjb		echo "no"
139282434Sgjb	fi
140219732Sumefi
141219732Sume
142282434Sgjb# Arch upgraded to systemd, so this check has to be just after systemd
143282434Sgjb# but higher than the others
144219732Sumeif [ -z "$RESTARTCMD" ]; then
145282434Sgjb	printf "Checking for Arch ... "
146282434Sgjb	if [ -e /etc/arch-release -a -d /etc/rc.d ]; then
147282434Sgjb		RCDIR=/etc/rc.d
148282434Sgjb		RESTARTCMD="[ -e /var/run/daemons/\1 ] \&\& /etc/rc.d/\1 restart"
149282434Sgjb		echo "yes"
150282434Sgjb	else
151282434Sgjb		echo "no"
152282434Sgjb	fi
153282434Sgjbfi
154282434Sgjb
155282434Sgjbif [ -z "$RESTARTCMD" ]; then
156219732Sume	printf "Checking for OpenRC ... "
157219732Sume	if [ -x /sbin/rc-service ]; then
158282434Sgjb		RESTARTCMD="if /sbin/rc-service -e \1; then /sbin/rc-service \1 -- -Ds restart; fi"
159219732Sume		echo "yes"
160219732Sume	else
161219732Sume		echo "no"
162219732Sume	fi
163219732Sumefi
164219732Sumeif [ -z "$RESTARTCMD" ]; then
165219732Sume	printf "Checking for invoke-rc.d ... "
166219732Sume	if [ -x /usr/sbin/invoke-rc.d ]; then
167219732Sume		RCDIR=/etc/init.d
168282434Sgjb		RESTARTCMD="if /usr/sbin/invoke-rc.d --quiet \1 status >/dev/null 2>\&1; then /usr/sbin/invoke-rc.d \1 restart; fi"
169219732Sume		echo "yes"
170219732Sume	else
171219732Sume		echo "no"
172219732Sume	fi
173219732Sumefi
174219732Sumeif [ -z "$RESTARTCMD" ]; then
175219732Sume	printf "Checking for service ... "
176219732Sume	if [ -x /sbin/service ]; then
177219732Sume		RCDIR=/etc/init.d
178282434Sgjb		RESTARTCMD="if /sbin/service \1; then /sbin/service \1 restart; fi"
179219732Sume		echo "yes"
180219732Sume	else
181219732Sume		echo "no"
182219732Sume	fi
183219732Sumefi
184219732Sumeif [ -z "$RESTARTCMD" ]; then
185282434Sgjb	printf "Checking for runit... "
186282434Sgjb	if [ -x /bin/sv ]; then
187282434Sgjb		RESTARTCMD="/bin/sv try-restart \1"
188282434Sgjb		echo "yes"
189282434Sgjb	elif [ -x /usr/bin/sv ]; then
190282434Sgjb		RESTARTCMD="/usr/bin/sv try-restart \1"
191282434Sgjb		echo "yes"
192282434Sgjb	else
193282434Sgjb		echo "no"
194282434Sgjb	fi
195282434Sgjbfi
196282434Sgjbif [ -z "$RESTARTCMD" ]; then
197219732Sume	for x in /etc/init.d/rc.d /etc/rc.d /etc/init.d; do
198219732Sume		printf "Checking for $x ... "
199219732Sume		if [ -d $x ]; then
200219732Sume			RCDIR=$x
201282434Sgjb			RESTARTCMD="if $x/\1 status >/dev/null 2>\&1; then $x/\1 restart; fi"
202219732Sume			echo "yes"
203219732Sume			break
204219732Sume		else
205219732Sume			echo "no"
206219732Sume		fi
207219732Sume	done
208219732Sumefi
209219732Sume
210219732Sumeif [ -z "$RESTARTCMD" ]; then
211282434Sgjb	echo "$0: WARNING: No means of interacting with system services detected!"
212219732Sume	exit 1
213219732Sumefi
214219732Sume
215219732Sumeecho "RCDIR=		$RCDIR" >>$CONFIG_MK
216219732Sume# Work around bug in the dash shell as "echo 'foo \1'" does bad things
217219732Sumeprintf "%s\n" "RESTARTCMD=	$RESTARTCMD" >>$CONFIG_MK
218219732Sume
219219732Sumeecho
220219732Sumeecho "   SYSCONFDIR =		$SYSCONFDIR"
221219732Sumeecho "   SBINDIR =		$SBINDIR"
222219732Sumeecho "   LIBEXECDIR =		$LIBEXECDIR"
223219732Sumeecho "   VARDIR =		$RUNDIR"
224219732Sumeecho "   MANDIR =		$MANDIR"
225219732Sumeecho
226