]> git.ozlabs.org Git - ppp.git/blobdiff - configure
Merge branch 'rp-pppoe-error' of https://github.com/snickl/lpppd
[ppp.git] / configure
index 6238cf6d16836225cf6eadc00bf770945d344cb0..6a55e0f08be42a139ced1b61a25170381db5067c 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,12 +1,15 @@
 #!/bin/sh
-# $Id: configure,v 1.28 2002/01/22 16:02:56 dfs Exp $
+# $Id: configure,v 1.38 2008/06/15 07:08:49 paulus Exp $
+
+# Where to install stuff by default
+DESTDIR=/usr/local
+SYSCONF=/etc
 
 #  if [ -d /NextApps ]; then
 #    system="NeXTStep"
 #  else
   system=`uname -s`
   release=`uname -r`
-  machine=`uname -p`
   arch=`uname -m`
 #  fi
 state="unknown"
@@ -17,18 +20,58 @@ case $system in
     ksrc="linux";
     state="known";;
   SunOS)
+    karch=`/usr/bin/isainfo -k`
     case $release in
 #      [0-3]*) state="ancient";;
 #      4*)     state="known"; ksrc="sunos4"; makext="sunos4";;
-      5.[1-6]*)        state="known"; ksrc="solaris"; makext="sol2";;
-      5.[7-9]*)        state="known"; ksrc="solaris"; makext="sol2";
-              case $arch in
-               sun4u)  lp64='y';;
+      5.[7-9]*|5.[1-9][0-9]*)  state="known"; ksrc="solaris"; makext="sol2";
+              case "$karch" in
+               amd64)          archvariant='-64x';;
+               sparcv9)        archvariant='-64';;
                *)      ;;
              esac;;
-    esac;;
-    NetBSD|FreeBSD|ULTRIX|OSF1|NeXTStep|SINIX-?|UNIX_SV|UNIX_System_V)
-      state="notincluded";;
+      5.[1-6]*)        state="known"; ksrc="solaris"; makext="sol2";;
+    esac
+    if [ "$1" = gcc ]; then
+       shift
+       usegcc=gcc
+    fi
+    if [ "$1" = 32 ]; then
+       shift
+       archvariant=
+    fi
+    if [ -x /opt/SUNWspro/bin/cc -a "$usegcc" != gcc ] &&
+       /opt/SUNWspro/bin/cc -flags >/dev/null 2>&1; then
+      if [ "$archvariant" = "-64x" ]; then
+        ( cd /tmp; echo "int x;" > ppp$$.c
+         /opt/SUNWspro/bin/cc -c -errwarn -xchip=opteron -m64 ppp$$.c >/dev/null 2>&1 || (
+           echo "WorkShop C is unable to make 64 bit modules, and your $karch system needs"
+           echo "them.  Consider upgrading cc on this machine."
+           rm -f ppp$$.c
+           exit 1
+         ) || exit 1
+         rm -f ppp$$.c ppp$$.o
+        ) || exit 1
+      fi
+    elif gcc --version >/dev/null 2>&1; then
+      archvariant=gcc$archvariant
+      compiletype=.gcc
+      if [ "$archvariant" = "gcc-64" -o"$archvariant" = "gcc-64x" ]; then
+        ( cd /tmp; touch ppp$$.c
+         gcc -c -m64 ppp$$.c >/dev/null 2>&1 || (
+           echo "gcc is unable to make 64 bit modules, and your $karch system needs them."
+           echo "Consider upgrading gcc on this machine, or switching to Sun WorkShop."
+           rm -f ppp$$.c
+           exit 1
+         ) || exit 1
+         rm -f ppp$$.c ppp$$.o
+        ) || exit 1
+      fi
+    else
+      echo "C compiler not found; hoping for the best."
+    fi;;
+  NetBSD|FreeBSD|ULTRIX|OSF1|NeXTStep|SINIX-?|UNIX_SV|UNIX_System_V)
+    state="notincluded";;
 #    NetBSD)
 #      makext="bsd";
 #      case $release in
@@ -105,37 +148,60 @@ case $state in
     echo "This is a newer release of $system than is supported by"
     echo "this software.  It may or may not work.";;
   unknown)
-    echo "This software has not been ported to this system.  Sorry.";;
+    echo "This software has not been ported to $system.  Sorry.";;
   notincluded)
-    echo "Support for this system has not been included"
+    echo "Support for $system has not been included"
     echo "in this distribution.  Sorry.";;
+  known)
+    echo "Configuring for $system";;
 esac
 
-orig_makext=$makext
+# Parse arguments
+while [ $# -gt 0 ]; do
+    arg=$1
+    val=
+    shift
+    case $arg in
+       *=*)
+           val=`expr "x$arg" : 'x[^=]*=\(.*\)'`
+           arg=`expr "x$arg" : 'x\([^=]*\)=.*'`
+           ;;
+       --prefix|--sysconf)
+           if [ $# -eq 0 ]; then
+               echo "error: the $arg argument requires a value" 1>&2
+               exit 1
+           fi
+           val=$1
+           shift
+           ;;
+    esac
+    case $arg in
+       --prefix)       DESTDIR=$val ;;
+       --sysconfdir)   SYSCONF=$val ;;
+    esac
+done
 
-if [ -d "$ksrc" ]; then
-  echo "Creating links to Makefiles."
-  rm -f Makefile
-  ln -s $ksrc/Makefile.top Makefile
-  echo "  Makefile -> $ksrc/Makefile.top"
-  if [ "$ksrc" = solaris ]; then
-    # Point to 64-bit Makefile extension
-    if [ "$lp64" = y ]; then 
-      makext=$makext-64 
-    fi
-    rm -f $ksrc/Makefile
-    ln -s Makefile.$makext $ksrc/Makefile
-    echo "  $ksrc/Makefile -> Makefile.$makext"
-    # Restore extension
-    if [ "$lp64" = y ]; then 
-      makext=$orig_makext 
+mkmkf() {
+    rm -f $2
+    if [ -f $1 ]; then
+       echo "  $2 <= $1"
+       sed -e "s,@DESTDIR@,$DESTDIR,g" -e "s,@SYSCONF@,$SYSCONF,g" $1 >$2
     fi
-  fi
-  for dir in pppd pppstats chat pppdump pppd/plugins pppd/plugins/rp-pppoe pppd/plugins/radius; do
-    rm -f $dir/Makefile
-    if [ -f $dir/Makefile.$makext ]; then
-      ln -s Makefile.$makext $dir/Makefile
-      echo "  $dir/Makefile -> Makefile.$makext"
+}
+
+if [ -d "$ksrc" ]; then
+    echo "Creating Makefiles."
+    mkmkf $ksrc/Makefile.top Makefile
+    mkmkf $ksrc/Makedefs$compiletype Makedefs.com
+    for dir in pppd pppstats chat pppdump pppd/plugins pppd/plugins/rp-pppoe \
+              pppd/plugins/radius pppd/plugins/pppoatm \
+              pppd/plugins/pppol2tp; do
+       mkmkf $dir/Makefile.$makext $dir/Makefile
+    done
+    if [ -f $ksrc/Makefile.$makext$archvariant ]; then
+       mkmkf $ksrc/Makefile.$makext$archvariant $ksrc/Makefile
     fi
-  done
+else
+  echo "Unable to locate kernel source $ksrc"
+  exit 1
 fi