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= 11 12for x do 13 opt=${x%%=*} 14 var=${x#*=} 15 case "$opt" in 16 --os|OS) OS=$var;; 17 --with-cc|CC) CC=$var;; 18 --debug) DEBUG=$var;; 19 --disable-debug) DEBUG=no;; 20 --enable-debug) DEBUG=yes;; 21 --prefix) PREFIX=$var;; 22 --sysconfdir) SYSCONFDIR=$var;; 23 --bindir|--sbindir) SBINDIR=$var;; 24 --libexecdir) LIBEXECDIR=$var;; 25 --statedir|--localstatedir) STATEDIR=$var;; 26 --dbdir) DBDIR=$var;; 27 --rundir) RUNDIR=$var;; 28 --mandir) MANDIR=$var;; 29 --with-ccopts|CFLAGS) CFLAGS=$var;; 30 CPPFLAGS) CPPFLAGS=$var;; 31 --build) BUILD=$var;; 32 --host) HOST=$var;; 33 --target) TARGET=$var;; 34 --libdir) LIBDIR=$var;; 35 --restartcmd) RESTARTCMD=$var;; 36 --includedir) eval INCLUDEDIR="$INCLUDEDIR${INCLUDEDIR:+ }$var";; 37 --datadir|--infodir) ;; # ignore autotools 38 --disable-maintainer-mode|--disable-dependency-tracking) ;; 39 --help) echo "See the README file for available options"; exit 0;; 40 *) echo "$0: WARNING: unknown option $opt" >&2;; 41 esac 42done 43 44if [ -z "$LIBEXECDIR" ]; then 45 printf "Checking for directory /libexec ... " 46 if [ -d /libexec ]; then 47 echo "yes" 48 LIBEXECDIR=$PREFIX/libexec/resolvconf 49 else 50 echo "no" 51 LIBEXECDIR=$PREFIX/lib/resolvconf 52 fi 53fi 54if [ -z "$RUNDIR" ]; then 55 printf "Checking for directory /run ... " 56 if [ -d /run ]; then 57 echo "yes" 58 RUNDIR=/run 59 else 60 echo "no" 61 RUNDIR=/var/run 62 fi 63fi 64 65: ${SED:=sed} 66 67: ${SYSCONFDIR:=$PREFIX/etc} 68: ${SBINDIR:=$PREFIX/sbin} 69: ${LIBEXECDIR:=$PREFIX/libexec/resolvconf} 70: ${STATEDIR:=/var} 71: ${RUNDIR:=$STATEDIR/run} 72: ${MANDIR:=${PREFIX:-/usr}/share/man} 73 74eval SYSCONFDIR="$SYSCONFDIR" 75eval SBINDIR="$SBINDIR" 76eval LIBEXECDIR="$LIBEXECDIR" 77eval VARDIR="$RUNDIR/resolvconf" 78eval MANDIR="$MANDIR" 79 80CONFIG_MK=config.mk 81 82if [ -z "$BUILD" ]; then 83 # autoconf target triplet: cpu-vendor-os 84 BUILD=$(uname -m)-unknown-$(uname -s | tr '[:upper:]' '[:lower:]') 85fi 86: ${HOST:=$BUILD} 87 88if [ -z "$OS" ]; then 89 echo "Deriving operating system from ... $HOST" 90 # Derive OS from cpu-vendor-[kernel-]os 91 CPU=${HOST%%-*} 92 REST=${HOST#*-} 93 if [ "$CPU" != "$REST" ]; then 94 VENDOR=${REST%%-*} 95 REST=${REST#*-} 96 if [ "$VENDOR" != "$REST" ]; then 97 # Use kernel if given, otherwise os 98 OS=${REST%%-*} 99 else 100 # 2 tupple 101 OS=$VENDOR 102 VENDOR= 103 fi 104 fi 105 106 # Work with cpu-kernel-os, ie Debian 107 case "$VENDOR" in 108 linux*|kfreebsd*) OS=$VENDOR; VENDOR= ;; 109 esac 110 # Special case 111 case "$OS" in 112 gnu*) OS=hurd;; # No HURD support as yet 113 esac 114fi 115 116echo "Configuring openresolv for ... $OS" 117rm -rf $CONFIG_MK 118echo "# $OS" >$CONFIG_MK 119 120for x in SYSCONFDIR SBINDIR LIBEXECDIR VARDIR MANDIR; do 121 eval v=\$$x 122 # Make files look nice for import 123 l=$((10 - ${#x})) 124 unset t 125 [ $l -gt 3 ] && t=" " 126 echo "$x=$t $v" >>$CONFIG_MK 127done 128 129if [ -z "$RESTARTCMD" ]; then 130 printf "Checking for systemd ... " 131 if [ -x /bin/systemctl ]; then 132 RESTARTCMD="/bin/systemctl try-restart \1" 133 echo "yes" 134 elif [ -x /usr/bin/systemctl ]; then 135 RESTARTCMD="/usr/bin/systemctl try-restart \1" 136 echo "yes" 137 else 138 echo "no" 139 fi 140fi 141 142# Arch upgraded to systemd, so this check has to be just after systemd 143# but higher than the others 144if [ -z "$RESTARTCMD" ]; then 145 printf "Checking for Arch ... " 146 if [ -e /etc/arch-release -a -d /etc/rc.d ]; then 147 RCDIR=/etc/rc.d 148 RESTARTCMD="[ -e /var/run/daemons/\1 ] \&\& /etc/rc.d/\1 restart" 149 echo "yes" 150 else 151 echo "no" 152 fi 153fi 154 155if [ -z "$RESTARTCMD" ]; then 156 printf "Checking for OpenRC ... " 157 if [ -x /sbin/rc-service ]; then 158 RESTARTCMD="if /sbin/rc-service -e \1; then /sbin/rc-service \1 -- -Ds restart; fi" 159 echo "yes" 160 else 161 echo "no" 162 fi 163fi 164if [ -z "$RESTARTCMD" ]; then 165 printf "Checking for invoke-rc.d ... " 166 if [ -x /usr/sbin/invoke-rc.d ]; then 167 RCDIR=/etc/init.d 168 RESTARTCMD="if /usr/sbin/invoke-rc.d --quiet \1 status >/dev/null 2>\&1; then /usr/sbin/invoke-rc.d \1 restart; fi" 169 echo "yes" 170 else 171 echo "no" 172 fi 173fi 174if [ -z "$RESTARTCMD" ]; then 175 printf "Checking for service ... " 176 if [ -x /sbin/service ]; then 177 RCDIR=/etc/init.d 178 RESTARTCMD="if /sbin/service \1; then /sbin/service \1 restart; fi" 179 echo "yes" 180 else 181 echo "no" 182 fi 183fi 184if [ -z "$RESTARTCMD" ]; then 185 printf "Checking for runit... " 186 if [ -x /bin/sv ]; then 187 RESTARTCMD="/bin/sv try-restart \1" 188 echo "yes" 189 elif [ -x /usr/bin/sv ]; then 190 RESTARTCMD="/usr/bin/sv try-restart \1" 191 echo "yes" 192 else 193 echo "no" 194 fi 195fi 196if [ -z "$RESTARTCMD" ]; then 197 for x in /etc/init.d/rc.d /etc/rc.d /etc/init.d; do 198 printf "Checking for $x ... " 199 if [ -d $x ]; then 200 RCDIR=$x 201 RESTARTCMD="if $x/\1 status >/dev/null 2>\&1; then $x/\1 restart; fi" 202 echo "yes" 203 break 204 else 205 echo "no" 206 fi 207 done 208fi 209 210if [ -z "$RESTARTCMD" ]; then 211 echo "$0: WARNING: No means of interacting with system services detected!" 212 exit 1 213fi 214 215echo "RCDIR= $RCDIR" >>$CONFIG_MK 216# Work around bug in the dash shell as "echo 'foo \1'" does bad things 217printf "%s\n" "RESTARTCMD= $RESTARTCMD" >>$CONFIG_MK 218 219echo 220echo " SYSCONFDIR = $SYSCONFDIR" 221echo " SBINDIR = $SBINDIR" 222echo " LIBEXECDIR = $LIBEXECDIR" 223echo " VARDIR = $RUNDIR" 224echo " MANDIR = $MANDIR" 225echo 226