#! /bin/sh # # If these # comments don't work, trim them. Don't worry about any other # shell scripts, Configure will trim # comments from them for you. # # (If you are trying to port this package to a machine without sh, I would # suggest you cut out the prototypical config.h from the end of Configure # and edit it to reflect your system. Some packages may include samples # of config.h for certain machines, so you might look for one of those.) # # $Id: Head.U,v 2.11 90/09/17 17:04:47 hokey Exp Locker: hokey $ # # Yes, you may rip this off to use in other distribution packages. # (Note: this Configure script was generated automatically. Rather than # working with this copy of Configure, you may wish to get metaconfig.) : sanity checks PATH=".:$PATH:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc:/usr/new:/usr/new/bin:/usr/nbin" export PATH || (echo "OOPS, this isn't sh. Desperation time. I will feed myself to sh."; sh $0; kill $$) if test ! -t 0; then echo "Say 'sh Configure', not 'sh /dev/null 2>&1 && \ echo "(I see you are using the Korn shell. Some ksh's blow up on Configure," && \ echo "especially on exotic machines. If yours does, try the Bourne shell instead.)" if test ! -d ../UU; then if test ! -d UU; then mkdir UU fi cd UU fi case "$1" in -d) shift; fastread='yes';; esac kit_has_binaries='' d_eunice='' define='' eunicefix='' loclist='' expr='' sed='' echo='' cat='' rm='' mv='' cp='' tail='' tr='' mkdir='' sort='' uniq='' grep='' trylist='' test='' inews='' egrep='' more='' pg='' Mcc='' vi='' mailx='' mail='' cpp='' perl='' emacs='' ls='' rmail='' sendmail='' shar='' smail='' tbl='' troff='' nroff='' uname='' uuname='' line='' chgrp='' chmod='' lint='' sleep='' pr='' tar='' ln='' lpr='' lp='' touch='' make='' date='' csh='' bash='' ksh='' lex='' flex='' bison='' Log='' Header='' Id='' alignbytes='' bin='' installbin='' byteorder='' contains='' cppstdin='' cppminus='' d_bcmp='' d_bcopy='' d_bzero='' d_castneg='' castflags='' d_charsprf='' d_chsize='' d_crypt='' cryptlib='' d_csh='' d_dosuid='' d_dup2='' d_fchmod='' d_fchown='' d_fcntl='' d_flexfnam='' d_flock='' d_getgrps='' d_gethent='' d_getpgrp='' d_getpgrp2='' d_getprior='' d_htonl='' d_index='' d_killpg='' d_lstat='' d_memcmp='' d_memcpy='' d_mkdir='' d_msg='' d_msgctl='' d_msgget='' d_msgrcv='' d_msgsnd='' d_ndbm='' d_odbm='' d_open3='' d_readdir='' d_rename='' d_rmdir='' d_select='' d_sem='' d_semctl='' d_semget='' d_semop='' d_setegid='' d_seteuid='' d_setpgrp='' d_setpgrp2='' d_setprior='' d_setregid='' d_setresgid='' d_setreuid='' d_setresuid='' d_setrgid='' d_setruid='' d_shm='' d_shmat='' d_shmctl='' d_shmdt='' d_shmget='' d_socket='' d_sockpair='' d_oldsock='' socketlib='' d_statblks='' d_stdstdio='' d_strctcpy='' d_strerror='' d_symlink='' d_syscall='' d_truncate='' d_vfork='' d_voidsig='' d_tosignal='' d_volatile='' d_vprintf='' d_charvspr='' d_wait4='' d_waitpid='' gidtype='' i_fcntl='' i_gdbm='' i_grp='' i_niin='' i_sysin='' i_pwd='' d_pwquota='' d_pwage='' d_pwchange='' d_pwclass='' d_pwexpire='' d_pwcomment='' i_sys_file='' i_sysioctl='' i_time='' i_sys_time='' i_sys_select='' d_systimekernel='' i_utime='' i_varargs='' i_vfork='' intsize='' libc='' nm_opts='' libndir='' i_my_dir='' i_ndir='' i_sys_ndir='' i_dirent='' i_sys_dir='' d_dirnamlen='' ndirc='' ndiro='' mallocsrc='' mallocobj='' usemymalloc='' mansrc='' manext='' models='' split='' small='' medium='' large='' huge='' optimize='' ccflags='' cppflags='' ldflags='' cc='' libs='' n='' c='' package='' randbits='' scriptdir='' sig_name='' spitshell='' shsharp='' sharpbang='' startsh='' stdchar='' uidtype='' usrinclude='' inclPath='' void='' voidhave='' voidwant='' w_localtim='' w_s_timevl='' w_s_tm='' yacc='' lib='' privlib='' installprivlib='' CONFIG='' : get the name of the package package=perl : Here we go... echo " " echo "Beginning of configuration questions for $package kit." : Eunice requires " " instead of "", can you believe it echo " " define='define' undef='undef' : change the next line if compiling for Xenix/286 on Xenix/386 xlibpth='/usr/lib/386 /lib/386' libpth='/usr/ccs/lib /usr/lib /usr/ucblib /usr/local/lib /usr/lib/large /lib '$xlibpth' /lib/large /usr/lib/small /lib/small' smallmach='pdp11 i8086 z8000 i80286 iAPX286' trap 'echo " "; exit 1' 1 2 3 : We must find out about Eunice early eunicefix=':' if test -f /etc/unixtovms; then eunicefix=/etc/unixtovms fi if test -f /etc/unixtovms.exe; then eunicefix=/etc/unixtovms.exe fi kit_has_binaries=false attrlist="DGUX M_I186 M_I286 M_I386 M_I8086 M_XENIX UTS __DGUX__" attrlist="$attrlist __STDC__ __m88k__ ansi bsd4_2 gcos gimpel" attrlist="$attrlist hp9000s300 hp9000s500 hp9000s800 hpux" attrlist="$attrlist i186 i386 i8086 iAPX286 ibm interdata" attrlist="$attrlist m68k m88k mc300 mc500 mc68000 mc68k mc700 mert" attrlist="$attrlist ns16000 ns32000 nsc32000 os pdp11 posix pyr sinix" attrlist="$attrlist sparc sun tower tower32 tower32_600 tower32_800 tss" attrlist="$attrlist u3b2 u3b20 u3b200 u3b5 ultrix unix vax venix xenix" attrlist="$attrlist z8000" boPATH="" eoPATH="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /usr/plx /usr/5bin /vol/local/bin /etc /usr/lib /lib /usr/local/lib /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/bin /bsd4.3/usr/ucb /bsd43/usr/bin" d_newshome="/usr/NeWS" errnolist=errnolist h_fcntl=false h_sys_file=false serve_shm="" serve_msg="$undef" serve_inet_udp="" serve_inet_tcp="" serve_unix_udp="" serve_unix_tcp="" d_ndir=ndir voidwant=1 libswanted="net_s net nsl_s nsl socket nm ndir ndbm dbm sun m bsd BSD x c_s" inclwanted='/usr/include /usr/netinclude /usr/include/sun /usr/include/bsd /usr/include/lan' : Now test for existence of everything in MANIFEST echo "First let's make sure your kit is complete. Checking..." if $kit_has_binaries; then ( cd .. bad=false for i in `awk '$1 !~ /PACKINGLIST/ {print $1}' MANIFEST` do if test ! -f $i ; then echo Missing $i bad=true fi done if $bad; then kill $$ fi ) else (cd ..; awk '{}' `awk '$1 !~ /PACKINGLIST/ {print $1}' MANIFEST` >/dev/null || kill $$) fi echo "Looks good..." : some greps do not return status, grrr. echo "grimblepritz" >contains.txt if grep blurfldyick contains.txt >/dev/null 2>&1 ; then contains=contains elif grep grimblepritz contains.txt >/dev/null 2>&1 ; then contains=grep else contains=contains fi : the following should work in any shell case "$contains" in contains*) echo " " echo "AGH! Grep doesn't return a status. Attempting remedial action." cat >contains <<'EOSS' grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp EOSS chmod +x contains esac : see if sh knows # comments echo " " echo "Checking your sh to see if it knows about # comments..." if sh -c '#' >/dev/null 2>&1 ; then echo "Your sh handles # comments correctly." shsharp=true spitshell=cat echo " " echo "Okay, let's see if #! works on this system..." if test -f /bsd43/bin/echo; then echo "#!/bsd43/bin/echo hi" > spit.sh else echo "#!/bin/echo hi" > spit.sh fi $eunicefix spit.sh chmod +x spit.sh ./spit.sh > today if $contains hi today >/dev/null 2>&1; then echo "It does." sharpbang='#!' else echo "#! /bin/echo hi" > spit.sh $eunicefix spit.sh chmod +x spit.sh ./spit.sh > today if test -s today; then echo "It does." sharpbang='#! ' else echo "It doesn't." sharpbang=': use ' fi fi else echo "Your sh doesn't grok # comments--I will strip them later on." shsharp=false echo "exec grep -v '^#'" >spitshell chmod +x spitshell $eunicefix spitshell spitshell=`pwd`/spitshell echo "I presume that if # doesn't work, #! won't work either!" sharpbang=': use ' fi : figure out how to guarantee sh startup echo " " echo "Checking out how to guarantee sh startup..." startsh=$sharpbang'/bin/sh' echo "Let's see if '$startsh' works..." cat >start.sh <echotmp if $contains c echotmp >/dev/null 2>&1 ; then echo "...using -n." n='-n' c='' else cat <<'EOM' ...using \c EOM n='' c='\c' fi echo $n "Type carriage return to continue. Your cursor should be here-->$c" read ans : now set up to do reads with possible shell escape and default assignment cat <myread case "\$fastread" in yes) ans=''; echo " " ;; *) ans='!';; esac while expr "X\$ans" : "X!" >/dev/null; do read ans case "\$ans" in !) sh echo " " echo $n "\$rp $c" ;; !*) set \`expr "X\$ans" : "X!\(.*\)\$"\` sh -c "\$*" echo " " echo $n "\$rp $c" ;; esac done rp='Your answer:' case "\$ans" in '') ans="\$dflt";; esac EOSC : general instructions cat <loc $startsh case \$# in 0) exit 1;; esac thing=\$1 shift dflt=\$1 shift for dir in \$*; do case "\$thing" in .) if test -d \$dir/\$thing; then echo \$dir exit 0 fi ;; *) if test -f \$dir/\$thing; then echo \$dir/\$thing exit 0 elif test -f \$dir/\$thing.exe; then : on Eunice apparently echo \$dir/\$thing exit 0 fi ;; esac done echo \$dflt exit 1 EOSC chmod +x loc $eunicefix loc loclist=" cat cp echo expr grep mkdir mv rm sed sort tr uniq " trylist=" Mcc bison cpp csh egrep nroff test uname yacc " pth=`echo :$boPATH:$PATH:$eoPATH: | sed -e 's/:/ /g'` for file in $loclist; do xxx=`./loc $file $file $pth` eval $file=$xxx eval _$file=$xxx case "$xxx" in /*) echo $file is in $xxx. ;; *) echo "I don't know where $file is. I hope it's in everyone's PATH." ;; esac done echo " " echo "Don't worry if any of the following aren't found..." ans=offhand for file in $trylist; do xxx=`./loc $file $file $pth` eval $file=$xxx eval _$file=$xxx case "$xxx" in /*) echo $file is in $xxx. ;; *) echo "I don't see $file out there, $ans." ans=either ;; esac done case "$egrep" in egrep) echo "Substituting grep for egrep." egrep=$grep ;; esac case "$test" in test) echo "Hopefully test is built into your sh." ;; /bin/test) if sh -c "PATH= test true" >/dev/null 2>&1; then echo "Using the test built into your sh." test=test fi ;; *) test=test ;; esac case "$echo" in echo) echo "Hopefully echo is built into your sh." ;; /bin/echo) echo " " echo "Checking compatibility between /bin/echo and builtin echo (if any)..." $echo $n "hi there$c" >Loc1.txt echo $n "hi there$c" >Loc2.txt if cmp Loc1.txt Loc2.txt >/dev/null 2>&1; then echo "They are compatible. In fact, they may be identical." else case "$n" in '-n') n='' c='\c' ans='\c' ;; *) n='-n' c='' ans='-n' ;; esac cat <filexp <&2 exit 1 fi case "\$1" in */*) echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\` ;; *) echo \$dir ;; esac fi ;; *) echo \$1 ;; esac EOSS chmod +x filexp $eunicefix filexp : determine where manual pages go $cat <usrinclude.c <<'EOCP' #ifdef SYSTYPE_BSD43 /bsd43 #endif EOCP if cc -E usrinclude.c > usrinclude.out && $contains / usrinclude.out >/dev/null 2>&1 ; then echo "and you're compiling with the BSD43 compiler and libraries." dflt='/bsd43/usr/include' inclPath='/bsd43' else echo "and you're compiling with the SysV compiler and libraries." fi else echo "Doesn't look like a MIPS system." echo "exit 1" >mips chmod +x mips $eunicefix mips fi cont=true while $test "$cont" ; do echo " " rp="Where are the include files you want to use? [$dflt]" $echo $n "$rp $c" . myread usrinclude="$ans" if $test -d $ans; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi rp="Directory $ans doesn't exist. Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi done : make some quick guesses about what we are up against echo " " cat $usrinclude/signal.h $usrinclude/sys/signal.h >guess.txt 2>/dev/null if test "$usrinclude" = "/bsd43/usr/include" ; then echo "Looks kind of like a SysV MIPS running BSD, but we'll see..." echo exit 0 >bsd echo exit 1 >usg echo exit 1 >v7 elif test `echo abc | tr a-z A-Z` = Abc ; then echo "Looks kind of like a USG system, but we'll see..." echo exit 1 >bsd echo exit 0 >usg echo exit 1 >v7 elif $contains SIGTSTP guess.txt >/dev/null 2>&1 ; then echo "Looks kind of like a BSD system, but we'll see..." echo exit 0 >bsd echo exit 1 >usg echo exit 1 >v7 else echo "Looks kind of like a version 7 system, but we'll see..." echo exit 1 >bsd echo exit 1 >usg echo exit 0 >v7 fi case "$eunicefix" in *unixtovms*) cat <<'EOI' There is, however, a strange, musty smell in the air that reminds me of something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. EOI echo "exit 0" >eunice d_eunice="$define" ;; *) echo " " echo "Congratulations. You aren't running Eunice." d_eunice="$undef" echo "exit 1" >eunice ;; esac if test -f /xenix; then echo "Actually, this looks more like a XENIX system..." echo "exit 0" >xenix else echo " " echo "It's not Xenix..." echo "exit 1" >xenix fi chmod +x xenix $eunicefix xenix if test -f /venix; then echo "Actually, this looks more like a VENIX system..." echo "exit 0" >venix else echo " " if xenix; then : null else echo "Nor is it Venix..." fi echo "exit 1" >venix fi chmod +x bsd usg v7 eunice venix $eunicefix bsd usg v7 eunice venix : see what memory models we can support case "$models" in '') : We may not use Cppsym or we get a circular dependency through cc. : But this should work regardless of which cc we eventually use. cat >pdp11.c <<'EOP' main() { #ifdef pdp11 exit(0); #else exit(1); #endif } EOP cc -o pdp11 pdp11.c >/dev/null 2>&1 if pdp11 2>/dev/null; then dflt='unsplit split' else ans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge` case "$ans" in X) dflt='none';; *) if $test -d /lib/small || $test -d /usr/lib/small; then dflt='small' else dflt='' fi if $test -d /lib/medium || $test -d /usr/lib/medium; then dflt="$dflt medium" fi if $test -d /lib/large || $test -d /usr/lib/large; then dflt="$dflt large" fi if $test -d /lib/huge || $test -d /usr/lib/huge; then dflt="$dflt huge" fi esac fi ;; *) dflt="$models" ;; esac $cat </dev/null 2>&1 || \ $contains '\-i' $mansrc/man1/cc.1 >/dev/null 2>&1; then dflt='-i' else dflt='none' fi ;; *) dflt="$split";; esac rp="What flag indicates separate I and D space? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in none) ans='';; esac split="$ans" unsplit='' ;; *large*|*small*|*medium*|*huge*) case "$models" in *large*) case "$large" in '') dflt='-Ml';; *) dflt="$large";; esac rp="What flag indicates large model? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in none) ans=''; esac large="$ans" ;; *) large='';; esac case "$models" in *huge*) case "$huge" in '') dflt='-Mh';; *) dflt="$huge";; esac rp="What flag indicates huge model? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in none) ans=''; esac huge="$ans" ;; *) huge="$large";; esac case "$models" in *medium*) case "$medium" in '') dflt='-Mm';; *) dflt="$medium";; esac rp="What flag indicates medium model? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in none) ans=''; esac medium="$ans" ;; *) medium="$large";; esac case "$models" in *small*) case "$small" in '') dflt='none';; *) dflt="$small";; esac rp="What flag indicates small model? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in none) ans=''; esac small="$ans" ;; *) small='';; esac ;; *) echo "Unrecognized memory models--you may have to edit Makefile.SH" ;; esac : see if we need a special compiler echo " " if usg; then case "$cc" in '') case "$Mcc" in /*) dflt='Mcc' ;; *) case "$large" in -M*) dflt='cc' ;; *) if $contains '\-M' $mansrc/cc.1 >/dev/null 2>&1 ; then dflt='cc -M' else dflt='cc' fi ;; esac ;; esac ;; *) dflt="$cc";; esac $cat <<'EOM' On some systems the default C compiler will not resolve multiple global references that happen to have the same name. On some such systems the "Mcc" command may be used to force these to be resolved. On other systems a "cc -M" command is required. (Note that the -M flag on other systems indicates a memory model to use!) If you have the Gnu C compiler, you might wish to use that instead. What command will force resolution on EOM $echo $n "this system? [$dflt] $c" rp="Command to resolve multiple refs? [$dflt]" . myread cc="$ans" else case "$cc" in '') dflt=cc;; *) dflt="$cc";; esac rp="Use which C compiler? [$dflt]" $echo $n "$rp $c" . myread cc="$ans" fi case "$cc" in gcc*) cpp=`./loc gcc-cpp $cpp $pth`;; esac : determine optimize, if desired, or use for debug flag also case "$optimize" in ' ') dflt="none" ;; '') dflt="-O"; ;; *) dflt="$optimize" ;; esac cat </dev/null 2>&1; then case "$dflt" in *LANGUAGE_C*);; *) dflt="$dflt -DLANGUAGE_C";; esac fi case "$dflt" in '') dflt=none;; esac cat <try.c <<'EOCP' struct foobar { char foo; double bar; } try; main() { printf("%d\n", (char*)&try.bar - (char*)&try.foo); } EOCP if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then dflt=`./try` else dflt='?' echo "(I can't seem to compile the test program...)" fi ;; *) dflt="$alignbytes" ;; esac rp="Doubles must be aligned on a how-many-byte boundary? [$dflt]" $echo $n "$rp $c" . myread alignbytes="$ans" $rm -f try.c try : determine where public executables go cat <byteorder.c <<'EOCP' #include main() { int i; union { unsigned long l; char c[sizeof(long)]; } u; if (sizeof(long) > 4) u.l = (0x08070605 << 32) | 0x04030201; else u.l = 0x04030201; for (i=0; i < sizeof(long); i++) printf("%c",u.c[i]+'0'); printf("\n"); } EOCP if $cc byteorder.c -o byteorder >/dev/null 2>&1 ; then dflt=`./byteorder` case "$dflt" in ????|????????) echo "(The test program ran ok.)";; *) echo "(The test program didn't run right for some reason.)";; esac else dflt='4321' echo "(I can't seem to compile the test program. Guessing big-endian...)" fi ;; *) echo " " dflt="$byteorder" ;; esac rp="What is the order of bytes in a long? [$dflt]" $echo $n "$rp $c" . myread byteorder="$ans" : check for ability to cast negative floats to unsigned echo " " echo 'Checking to see if your C compiler can cast weird floats to unsigned' $cat >try.c <<'EOCP' #include main() { double f = -123; unsigned long along; unsigned int aint; unsigned short ashort; int result = 0; signal(SIGFPE, SIG_IGN); along = (unsigned long)f; aint = (unsigned int)f; ashort = (unsigned short)f; if (along != (unsigned long)-123) result |= 1; if (aint != (unsigned int)-123) result |= 1; if (ashort != (unsigned short)-123) result |= 1; f = (double)0x40000000; f = f + f; along = 0; along = (unsigned long)f; if (along != 0x80000000) result |= 2; f -= 1; along = 0; along = (unsigned long)f; if (along != 0x7fffffff) result |= 1; f += 2; along = 0; along = (unsigned long)f; if (along != 0x80000001) result |= 2; exit(result); } EOCP if $cc -o try $ccflags try.c >/dev/null 2>&1; then ./try castflags=$? else castflags=3 fi case "$castflags" in 0) d_castneg="$define" echo "Yup, it does." ;; *) d_castneg="$undef" echo "Nope, it doesn't." ;; esac $rm -f try.* : see how we invoke the C preprocessor echo " " echo "Now, how can we feed standard input to your C preprocessor..." cat <<'EOT' >testcpp.c #define ABC abc #define XYZ xyz ABC.XYZ EOT echo 'Maybe "'"$cc"' -E" will work...' $cc -E testcpp.out 2>&1 : try to force gcc preprocessor if that is the compiler they are using case $? in 0) cppstdin="$cc -E";; *) case "$cc" in *gcc*) cd .. echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)' echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin chmod 755 cppstdin cppstdin=`pwd`/cppstdin cppminus=''; cd UU $cppstdin testcpp.out 2>&1 ;; esac ;; esac if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then echo "Yup, it does." cppstdin="$cc -E" cppminus=''; else echo 'Nope...maybe "'"$cc"' -E -" will work...' $cc -E - testcpp.out 2>&1 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then echo "Yup, it does." cppstdin="$cc -E" cppminus='-'; else echo 'No such luck, maybe "'$cpp'" will work...' $cpp testcpp.out 2>&1 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then echo "It works!" cppstdin="$cpp" cppminus=''; else echo 'Nixed again...maybe "'$cpp' -" will work...' $cpp - testcpp.out 2>&1 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then echo "Hooray, it works! I was beginning to wonder." cppstdin="$cpp" cppminus='-'; else echo 'Nope...maybe "'"$cc"' -P" will work...' $cc -P testcpp.out 2>&1 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then echo "Yup, that does." cppstdin="$cc -P" cppminus=''; else echo 'Nope...maybe "'"$cc"' -P -" will work...' $cc -P - testcpp.out 2>&1 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then echo "Yup, that does." cppstdin="$cc -P" cppminus='-'; else echo 'Hmm...perhaps you already told me...' case "$cppstdin" in '') ;; *) $cppstdin $cppminus testcpp.out 2>&1;; esac if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then echo "Hooray, you did! I was beginning to wonder." else echo 'Uh-uh. Time to get fancy...' cd .. echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)' echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin chmod 755 cppstdin cppstdin=`pwd`/cppstdin cppminus=''; cd UU $cppstdin testcpp.out 2>&1 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then echo "Eureka!." else dflt=blurfl $echo $n "No dice. I can't find a C preprocessor. Name one: $c" rp='Name a C preprocessor:' . myread cppstdin="$ans" $cppstdin testcpp.out 2>&1 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then echo "OK, that will do." else echo "Sorry, I can't get that to work. Go find one." exit 1 fi fi fi fi fi fi fi fi fi : get list of predefined functions in a handy place echo " " case "$libc" in '') libc=unknown;; esac case "$nm_opts" in '') if test -f /mach_boot; then nm_opts='' elif test -d /usr/ccs/lib; then nm_opts='-p' else nm_opts='' fi ;; esac : on mips, we DO NOT want /lib, and we want inclPath/usr/lib case "$libpth" in '') if mips; then libpth='$inclPath/usr/lib /usr/local/lib' nm_opts="-B" else libpth='/usr/ccs/lib /lib /usr/lib /usr/ucblib /usr/local/lib' fi ;; esac case "$libs" in *-lc_s*) libc=`./loc libc_s.a $libc $libpth` esac libnames=''; case "$libs" in '') ;; *) for thislib in $libs; do case "$thislib" in -l*) thislib=`expr X$thislib : 'X-l\(.*\)'` try=`./loc lib$thislib.a blurfl/dyick $libpth` if test ! -f $try; then try=`./loc lib$thislib blurfl/dyick $libpth` if test ! -f $try; then try=`./loc $thislib blurfl/dyick $libpth` if test ! -f $try; then try=`./loc Slib$thislib.a blurfl/dyick $xlibpth` if test ! -f $try; then try='' fi fi fi fi libnames="$libnames $try" ;; *) libnames="$libnames $thislib" ;; esac done ;; esac set /usr/ccs/lib/libc.so test -f $1 || set /usr/lib/libc.so test -f $1 || set /usr/lib/libc.so.[0-9]* test -f $1 || set /lib/libsys_s.a eval set \$$# if test -f "$1"; then echo "Your shared C library is in $1." libc="$1" elif test -f $libc; then echo "Your C library is in $libc, like you said before." elif test -f /lib/libc.a; then echo "Your C library is in /lib/libc.a. You're normal." libc=/lib/libc.a else if ans=`./loc libc.a blurfl/dyick $libpth`; test -f "$ans"; then : elif ans=`./loc libc blurfl/dyick $libpth`; test -f "$ans"; then libnames="$libnames "`./loc clib blurfl/dyick $libpth` elif ans=`./loc clib blurfl/dyick $libpth`; test -f "$ans"; then : elif ans=`./loc Slibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then : elif ans=`./loc Mlibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then : elif ans=`./loc Llibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then : fi if test -f "$ans"; then echo "Your C library is in $ans, of all places." libc=$ans else cat </dev/null >libc.tmp $sed -n -e 's/^.* [ATDS] *[_.]*//p' -e 's/^.* [ATDS] //p' libc.list if $contains '^printf$' libc.list >/dev/null 2>&1; then echo done elif $sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p' \ libc.list; \ $contains '^printf$' libc.list >/dev/null 2>&1; then echo done elif $sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p' libc.list; \ $contains '^printf$' libc.list >/dev/null 2>&1; then echo done elif $sed -n -e 's/^.* D __*//p' -e 's/^.* D //p' libc.list; \ $contains '^printf$' libc.list >/dev/null 2>&1; then echo done elif $sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p' \ libc.list; \ $contains '^printf$' libc.list >/dev/null 2>&1; then echo done elif $grep '|' libc.list $contains '^printf$' libc.list >/dev/null 2>&1; then echo done elif $sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p' \ libc.list; \ $contains '^printf$' libc.list >/dev/null 2>&1; then echo done else nm -p $* 2>/dev/null >libc.tmp $sed -n -e 's/^.* [AT] *_[_.]*//p' -e 's/^.* [AT] //p' libc.list if $contains '^printf$' libc.list >/dev/null 2>&1; then nm_opts='-p' echo "done" else echo " " echo "nm didn't seem to work right." echo "Trying ar instead..." if ar t $libc > libc.tmp; then for thisname in $libnames; do ar t $thisname >>libc.tmp done $sed -e 's/\.o$//' < libc.tmp > libc.list echo "Ok." else echo "ar didn't seem to work right." echo "Maybe this is a Cray...trying bld instead..." if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list; then for thisname in $libnames; do bld t $libnames | \ $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list ar t $thisname >>libc.tmp done echo "Ok." else echo "That didn't work either. Giving up." exit 1 fi fi fi fi inlibc='echo " "; if $contains "^$1\$" libc.list >/dev/null 2>&1; then echo "$1() found"; eval "$2=$define"; else echo "$1() not found"; eval "$2=$undef"; fi' : see if bcmp exists set bcmp d_bcmp eval $inlibc : see if bcopy exists set bcopy d_bcopy eval $inlibc : see if bzero exists set bzero d_bzero eval $inlibc : see if sprintf is declared as int or pointer to char echo " " cat >ucbsprf.c <<'EOF' main() { char buf[10]; exit((unsigned long)sprintf(buf,"%s","foo") > 10L); } EOF if $cc $ccflags ucbsprf.c -o ucbsprf >/dev/null 2>&1 && ./ucbsprf; then echo "Your sprintf() returns (int)." d_charsprf="$undef" else echo "Your sprintf() returns (char*)." d_charsprf="$define" fi : see if vprintf exists echo " " if $contains '^vprintf$' libc.list >/dev/null 2>&1; then echo 'vprintf() found.' d_vprintf="$define" cat >vprintf.c <<'EOF' #include main() { xxx("foo"); } xxx(va_alist) va_dcl { va_list args; char buf[10]; va_start(args); exit((unsigned long)vsprintf(buf,"%s",args) > 10L); } EOF if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then echo "Your vsprintf() returns (int)." d_charvspr="$undef" else echo "Your vsprintf() returns (char*)." d_charvspr="$define" fi else echo 'vprintf() not found.' d_vprintf="$undef" d_charvspr="$undef" fi : see if chsize exists set chsize d_chsize eval $inlibc : see if crypt exists echo " " if $contains '^crypt$' libc.list >/dev/null 2>&1; then echo 'crypt() found.' d_crypt="$define" cryptlib='' else cryptlib=`./loc Slibcrypt.a "" $xlibpth` if $test -z "$cryptlib"; then cryptlib=`./loc Mlibcrypt.a "" $xlibpth` else cryptlib=-lcrypt fi if $test -z "$cryptlib"; then cryptlib=`./loc Llibcrypt.a "" $xlibpth` else cryptlib=-lcrypt fi if $test -z "$cryptlib"; then cryptlib=`./loc libcrypt.a "" $libpth` else cryptlib=-lcrypt fi if $test -z "$cryptlib"; then echo 'crypt() not found.' d_crypt="$undef" else d_crypt="$define" fi fi : get csh whereabouts case "$csh" in 'csh') d_csh="$undef" ;; *) d_csh="$define" ;; esac : see if readdir exists set readdir d_readdir eval $inlibc : see if there are directory access routines out there echo " " xxx=`./loc ndir.h x $usrinclude /usr/local/include $inclwanted` case "$xxx" in x) xxx=`./loc sys/ndir.h x $usrinclude /usr/local/include $inclwanted` ;; esac d_dirnamlen="$undef" i_dirent="$undef" i_sys_dir="$undef" i_my_dir="$undef" i_ndir="$undef" i_sys_ndir="$undef" libndir='' ndirc='' ndiro='' if $test -r $usrinclude/dirent.h; then echo "dirent.h found." if $contains 'd_namlen' $usrinclude/dirent.h >/dev/null 2>&1; then d_dirnamlen="$define" fi i_dirent="$define" elif $test -r $xxx; then echo "You seem to use <$xxx>," if $test "$d_readdir" = "$define"; then echo "and I can get readdir() from your C library." elif $test -r /usr/lib/libndir.a || $test -r /usr/local/lib/libndir.a; then echo "and I'll get the routines using -lndir ." libndir='-lndir' else ans=`./loc libndir.a x $libpth` case "$ans" in x) echo "but I can't find the ndir library!" ;; *) echo "and I found the directory library in $ans." libndir="$ans" ;; esac fi if $contains 'd_namlen' $xxx >/dev/null 2>&1; then d_dirnamlen="$define" fi case "$xxx" in sys/) i_sys_ndir="$define" ;; *) i_ndir="$define" ;; esac else # The next line used to require this to be a bsd system. if $contains '^readdir$' libc.list >/dev/null 2>&1 ; then echo "No ndir library found, but you have readdir() so we'll use that." if $contains 'd_namlen' $usrinclude/sys/dir.h >/dev/null 2>&1; then d_dirnamlen="$define" fi i_sys_dir="$define" else echo "No ndir library found--using ./$d_ndir.c." # This will lose since $d_ndir.h is in another directory. # I doubt we can rely on it being in ../$d_ndir.h . # At least it will fail in a conservative manner. if $contains 'd_namlen' $d_ndir.h >/dev/null 2>&1; then d_dirnamlen="$define" fi i_my_dir="$define" ndirc="$d_ndir.c" ndiro="$d_ndir.o" fi fi : now see if they want to do setuid emulation case "$d_dosuid" in '') dflt=n;; *undef*) dflt=n;; *) dflt=y;; esac cat <123456789abcdef) 2>/dev/null; then : not version 8 if test -f 123456789abcde; then echo 'You cannot have filenames longer than 14 characters. Sigh.' d_flexfnam="$undef" else echo 'You can have filenames longer than 14 characters.' d_flexfnam="$define" fi else : version 8 probably echo "You can't have filenames longer than 14 chars. V8 can't even think about them!" d_flexfnam="$undef" fi : see if flock exists set flock d_flock eval $inlibc : see if getgroups exists set getgroups d_getgrps eval $inlibc : see if gethostent exists set gethostent d_gethent eval $inlibc : see if getpgrp exists set getpgrp d_getpgrp eval $inlibc : see if getpgrp2 exists set getpgrp2 d_getpgrp2 eval $inlibc : see if getpriority exists set getpriority d_getprior eval $inlibc : see if htonl exists set htonl d_htonl eval $inlibc : index or strcpy echo " " case "$d_index" in n) dflt=n;; *) dflt=y;; esac if $contains '^index$' libc.list >/dev/null 2>&1 ; then if $contains '^strchr$' libc.list >/dev/null 2>&1 ; then echo "Your system has both index() and strchr(). Shall I use" rp="index() rather than strchr()? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in n*) d_index="$define" ;; *) d_index="$undef" ;; esac else d_index="$undef" echo "index() found." fi else if $contains '^strchr$' libc.list >/dev/null 2>&1 ; then d_index="$define" echo "strchr() found." else echo "No index() or strchr() found!" d_index="$undef" fi fi : see if killpg exists set killpg d_killpg eval $inlibc : see if lstat exists set lstat d_lstat eval $inlibc : see if memcmp exists set memcmp d_memcmp eval $inlibc : see if memcpy exists set memcpy d_memcpy eval $inlibc : see if mkdir exists set mkdir d_mkdir eval $inlibc : see if msgctl exists set msgctl d_msgctl eval $inlibc : see if msgget exists set msgget d_msgget eval $inlibc : see if msgsnd exists set msgsnd d_msgsnd eval $inlibc : see if msgrcv exists set msgrcv d_msgrcv eval $inlibc : see how much of the 'msg*(2)' library is present. h_msg=true echo " " case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in *undef*) h_msg=false;; esac : we could also check for sys/ipc.h ... if $h_msg && $test -r $usrinclude/sys/msg.h; then echo "You have the full msg*(2) library." d_msg="$define" else echo "You don't have the full msg*(2) library." d_msg="$undef" fi : see if ndbm is available echo " " xxx=`./loc ndbm.h x $usrinclude /usr/local/include $inclwanted` if test -f $xxx; then d_ndbm="$define" echo "ndbm.h found." else d_ndbm="$undef" echo "ndbm.h not found." fi : see if we have the old dbm echo " " xxx=`./loc dbm.h x $usrinclude /usr/local/include $inclwanted` if test -f $xxx; then d_odbm="$define" echo "dbm.h found." else d_odbm="$undef" echo "dbm.h not found." fi : see whether socket exists echo " " socketlib='' if $contains socket libc.list >/dev/null 2>&1; then echo "Looks like you have Berkeley networking support." d_socket="$define" : now check for advanced features if $contains setsockopt libc.list >/dev/null 2>&1; then d_oldsock="$undef" else echo "...but it uses the old 4.1c interface, rather than 4.2" d_oldsock="$define" fi else : hpux, for one, puts all the socket stuff in socklib.o if $contains socklib libc.list >/dev/null 2>&1; then echo "Looks like you have Berkeley networking support." d_socket="$define" : we will have to assume that it supports the 4.2 BSD interface d_oldsock="$undef" else echo "Hmmm...you don't have Berkeley networking in libc.a..." : look for an optional networking library if test -f /usr/lib/libnet.a; then (ar t /usr/lib/libnet.a || nm -g /usr/lib/libnet.a) 2>/dev/null >> libc.list if $contains socket libc.list >/dev/null 2>&1; then echo "but the Wollongong group seems to have hacked it in." socketlib="-lnet -lnsl_s" d_socket="$define" : now check for advanced features if $contains setsockopt libc.list >/dev/null 2>&1; then d_oldsock="$undef" else echo "...using the old 4.1c interface, rather than 4.2" d_oldsock="$define" fi else echo "or even in libnet.a, which is peculiar." d_socket="$undef" d_oldsock="$undef" fi else echo "or anywhere else I see." d_socket="$undef" d_oldsock="$undef" fi fi fi if $contains socketpair libc.list >/dev/null 2>&1; then d_sockpair="$define" else d_sockpair="$undef" fi : Locate the flags for 'open()' echo " " $cat >open3.c <<'EOCP' #include #ifdef I_FCNTL #include #endif #ifdef I_SYS_FILE #include #endif main() { if(O_RDONLY); #ifdef O_TRUNC exit(0); #else exit(1); #endif } EOCP : check sys/file.h first to get FREAD on Sun if $test -r $usrinclude/sys/file.h && \ $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then h_sys_file=true; echo "sys/file.h defines the O_* constants..." if ./open3; then echo "and you have the 3 argument form of open()." d_open3="$define" else echo "but not the 3 argument form of open(). Oh, well." d_open3="$undef" fi elif $test -r $usrinclude/fcntl.h && \ $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then h_fcntl=true; echo "fcntl.h defines the O_* constants..." if ./open3; then echo "and you have the 3 argument form of open()." d_open3="$define" else echo "but not the 3 argument form of open(). Oh, well." d_open3="$undef" fi else d_open3="$undef" echo "I can't find the O_* constant definitions! You got problems." fi : see if how pwd stuff is defined echo " " if $test -r $usrinclude/pwd.h ; then i_pwd="$define" echo "pwd.h found." $cppstdin $cppflags <$usrinclude/pwd.h >pwd.txt if $contains 'pw_quota' pwd.txt >/dev/null 2>&1; then d_pwquota="$define" else d_pwquota="$undef" fi if $contains 'pw_age' pwd.txt >/dev/null 2>&1; then d_pwage="$define" else d_pwage="$undef" fi if $contains 'pw_change' pwd.txt >/dev/null 2>&1; then d_pwchange="$define" else d_pwchange="$undef" fi if $contains 'pw_class' pwd.txt >/dev/null 2>&1; then d_pwclass="$define" else d_pwclass="$undef" fi if $contains 'pw_expire' pwd.txt >/dev/null 2>&1; then d_pwexpire="$define" else d_pwexpire="$undef" fi if $contains 'pw_comment' pwd.txt >/dev/null 2>&1; then d_pwcomment="$define" else d_pwcomment="$undef" fi else i_pwd="$undef" d_pwquota="$undef" d_pwage="$undef" d_pwchange="$undef" d_pwclass="$undef" d_pwexpire="$undef" d_pwcomment="$undef" echo "No pwd.h found." fi : see if rename exists set rename d_rename eval $inlibc : see if rmdir exists set rmdir d_rmdir eval $inlibc : see if select exists set select d_select eval $inlibc : see if semctl exists set semctl d_semctl eval $inlibc : see if semget exists set semget d_semget eval $inlibc : see if semop exists set semop d_semop eval $inlibc : see how much of the 'sem*(2)' library is present. h_sem=true echo " " case "$d_semctl$d_semget$d_semop" in *undef*) h_sem=false;; esac : we could also check for sys/ipc.h ... if $h_sem && $test -r $usrinclude/sys/sem.h; then echo "You have the full sem*(2) library." d_sem="$define" else echo "You don't have the full sem*(2) library." d_sem="$undef" fi : see if setegid exists set setegid d_setegid eval $inlibc : see if seteuid exists set seteuid d_seteuid eval $inlibc : see if setpgrp exists set setpgrp d_setpgrp eval $inlibc : see if setpgrp2 exists set setpgrp2 d_setpgrp2 eval $inlibc : see if setpriority exists set setpriority d_setprior eval $inlibc : see if setregid exists set setregid d_setregid eval $inlibc set setresgid d_setresgid eval $inlibc : see if setreuid exists set setreuid d_setreuid eval $inlibc set setresuid d_setresuid eval $inlibc : see if setrgid exists set setrgid d_setrgid eval $inlibc : see if setruid exists set setruid d_setruid eval $inlibc : see if shmctl exists set shmctl d_shmctl eval $inlibc : see if shmget exists set shmget d_shmget eval $inlibc : see if shmat exists set shmat d_shmat eval $inlibc : see if shmdt exists set shmdt d_shmdt eval $inlibc : see how much of the 'shm*(2)' library is present. h_shm=true echo " " case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in *undef*) h_shm=false;; esac : we could also check for sys/ipc.h ... if $h_shm && $test -r $usrinclude/sys/shm.h; then echo "You have the full shm*(2) library." d_shm="$define" else echo "You don't have the full shm*(2) library." d_shm="$undef" fi : see if stat knows about block sizes echo " " if $contains 'st_blocks;' $usrinclude/sys/stat.h >/dev/null 2>&1 ; then if $contains 'st_blksize;' $usrinclude/sys/stat.h >/dev/null 2>&1 ; then echo "Your stat knows about block sizes." d_statblks="$define" else echo "Your stat doesn't know about block sizes." d_statblks="$undef" fi else echo "Your stat doesn't know about block sizes." d_statblks="$undef" fi : see if stdio is really std echo " " if $contains 'char.*_ptr.*;' $usrinclude/stdio.h >/dev/null 2>&1 ; then if $contains '_cnt;' $usrinclude/stdio.h >/dev/null 2>&1 ; then echo "Your stdio is pretty std." d_stdstdio="$define" else echo "Your stdio isn't very std." d_stdstdio="$undef" fi else echo "Your stdio isn't very std." d_stdstdio="$undef" fi : check for structure copying echo " " echo "Checking to see if your C compiler can copy structs..." $cat >strctcpy.c <<'EOCP' main() { struct blurfl { int dyick; } foo, bar; foo = bar; } EOCP if $cc -c strctcpy.c >/dev/null 2>&1 ; then d_strctcpy="$define" echo "Yup, it can." else d_strctcpy="$undef" echo "Nope, it can't." fi : see if strerror exists set strerror d_strerror eval $inlibc : see if symlink exists set symlink d_symlink eval $inlibc : see if syscall exists set syscall d_syscall eval $inlibc : set if package uses struct tm w_s_tm=1 : set if package uses struct timeval w_s_timevl=1 : set if package uses localtime function w_localtim=1 : see which of time.h, sys/time.h, and sys/select should be included. idefs='' cat <<'EOM' Testing to see which of , , and should be included, because this application wants: EOM case "$w_s_itimer" in 1) echo " struct itimerval" idefs="-DS_ITIMERVAL $idefs" ;; esac case "$w_s_timevl" in 1) echo " struct timeval" idefs="-DS_TIMEVAL $idefs" ;; esac case "$w_s_tm" in 1) echo " struct tm" idefs="-DS_TM $idefs" ;; esac case "$w_localtim" in 1) echo " ctime(3) declarations" idefs="-DD_CTIME $idefs" ;; esac case "$idefs" in '') echo " (something I don't know about)" ;; esac echo " " echo "I'm now running the test program..." $cat >i_time.c <<'EOCP' #include #ifdef I_TIME #include #endif #ifdef I_SYS_TIME #ifdef SYSTIMEKERNEL #define KERNEL #endif #include #endif #ifdef I_SYS_SELECT #include #endif main() { struct tm foo; struct tm *tmp; #ifdef S_TIMEVAL struct timeval bar; #endif #ifdef S_ITIMERVAL struct itimerval baz; #endif if (foo.tm_sec == foo.tm_sec) exit(0); #ifdef S_TIMEVAL if (bar.tv_sec == bar.tv_sec) exit(0); #endif #ifdef S_ITIMERVAL if (baz.it_interval == baz.it_interval) exit(0); #endif #ifdef S_TIMEVAL if (bar.tv_sec == bar.tv_sec) exit(0); #endif #ifdef D_CTIME /* this might not do anything for us... */ tmp = localtime((time_t *)0); #endif exit(1); } EOCP flags='' for i_sys_select in '' '-DI_SYS_SELECT'; do for d_systimekernel in '' '-DSYSTIMEKERNEL'; do for i_time in '' '-DI_TIME'; do for i_systime in '-DI_SYS_TIME' ''; do case "$flags" in '') echo Trying $i_time $i_systime $d_systimekernel $i_sys_select if $cc $ccflags i_time.c $idefs \ $i_time $i_systime $d_systimekernel $i_sys_select \ -o i_time >/dev/null 2>&1 ; then set X $i_time $i_systime $d_systimekernel $i_sys_select shift flags="$*" echo Succeeded with $flags fi ;; esac done done done done case "$flags" in *SYSTIMEKERNEL*) d_systimekernel="$define";; *) d_systimekernel="$undef";; esac case "$flags" in *I_TIME*) i_time="$define";; *) i_time="$undef";; esac case "$flags" in *I_SYS_SELECT*) i_sys_select="$define";; *) i_sys_select="$undef";; esac case "$flags" in *I_SYS_TIME*) i_sys_time="$define";; *) i_sys_time="$undef";; esac : see if signal is declared as pointer to function returning int or void echo " " $cppstdin $cppflags $cppminus < $usrinclude/signal.h >d_voidsig.txt if $contains 'void.*signal' d_voidsig.txt >/dev/null 2>&1 ; then echo "You have void (*signal())() instead of int." d_voidsig="$define" else echo "You have int (*signal())() instead of void." d_voidsig="$undef" fi : see if truncate exists set truncate d_truncate eval $inlibc : see if there is a vfork set vfork d_vfork eval $inlibc : check for volatile keyword echo " " echo 'Checking to see if your C compiler knows about "volatile"...' $cat >try.c <<'EOCP' main() { typedef unsigned short foo_t; char *volatile foo; volatile int bar; volatile foo_t blech; foo = foo; } EOCP if $cc -c $ccflags try.c >/dev/null 2>&1 ; then d_volatile="$define" echo "Yup, it does." else d_volatile="$undef" echo "Nope, it doesn't." fi $rm -f try.* : see if there is a wait4 set wait4 d_wait4 eval $inlibc : see if there is a waitpid set waitpid d_waitpid eval $inlibc : see what type gids are declared as in the kernel echo " " case "$gidtype" in '') if $contains 'getgroups.*short' /usr/lib/lint/llib-lc >/dev/null 2>&1; then dflt='short' elif $contains 'getgroups.*int' /usr/lib/lint/llib-lc >/dev/null 2>&1; then dflt='int' elif $contains 'gid_t;' $usrinclude/sys/types.h >/dev/null 2>&1 ; then dflt='gid_t' else set `grep 'groups\[NGROUPS\];' $usrinclude/sys/user.h 2>/dev/null` unsigned short case $1 in unsigned) dflt="$1 $2" ;; *) dflt="$1" ;; esac fi ;; *) dflt="$gidtype" ;; esac cont=true echo "(The following only matters if you have getgroups().)" rp="What type are the group ids returned by getgroups()? [$dflt]" $echo $n "$rp $c" . myread gidtype="$ans" : check for length of integer echo " " case "$intsize" in '') echo "Checking to see how big your integers are..." $cat >intsize.c <<'EOCP' #include main() { printf("%d\n", sizeof(int)); } EOCP if $cc intsize.c -o intsize >/dev/null 2>&1 ; then dflt=`./intsize` else dflt='4' echo "(I can't seem to compile the test program. Guessing...)" fi ;; *) dflt="$intsize" ;; esac rp="What is the size of an integer (in bytes)? [$dflt]" $echo $n "$rp $c" . myread intsize="$ans" : determine where private executables go case "$privlib" in '') dflt=/usr/lib/$package test -d /usr/local/lib && dflt=/usr/local/lib/$package ;; *) dflt="$privlib" ;; esac $cat <randbits.c <<'EOCP' #include main() { register int i; register unsigned long tmp; register unsigned long max = 0L; for (i=1000; i; i--) { tmp = (unsigned long)rand(); if (tmp > max) max = tmp; } for (i=0; max; i++) max /= 2; printf("%d\n",i); } EOCP if $cc randbits.c -o randbits >/dev/null 2>&1 ; then dflt=`./randbits` else dflt='?' echo "(I can't seem to compile the test program...)" fi ;; *) dflt="$randbits" ;; esac rp="How many bits does your rand() function produce? [$dflt]" $echo $n "$rp $c" . myread randbits="$ans" : determine where public executables go case "$scriptdir" in '') dflt="$bin" : guess some guesses test -d /usr/share/scripts && dflt=/usr/share/scripts test -d /usr/share/bin && dflt=/usr/share/bin ;; *) dflt="$scriptdir" ;; esac cont=true $cat <&1 | awk ' $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $3 ~ /^[1-9][0-9]*$/ { sig[$3] = substr($2,4,20) if (max < $3 && $3 < 60) { max = $3 } } END { for (i=1; i<=max; i++) { if (sig[i] == "") printf "%d", i else printf "%s", sig[i] if (i < max) printf " " } printf "\n" } '` shift case $# in 0) echo 'kill -l' >/tmp/foo$$ set X `$csh -f /dev/null 2>&1 ; then echo "Your stdio uses unsigned chars." stdchar="unsigned char" else echo "Your stdio uses signed chars." stdchar="char" fi : see what type uids are declared as in the kernel case "$uidtype" in '') if $contains 'uid_t;' $usrinclude/sys/types.h >/dev/null 2>&1 ; then dflt='uid_t'; else set `grep '_ruid;' $usrinclude/sys/user.h 2>/dev/null` unsigned short case $1 in unsigned) dflt="$1 $2" ;; *) dflt="$1" ;; esac fi ;; *) dflt="$uidtype" ;; esac cont=true echo " " rp="What type are user ids returned by getuid(), etc.? [$dflt]" $echo $n "$rp $c" . myread uidtype="$ans" : check for void type echo " " $cat <void.c <<'EOCP' #if TRY & 1 void main() { #else main() { #endif extern void moo(); /* function returning void */ void (*goo)(); /* ptr to func returning void */ #if TRY & 2 void (*foo[10])(); #endif #if TRY & 4 if(goo == moo) { exit(0); } #endif exit(0); } EOCP if $cc -S -DTRY=$voidwant void.c >void.out 2>&1 ; then voidhave=$voidwant echo "It appears to support void to the level $package wants ($voidwant)." if $contains warning void.out >/dev/null 2>&1; then echo "However, you might get some warnings that look like this:" $cat void.out fi else echo "Hmm, your compiler has some difficulty with void. Checking further..." if $cc -S -DTRY=1 void.c >/dev/null 2>&1 ; then echo "It supports 1..." if $cc -S -DTRY=3 void.c >/dev/null 2>&1 ; then voidhave=3 echo "And it supports 2 but not 4." else echo "It doesn't support 2..." if $cc -S -DTRY=5 void.c >/dev/null 2>&1 ; then voidhave=5 echo "But it supports 4." else voidhave=1 echo "And it doesn't support 4." fi fi else echo "There is no support at all for void." voidhave=0 fi fi esac dflt="$voidhave"; rp="Your void support flags add up to what? [$dflt]" $echo $n "$rp $c" . myread voidhave="$ans" : preserve RCS keywords in files with variable substitution, grrr Log='$Log' Header='$Header' Id='$Id' : determine which malloc to compile in echo " " case "$usemymalloc" in '') if bsd || v7; then dflt='y' else dflt='n' fi ;; *) dflt="$usemymalloc" ;; esac rp="Do you wish to attempt to use the malloc that comes with $package? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in '') ans=$dflt;; esac usemymalloc="$ans" case "$ans" in y*) mallocsrc='malloc.c'; mallocobj='malloc.o';; *) mallocsrc=''; mallocobj='';; esac : determine compiler compiler case "$yacc" in '') if xenix; then dflt=yacc else dflt='yacc -Sm25000' fi ;; *) dflt="$yacc";; esac cont=true echo " " rp="Which compiler compiler (yacc or bison -y) will you use? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in '') ans="$dflt";; esac yacc="$ans" : see if we can include fcntl.h echo " " if $h_fcntl; then i_fcntl="$define" echo "We'll be including ." else i_fcntl="$undef" if $h_sys_file; then echo "We don't need to if we include ." else echo "We won't be including ." fi fi : see if gdbm is available echo " " xxx=`./loc gdbm.h x $usrinclude /usr/local/include $inclwanted` if test -f $xxx; then i_gdbm="$define" echo "gdbm.h found." else i_gdbm="$undef" echo "gdbm.h not found." fi : see if this is an grp system echo " " if $test -r $usrinclude/grp.h ; then i_grp="$define" echo "grp.h found." else i_grp="$undef" echo "No grp.h found." fi : see if this is a netinet/in.h or sys/in.h system echo " " xxx=`./loc netinet/in.h x $usrinclude /usr/local/include $inclwanted` if test -f $xxx; then i_niin="$define" i_sysin="$undef" echo "netinet/in.h found." else i_niin="$undef" echo "No netinet/in.h found, ..." xxx=`./loc sys/in.h x $usrinclude /usr/local/include $inclwanted` if test -f $xxx; then i_sysin="$define" echo "but I found sys/in.h instead." else i_sysin="$undef" echo "and I didn't find sys/in.h either." fi fi : Do we need to #include ? echo " " if $h_sys_file; then i_sys_file="$define" echo "We'll be including ." else i_sys_file="$undef" echo "We won't be including ." fi : see if ioctl defs are in sgtty/termio or sys/ioctl echo " " if $test -r $usrinclude/sys/ioctl.h ; then i_sysioctl="$define" echo "sys/ioctl.h found." else i_sysioctl="$undef" echo "sys/ioctl.h not found, assuming ioctl args are defined in sgtty.h." fi : see if we should include utime.h echo " " if $test -r $usrinclude/utime.h ; then i_utime="$define" echo "utime.h found." else i_utime="$undef" echo "No utime.h found, but that's ok." fi : see if this is a varargs system echo " " if $test -r $usrinclude/varargs.h ; then i_varargs="$define" echo "varargs.h found." else i_varargs="$undef" echo "No varargs.h found, but that's ok (I hope)." fi : see if this is a vfork system echo " " if $test -r $usrinclude/vfork.h ; then i_vfork="$define" echo "vfork.h found." else i_vfork="$undef" echo "No vfork.h found." fi : end of configuration questions echo " " echo "End of configuration questions." echo " " : create config.sh file echo " " if test -d ../UU; then cd .. fi echo "Creating config.sh..." $spitshell <config.sh $startsh # config.sh # This file was produced by running the Configure script. kit_has_binaries='$kit_has_binaries' d_eunice='$d_eunice' define='$define' eunicefix='$eunicefix' loclist='$loclist' expr='$expr' sed='$sed' echo='$echo' cat='$cat' rm='$rm' mv='$mv' cp='$cp' tail='$tail' tr='$tr' mkdir='$mkdir' sort='$sort' uniq='$uniq' grep='$grep' trylist='$trylist' test='$test' inews='$inews' egrep='$egrep' more='$more' pg='$pg' Mcc='$Mcc' vi='$vi' mailx='$mailx' mail='$mail' cpp='$cpp' perl='$perl' emacs='$emacs' ls='$ls' rmail='$rmail' sendmail='$sendmail' shar='$shar' smail='$smail' tbl='$tbl' troff='$troff' nroff='$nroff' uname='$uname' uuname='$uuname' line='$line' chgrp='$chgrp' chmod='$chmod' lint='$lint' sleep='$sleep' pr='$pr' tar='$tar' ln='$ln' lpr='$lpr' lp='$lp' touch='$touch' make='$make' date='$date' csh='$csh' bash='$bash' ksh='$ksh' lex='$lex' flex='$flex' bison='$bison' Log='$Log' Header='$Header' Id='$Id' alignbytes='$alignbytes' bin='$bin' installbin='$installbin' byteorder='$byteorder' contains='$contains' cppstdin='$cppstdin' cppminus='$cppminus' d_bcmp='$d_bcmp' d_bcopy='$d_bcopy' d_bzero='$d_bzero' d_castneg='$d_castneg' castflags='$castflags' d_charsprf='$d_charsprf' d_chsize='$d_chsize' d_crypt='$d_crypt' cryptlib='$cryptlib' d_csh='$d_csh' d_dosuid='$d_dosuid' d_dup2='$d_dup2' d_fchmod='$d_fchmod' d_fchown='$d_fchown' d_fcntl='$d_fcntl' d_flexfnam='$d_flexfnam' d_flock='$d_flock' d_getgrps='$d_getgrps' d_gethent='$d_gethent' d_getpgrp='$d_getpgrp' d_getpgrp2='$d_getpgrp2' d_getprior='$d_getprior' d_htonl='$d_htonl' d_index='$d_index' d_killpg='$d_killpg' d_lstat='$d_lstat' d_memcmp='$d_memcmp' d_memcpy='$d_memcpy' d_mkdir='$d_mkdir' d_msg='$d_msg' d_msgctl='$d_msgctl' d_msgget='$d_msgget' d_msgrcv='$d_msgrcv' d_msgsnd='$d_msgsnd' d_ndbm='$d_ndbm' d_odbm='$d_odbm' d_open3='$d_open3' d_readdir='$d_readdir' d_rename='$d_rename' d_rmdir='$d_rmdir' d_select='$d_select' d_sem='$d_sem' d_semctl='$d_semctl' d_semget='$d_semget' d_semop='$d_semop' d_setegid='$d_setegid' d_seteuid='$d_seteuid' d_setpgrp='$d_setpgrp' d_setpgrp2='$d_setpgrp2' d_setprior='$d_setprior' d_setregid='$d_setregid' d_setresgid='$d_setresgid' d_setreuid='$d_setreuid' d_setresuid='$d_setresuid' d_setrgid='$d_setrgid' d_setruid='$d_setruid' d_shm='$d_shm' d_shmat='$d_shmat' d_shmctl='$d_shmctl' d_shmdt='$d_shmdt' d_shmget='$d_shmget' d_socket='$d_socket' d_sockpair='$d_sockpair' d_oldsock='$d_oldsock' socketlib='$socketlib' d_statblks='$d_statblks' d_stdstdio='$d_stdstdio' d_strctcpy='$d_strctcpy' d_strerror='$d_strerror' d_symlink='$d_symlink' d_syscall='$d_syscall' d_truncate='$d_truncate' d_vfork='$d_vfork' d_voidsig='$d_voidsig' d_tosignal='$d_tosignal' d_volatile='$d_volatile' d_vprintf='$d_vprintf' d_charvspr='$d_charvspr' d_wait4='$d_wait4' d_waitpid='$d_waitpid' gidtype='$gidtype' i_fcntl='$i_fcntl' i_gdbm='$i_gdbm' i_grp='$i_grp' i_niin='$i_niin' i_sysin='$i_sysin' i_pwd='$i_pwd' d_pwquota='$d_pwquota' d_pwage='$d_pwage' d_pwchange='$d_pwchange' d_pwclass='$d_pwclass' d_pwexpire='$d_pwexpire' d_pwcomment='$d_pwcomment' i_sys_file='$i_sys_file' i_sysioctl='$i_sysioctl' i_time='$i_time' i_sys_time='$i_sys_time' i_sys_select='$i_sys_select' d_systimekernel='$d_systimekernel' i_utime='$i_utime' i_varargs='$i_varargs' i_vfork='$i_vfork' intsize='$intsize' libc='$libc' nm_opts='$nm_opts' libndir='$libndir' i_my_dir='$i_my_dir' i_ndir='$i_ndir' i_sys_ndir='$i_sys_ndir' i_dirent='$i_dirent' i_sys_dir='$i_sys_dir' d_dirnamlen='$d_dirnamlen' ndirc='$ndirc' ndiro='$ndiro' mallocsrc='$mallocsrc' mallocobj='$mallocobj' usemymalloc='$usemymalloc' mansrc='$mansrc' manext='$manext' models='$models' split='$split' small='$small' medium='$medium' large='$large' huge='$huge' optimize='$optimize' ccflags='$ccflags' cppflags='$cppflags' ldflags='$ldflags' cc='$cc' libs='$libs' n='$n' c='$c' package='$package' randbits='$randbits' scriptdir='$scriptdir' sig_name='$sig_name' spitshell='$spitshell' shsharp='$shsharp' sharpbang='$sharpbang' startsh='$startsh' stdchar='$stdchar' uidtype='$uidtype' usrinclude='$usrinclude' inclPath='$inclPath' void='$void' voidhave='$voidhave' voidwant='$voidwant' w_localtim='$w_localtim' w_s_timevl='$w_s_timevl' w_s_tm='$w_s_tm' yacc='$yacc' lib='$lib' privlib='$privlib' installprivlib='$installprivlib' CONFIG=true EOT : Finish up CONFIG=true echo " " test -f patchlevel.h && awk '{printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh dflt='' fastread='' echo "If you didn't make any mistakes, then just type a carriage return here." rp="If you need to edit config.sh, do it as a shell escape here:" $echo $n "$rp $c" . UU/myread case "$ans" in '') ;; *) : in case they cannot read eval $ans;; esac : if this fails, just run all the .SH files by hand . ./config.sh echo " " echo "Doing variable substitutions on .SH files..." set x `awk '{print $1}' /dev/null 2>&1; then dflt=n $cat < makedepend.out &" It can take a while, so you might not want to run it right now. EOM rp="Run make depend now? [$dflt]" $echo $n "$rp $c" . UU/myread case "$ans" in y*) make depend && echo "Now you must run a make." ;; *) echo "You must run 'make depend' then 'make'." ;; esac elif test -f [Mm]akefile; then echo " " echo "Now you must run a make." else echo "Done." fi $rm -f kit*isdone cd .. && $rm -rf UU : end of Configure