xref: /freebsd/contrib/openresolv/configure (revision d7149f4e5176e24d02ef4cc3a0636623153209f0)
1587392a5SHajimu UMEMOTO#!/bin/sh
2587392a5SHajimu UMEMOTO# Try and be like autotools configure, but without autotools
3587392a5SHajimu UMEMOTO
4587392a5SHajimu UMEMOTO# Ensure that we do not inherit these from env
5587392a5SHajimu UMEMOTOOS=
6587392a5SHajimu UMEMOTOBUILD=
7587392a5SHajimu UMEMOTOHOST=
8587392a5SHajimu UMEMOTOTARGET=
9587392a5SHajimu UMEMOTORESTARTCMD=
10587392a5SHajimu UMEMOTORCDIR=
11587392a5SHajimu UMEMOTO
12*d7149f4eSGlen Barberfor x do
13587392a5SHajimu UMEMOTO	opt=${x%%=*}
14587392a5SHajimu UMEMOTO	var=${x#*=}
15587392a5SHajimu UMEMOTO	case "$opt" in
16587392a5SHajimu UMEMOTO	--os|OS) OS=$var;;
17587392a5SHajimu UMEMOTO	--with-cc|CC) CC=$var;;
18587392a5SHajimu UMEMOTO	--debug) DEBUG=$var;;
19587392a5SHajimu UMEMOTO	--disable-debug) DEBUG=no;;
20587392a5SHajimu UMEMOTO	--enable-debug) DEBUG=yes;;
21*d7149f4eSGlen Barber	--prefix) PREFIX=$var;;
22587392a5SHajimu UMEMOTO	--sysconfdir) SYSCONFDIR=$var;;
23587392a5SHajimu UMEMOTO	--bindir|--sbindir) SBINDIR=$var;;
24587392a5SHajimu UMEMOTO	--libexecdir) LIBEXECDIR=$var;;
25587392a5SHajimu UMEMOTO	--statedir|--localstatedir) STATEDIR=$var;;
26587392a5SHajimu UMEMOTO	--dbdir) DBDIR=$var;;
27587392a5SHajimu UMEMOTO	--rundir) RUNDIR=$var;;
28587392a5SHajimu UMEMOTO	--mandir) MANDIR=$var;;
29587392a5SHajimu UMEMOTO	--with-ccopts|CFLAGS) CFLAGS=$var;;
30587392a5SHajimu UMEMOTO	CPPFLAGS) CPPFLAGS=$var;;
31587392a5SHajimu UMEMOTO	--build) BUILD=$var;;
32587392a5SHajimu UMEMOTO	--host) HOST=$var;;
33587392a5SHajimu UMEMOTO	--target) TARGET=$var;;
34587392a5SHajimu UMEMOTO	--libdir) LIBDIR=$var;;
35587392a5SHajimu UMEMOTO	--restartcmd) RESTARTCMD=$var;;
36587392a5SHajimu UMEMOTO	--includedir) eval INCLUDEDIR="$INCLUDEDIR${INCLUDEDIR:+ }$var";;
37587392a5SHajimu UMEMOTO	--datadir|--infodir) ;; # ignore autotools
38587392a5SHajimu UMEMOTO	--disable-maintainer-mode|--disable-dependency-tracking) ;;
39587392a5SHajimu UMEMOTO	--help) echo "See the README file for available options"; exit 0;;
40587392a5SHajimu UMEMOTO	*) echo "$0: WARNING: unknown option $opt" >&2;;
41587392a5SHajimu UMEMOTO	esac
42587392a5SHajimu UMEMOTOdone
43587392a5SHajimu UMEMOTO
44*d7149f4eSGlen Barberif [ -z "$LIBEXECDIR" ]; then
45*d7149f4eSGlen Barber	printf "Checking for directory /libexec ... "
46*d7149f4eSGlen Barber	if [ -d /libexec ]; then
47*d7149f4eSGlen Barber		echo "yes"
48*d7149f4eSGlen Barber		LIBEXECDIR=$PREFIX/libexec/resolvconf
49*d7149f4eSGlen Barber	else
50*d7149f4eSGlen Barber		echo "no"
51*d7149f4eSGlen Barber		LIBEXECDIR=$PREFIX/lib/resolvconf
52*d7149f4eSGlen Barber	fi
53*d7149f4eSGlen Barberfi
54*d7149f4eSGlen Barberif [ -z "$RUNDIR" ]; then
55*d7149f4eSGlen Barber	printf "Checking for directory /run ... "
56*d7149f4eSGlen Barber	if [ -d /run ]; then
57*d7149f4eSGlen Barber		echo "yes"
58*d7149f4eSGlen Barber		RUNDIR=/run
59*d7149f4eSGlen Barber	else
60*d7149f4eSGlen Barber		echo "no"
61*d7149f4eSGlen Barber		RUNDIR=/var/run
62*d7149f4eSGlen Barber	fi
63*d7149f4eSGlen Barberfi
64*d7149f4eSGlen Barber
65587392a5SHajimu UMEMOTO: ${SED:=sed}
66587392a5SHajimu UMEMOTO
67587392a5SHajimu UMEMOTO: ${SYSCONFDIR:=$PREFIX/etc}
68587392a5SHajimu UMEMOTO: ${SBINDIR:=$PREFIX/sbin}
69*d7149f4eSGlen Barber: ${LIBEXECDIR:=$PREFIX/libexec/resolvconf}
70587392a5SHajimu UMEMOTO: ${STATEDIR:=/var}
71587392a5SHajimu UMEMOTO: ${RUNDIR:=$STATEDIR/run}
72587392a5SHajimu UMEMOTO: ${MANDIR:=${PREFIX:-/usr}/share/man}
73587392a5SHajimu UMEMOTO
74587392a5SHajimu UMEMOTOeval SYSCONFDIR="$SYSCONFDIR"
75587392a5SHajimu UMEMOTOeval SBINDIR="$SBINDIR"
76*d7149f4eSGlen Barbereval LIBEXECDIR="$LIBEXECDIR"
77587392a5SHajimu UMEMOTOeval VARDIR="$RUNDIR/resolvconf"
78587392a5SHajimu UMEMOTOeval MANDIR="$MANDIR"
79587392a5SHajimu UMEMOTO
80587392a5SHajimu UMEMOTOCONFIG_MK=config.mk
81587392a5SHajimu UMEMOTO
82587392a5SHajimu UMEMOTOif [ -z "$BUILD" ]; then
83*d7149f4eSGlen Barber	# autoconf target triplet: cpu-vendor-os
84*d7149f4eSGlen Barber	BUILD=$(uname -m)-unknown-$(uname -s | tr '[:upper:]' '[:lower:]')
85587392a5SHajimu UMEMOTOfi
86*d7149f4eSGlen Barber: ${HOST:=$BUILD}
87587392a5SHajimu UMEMOTO
88587392a5SHajimu UMEMOTOif [ -z "$OS" ]; then
89*d7149f4eSGlen Barber	echo "Deriving operating system from ... $HOST"
90*d7149f4eSGlen Barber	# Derive OS from cpu-vendor-[kernel-]os
91*d7149f4eSGlen Barber	CPU=${HOST%%-*}
92*d7149f4eSGlen Barber	REST=${HOST#*-}
93587392a5SHajimu UMEMOTO	if [ "$CPU" != "$REST" ]; then
94*d7149f4eSGlen Barber		VENDOR=${REST%%-*}
95587392a5SHajimu UMEMOTO		REST=${REST#*-}
96*d7149f4eSGlen Barber		if [ "$VENDOR" != "$REST" ]; then
97*d7149f4eSGlen Barber			# Use kernel if given, otherwise os
98587392a5SHajimu UMEMOTO			OS=${REST%%-*}
99587392a5SHajimu UMEMOTO		else
100587392a5SHajimu UMEMOTO			# 2 tupple
101*d7149f4eSGlen Barber			OS=$VENDOR
102*d7149f4eSGlen Barber			VENDOR=
103587392a5SHajimu UMEMOTO		fi
104587392a5SHajimu UMEMOTO	fi
105*d7149f4eSGlen Barber
106*d7149f4eSGlen Barber        # Work with cpu-kernel-os, ie Debian
107*d7149f4eSGlen Barber	case "$VENDOR" in
108*d7149f4eSGlen Barber	linux*|kfreebsd*) OS=$VENDOR; VENDOR= ;;
109*d7149f4eSGlen Barber	esac
110*d7149f4eSGlen Barber	# Special case
111*d7149f4eSGlen Barber	case "$OS" in
112*d7149f4eSGlen Barber	gnu*) OS=hurd;; # No HURD support as yet
113*d7149f4eSGlen Barber	esac
114587392a5SHajimu UMEMOTOfi
115587392a5SHajimu UMEMOTO
116587392a5SHajimu UMEMOTOecho "Configuring openresolv for ... $OS"
117587392a5SHajimu UMEMOTOrm -rf $CONFIG_MK
118587392a5SHajimu UMEMOTOecho "# $OS" >$CONFIG_MK
119587392a5SHajimu UMEMOTO
120587392a5SHajimu UMEMOTOfor x in SYSCONFDIR SBINDIR LIBEXECDIR VARDIR MANDIR; do
121587392a5SHajimu UMEMOTO	eval v=\$$x
122587392a5SHajimu UMEMOTO	# Make files look nice for import
123587392a5SHajimu UMEMOTO	l=$((10 - ${#x}))
124587392a5SHajimu UMEMOTO	unset t
125587392a5SHajimu UMEMOTO	[ $l -gt 3 ] && t="	"
126587392a5SHajimu UMEMOTO	echo "$x=$t	$v" >>$CONFIG_MK
127587392a5SHajimu UMEMOTOdone
128587392a5SHajimu UMEMOTO
129*d7149f4eSGlen Barberif [ -z "$RESTARTCMD" ]; then
130*d7149f4eSGlen Barber	printf "Checking for systemd ... "
131*d7149f4eSGlen Barber	if [ -x /bin/systemctl ]; then
132*d7149f4eSGlen Barber		RESTARTCMD="/bin/systemctl try-restart \1"
133*d7149f4eSGlen Barber		echo "yes"
134*d7149f4eSGlen Barber	elif [ -x /usr/bin/systemctl ]; then
135*d7149f4eSGlen Barber		RESTARTCMD="/usr/bin/systemctl try-restart \1"
136*d7149f4eSGlen Barber		echo "yes"
137*d7149f4eSGlen Barber	else
138*d7149f4eSGlen Barber		echo "no"
139*d7149f4eSGlen Barber	fi
140*d7149f4eSGlen Barberfi
141*d7149f4eSGlen Barber
142*d7149f4eSGlen Barber# Arch upgraded to systemd, so this check has to be just after systemd
143*d7149f4eSGlen Barber# but higher than the others
144*d7149f4eSGlen Barberif [ -z "$RESTARTCMD" ]; then
145*d7149f4eSGlen Barber	printf "Checking for Arch ... "
146587392a5SHajimu UMEMOTO	if [ -e /etc/arch-release -a -d /etc/rc.d ]; then
147587392a5SHajimu UMEMOTO		RCDIR=/etc/rc.d
148587392a5SHajimu UMEMOTO		RESTARTCMD="[ -e /var/run/daemons/\1 ] \&\& /etc/rc.d/\1 restart"
149587392a5SHajimu UMEMOTO		echo "yes"
150*d7149f4eSGlen Barber	else
151*d7149f4eSGlen Barber		echo "no"
152*d7149f4eSGlen Barber	fi
153587392a5SHajimu UMEMOTOfi
154587392a5SHajimu UMEMOTO
155587392a5SHajimu UMEMOTOif [ -z "$RESTARTCMD" ]; then
156587392a5SHajimu UMEMOTO	printf "Checking for OpenRC ... "
157587392a5SHajimu UMEMOTO	if [ -x /sbin/rc-service ]; then
158*d7149f4eSGlen Barber		RESTARTCMD="if /sbin/rc-service -e \1; then /sbin/rc-service \1 -- -Ds restart; fi"
159587392a5SHajimu UMEMOTO		echo "yes"
160587392a5SHajimu UMEMOTO	else
161587392a5SHajimu UMEMOTO		echo "no"
162587392a5SHajimu UMEMOTO	fi
163587392a5SHajimu UMEMOTOfi
164587392a5SHajimu UMEMOTOif [ -z "$RESTARTCMD" ]; then
165587392a5SHajimu UMEMOTO	printf "Checking for invoke-rc.d ... "
166587392a5SHajimu UMEMOTO	if [ -x /usr/sbin/invoke-rc.d ]; then
167587392a5SHajimu UMEMOTO		RCDIR=/etc/init.d
168*d7149f4eSGlen Barber		RESTARTCMD="if /usr/sbin/invoke-rc.d --quiet \1 status >/dev/null 2>\&1; then /usr/sbin/invoke-rc.d \1 restart; fi"
169587392a5SHajimu UMEMOTO		echo "yes"
170587392a5SHajimu UMEMOTO	else
171587392a5SHajimu UMEMOTO		echo "no"
172587392a5SHajimu UMEMOTO	fi
173587392a5SHajimu UMEMOTOfi
174587392a5SHajimu UMEMOTOif [ -z "$RESTARTCMD" ]; then
175587392a5SHajimu UMEMOTO	printf "Checking for service ... "
176587392a5SHajimu UMEMOTO	if [ -x /sbin/service ]; then
177587392a5SHajimu UMEMOTO		RCDIR=/etc/init.d
178*d7149f4eSGlen Barber		RESTARTCMD="if /sbin/service \1; then /sbin/service \1 restart; fi"
179*d7149f4eSGlen Barber		echo "yes"
180*d7149f4eSGlen Barber	else
181*d7149f4eSGlen Barber		echo "no"
182*d7149f4eSGlen Barber	fi
183*d7149f4eSGlen Barberfi
184*d7149f4eSGlen Barberif [ -z "$RESTARTCMD" ]; then
185*d7149f4eSGlen Barber	printf "Checking for runit... "
186*d7149f4eSGlen Barber	if [ -x /bin/sv ]; then
187*d7149f4eSGlen Barber		RESTARTCMD="/bin/sv try-restart \1"
188*d7149f4eSGlen Barber		echo "yes"
189*d7149f4eSGlen Barber	elif [ -x /usr/bin/sv ]; then
190*d7149f4eSGlen Barber		RESTARTCMD="/usr/bin/sv try-restart \1"
191587392a5SHajimu UMEMOTO		echo "yes"
192587392a5SHajimu UMEMOTO	else
193587392a5SHajimu UMEMOTO		echo "no"
194587392a5SHajimu UMEMOTO	fi
195587392a5SHajimu UMEMOTOfi
196587392a5SHajimu UMEMOTOif [ -z "$RESTARTCMD" ]; then
197587392a5SHajimu UMEMOTO	for x in /etc/init.d/rc.d /etc/rc.d /etc/init.d; do
198587392a5SHajimu UMEMOTO		printf "Checking for $x ... "
199587392a5SHajimu UMEMOTO		if [ -d $x ]; then
200587392a5SHajimu UMEMOTO			RCDIR=$x
201*d7149f4eSGlen Barber			RESTARTCMD="if $x/\1 status >/dev/null 2>\&1; then $x/\1 restart; fi"
202587392a5SHajimu UMEMOTO			echo "yes"
203587392a5SHajimu UMEMOTO			break
204587392a5SHajimu UMEMOTO		else
205587392a5SHajimu UMEMOTO			echo "no"
206587392a5SHajimu UMEMOTO		fi
207587392a5SHajimu UMEMOTO	done
208587392a5SHajimu UMEMOTOfi
209587392a5SHajimu UMEMOTO
210587392a5SHajimu UMEMOTOif [ -z "$RESTARTCMD" ]; then
211*d7149f4eSGlen Barber	echo "$0: WARNING: No means of interacting with system services detected!"
212587392a5SHajimu UMEMOTO	exit 1
213587392a5SHajimu UMEMOTOfi
214587392a5SHajimu UMEMOTO
215587392a5SHajimu UMEMOTOecho "RCDIR=		$RCDIR" >>$CONFIG_MK
216587392a5SHajimu UMEMOTO# Work around bug in the dash shell as "echo 'foo \1'" does bad things
217587392a5SHajimu UMEMOTOprintf "%s\n" "RESTARTCMD=	$RESTARTCMD" >>$CONFIG_MK
218587392a5SHajimu UMEMOTO
219587392a5SHajimu UMEMOTOecho
220587392a5SHajimu UMEMOTOecho "   SYSCONFDIR =		$SYSCONFDIR"
221587392a5SHajimu UMEMOTOecho "   SBINDIR =		$SBINDIR"
222587392a5SHajimu UMEMOTOecho "   LIBEXECDIR =		$LIBEXECDIR"
223587392a5SHajimu UMEMOTOecho "   VARDIR =		$RUNDIR"
224587392a5SHajimu UMEMOTOecho "   MANDIR =		$MANDIR"
225587392a5SHajimu UMEMOTOecho
226