1#!/bin/sh
2# $Id: configure,v 1.37 2005/06/26 23:53:17 carlsonj Exp $
3
4# Where to install stuff by default
5DESTDIR=/usr/local
6SYSCONF=/etc
7
8#  if [ -d /NextApps ]; then
9#    system="NeXTStep"
10#  else
11  system=`uname -s`
12  release=`uname -r`
13  arch=`uname -m`
14#  fi
15state="unknown"
16
17case $system in
18  Linux)
19    makext="linux";
20    ksrc="linux";
21    state="known";;
22  SunOS)
23    karch=`/usr/bin/isainfo -k`
24    case $release in
25#      [0-3]*)	state="ancient";;
26#      4*)	state="known"; ksrc="sunos4"; makext="sunos4";;
27      5.[7-9]*|5.[1-9][0-9]*)	state="known"; ksrc="solaris"; makext="sol2";
28              case "$karch" in
29		amd64)		archvariant='-64x';;
30		sparcv9)	archvariant='-64';;
31		*)	;;
32	      esac;;
33      5.[1-6]*)	state="known"; ksrc="solaris"; makext="sol2";;
34    esac
35    if [ "$1" = gcc ]; then
36	shift
37	usegcc=gcc
38    fi
39    if [ "$1" = 32 ]; then
40	shift
41	archvariant=
42    fi
43    if [ -x /opt/SUNWspro/bin/cc -a "$usegcc" != gcc ] &&
44       /opt/SUNWspro/bin/cc -flags >/dev/null 2>&1; then
45      if [ "$archvariant" = "-64x" ]; then
46        ( cd /tmp; echo "int x;" > ppp$$.c
47	  /opt/SUNWspro/bin/cc -c -errwarn -xchip=opteron -xarch=amd64 ppp$$.c >/dev/null 2>&1 || (
48	    echo "WorkShop C is unable to make 64 bit modules, and your $karch system needs"
49	    echo "them.  Consider upgrading cc on this machine."
50	    rm -f ppp$$.c
51	    exit 1
52	  ) || exit 1
53	  rm -f ppp$$.c ppp$$.o
54        ) || exit 1
55      fi
56    elif gcc --version >/dev/null 2>&1; then
57      archvariant=gcc$archvariant
58      compiletype=.gcc
59      if [ "$archvariant" = "gcc-64" -o"$archvariant" = "gcc-64x" ]; then
60        ( cd /tmp; touch ppp$$.c
61	  gcc -c -m64 ppp$$.c >/dev/null 2>&1 || (
62	    echo "gcc is unable to make 64 bit modules, and your $karch system needs them."
63	    echo "Consider upgrading gcc on this machine, or switching to Sun WorkShop."
64	    rm -f ppp$$.c
65	    exit 1
66	  ) || exit 1
67	  rm -f ppp$$.c ppp$$.o
68        ) || exit 1
69      fi
70    else
71      echo "C compiler not found; hoping for the best."
72    fi;;
73  NetBSD|FreeBSD|ULTRIX|OSF1|NeXTStep|SINIX-?|UNIX_SV|UNIX_System_V)
74    state="notincluded";;
75#    NetBSD)
76#      makext="bsd";
77#      case $release in
78#        0.*)	state="ancient";;
79#        1.0*)	state="ancient";;
80#        1.1*)	state="known"; ksrc="netbsd-1.1";;
81#        1.2*)	state="known"; ksrc="netbsd-1.2"; makext="netbsd-1.2";;
82#        1.[3-9]*|[2-9]*)
83#  		state="late"; ksrc="netbsd-1.2";;
84#      esac;;
85#    ULTRIX)
86#      makext="ultrix";
87#      case $release in
88#        [0-3]*)	state="ancient";;
89#        4.[01]*)	state="early"; ksrc="ultrix";;
90#        4.[234])	state="known"; ksrc="ultrix";;
91#      esac;;
92#    OSF1)
93#      makext="osf";
94#      case $release in
95#        V1.*)   state="neolithic"; ksrc="osf1";;
96#        V[23].*)	state="neolithic"; ksrc="osf1";;
97#        V4.*)	state="known"; ksrc="osf1";;
98#        V[5-9]*) state="late"; ksrc="osf1";;
99#      esac;;
100#    FreeBSD)
101#      makext="bsd";
102#      case $release in
103#        1.*)	state="known"; ksrc="freebsd-old";;
104#        2.[01]*)	state="known"; ksrc="freebsd-2.0";;
105#        2.2.[2-7]*) state="late"; ksrc="freebsd-2.0";;
106#        2.2.8*)   state="known"; ksrc="freebsd-2.2.8";;
107#        3.[0-1]*)	state="known"; ksrc="freebsd-3.0";;
108#      esac;;
109#    NeXTStep)
110#      makext="NeXT";
111#      ksrc="NeXT";
112#      state="known";;
113#    SINIX-?)
114#      case $release in
115#        5.4[01]) state=known; ksrc=svr4; makext=svr4;;
116#        5.4[2-9]) state=late; ksrc=svr4; makext=svr4;;
117#      esac;;
118#    # Intel SVR4 systems come with a bug in the uname program.  Unless
119#    # your provider fixed the bug, or you get a fix for it, uname -S will
120#    # overwrite the system name with the node name!
121#    UNIX_SV|UNIX_System_V|`uname -n`)
122#      case $release in
123#        4.0) state=known; ksrc=svr4; makext=svr4;;
124#        4.2) state=late; ksrc=svr4; makext=svr4;;
125#      esac;;
126esac
127
128if [ -d "$ksrc" ]; then :; else
129  state="notincluded"
130  unset ksrc
131fi
132
133case $state in
134  neolithic) 
135    echo "This is a newer release on an outdated OS ($system)."
136    echo " This software may or may not work on this OS."
137    echo " You may want to download an older version of PPP for this OS.";;
138  ancient)
139    echo "This is an old release of a supported OS ($system)."
140    echo "This software cannot be used as-is on this system,"
141    echo "but you may be able to port it.  Good luck!"
142    exit;;
143  early)
144    echo "This is an old release of a supported OS ($system)."
145    echo "This software should install and run on this system,"
146    echo "but it hasn't been tested.";;
147  late)
148    echo "This is a newer release of $system than is supported by"
149    echo "this software.  It may or may not work.";;
150  unknown)
151    echo "This software has not been ported to $system.  Sorry.";;
152  notincluded)
153    echo "Support for $system has not been included"
154    echo "in this distribution.  Sorry.";;
155  known)
156    echo "Configuring for $system";;
157esac
158
159# Parse arguments
160while [ $# -gt 0 ]; do
161    arg=$1
162    val=
163    shift
164    case $arg in
165	*=*)
166	    val=`expr "x$arg" : 'x[^=]*=\(.*\)'`
167	    arg=`expr "x$arg" : 'x\([^=]*\)=.*'`
168	    ;;
169	--prefix|--sysconf)
170	    if [ $# -eq 0 ]; then
171		echo "error: the $arg argument requires a value" 1>&2
172		exit 1
173	    fi
174	    val=$1
175	    shift
176	    ;;
177    esac
178    case $arg in
179	--prefix)	DESTDIR=$val ;;
180	--sysconfdir)	SYSCONF=$val ;;
181    esac
182done
183
184mkmkf() {
185    rm -f $2
186    if [ -f $1 ]; then
187	echo "  $2 <= $1"
188	sed -e "s,@DESTDIR@,$DESTDIR,g" -e "s,@SYSCONF@,$SYSCONF,g" $1 >$2
189    fi
190}
191
192if [ -d "$ksrc" ]; then
193    echo "Creating Makefiles."
194    mkmkf $ksrc/Makefile.top Makefile
195    mkmkf $ksrc/Makedefs$compiletype Makedefs.com
196    for dir in pppd pppstats chat pppdump pppd/plugins pppd/plugins/rp-pppoe \
197	       pppd/plugins/radius pppd/plugins/pppoatm; do
198	mkmkf $dir/Makefile.$makext $dir/Makefile
199    done
200    if [ -f $ksrc/Makefile.$makext$archvariant ]; then
201	mkmkf $ksrc/Makefile.$makext$archvariant $ksrc/Makefile
202    fi
203else
204  echo "Unable to locate kernel source $ksrc"
205  exit 1
206fi
207