c183c1a80332050a6f445071a501458f805b15e1
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them.  Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh, I would
7 # suggest you cut out the prototypical config.h from the end of Configure
8 # and edit it to reflect your system.  Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # $RCSfile: Configure,v $$Revision: 4.0.1.7 $$Date: 92/06/08 11:38:16 $
12 #
13 # Yes, you may rip this off to use in other distribution packages.
14 # (Note: this Configure script was generated automatically.  Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.)
16
17 cat >/tmp/c1$$ <<EOF
18 ARGGGHHHH!!!!!
19
20 Your csh still thinks true is false.  Write to your vendor today and tell
21 them that next year Configure ought to "rm /bin/csh" unless they fix their
22 blasted shell. :-)
23
24 [End of diatribe.  We now return you to your regularly scheduled
25 programming...]
26
27 EOF
28 cat >/tmp/c2$$ <<EOF
29 OOPS!  You naughty creature!  You didn't run Configure with sh!
30 I will attempt to remedy the situation by running sh for you...
31
32 EOF
33
34 true || cat /tmp/c1$$ /tmp/c2$$
35 true || exec sh $0
36
37 export PATH || cat /tmp/c2$$
38 export PATH || exec sh $0
39 rm -f /tmp/c1$$ /tmp/c2$$
40
41 PATH=".:$PATH:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc:/usr/new:/usr/new/bin:/usr/nbin"
42
43 if test ! -t 0; then
44     echo "Say 'sh Configure', not 'sh <Configure'"
45     exit 1
46 fi
47
48 (alias) >/dev/null 2>&1 && \
49     echo "(I see you are using the Korn shell.  Some ksh's blow up on Configure," && \
50     echo "especially on exotic machines.  If yours does, try the Bourne shell instead.)"
51
52 unset CDPATH
53 if test ! -d ../UU; then
54     if test ! -d UU; then
55         mkdir UU
56     fi
57     cd UU
58 fi
59
60 case "$1" in
61 -d) shift; fastread='yes';;
62 esac
63
64 d_eunice=''
65 define=''
66 eunicefix=''
67 loclist=''
68 expr=''
69 sed=''
70 echo=''
71 cat=''
72 rm=''
73 mv=''
74 cp=''
75 tail=''
76 tr=''
77 mkdir=''
78 sort=''
79 uniq=''
80 grep=''
81 trylist=''
82 test=''
83 inews=''
84 egrep=''
85 more=''
86 pg=''
87 Mcc=''
88 vi=''
89 mailx=''
90 mail=''
91 cpp=''
92 perl=''
93 emacs=''
94 ls=''
95 rmail=''
96 sendmail=''
97 shar=''
98 smail=''
99 tbl=''
100 troff=''
101 nroff=''
102 uname=''
103 uuname=''
104 line=''
105 chgrp=''
106 chmod=''
107 lint=''
108 sleep=''
109 pr=''
110 tar=''
111 ln=''
112 lpr=''
113 lp=''
114 touch=''
115 make=''
116 date=''
117 csh=''
118 bash=''
119 ksh=''
120 lex=''
121 flex=''
122 bison=''
123 Log=''
124 Header=''
125 Id=''
126 lastuname=''
127 alignbytes=''
128 bin=''
129 installbin=''
130 byteorder=''
131 contains=''
132 cppstdin=''
133 cppminus=''
134 d_bcmp=''
135 d_bcopy=''
136 d_safebcpy=''
137 d_bzero=''
138 d_castneg=''
139 castflags=''
140 d_charsprf=''
141 d_chsize=''
142 d_crypt=''
143 cryptlib=''
144 d_csh=''
145 d_dosuid=''
146 d_dup2=''
147 d_fchmod=''
148 d_fchown=''
149 d_fcntl=''
150 d_flexfnam=''
151 d_flock=''
152 d_getgrps=''
153 d_gethent=''
154 d_getpgrp=''
155 d_getpgrp2=''
156 d_getprior=''
157 d_htonl=''
158 d_index=''
159 d_isascii=''
160 d_killpg=''
161 d_lstat=''
162 d_memcmp=''
163 d_memcpy=''
164 d_safemcpy=''
165 d_memmove=''
166 d_memset=''
167 d_mkdir=''
168 d_msg=''
169 d_msgctl=''
170 d_msgget=''
171 d_msgrcv=''
172 d_msgsnd=''
173 d_ndbm=''
174 d_odbm=''
175 d_open3=''
176 d_readdir=''
177 d_rename=''
178 d_rewindir=''
179 d_rmdir=''
180 d_seekdir=''
181 d_select=''
182 d_sem=''
183 d_semctl=''
184 d_semget=''
185 d_semop=''
186 d_setegid=''
187 d_seteuid=''
188 d_setpgrp=''
189 d_setpgrp2=''
190 d_setprior=''
191 d_setregid=''
192 d_setresgid=''
193 d_setreuid=''
194 d_setresuid=''
195 d_setrgid=''
196 d_setruid=''
197 d_shm=''
198 d_shmat=''
199 d_voidshmat=''
200 d_shmctl=''
201 d_shmdt=''
202 d_shmget=''
203 d_socket=''
204 d_sockpair=''
205 d_oldsock=''
206 socketlib=''
207 d_statblks=''
208 d_stdstdio=''
209 d_strctcpy=''
210 d_strerror=''
211 d_symlink=''
212 d_syscall=''
213 d_telldir=''
214 d_truncate=''
215 d_vfork=''
216 d_voidsig=''
217 d_tosignal=''
218 d_volatile=''
219 d_vprintf=''
220 d_charvspr=''
221 d_wait4=''
222 d_waitpid=''
223 gidtype=''
224 groupstype=''
225 i_fcntl=''
226 i_gdbm=''
227 i_grp=''
228 i_niin=''
229 i_sysin=''
230 i_pwd=''
231 d_pwquota=''
232 d_pwage=''
233 d_pwchange=''
234 d_pwclass=''
235 d_pwexpire=''
236 d_pwcomment=''
237 i_sys_file=''
238 i_sysioctl=''
239 i_time=''
240 i_sys_time=''
241 i_sys_select=''
242 d_systimekernel=''
243 i_utime=''
244 i_varargs=''
245 i_vfork=''
246 intsize=''
247 libc=''
248 nm_opts=''
249 libndir=''
250 i_my_dir=''
251 i_ndir=''
252 i_sys_ndir=''
253 i_dirent=''
254 i_sys_dir=''
255 d_dirnamlen=''
256 ndirc=''
257 ndiro=''
258 mallocsrc=''
259 mallocobj=''
260 d_mymalloc=''
261 mallocptrtype=''
262 mansrc=''
263 manext=''
264 models=''
265 split=''
266 small=''
267 medium=''
268 large=''
269 huge=''
270 optimize=''
271 ccflags=''
272 cppflags=''
273 ldflags=''
274 cc=''
275 nativegcc=''
276 libs=''
277 n=''
278 c=''
279 package=''
280 randbits=''
281 scriptdir=''
282 installscr=''
283 sig_name=''
284 spitshell=''
285 shsharp=''
286 sharpbang=''
287 startsh=''
288 stdchar=''
289 uidtype=''
290 usrinclude=''
291 inclPath=''
292 void=''
293 voidhave=''
294 voidwant=''
295 w_localtim=''
296 w_s_timevl=''
297 w_s_tm=''
298 yacc=''
299 lib=''
300 privlib=''
301 installprivlib=''
302 CONFIG=''
303 : get the name of the package
304 package=perl
305 : Here we go...
306 echo " "
307 echo "Beginning of configuration questions for $package kit."
308 : Eunice requires " " instead of "", can you believe it
309 echo " "
310
311 define='define'
312 undef='undef'
313 : change the next line if compiling for Xenix/286 on Xenix/386
314 xlibpth='/usr/lib/386 /lib/386'
315
316 : the hints files may add more components to libpth
317 test -d /usr/cs/lib             && libpth="$libpth /usr/cs/lib"
318 test -d /usr/ccs/lib            && libpth="$libpth /usr/ccs/lib"
319 test -d /usr/lib                && libpth="$libpth /usr/lib"
320 test -d /usr/ucblib             && libpth="$libpth /usr/ucblib"
321 test -d /usr/local/lib          && libpth="$libpth /usr/local/lib"
322 test -d /usr/lib/large          && libpth="$libpth /usr/lib/large"
323 test -d /lib                    && libpth="$libpth /lib"
324                                    libpth="$libpth $xlibpth"
325 test -d /lib/large              && libpth="$libpth /lib/large"
326 test -d /usr/lib/small          && libpth="$libpth /usr/lib/small"
327 test -d /lib/small              && libpth="$libpth /lib/small"
328 test -d /usr/lib/cmplrs/cc      && libpth="$libpth /usr/lib/cmplrs/cc"
329
330 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
331 trap 'echo " "; exit 1' 1 2 3
332
333 : We must find out about Eunice early
334 eunicefix=':'
335 if test -f /etc/unixtovms; then
336     eunicefix=/etc/unixtovms
337 fi
338 if test -f /etc/unixtovms.exe; then
339     eunicefix=/etc/unixtovms.exe
340 fi
341
342 attrlist="DGUX M_I186 M_I286 M_I386 M_I8086 M_XENIX UTS __DGUX__"
343 attrlist="$attrlist __STDC__ __m88k__ ansi bsd4_2 gcos gimpel"
344 attrlist="$attrlist hp9000s300 hp9000s500 hp9000s800 hpux"
345 attrlist="$attrlist i186 i386 i8086 iAPX286 ibm interdata"
346 attrlist="$attrlist m68k m88k mc300 mc500 mc68000 mc68k mc700 mert"
347 attrlist="$attrlist ns16000 ns32000 nsc32000 os pdp11 posix pyr sinix"
348 attrlist="$attrlist sparc sun tower tower32 tower32_600 tower32_800 tss"
349 attrlist="$attrlist u3b2 u3b20 u3b200 u3b5 ultrix unix vax venix xenix"
350 attrlist="$attrlist z8000"
351 boPATH=""
352 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 /usr/ccs/lib /opt/SUNWste/bin /usr/opt/SUNWste/bin"
353 d_newshome="/usr/NeWS"
354 errnolist=errnolist
355 h_fcntl=false
356 h_sys_file=false
357 serve_shm=""
358 serve_msg="$undef"
359 serve_inet_udp=""
360 serve_inet_tcp=""
361 serve_unix_udp=""
362 serve_unix_tcp=""
363 d_ndir=ndir
364 voidwant=1
365 voidwant=7
366 libswanted="c_s net_s net socket nsl_s nsl nm ndir dir ndbm dbm PW malloc sun m bsd BSD x posix ucb"
367 inclwanted='/usr/include /usr/netinclude /usr/include/sun /usr/include/bsd /usr/include/lan /usr/ucbinclude'
368
369 : Now test for existence of everything in MANIFEST
370
371 echo "First let's make sure your kit is complete.  Checking..."
372 awk '$1 !~ /PACKINGLIST/ {print $1}' ../MANIFEST | split -100
373 rm -f missing
374 for filelist in x??; do
375     (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
376 done
377 if test -s missing; then
378     echo "WARNING: the following files are missing:"
379     cat missing
380     echo "INTERRUPT NOW, OR HIT RETURN TO PROCEED AT YOUR OWN RISK"
381     read junk
382 else
383     echo "Looks good..."
384 fi
385
386 : some greps do not return status, grrr.
387 echo "grimblepritz" >contains.txt
388 if grep blurfldyick contains.txt >/dev/null 2>&1 ; then
389     contains=contains
390 elif grep grimblepritz contains.txt >/dev/null 2>&1 ; then
391     contains=grep
392 else
393     contains=contains
394 fi
395 : the following should work in any shell
396 case "$contains" in
397 contains*)
398     echo " "
399     echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
400     cat >contains <<'EOSS'
401 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
402 EOSS
403 chmod +x contains
404 esac
405
406 : see if sh knows # comments
407 echo " "
408 echo "Checking your sh to see if it knows about # comments..."
409 if sh -c '#' >/dev/null 2>&1 ; then
410     echo "Your sh handles # comments correctly."
411     shsharp=true
412     spitshell=cat
413     echo " "
414     echo "Okay, let's see if #! works on this system..."
415     if test -f /bsd43/bin/echo; then
416         echo "#!/bsd43/bin/echo hi" > spit.sh
417     else
418         echo "#!/bin/echo hi" > spit.sh
419     fi
420     $eunicefix spit.sh
421     chmod +x spit.sh
422     ./spit.sh > today
423     if $contains hi today >/dev/null 2>&1; then
424         echo "It does."
425         sharpbang='#!'
426     else
427         echo "#! /bin/echo hi" > spit.sh
428         $eunicefix spit.sh
429         chmod +x spit.sh
430         ./spit.sh > today
431         if test -s today; then
432             echo "It does."
433             sharpbang='#! '
434         else
435             echo "It doesn't."
436             sharpbang=': use '
437         fi
438     fi
439 else
440     echo "Your sh doesn't grok # comments--I will strip them later on."
441     shsharp=false
442     echo "exec grep -v '^#'" >spitshell
443     chmod +x spitshell
444     $eunicefix spitshell
445     spitshell=`pwd`/spitshell
446     echo "I presume that if # doesn't work, #! won't work either!"
447     sharpbang=': use '
448 fi
449
450 : figure out how to guarantee sh startup
451 echo " "
452 echo "Checking out how to guarantee sh startup..."
453 startsh=$sharpbang'/bin/sh'
454 echo "Let's see if '$startsh' works..."
455 cat >start.sh <<EOSS
456 $startsh
457 set abc
458 test "$?abc" != 1
459 EOSS
460
461 chmod +x start.sh
462 $eunicefix start.sh
463 if ./start.sh; then
464     echo "Yup, it does."
465 else
466     echo "Nope.  You may have to fix up the shell scripts to make sure sh runs them."
467 fi
468
469 : first determine how to suppress newline on echo command
470 echo "Checking echo to see how to suppress newlines..."
471 (echo "hi there\c" ; echo " ") >echotmp
472 if $contains c echotmp >/dev/null 2>&1 ; then
473     echo "...using -n."
474     n='-n'
475     c=''
476 else
477     cat <<'EOM'
478 ...using \c
479 EOM
480     n=''
481     c='\c'
482 fi
483 echo $n "Type carriage return to continue.  Your cursor should be here-->$c"
484 read ans
485
486 : now set up to do reads with possible shell escape and default assignment
487 cat <<EOSC >myread
488 case "\$fastread" in
489 yes) ans=''; echo " " ;;
490 *) ans='!';;
491 esac
492 while expr "X\$ans" : "X!" >/dev/null; do
493     read ans
494     case "\$ans" in
495     !)
496         sh
497         echo " "
498         echo $n "\$rp $c"
499         ;;
500     !*)
501         set \`expr "X\$ans" : "X!\(.*\)\$"\`
502         sh -c "\$*"
503         echo " "
504         echo $n "\$rp $c"
505         ;;
506     esac
507 done
508 rp='Your answer:'
509 case "\$ans" in
510 '') ans="\$dflt";;
511 esac
512 EOSC
513
514 : general instructions
515 cat <<EOH
516  
517 This installation shell script will examine your system and ask you questions
518 to determine how the $package package should be installed.  If you get stuck
519 on a question, you may use a ! shell escape to start a subshell or execute
520 a command.  Many of the questions will have default answers in square
521 brackets--typing carriage return will give you the default.
522
523 On some of the questions which ask for file or directory names you are
524 allowed to use the ~name construct to specify the login directory belonging
525 to "name", even if you don't have a shell which knows about that.  Questions
526 where this is allowed will be marked "(~name ok)".
527
528 EOH
529 rp="[Type carriage return to continue]"
530 echo $n "$rp $c"
531 . myread
532 cat <<EOH
533
534 Much effort has been expended to ensure that this shell script will run on any
535 Unix system.  If despite that it blows up on you, your best bet is to edit
536 Configure and run it again. Also, let me (lwall@netlabs.com)
537 know how I blew it.  If you can't run Configure for some reason, you'll have
538 to generate a config.sh file by hand.
539
540 This installation script affects things in two ways: 1) it may do direct
541 variable substitutions on some of the files included in this kit, and
542 2) it builds a config.h file for inclusion in C programs.  You may edit
543 any of these files as the need arises after running this script.
544
545 If you make a mistake on a question, there is no easy way to back up to it
546 currently.  The easiest thing to do is to edit config.sh and rerun all the
547 SH files.  Configure will offer to let you do this before it runs the SH files.
548
549 EOH
550 rp="[Type carriage return to continue]"
551 echo $n "$rp $c"
552 . myread
553
554 : find out where common programs are
555 echo " "
556 echo "Locating common programs..."
557 cat <<EOSC >loc
558 $startsh
559 case \$# in
560 0) exit 1;;
561 esac
562 thing=\$1
563 shift
564 dflt=\$1
565 shift
566 for dir in \$*; do
567     case "\$thing" in
568     .)
569         if test -d \$dir/\$thing; then
570             echo \$dir
571             exit 0
572         fi
573         ;;
574     *)
575         if test -f \$dir/\$thing; then
576             echo \$dir/\$thing
577             exit 0
578         elif test -f \$dir/\$thing.exe; then
579             : on Eunice apparently
580             echo \$dir/\$thing
581             exit 0
582         fi
583         ;;
584     esac
585 done
586 echo \$dflt
587 exit 1
588 EOSC
589 chmod +x loc
590 $eunicefix loc
591 loclist="
592 cat
593 cp
594 echo
595 expr
596 grep
597 mkdir
598 mv
599 rm
600 sed
601 sort
602 tr
603 uniq
604 "
605 trylist="
606 Mcc
607 bison
608 cpp
609 csh
610 egrep
611 line
612 nroff
613 perl
614 test
615 uname
616 yacc
617 "
618 pth=`echo :$boPATH:$PATH:$eoPATH: | sed -e 's/:/ /g'`
619 for file in $loclist; do
620     xxx=`./loc $file $file $pth`
621     eval $file=$xxx
622     eval _$file=$xxx
623     case "$xxx" in
624     /*)
625         echo $file is in $xxx.
626         ;;
627     *)
628         echo "I don't know where $file is.  I hope it's in everyone's PATH."
629         ;;
630     esac
631 done
632 echo " "
633 echo "Don't worry if any of the following aren't found..."
634 ans=offhand
635 for file in $trylist; do
636     xxx=`./loc $file $file $pth`
637     eval $file=$xxx
638     eval _$file=$xxx
639     case "$xxx" in
640     /*)
641         echo $file is in $xxx.
642         ;;
643     *)
644         echo "I don't see $file out there, $ans."
645         ans=either
646         ;;
647     esac
648 done
649 case "$egrep" in
650 egrep)
651     echo "Substituting grep for egrep."
652     egrep=$grep
653     ;;
654 esac
655 case "$test" in
656 test)
657     echo "Hopefully test is built into your sh."
658     ;;
659 /bin/test)
660     if sh -c "PATH= test true" >/dev/null 2>&1; then
661         echo "Using the test built into your sh."
662         test=test
663     fi
664     ;;
665 *)
666     test=test
667     ;;
668 esac
669 case "$echo" in
670 echo)
671     echo "Hopefully echo is built into your sh."
672     ;;
673 /bin/echo)
674     echo " "
675     echo "Checking compatibility between /bin/echo and builtin echo (if any)..."
676     $echo $n "hi there$c" >Loc1.txt
677     echo $n "hi there$c" >Loc2.txt
678     if cmp Loc1.txt Loc2.txt >/dev/null 2>&1; then
679         echo "They are compatible.  In fact, they may be identical."
680     else
681         case "$n" in
682         '-n') n='' c='\c' ans='\c' ;;
683         *) n='-n' c='' ans='-n' ;;
684         esac
685         cat <<FOO
686 They are not compatible!  You are probably running ksh on a non-USG system.
687 I'll have to use /bin/echo instead of the builtin, since Bourne shell doesn't
688 have echo built in and we may have to run some Bourne shell scripts.  That
689 means I'll have to use $ans to suppress newlines now.  Life is ridiculous.
690
691 FOO
692         rp="Your cursor should be here-->"
693         $echo $n "$rp$c"
694         . myread
695     fi
696     ;;
697 *)
698     : cross your fingers
699     echo=echo
700     ;;
701 esac
702
703 : set up shell script to do ~ expansion
704 cat >filexp <<EOSS
705 $startsh
706 : expand filename
707 case "\$1" in
708  ~/*|~)
709     echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
710     ;;
711  ~*)
712     if $test -f /bin/csh; then
713         /bin/csh -f -c "glob \$1"
714         echo ""
715     else
716         name=\`$expr x\$1 : '..\([^/]*\)'\`
717         dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
718         if $test ! -d "\$dir"; then
719             me=\`basename \$0\`
720             echo "\$me: can't locate home directory for: \$name" >&2
721             exit 1
722         fi
723         case "\$1" in
724         */*)
725             echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
726             ;;
727         *)
728             echo \$dir
729             ;;
730         esac
731     fi
732     ;;
733 *)
734     echo \$1
735     ;;
736 esac
737 EOSS
738 chmod +x filexp
739 $eunicefix filexp
740
741 : get old answers, if there is a config file out there
742 hint=default
743 if test -f ../config.sh; then
744     echo " "
745     eval "`grep lastuname ../config.sh`"
746     tmp=`(uname -a) 2>&1`
747     if test "X$tmp" = "X$lastuname"; then
748         dflt=y
749     else
750         dflt=n
751     fi
752     lastuname="$tmp"
753     rp="I see a config.sh file.  Did Configure make it on THIS system? [$dflt]"
754     echo $n "$rp $c"
755     . myread
756     case "$ans" in
757     n*) echo "OK, I'll ignore it."; mv ../config.sh ../config.sh.old;;
758     *)  echo "Fetching default answers from your old config.sh file..."
759         tmp="$n"
760         ans="$c"
761         . ../config.sh
762         n="$tmp"
763         c="$ans"
764         hint=previous
765         ;;
766     esac
767 else
768     lastuname=`(uname -a) 2>&1`
769 fi
770 if test -d ../hints && test ! -f ../config.sh; then
771     echo ' '
772     echo "First time through, eh?  I have some defaults handy for the following systems:"
773     (cd ../hints; ls -C *.sh | sed 's/\.sh/   /g')
774     dflt=''
775     : Half the following guesses are probably wrong...
776     test -f /irix && dflt="$dflt sgi"
777     test -f /xenix && dflt="$dflt sco_xenix"
778     test -f /dynix && dflt="$dflt dynix"
779     test -f /dnix && dflt="$dflt dnix"
780     test -f /bin/mips && /bin/mips && dflt="$dflt mips"
781     test -d /NextApps && test -f /usr/adm/software_version && dflt="$dflt next"
782     if test -f /bin/uname || test -f /usr/bin/uname; then
783         set `uname -a | tr '[A-Z]' '[a-z]'`
784
785         test -f "../hints/$5.sh" && dflt="$dflt $5"
786
787         case "$5" in
788         3b2) dflt="$dflt 3b2";;
789         fps*) dflt="$dflt fps";;
790         mips*) dflt="$dflt mips";;
791         [23]100) dflt="$dflt mips";;
792         next*) dflt="$dflt next" ;;
793         6000) dflt="$dflt mc6000";;
794         esac
795
796         test -f "../hints/$1.sh" && dflt="$dflt $1"
797
798         case "$1" in
799         aix) dflt="$dflt aix_rs" ;;
800         sunos) case "$3" in
801             3.4) dflt="$dflt sunos_3_4" ;;
802             3.5) dflt="$dflt sunos_3_5" ;;
803             4.0.1) dflt="$dflt sunos_4_0_1" ;;
804             4.0.2) dflt="$dflt sunos_4_0_2" ;;
805             esac
806             ;;
807         hp*ux) dflt="$dflt hpux"
808             extra_hints="hp"`echo $5 | sed -e s#/#_#g -e s/..$/00/`
809             if test -f ../hints/$extra_hints.sh; then
810                 dflt="$dflt $extra_hints"
811             fi;;
812         irix) dflt="$dflt sgi" ;;
813         ultrix) case "$3" in
814             1*) dflt="$dflt ultrix_1" ;;
815             3*) dflt="$dflt ultrix_3" ;;
816             4*) dflt="$dflt ultrix_4" ;;
817             esac
818             ;;
819         uts) dflt="$dflt uts" ;;
820         $2) if test -f /etc/systemid; then
821                 set `echo $3 | sed 's/\./ /'` $4
822                 if test -f ../hints/sco_$1_$2_$3.sh; then
823                     dflt="$dflt sco_$1_$2_$3"
824                 elif test -f ../hints/sco_$1_$2.sh; then
825                     dflt="$dflt sco_$1_$2"
826                 elif test -f ../hints/sco_$1.sh; then
827                     dflt="$dflt sco_$1"
828                 fi
829             fi
830             ;;
831         esac
832     fi
833     set X `echo $dflt | tr ' ' '\012' | sort | uniq`
834     shift
835     dflt=${1+"$@"}
836     case "$dflt" in
837     '') dflt=none;;
838     esac
839     echo '(You may give one or more space-separated answers, or "none" if appropriate.'
840     echo 'If your OS version has no hints, do not give a wrong version--say "none".)'
841     rp="Which of these apply, if any? [$dflt]"
842     echo $n "$rp $c"
843     . myread
844     for file in $ans; do
845         if test -f ../hints/$file.sh; then
846             . ../hints/$file.sh
847             cat ../hints/$file.sh >>../config.sh
848             hint=recommended
849         fi
850     done
851 fi
852
853 cat >whoa <<'EOF'
854 eval "was=\$$2"
855 dflt=y
856 echo ' '
857 echo "*** WHOA THERE!!! ***"
858 echo "    The $hint value for \$$2 on this machine was \"$was\"!"
859 rp="    Keep the $hint value? [y]"
860 echo $n "$rp $c"
861 . myread
862 case "$ans" in
863 y) td=$was; tu=$was;;
864 esac
865 EOF
866
867 setvar='td=$define; tu=$undef; set X $1; eval "was=\$$2";
868 case "$val$was" in
869 defineundef) . whoa; eval "$2=\$td";;
870 undefdefine) . whoa; eval "$2=\$tu";;
871 *) eval "$2=$val";;
872 esac'
873
874 : determine where manual pages go
875 $cat <<EOM
876   
877 $package has manual pages available in source form.
878 EOM
879 case "$nroff" in
880 '')
881     echo "However, you don't have nroff, so they're probably useless to you."
882     case "$mansrc" in
883     '')
884         mansrc="none"
885         ;;
886     esac
887 esac
888 echo "If you don't want the manual sources installed, answer 'none'."
889 case "$mansrc" in
890 '')
891     dflt=`./loc . none /usr/man/local/man1 /usr/man/man.L /usr/man/manl /usr/man/mann /usr/man/u_man/man1 /usr/man/man1 /usr/local/man/man1`
892     ;;
893 *)  dflt="$mansrc"
894     ;;
895 esac
896 cont=true
897 while $test "$cont" ; do
898     echo " "
899     rp="Where do the manual pages (source) go (~name ok)? [$dflt]"
900     $echo $n "$rp $c"
901     . myread
902     case "$ans" in
903     'none')
904         mansrc=''
905         cont=''
906         ;;
907     *)
908         mansrc=`./filexp "$ans"`
909         if $test -d "$mansrc"; then
910             cont=''
911         else
912             if $test "$fastread" = yes; then
913                 dflt=y
914             else
915                 dflt=n
916             fi
917             rp="Directory $mansrc doesn't exist.  Use that name anyway? [$dflt]"
918             $echo $n "$rp $c"
919             . myread
920             dflt=''
921             case "$ans" in
922             y*) cont='';;
923             esac
924         fi
925         ;;
926     esac
927 done
928 case "$mansrc" in
929 '')
930     manext=''
931     ;;
932 *l)
933     manext=l
934     ;;
935 *n)
936     manext=n
937     ;;
938 *o)
939     manext=l
940     ;;
941 *p)
942     manext=n
943     ;;
944 *C)
945     manext=C
946     ;;
947 *L)
948     manext=L
949     ;;
950 *)
951     manext=1
952     ;;
953 esac
954
955 : Sigh.  Well, at least the box is fast...
956 echo " "
957 $echo $n "Hmm...  $c"
958 case "$usrinclude" in
959 '') dflt='/usr/include';;
960 *) dflt=$usrinclude;;
961 esac
962 inclPath=''
963 if $test -f /bin/mips && /bin/mips; then
964     echo "Looks like a MIPS system..."
965     $cat >usrinclude.c <<'EOCP'
966 #ifdef SYSTYPE_BSD43
967 /bsd43
968 #endif
969 EOCP
970     if cc -E usrinclude.c > usrinclude.out && $contains / usrinclude.out >/dev/null 2>&1 ; then
971         echo "and you're compiling with the BSD43 compiler and libraries."
972         dflt='/bsd43/usr/include'
973         inclPath='/bsd43'
974     else
975         echo "and you're compiling with the SysV compiler and libraries."
976     fi
977 else
978     echo "Doesn't look like a MIPS system."
979     echo "exit 1" >mips
980     chmod +x mips
981     $eunicefix mips
982 fi
983
984 cont=true
985 while $test "$cont" ; do
986     echo " "
987     rp="Where are the include files you want to use? [$dflt]"
988     $echo $n "$rp $c"
989     . myread
990     usrinclude="$ans"
991     if $test -d $ans; then
992         cont=''
993     else
994         if $test "$fastread" = yes; then
995             dflt=y
996         else
997             dflt=n
998         fi
999         rp="Directory $ans doesn't exist.  Use that name anyway? [$dflt]"
1000         $echo $n "$rp $c"
1001         . myread
1002         dflt=''
1003         case "$ans" in
1004         y*) cont='';;
1005         esac
1006     fi
1007 done
1008
1009 : make some quick guesses about what we are up against
1010 echo " "
1011 echo exit 1 >bsd
1012 echo exit 1 >usg
1013 echo exit 1 >v7
1014 echo exit 1 >osf1
1015 echo exit 1 >eunice
1016 echo exit 1 >xenix
1017 echo exit 1 >venix
1018 cat $usrinclude/signal.h $usrinclude/sys/signal.h >guess.txt 2>/dev/null
1019 if test "$usrinclude" = "/bsd43/usr/include" ; then
1020     echo "Looks kind of like a SysV MIPS running BSD, but we'll see..."
1021     echo exit 0 >bsd
1022 elif test -f /osf_boot || $contains "OSF/1" /usr/include/ctype.h; then
1023     echo "Looks like an OSF/1 system, but we'll see..."
1024     echo exit 0 >osf1
1025 elif test `echo abc | tr a-z A-Z` = Abc ; then
1026     echo "Looks kind of like a USG system, but we'll see..."
1027     echo exit 0 >usg
1028 elif $contains SIGTSTP guess.txt >/dev/null 2>&1 ; then
1029     echo "Looks kind of like a BSD system, but we'll see..."
1030     echo exit 0 >bsd
1031 else
1032     echo "Looks kind of like a version 7 system, but we'll see..."
1033     echo exit 0 >v7
1034 fi
1035 case "$eunicefix" in
1036 *unixtovms*)
1037     cat <<'EOI'
1038 There is, however, a strange, musty smell in the air that reminds me of
1039 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
1040 EOI
1041     echo "exit 0" >eunice
1042     d_eunice="$define"
1043     ;;
1044 *)
1045     echo " "
1046     echo "Congratulations.  You aren't running Eunice."
1047     d_eunice="$undef"
1048     ;;
1049 esac
1050 if test -f /xenix; then
1051     echo "Actually, this looks more like a XENIX system..."
1052     echo "exit 0" >xenix
1053 else
1054     echo " "
1055     echo "It's not Xenix..."
1056 fi
1057 chmod +x xenix
1058 $eunicefix xenix
1059 if test -f /venix; then
1060     echo "Actually, this looks more like a VENIX system..."
1061     echo "exit 0" >venix
1062 else
1063     echo " "
1064     if xenix; then
1065         : null
1066     else
1067         echo "Nor is it Venix..."
1068     fi
1069 fi
1070 chmod +x bsd usg v7 osf1 eunice venix
1071 $eunicefix bsd usg v7 eunice venix
1072
1073 : see what memory models we can support
1074 case "$models" in
1075 '')
1076     : We may not use Cppsym or we get a circular dependency through cc.
1077     : But this should work regardless of which cc we eventually use.
1078     cat >pdp11.c <<'EOP'
1079 main() {
1080 #ifdef pdp11
1081     exit(0);
1082 #else
1083     exit(1);
1084 #endif
1085 }
1086 EOP
1087     cc -o pdp11 pdp11.c >/dev/null 2>&1
1088     if pdp11 2>/dev/null; then
1089         dflt='unsplit split'
1090     else
1091         ans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
1092         case "$ans" in
1093         X) dflt='none';;
1094         *)  if $test -d /lib/small || $test -d /usr/lib/small; then
1095                 dflt='small'
1096             else
1097                 dflt=''
1098             fi
1099             if $test -d /lib/medium || $test -d /usr/lib/medium; then
1100                 dflt="$dflt medium"
1101             fi
1102             if $test -d /lib/large || $test -d /usr/lib/large; then
1103                 dflt="$dflt large"
1104             fi
1105             if $test -d /lib/huge || $test -d /usr/lib/huge; then
1106                 dflt="$dflt huge"
1107             fi
1108         esac
1109     fi
1110     ;;
1111 *)  dflt="$models" ;;
1112 esac
1113 $cat <<EOM
1114  
1115 Some systems have different model sizes.  On most systems they are called
1116 small, medium, large, and huge.  On the PDP11 they are called unsplit and
1117 split.  If your system doesn't support different memory models, say "none".
1118 If you wish to force everything to one memory model, say "none" here and
1119 put the appropriate flags later when it asks you for other cc and ld flags.
1120 Venix systems may wish to put "none" and let the compiler figure things out.
1121 (In the following question multiple model names should be space separated.)
1122
1123 EOM
1124 rp="Which models are supported? [$dflt]"
1125 $echo $n "$rp $c"
1126 . myread
1127 models="$ans"
1128
1129 case "$models" in
1130 none)
1131     small=''
1132     medium=''
1133     large=''
1134     huge=''
1135     unsplit=''
1136     split=''
1137     ;;
1138 *split)
1139     case "$split" in
1140     '') 
1141         if $contains '\-i' $mansrc/man1/ld.1 >/dev/null 2>&1 || \
1142            $contains '\-i' $mansrc/man1/cc.1 >/dev/null 2>&1; then
1143             dflt='-i'
1144         else
1145             dflt='none'
1146         fi
1147         ;;
1148     *) dflt="$split";;
1149     esac
1150     rp="What flag indicates separate I and D space? [$dflt]"
1151     $echo $n "$rp $c"
1152     . myread
1153     case "$ans" in
1154     none) ans='';;
1155     esac
1156     split="$ans"
1157     unsplit=''
1158     ;;
1159 *large*|*small*|*medium*|*huge*)
1160     case "$models" in
1161     *large*)
1162         case "$large" in
1163         '') dflt='-Ml';;
1164         *) dflt="$large";;
1165         esac
1166         rp="What flag indicates large model? [$dflt]"
1167         $echo $n "$rp $c"
1168         . myread
1169         case "$ans" in
1170         none) ans='';
1171         esac
1172         large="$ans"
1173         ;;
1174     *) large='';;
1175     esac
1176     case "$models" in
1177     *huge*)
1178         case "$huge" in
1179         '') dflt='-Mh';;
1180         *) dflt="$huge";;
1181         esac
1182         rp="What flag indicates huge model? [$dflt]"
1183         $echo $n "$rp $c"
1184         . myread
1185         case "$ans" in
1186         none) ans='';
1187         esac
1188         huge="$ans"
1189         ;;
1190     *) huge="$large";;
1191     esac
1192     case "$models" in
1193     *medium*)
1194         case "$medium" in
1195         '') dflt='-Mm';;
1196         *) dflt="$medium";;
1197         esac
1198         rp="What flag indicates medium model? [$dflt]"
1199         $echo $n "$rp $c"
1200         . myread
1201         case "$ans" in
1202         none) ans='';
1203         esac
1204         medium="$ans"
1205         ;;
1206     *) medium="$large";;
1207     esac
1208     case "$models" in
1209     *small*)
1210         case "$small" in
1211         '') dflt='none';;
1212         *) dflt="$small";;
1213         esac
1214         rp="What flag indicates small model? [$dflt]"
1215         $echo $n "$rp $c"
1216         . myread
1217         case "$ans" in
1218         none) ans='';
1219         esac
1220         small="$ans"
1221         ;;
1222     *) small='';;
1223     esac
1224     ;;
1225 *)
1226     echo "Unrecognized memory models--you may have to edit Makefile.SH"
1227     ;;
1228 esac
1229
1230 : see if we need a special compiler
1231 echo " "
1232 if usg; then
1233     case "$cc" in
1234     '')
1235         case "$Mcc" in
1236         /*) dflt='Mcc'
1237             ;;
1238         *)
1239             case "$large" in
1240             -M*)
1241                 dflt='cc'
1242                 ;;
1243             *)
1244                 if $contains '\-M' $mansrc/cc.1 >/dev/null 2>&1 ; then
1245                     dflt='cc -M'
1246                 else
1247                     dflt='cc'
1248                 fi
1249                 ;;
1250             esac
1251             ;;
1252         esac
1253         ;;
1254     *)  dflt="$cc";;
1255     esac
1256     $cat <<'EOM'
1257   
1258 On some systems the default C compiler will not resolve multiple global
1259 references that happen to have the same name.  On some such systems the
1260 "Mcc" command may be used to force these to be resolved.  On other systems
1261 a "cc -M" command is required.  (Note that the -M flag on other systems
1262 indicates a memory model to use!)  If you have the Gnu C compiler, you
1263 might wish to use that instead.  What command will force resolution on
1264 EOM
1265     $echo $n "this system? [$dflt] $c"
1266     rp="Command to resolve multiple refs? [$dflt]"
1267     . myread
1268     cc="$ans"
1269 else
1270     case "$cc" in
1271     '') dflt=cc;;
1272     *) dflt="$cc";;
1273     esac
1274     rp="Use which C compiler? [$dflt]"
1275     $echo $n "$rp $c"
1276     . myread
1277     cc="$ans"
1278 fi
1279 case "$cc" in
1280 *gcc*) cpp=`./loc gcc-cpp $cpp $pth`
1281     case "$nativegcc" in
1282     '') case "$ccflags" in
1283         *-fpcc-struct-return*) dflt=n;;
1284         *) dflt=y;;
1285         esac
1286         ;;
1287     undef) dflt=n;;
1288     *) dflt=y;;
1289     esac
1290     echo " "
1291     rp="Are your system (especially dbm) libraries compiled with gcc? [$dflt]"
1292     $echo $n "$rp $c"
1293     . myread
1294     case "$ans" in
1295     n*) nativegcc="$undef"; gccflags='-fpcc-struct-return';;
1296     *) nativegcc="$define"; gccflags='';;
1297     esac
1298     case "$gccflags" in
1299     *-ansi*) ;;
1300     *-traditional*) ;;
1301     *) gccflags="$gccflags -traditional -Dvolatile=__volatile__" ;;
1302     esac
1303     ;;
1304 esac
1305
1306 : determine optimize, if desired, or use for debug flag also
1307 case "$optimize" in
1308 ' ') dflt="none"
1309      ;;
1310 '') dflt="-O";
1311     ;;
1312 *)  dflt="$optimize"
1313     ;;
1314 esac
1315 cat <<EOH
1316
1317 Some C compilers have problems with their optimizers, by default, $package
1318 compiles with the -O flag to use the optimizer.  Alternately, you might
1319 want to use the symbolic debugger, which uses the -g flag (on traditional
1320 Unix systems).  Either flag can be specified here.  To use neither flag,
1321 specify the word "none".
1322   
1323 EOH
1324 rp="What optimizer/debugger flag should be used? [$dflt]"
1325 $echo $n "$rp $c"
1326 . myread
1327 optimize="$ans"
1328 case "$optimize" in
1329 'none') optimize=" "
1330      ;;
1331 esac
1332
1333 case "$ccflags" in
1334 '') case "$cc" in
1335     *gcc*) dflt="$gccflags";;
1336     *) dflt='';;
1337     esac
1338     ;;
1339 *-fpcc-struct-return*) dflt="$ccflags";;
1340 *) case "$cc" in
1341     *gcc*) dflt="$ccflags $gccflags";;
1342     *) dflt="$ccflags";;
1343     esac
1344     ;;
1345 esac
1346 for thisincl in $inclwanted; do
1347     if test -d $thisincl; then
1348         if test "x$thisincl" != "x$usrinclude"; then
1349             case "$dflt" in
1350             *$thisincl*);;
1351             *) dflt="$dflt -I$thisincl";;
1352             esac
1353         fi
1354     fi
1355 done
1356 case "$optimize" in
1357 -g*)
1358     case "$dflt" in
1359     *DEBUGGING*);;
1360     *) dflt="$dflt -DDEBUGGING";;
1361     esac
1362     ;;
1363 esac
1364 if $contains 'LANGUAGE_C' $usrinclude/signal.h >/dev/null 2>&1; then
1365     case "$dflt" in
1366     *LANGUAGE_C*);;
1367     *) dflt="$dflt -DLANGUAGE_C";;
1368     *) if osf1; then
1369           dflt="$dflt -D__LANGUAGE_C__"
1370        else
1371           dflt="$dflt -DLANGUAGE_C"
1372        fi
1373        ;;
1374     esac
1375 fi
1376 if $contains '_NO_PROTO' $usrinclude/signal.h >/dev/null 2>&1; then
1377     case "$dflt" in
1378     *_NO_PROTO*);;
1379     *) osf1 || dflt="$dflt -D_NO_PROTO";;
1380     esac
1381 fi
1382 case "$dflt" in
1383 '') dflt=none;;
1384 esac
1385 cat <<EOH
1386
1387 Your C compiler may want other flags.  For this question you should
1388 include -I/whatever and -DWHATEVER flags and any other flags used by
1389 the C compiler, but you should NOT include libraries or ld flags like
1390 -lwhatever.  For instance, this would be a good place to specify
1391 -DDEBUGGING.  To use no flags, specify the word "none".
1392   
1393 EOH
1394 rp="Any additional cc flags? [$dflt]"
1395 $echo $n "$rp $c"
1396 . myread
1397 case "$ans" in
1398 none) ans='';
1399 esac
1400 ccflags="$ans"
1401
1402 : the following weeds options from ccflags that are of no interest to cpp
1403 cppflags="$ccflags"
1404 case "$cc" in
1405 *gcc*) cppflags="$cppflags -D__GNUC__";;
1406 esac
1407 case "$cppflags" in
1408 '');;
1409 *)  set X $cppflags
1410     cppflags=''
1411     for flag do
1412         case $flag in
1413         -D*|-U*|-I*|-traditional|-ansi|-nostdinc) cppflags="$cppflags $flag";;
1414         esac
1415     done
1416     case "$cppflags" in
1417     *-*)  echo "(C preprocessor flags: $cppflags)";;
1418     esac
1419     ;;
1420 esac
1421
1422 case "$ldflags" in
1423 '') if venix; then
1424         dflt='-i -z'
1425     else
1426         dflt='none'
1427     fi
1428     ;;
1429 *) dflt="$ldflags";;
1430 esac
1431 echo " "
1432 rp="Any additional ld flags (NOT including libraries)? [$dflt]"
1433 $echo $n "$rp $c"
1434 . myread
1435 case "$ans" in
1436 none) ans='';
1437 esac
1438 ldflags="$ans"
1439
1440 echo " "
1441 echo "Checking for optional libraries..."
1442 case "$libs" in
1443 '') dflt=' ';;
1444 *) dflt="$libs ";;
1445 esac
1446 case "$libswanted" in
1447 '') libswanted='c_s';;
1448 esac
1449 for thislib in $libswanted; do
1450     case "$thislib" in
1451     dbm) thatlib=ndbm;;
1452     *_s) thatlib=NONE;;
1453     *) thatlib="${thislib}_s";;
1454     *) thatlib=NONE;;
1455     esac
1456     xxx=`./loc lib$thislib.a X /usr/ccs/lib /usr/lib /usr/ucblib /usr/local/lib /lib`
1457     if test -f $xxx; then
1458         echo "Found -l$thislib."
1459         case "$dflt" in
1460         *-l$thislib\ *|*-l$thatlib\ *);;
1461         *) dflt="$dflt -l$thislib ";;
1462         esac
1463     else
1464         xxx=`./loc lib$thislib.a X $libpth`
1465         if test -f $xxx; then
1466             echo "Found $xxx."
1467             case "$dflt" in
1468             *"$xxx "*);;
1469             *) dflt="$dflt $xxx ";;
1470             esac
1471         else
1472             xxx=`./loc Slib$thislib.a X $xlibpth`
1473             if test -f $xxx; then
1474                 echo "Found -l$thislib."
1475                 case "$dflt" in
1476                 *-l$thislib\ *|*-l$thatlib\ *);;
1477                 *) dflt="$dflt -l$thislib ";;
1478                 esac
1479             else
1480                 xxx=`./loc lib$thislib.so X /usr/ccs/lib /usr/lib /usr/ucblib /usr/local/lib /lib`
1481                 if test -f $xxx; then
1482                     echo "Found -l$thislib as a shared object only."
1483                     case "$dflt" in
1484                     *-l$thislib\ *|*-l$thatlib\ *);;
1485                     *) dflt="$dflt -l$thislib ";;
1486                     esac
1487                 else
1488                     echo "No -l$thislib."
1489                 fi
1490             fi
1491         fi
1492     fi
1493 done
1494 set X $dflt
1495 shift
1496 dflt="$*"
1497 case "$dflt" in
1498 '') dflt='none';;
1499 esac
1500
1501 $cat <<EOM
1502  
1503 Some versions of Unix support shared libraries, which make
1504 executables smaller but make load time slightly longer.
1505
1506 On some systems, mostly newer Unix System V's, the shared library
1507 is included by putting the option "-lc_s" as the last thing on the
1508 cc command line when linking.  Other systems use shared libraries
1509 by default.  There may be other libraries needed to compile $package
1510 on your machine as well.  If your system needs the "-lc_s" option,
1511 include it here.  Include any other special libraries here as well.
1512 Say "none" for none.
1513 EOM
1514
1515 echo " "
1516 rp="Any additional libraries? [$dflt]"
1517 $echo $n "$rp $c"
1518 . myread
1519 case "$ans" in
1520 none) ans='';
1521 esac
1522 libs="$ans"
1523
1524 : check for size of random number generator
1525 echo " "
1526 case "$alignbytes" in
1527 '')
1528     echo "Checking alignment constraints..."
1529     $cat >try.c <<'EOCP'
1530 struct foobar {
1531     char foo;
1532     double bar;
1533 } try;
1534 main()
1535 {
1536     printf("%d\n", (char*)&try.bar - (char*)&try.foo);
1537 }
1538 EOCP
1539     if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
1540         dflt=`./try`
1541     else
1542         dflt='?'
1543         echo "(I can't seem to compile the test program...)"
1544     fi
1545     ;;
1546 *)
1547     dflt="$alignbytes"
1548     ;;
1549 esac
1550 rp="Doubles must be aligned on a how-many-byte boundary? [$dflt]"
1551 $echo $n "$rp $c"
1552 . myread
1553 alignbytes="$ans"
1554 $rm -f try.c try
1555
1556 : determine where public executables go
1557 cat <<EOF
1558  
1559 The following questions distinguish the directory in which executables
1560 reside from the directory in which they are installed (and from which they
1561 are presumably copied to the former directory by occult means).  This
1562 distinction is often necessary under afs.  On most other systems, however,
1563 the two directories are the same.
1564  
1565 EOF
1566 case "$bin" in
1567 '')
1568     dflt=`./loc . /usr/local/bin /usr/local/bin /usr/lbin /usr/local /usr/bin /bin`
1569     ;;
1570 *)  dflt="$bin"
1571     ;;
1572 esac
1573 cont=true
1574 while $test "$cont" ; do
1575     rp="In which directory will public executables reside (~name ok)? [$dflt]"
1576     $echo "In which directory will public executables reside (~name ok)?"
1577     $echo $n "[$dflt] $c"
1578     . myread
1579     bin="$ans"
1580     bin=`./filexp $bin`
1581     if test -d $bin; then
1582         cont=''
1583     else
1584         case "$fastread" in
1585         yes) dflt=y;;
1586         *) dflt=n;;
1587         esac
1588         rp="Directory $bin doesn't exist.  Use that name anyway? [$dflt]"
1589         $echo $n "$rp $c"
1590         . myread
1591         dflt=''
1592         case "$ans" in
1593         y*) cont='';;
1594         esac
1595     fi
1596 done
1597
1598 case "$bin" in
1599   ?????????????????????????)
1600     cat <<EOF
1601
1602 NOTE: you have a fairly long path name there.  Some systems have trouble
1603 executing a script if the #! line ends up longer than 32 characters.  If
1604 you have this trouble you may have to reinstall somewhere else, or make
1605 a symbolic link from someplace with a shorter name.
1606
1607 EOF
1608     ;;
1609 esac
1610
1611 case "$installbin" in
1612 '')
1613     dflt=`echo $bin | sed 's#^/afs/#/afs/.#'`
1614     test -d $dflt || dflt="$bin"
1615     ;;
1616 *)  dflt="$installbin"
1617     ;;
1618 esac
1619 cont=true
1620 while $test "$cont" ; do
1621     rp="In which directory will public executables be installed (~name ok)? [$dflt]"
1622     $echo "In which directory will public executables be installed (~name ok)?"
1623     $echo $n "[$dflt] $c"
1624     . myread
1625     installbin="$ans"
1626     installbin=`./filexp $installbin`
1627     if test -d $installbin; then
1628         cont=''
1629     else
1630         case "$fastread" in
1631         yes) dflt=y;;
1632         *) dflt=n;;
1633         esac
1634         rp="Directory $installbin doesn't exist.  Use that name anyway? [$dflt]"
1635         $echo $n "$rp $c"
1636         . myread
1637         dflt=''
1638         case "$ans" in
1639         y*) cont='';;
1640         esac
1641     fi
1642 done
1643
1644 : check for ordering of bytes in a long
1645 case "$byteorder" in
1646 '')
1647 cat <<'EOM'
1648   
1649 In the following, larger digits indicate more significance.  A big-endian
1650 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321.  A
1651 little-endian machine like a Vax or an Intel 80?86 chip would be 1234.  Other
1652 machines may have weird orders like 3412.  A Cray will report 87654321.  If
1653 the test program works the default is probably right.
1654 I'm now running the test program...
1655 EOM
1656     $cat >byteorder.c <<'EOCP'
1657 #include <stdio.h>
1658 main()
1659 {
1660     int i;
1661     union {
1662         unsigned long l;
1663         char c[sizeof(long)];
1664     } u;
1665
1666     if (sizeof(long) > 4)
1667         u.l = (0x08070605L << 32) | 0x04030201L;
1668     else
1669         u.l = 0x04030201L;
1670     for (i=0; i < sizeof(long); i++)
1671         printf("%c",u.c[i]+'0');
1672     printf("\n");
1673 }
1674 EOCP
1675     if $cc byteorder.c -o byteorder >/dev/null 2>&1 ; then
1676         dflt=`./byteorder`
1677         case "$dflt" in
1678         ????|????????) echo "(The test program ran ok.)";;
1679         *) echo "(The test program didn't run right for some reason.)";;
1680         esac
1681     else
1682         dflt='4321'
1683         echo "(I can't seem to compile the test program.  Guessing big-endian...)"
1684     fi
1685     ;;
1686 *)
1687     echo " "
1688     dflt="$byteorder"
1689     ;;
1690 esac
1691 rp="What is the order of bytes in a long? [$dflt]"
1692 $echo $n "$rp $c"
1693 . myread
1694 byteorder="$ans"
1695
1696 : check for ability to cast negative floats to unsigned
1697 echo " "
1698 echo 'Checking to see if your C compiler can cast weird floats to unsigned'
1699 $cat >try.c <<'EOCP'
1700 #include <signal.h>
1701
1702 blech() { exit(3); }
1703
1704 main()
1705 {
1706         double f = -123;
1707         unsigned long along;
1708         unsigned int aint;
1709         unsigned short ashort;
1710         int result = 0;
1711
1712         signal(SIGFPE, blech);
1713         along = (unsigned long)f;
1714         aint = (unsigned int)f;
1715         ashort = (unsigned short)f;
1716         if (along != (unsigned long)-123)
1717             result |= 1;
1718         if (aint != (unsigned int)-123)
1719             result |= 1;
1720         if (ashort != (unsigned short)-123)
1721             result |= 1;
1722         f = (double)0x40000000;
1723         f = f + f;
1724         along = 0;
1725         along = (unsigned long)f;
1726         if (along != 0x80000000)
1727             result |= 2;
1728         f -= 1;
1729         along = 0;
1730         along = (unsigned long)f;
1731         if (along != 0x7fffffff)
1732             result |= 1;
1733         f += 2;
1734         along = 0;
1735         along = (unsigned long)f;
1736         if (along != 0x80000001)
1737             result |= 2;
1738         exit(result);
1739 }
1740 EOCP
1741 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
1742     ./try
1743     castflags=$?
1744 else
1745     castflags=3
1746 fi
1747 case "$castflags" in
1748 0)  val="$define"
1749     echo "Yup, it does."
1750     ;;
1751 *)  val="$undef"
1752     echo "Nope, it doesn't."
1753     ;;
1754 esac
1755 set d_castneg
1756 eval $setvar
1757 $rm -f try.*
1758
1759 : see how we invoke the C preprocessor
1760 echo " "
1761 echo "Now, how can we feed standard input to your C preprocessor..."
1762 cat <<'EOT' >testcpp.c
1763 #define ABC abc
1764 #define XYZ xyz
1765 ABC.XYZ
1766 EOT
1767
1768 cd ..
1769 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
1770 chmod 755 cppstdin
1771 wrapper=cppstdin
1772
1773 case "$cppstdin" in
1774 /*cppstdin) cppstdin=cppstdin;;
1775 esac
1776 cp cppstdin UU
1777 cd UU
1778
1779 if test "X$cppstdin" != "X" && \
1780   $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
1781   $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
1782     echo "You used to use $cppstdin $cppminus so we'll use that again."
1783 elif test "$cc" = gcc && \
1784   (echo "Using gcc, eh?  We'll try to force gcc -E using a wrapper..."; \
1785   $wrapper <testcpp.c >testcpp.out 2>&1; \
1786   $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1) ; then
1787     echo "Yup, we can."
1788     cppstdin="$wrapper"
1789     cppminus='';
1790 elif echo 'Maybe "'"$cc"' -E" will work...'; \
1791   $cc -E <testcpp.c >testcpp.out 2>&1; \
1792   $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
1793     echo "Yup, it does."
1794     cppstdin="$cc -E"
1795     cppminus='';
1796 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
1797   $cc -E - <testcpp.c >testcpp.out 2>&1; \
1798   $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
1799     echo "Yup, it does."
1800     cppstdin="$cc -E"
1801     cppminus='-';
1802 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
1803   $cpp <testcpp.c >testcpp.out 2>&1; \
1804   $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
1805     echo "It works!"
1806     cppstdin="$cpp"
1807     cppminus='';
1808 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
1809   $cpp - <testcpp.c >testcpp.out 2>&1; \
1810   $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
1811     echo "Hooray, it works!  I was beginning to wonder."
1812     cppstdin="$cpp"
1813     cppminus='-';
1814 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
1815   $wrapper <testcpp.c >testcpp.out 2>&1; \
1816   $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
1817     cppstdin="$wrapper"
1818     cppminus=''
1819     echo "Eureka!."
1820 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
1821   $cc -P <testcpp.c >testcpp.out 2>&1; \
1822   $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
1823     echo "Yipee, that works!"
1824     cppstdin="$cc -P"
1825     cppminus='';
1826 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
1827   $cc -P - <testcpp.c >testcpp.out 2>&1; \
1828   $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
1829     echo "At long last!"
1830     cppstdin="$cc -P"
1831     cppminus='-';
1832 else
1833     dflt=blurfl
1834     $echo $n "No dice.  I can't find a C preprocessor.  Name one: $c"
1835     rp='Name a C preprocessor:'
1836     . myread
1837     cppstdin="$ans"
1838     $cppstdin <testcpp.c >testcpp.out 2>&1
1839     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
1840         echo "OK, that will do."
1841     else
1842         echo "Sorry, I can't get that to work.  Go find one and rerun Configure."
1843         exit 1
1844     fi
1845 fi
1846
1847 : get list of predefined functions in a handy place
1848 echo " "
1849 case "$libc" in
1850 '') libc=unknown;;
1851 esac
1852 case "$nm_opts" in
1853 '') if test -f /mach_boot; then
1854         nm_opts=''
1855     elif test -d /usr/ccs/lib; then
1856         nm_opts='-p'
1857     else
1858         nm_opts=''
1859     fi
1860     ;;
1861 esac
1862 : on mips, we DO NOT want /lib, and we want inclPath/usr/lib
1863 case "$libpth" in
1864 '') if mips; then
1865         libpth='$inclPath/usr/lib /usr/local/lib'
1866         nm_opts="-B"
1867     else
1868         libpth='/usr/ccs/lib /lib /usr/lib /usr/ucblib /usr/local/lib'
1869     fi
1870     ;;
1871 esac
1872 case "$libs" in
1873 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
1874 esac
1875 libnames='';
1876 case "$libs" in
1877 '') ;;
1878 *)  for thislib in $libs; do
1879         case "$thislib" in
1880         -l*) thislib=`expr X$thislib : 'X-l\(.*\)'`
1881             try=`./loc lib$thislib.a blurfl/dyick $libpth`
1882             if test ! -f $try; then
1883                 try=`./loc lib$thislib blurfl/dyick $libpth`
1884                 if test ! -f $try; then
1885                     try=`./loc $thislib blurfl/dyick $libpth`
1886                     if test ! -f $try; then
1887                         try=`./loc Slib$thislib.a blurfl/dyick $xlibpth`
1888                         if test ! -f $try; then
1889                             try=''
1890                         fi
1891                     fi
1892                 fi
1893             fi
1894             libnames="$libnames $try"
1895             ;;
1896         *) libnames="$libnames $thislib" ;;
1897         esac
1898     done
1899     ;;
1900 esac
1901 set /usr/ccs/lib/libc.so
1902 test -f $1 || set /usr/lib/libc.so
1903 test -f $1 || set /usr/shlib/libc.so
1904 test -f $1 || set /usr/lib/libc.so.[0-9]*
1905 test -f $1 || set /lib/libsys_s.a
1906 eval set \$$#
1907 if test -f "$1"; then
1908     echo "Your (shared) C library seems to be in $1."
1909     libc="$1"
1910 elif test -f "$libc"; then
1911     echo "Your C library seems to be in $libc."
1912 elif test -f /lib/libc.a; then
1913     echo "Your C library seems to be in /lib/libc.a.  You're normal."
1914     libc=/lib/libc.a
1915 else
1916     if   ans=`./loc libc.a  blurfl/dyick $libpth`; test -f "$ans"; then
1917         :
1918     elif ans=`./loc libc    blurfl/dyick $libpth`; test -f "$ans"; then
1919             libnames="$libnames "`./loc clib blurfl/dyick $libpth`
1920     elif ans=`./loc clib    blurfl/dyick $libpth`; test -f "$ans"; then
1921         :
1922     elif ans=`./loc Slibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then
1923         :
1924     elif ans=`./loc Mlibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then
1925         :
1926     elif ans=`./loc Llibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then
1927         :
1928     fi
1929     if test -f "$ans"; then
1930         echo "Your C library seems to be in $ans, of all places."
1931         libc=$ans
1932     else
1933         cat <<EOM
1934  
1935 I can't seem to find your C library.  I've looked in the following places:
1936
1937         $libpth
1938
1939 None of these seems to contain your C library.  What is the full name
1940 EOM
1941         dflt=None
1942         $echo $n "of your C library? $c"
1943         rp='C library full name?'
1944         . myread
1945         libc="$ans"
1946     fi
1947 fi
1948 echo " "
1949 if test $libc = "/lib/libc"; then
1950     libc="$libc /lib/clib"
1951 fi
1952 cat <<END
1953  
1954 If the guess above is wrong (which it might be if you're using a strange
1955 compiler, or your machine supports multiple models), you can override it here.
1956 END
1957 dflt="$libc";
1958 rp="Your C library is where? [$dflt]"
1959 $echo $n "$rp $c"
1960 . myread
1961 libc="$ans"
1962 echo " "
1963 echo $libc $libnames | tr ' ' '\012' | sort | uniq >libnames
1964 $echo "Extracting names from the following files for later perusal:"
1965 sed 's/^/       /' libnames
1966 echo $n "This may take a while...$c"
1967 set X `cat libnames`
1968 shift
1969 nm $nm_opts $* 2>/dev/null >libc.tmp
1970 $sed -n -e 's/^.* [ATDS]  *[_.]*//p' -e 's/^.* [ATDS] //p' <libc.tmp >libc.list
1971 if $contains '^printf$' libc.list >/dev/null 2>&1; then
1972     echo done
1973 elif $sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p' \
1974         <libc.tmp >libc.list; \
1975   $contains '^printf$' libc.list >/dev/null 2>&1; then
1976     echo done
1977 elif $sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p' <libc.tmp >libc.list; \
1978   $contains '^printf$' libc.list >/dev/null 2>&1; then
1979     echo done
1980 elif $sed -n -e 's/^.* D __*//p' -e 's/^.* D //p' <libc.tmp >libc.list; \
1981   $contains '^printf$' libc.list >/dev/null 2>&1; then
1982     echo done
1983 elif $sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p' \
1984                 <libc.tmp >libc.list; \
1985   $contains '^printf$' libc.list >/dev/null 2>&1; then
1986     echo done
1987 elif $grep '|' <libc.tmp | $sed -n -e '/|COMMON/d' -e '/|DATA/d' -e '/ file/d' \
1988                                    -e 's/^\([^     ]*\).*/\1/p' >libc.list
1989   $contains '^printf$' libc.list >/dev/null 2>&1; then
1990     echo done
1991 elif $sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p' \
1992            <libc.tmp >libc.list; \
1993   $contains '^printf$' libc.list >/dev/null 2>&1; then
1994     echo done
1995 elif $sed -n -e 's/^[         ]*[0-9][0-9a-f]*[       ]*Def. Text[    ]*//p' \
1996            < libc.tmp | $sed -e 's/\[.*\]//' > libc.list; \
1997   $contains '^printf$' libc.list >/dev/null 2>&1; then
1998       echo done
1999 else
2000     nm -p $* 2>/dev/null >libc.tmp
2001     $sed -n -e 's/^.* [AT]  *_[_.]*//p' -e 's/^.* [AT] //p' <libc.tmp >libc.list
2002     if $contains '^printf$' libc.list >/dev/null 2>&1; then
2003         nm_opts='-p'
2004         echo "done"
2005     else
2006         echo " "
2007         echo "nm didn't seem to work right."
2008         echo "Trying ar instead..."
2009         if ar t $libc > libc.tmp; then
2010             for thisname in $libnames; do
2011                 ar t $thisname >>libc.tmp
2012             done
2013             $sed -e 's/\.o$//' < libc.tmp > libc.list
2014             echo "Ok."
2015         else
2016             echo "ar didn't seem to work right."
2017             echo "Maybe this is a Cray...trying bld instead..."
2018             if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list; then
2019                 for thisname in $libnames; do
2020                     bld t $libnames | \
2021                         $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
2022                     ar t $thisname >>libc.tmp
2023                 done
2024                 echo "Ok."
2025             else
2026                 echo "That didn't work either.  Giving up."
2027                 exit 1
2028             fi
2029         fi
2030     fi
2031 fi
2032 if test -f /lib/syscalls.exp; then
2033     echo "Also extracting names from /lib/syscalls.exp for good ole AIX..."
2034     sed -n 's/^\([^     ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
2035 fi
2036
2037 inlibc='echo " "; td=$define; tu=$undef;
2038 if $contains "^$1\$" libc.list >/dev/null 2>&1;
2039 then echo "$1() found";
2040   eval "case \"\$$2\" in undef) . whoa; esac"; eval "$2=\$td";
2041 else echo "$1() NOT found";
2042   eval "case \"\$$2\" in define) . whoa; esac"; eval "$2=\$tu"; fi'
2043
2044 : see if bcmp exists
2045 set bcmp d_bcmp
2046 eval $inlibc
2047
2048 : see if bcopy exists
2049 set bcopy d_bcopy
2050 eval $inlibc
2051
2052 case "$d_safebcpy" in
2053 '')
2054     : assume the worst
2055     d_safebcpy=undef
2056     case "$d_bcopy" in
2057     define)
2058         echo "Checking to see if your bcopy() can do overlapping copies..."
2059         $cat >safebcpy.c <<'EOCP'
2060 main()
2061 {
2062     char buf[128];
2063     register char *b;
2064     register int len;
2065     register int off;
2066     register int align;
2067
2068     for (align = 7; align >= 0; align--) {
2069         for (len = 36; len; len--) {
2070             b = buf+align;
2071             bcopy("abcdefghijklmnopqrstuvwxyz0123456789", b, len);
2072             for (off = 1; off <= len; off++) {
2073                 bcopy(b, b+off, len);
2074                 bcopy(b+off, b, len);
2075                 if (bcmp(b, "abcdefghijklmnopqrstuvwxyz0123456789", len))
2076                     exit(1);
2077             }
2078         }
2079     }
2080     exit(0);
2081 }
2082 EOCP
2083         if $cc safebcpy.c -o safebcpy $ccflags >/dev/null 2>&1 ; then
2084             if ./safebcpy; then
2085                 echo "It can."
2086                 d_safebcpy=define
2087             else
2088                 echo "It can't."
2089             fi
2090         else
2091             echo "(I can't compile the test program, so we'll assume not...)"
2092         fi
2093         ;;
2094     esac
2095     ;;
2096 esac
2097
2098 : see if bzero exists
2099 set bzero d_bzero
2100 eval $inlibc
2101
2102 : see if sprintf is declared as int or pointer to char
2103 echo " "
2104 cat >ucbsprf.c <<'EOF'
2105 #include <stdio.h>
2106 main()
2107 {
2108     int sprintf();
2109     char buf[10];
2110     exit((unsigned long)sprintf(buf,"%s","foo") > 10L);
2111 }
2112 EOF
2113 if $cc $ccflags ucbsprf.c -o ucbsprf >/dev/null 2>&1 && ./ucbsprf; then
2114     echo "Your sprintf() returns (int)."
2115     val="$undef"
2116 else
2117     echo "Your sprintf() returns (char*)."
2118     val="$define"
2119 fi
2120 set d_charsprf
2121 eval $setvar
2122
2123 : see if vprintf exists
2124 echo " "
2125 if $contains '^vprintf$' libc.list >/dev/null 2>&1; then
2126     echo 'vprintf() found.'
2127     val="$define"
2128     cat >vprintf.c <<'EOF'
2129 #include <varargs.h>
2130
2131 main() { xxx("foo"); }
2132
2133 xxx(va_alist)
2134 va_dcl
2135 {
2136     va_list args;
2137     char buf[10];
2138
2139     va_start(args);
2140     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
2141 }
2142 EOF
2143     if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
2144         echo "Your vsprintf() returns (int)."
2145         val2="$undef"
2146     else
2147         echo "Your vsprintf() returns (char*)."
2148         val2="$define"
2149     fi
2150 else
2151     echo 'vprintf() NOT found.'
2152     val="$undef"
2153     val2="$undef"
2154 fi
2155 set d_vprintf
2156 eval $setvar
2157 val=$val2
2158 set d_charvspr
2159 eval $setvar
2160
2161 : see if chsize exists
2162 set chsize d_chsize
2163 eval $inlibc
2164
2165 : see if crypt exists
2166 echo " "
2167 if $contains '^crypt$' libc.list >/dev/null 2>&1; then
2168     echo 'crypt() found.'
2169     val="$define"
2170     cryptlib=''
2171 else
2172     cryptlib=`./loc Slibcrypt.a "" $xlibpth`
2173     if $test -z "$cryptlib"; then
2174         cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
2175     else
2176         cryptlib=-lcrypt
2177     fi
2178     if $test -z "$cryptlib"; then
2179         cryptlib=`./loc Llibcrypt.a "" $xlibpth`
2180     else
2181         cryptlib=-lcrypt
2182     fi
2183     if $test -z "$cryptlib"; then
2184         cryptlib=`./loc libcrypt.a "" $libpth`
2185     else
2186         cryptlib=-lcrypt
2187     fi
2188     if $test -z "$cryptlib"; then
2189         echo 'crypt() NOT found.'
2190         val="$undef"
2191     else
2192         val="$define"
2193     fi
2194 fi
2195 set d_crypt
2196 eval $setvar
2197
2198 : get csh whereabouts
2199 case "$csh" in
2200 'csh') val="$undef" ;;
2201 *)     val="$define" ;;
2202 esac
2203 set d_csh
2204 eval $setvar
2205
2206 : see if readdir exists
2207 set readdir d_readdir
2208 eval $inlibc
2209
2210 : see if there are directory access routines out there
2211 echo " "
2212 xxx=`./loc ndir.h x $usrinclude /usr/local/include $inclwanted`
2213 case "$xxx" in
2214 x)
2215     xxx=`./loc sys/ndir.h x $usrinclude /usr/local/include $inclwanted`
2216     ;;
2217 esac
2218 D_dirnamlen="$undef"
2219 I_dirent="$undef"
2220 I_sys_dir="$undef"
2221 I_my_dir="$undef"
2222 I_ndir="$undef"
2223 I_sys_ndir="$undef"
2224 libndir=''
2225 ndirc=''
2226 ndiro=''
2227 if $test -r $usrinclude/dirent.h; then
2228     echo "dirent.h found."
2229     if $contains 'd_namlen' $usrinclude/dirent.h >/dev/null 2>&1; then
2230         D_dirnamlen="$define"
2231     fi
2232     I_dirent="$define"
2233 elif $test -r $xxx; then
2234     echo "You seem to use <$xxx>,"
2235     if $test "$d_readdir" = "$define"; then
2236         echo "and I can get readdir() from your C library."
2237     elif $test -r /usr/lib/libndir.a || $test -r /usr/local/lib/libndir.a; then
2238         echo "and I'll get the routines using -lndir ."
2239         libndir='-lndir'
2240     else
2241         ans=`./loc libndir.a x $libpth`
2242         case "$ans" in
2243         x)
2244             echo "but I can't find the ndir library!"
2245             ;;
2246         *)
2247             echo "and I found the directory library in $ans."
2248             libndir="$ans"
2249             ;;
2250         esac
2251     fi
2252     if $contains 'd_namlen' $xxx >/dev/null 2>&1; then
2253         D_dirnamlen="$define"
2254     fi
2255     case "$xxx" in
2256     sys/)
2257         I_sys_ndir="$define"
2258         ;;
2259     *)
2260         I_ndir="$define"
2261         ;;
2262     esac
2263 else
2264     : The next line used to require this to be a bsd system.
2265     if $contains '^readdir$' libc.list >/dev/null 2>&1 ; then
2266         echo "No ndir library found, but you have readdir() so we'll use that."
2267         if $contains 'd_namlen' $usrinclude/sys/dir.h >/dev/null 2>&1; then
2268             D_dirnamlen="$define"
2269         fi
2270         I_sys_dir="$define"
2271     else
2272         echo "No ndir library found--using ./$d_ndir.c."
2273 : This will lose since $d_ndir.h is in another directory.
2274 : I doubt we can rely on it being in ../$d_ndir.h . 
2275 : At least it will fail in a conservative manner.
2276         if $contains 'd_namlen' $d_ndir.h >/dev/null 2>&1; then
2277             D_dirnamlen="$define"
2278         fi
2279         I_my_dir="$define"
2280         ndirc="$d_ndir.c"
2281         ndiro="$d_ndir.o"
2282     fi
2283 fi
2284 val=$D_dirnamlen;       set d_dirnamlen;        eval $setvar
2285 val=$I_dirent;          set i_dirent;           eval $setvar
2286 val=$I_sys_dir;         set i_sys_dir;          eval $setvar
2287 val=$I_my_dir;          set i_my_dir;           eval $setvar
2288 val=$I_ndir;            set i_ndir;             eval $setvar
2289 val=$I_sys_ndir;        set i_sys_ndir;         eval $setvar
2290
2291 : now see if they want to do setuid emulation
2292 case "$d_dosuid" in
2293 '') dflt=n;;
2294 *undef*) dflt=n;;
2295 *) dflt=y;;
2296 esac
2297 cat <<EOM
2298  
2299 Some sites have disabled setuid #! scripts because of a bug in the kernel
2300 that prevents them from being secure.  If you are on such a system, the
2301 setuid/setgid bits on scripts are currently useless.  It is possible for
2302 $package to detect those bits and emulate setuid/setgid in a secure fashion
2303 until a better solution is devised for the kernel problem.
2304
2305 EOM
2306 rp="Do you want to do setuid/setgid emulation? [$dflt]"
2307 $echo $n "$rp $c"
2308 . myread
2309 case "$ans" in
2310 '') $ans="$dflt";;
2311 esac
2312 case "$ans" in
2313 y*)  d_dosuid="$define";;
2314 *) d_dosuid="$undef";;
2315 esac
2316
2317 : see if dup2 exists
2318 set dup2 d_dup2
2319 eval $inlibc
2320
2321 : see if fchmod exists
2322 set fchmod d_fchmod
2323 eval $inlibc
2324
2325 : see if fchown exists
2326 set fchown d_fchown
2327 eval $inlibc
2328
2329 : see if this is an fcntl system
2330 set fcntl d_fcntl
2331 eval $inlibc
2332
2333 : see if we can have long filenames
2334 echo " "
2335 rm -f 123456789abcde
2336 if (echo hi >123456789abcdef) 2>/dev/null; then
2337     : not version 8
2338     if test -f 123456789abcde; then
2339         echo 'You cannot have filenames longer than 14 characters.  Sigh.'
2340         val="$undef"
2341     else
2342         echo 'You can have filenames longer than 14 characters.'
2343         val="$define"
2344     fi
2345 else
2346     : version 8 probably
2347     echo "You can't have filenames longer than 14 chars.  You can't even think about them!"
2348     val="$undef"
2349 fi 
2350 set d_flexfnam
2351 eval $setvar
2352
2353 : see if flock exists
2354 set flock d_flock
2355 eval $inlibc
2356
2357 : see if getgroups exists
2358 set getgroups d_getgrps
2359 eval $inlibc
2360
2361 : see if gethostent exists
2362 set gethostent d_gethent
2363 eval $inlibc
2364
2365 : see if getpgrp exists
2366 set getpgrp d_getpgrp
2367 eval $inlibc
2368
2369 : see if getpgrp2 exists
2370 set getpgrp2 d_getpgrp2
2371 eval $inlibc
2372
2373 : see if getpriority exists
2374 set getpriority d_getprior
2375 eval $inlibc
2376
2377 : see if htonl exists
2378 set htonl d_htonl
2379 eval $inlibc
2380
2381 : index or strcpy
2382 echo " "
2383 case "$d_index" in
2384 undef) dflt=y;;
2385 define) dflt=n;;
2386 *)  if $test -f /unix; then
2387         dflt=n
2388     else
2389         dflt=y
2390     fi
2391     ;;
2392 esac
2393 if $contains '^index$' libc.list >/dev/null 2>&1 ; then
2394     if $contains '^strchr$' libc.list >/dev/null 2>&1 ; then
2395         echo "Your system has both index() and strchr().  Shall I use"
2396         rp="index() rather than strchr()? [$dflt]"
2397         $echo $n "$rp $c"
2398         . myread
2399         case "$ans" in
2400             n*) d_index="$define" ;;
2401             *)  d_index="$undef" ;;
2402         esac
2403     else
2404         d_index="$undef"
2405         echo "index() found."
2406     fi
2407 else
2408     if $contains '^strchr$' libc.list >/dev/null 2>&1 ; then
2409         d_index="$define"
2410         echo "strchr() found."
2411     else
2412         echo "No index() or strchr() found!"
2413         d_index="$undef"
2414     fi
2415 fi
2416
2417 : see if isascii exists
2418 set isascii d_isascii
2419 eval $inlibc
2420
2421 : see if killpg exists
2422 set killpg d_killpg
2423 eval $inlibc
2424
2425 : see if lstat exists
2426 set lstat d_lstat
2427 eval $inlibc
2428
2429 : see if memcmp exists
2430 set memcmp d_memcmp
2431 eval $inlibc
2432
2433 : see if memcpy exists
2434 set memcpy d_memcpy
2435 eval $inlibc
2436
2437 case "$d_safemcpy" in
2438 '')
2439     : assume the worst
2440     d_safemcpy=undef
2441     case "$d_memcpy" in
2442     define)
2443         echo "Checking to see if your memcpy() can do overlapping copies..."
2444         $cat >safemcpy.c <<'EOCP'
2445 main()
2446 {
2447     char buf[128];
2448     register char *b;
2449     register int len;
2450     register int off;
2451     register int align;
2452
2453     for (align = 7; align >= 0; align--) {
2454         for (len = 36; len; len--) {
2455             b = buf+align;
2456             memcpy(b,"abcdefghijklmnopqrstuvwxyz0123456789", len);
2457             for (off = 1; off <= len; off++) {
2458                 memcpy(b+off, b, len);
2459                 memcpy(b, b+off, len);
2460                 if (memcmp(b, "abcdefghijklmnopqrstuvwxyz0123456789", len))
2461                     exit(1);
2462             }
2463         }
2464     }
2465     exit(0);
2466 }
2467 EOCP
2468         if $cc safemcpy.c -o safemcpy $ccflags >/dev/null 2>&1 ; then
2469             if ./safemcpy; then
2470                 echo "It can."
2471                 d_safemcpy=define
2472             else
2473                 echo "It can't."
2474             fi
2475         else
2476             echo "(I can't compile the test program, so we'll assume not...)"
2477         fi
2478         ;;
2479     esac
2480     ;;
2481 esac
2482
2483 : see if memmove exists
2484 set memmove d_memmove
2485 eval $inlibc
2486
2487 : see if memset exists
2488 set memset d_memset
2489 eval $inlibc
2490
2491 : see if mkdir exists
2492 set mkdir d_mkdir
2493 eval $inlibc
2494
2495 : see if msgctl exists
2496 set msgctl d_msgctl
2497 eval $inlibc
2498
2499 : see if msgget exists
2500 set msgget d_msgget
2501 eval $inlibc
2502
2503 : see if msgsnd exists
2504 set msgsnd d_msgsnd
2505 eval $inlibc
2506
2507 : see if msgrcv exists
2508 set msgrcv d_msgrcv
2509 eval $inlibc
2510
2511 : see how much of the 'msg*(2)' library is present.
2512 h_msg=true
2513 echo " "
2514 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
2515 *undef*) h_msg=false;;
2516 esac
2517 : we could also check for sys/ipc.h ...
2518 if $h_msg && $test -r $usrinclude/sys/msg.h; then
2519     echo "You have the full msg*(2) library."
2520     val="$define"
2521 else
2522     echo "You don't have the full msg*(2) library."
2523     val="$undef"
2524 fi
2525 set d_msg
2526 eval $setvar
2527
2528 : determine which malloc to compile in
2529 echo " "
2530 case "$d_mymalloc" in
2531 '')
2532     case "$usemymalloc" in
2533     '')
2534         if bsd || v7; then
2535             dflt='y'
2536         else
2537             dflt='n'
2538         fi
2539         ;;
2540     n*) dflt=n;;
2541     *)  dflt=y;;
2542     esac
2543     ;;
2544 define)  dflt="y"
2545     ;;
2546 *)  dflt="n"
2547     ;;
2548 esac
2549 rp="Do you wish to attempt to use the malloc that comes with $package? [$dflt]"
2550 $echo $n "$rp $c"
2551 . myread
2552 case "$ans" in
2553 '') ans=$dflt;;
2554 esac
2555 case "$ans" in
2556 y*) mallocsrc='malloc.c'; mallocobj='malloc.o'
2557     libs=`echo $libs | sed 's/-lmalloc//'`
2558     val="$define"
2559     case "$mallocptrtype" in
2560     '')
2561         cat >usemymalloc.c <<'END'
2562 #ifdef __STDC__
2563 #include <stdlib.h>
2564 #else
2565 #include <malloc.h>
2566 #endif
2567 void *malloc();
2568 END
2569         if $cc $ccflags -c usemymalloc.c >/dev/null 2>&1; then
2570             mallocptrtype=void
2571         else
2572             mallocptrtype=char
2573         fi
2574         ;;
2575     esac
2576     echo " "
2577     echo "Your system wants malloc to return $mallocptrtype*, it would seem."
2578     ;;
2579 *)  mallocsrc='';
2580     mallocobj='';
2581     mallocptrtype=void
2582     val="$undef"
2583     ;;
2584 esac
2585 set d_mymalloc
2586 eval $setvar
2587
2588 : see if ndbm is available
2589 echo " "
2590 xxx=`./loc ndbm.h x $usrinclude /usr/local/include $inclwanted`
2591 if test -f $xxx; then
2592     val="$define"
2593     echo "ndbm.h found."
2594 else
2595     val="$undef"
2596     echo "ndbm.h NOT found."
2597 fi
2598 set d_ndbm
2599 eval $setvar
2600
2601 : see if we have the old dbm
2602 echo " "
2603 xxx=`./loc dbm.h x $usrinclude /usr/local/include $inclwanted`
2604 if test -f $xxx; then
2605     val="$define"
2606     echo "dbm.h found."
2607 else
2608     val="$undef"
2609     echo "dbm.h NOT found."
2610 fi
2611 set d_odbm
2612 eval $setvar
2613
2614 : see whether socket exists
2615 echo " "
2616 socketlib=''
2617 if $contains socket libc.list >/dev/null 2>&1; then
2618     echo "Looks like you have Berkeley networking support."
2619     val="$define"
2620     : now check for advanced features
2621     if $contains setsockopt libc.list >/dev/null 2>&1; then
2622         val2="$undef"
2623     else
2624         echo "...but it uses the old 4.1c interface, rather than 4.2"
2625         val2="$define"
2626     fi
2627 else
2628     : hpux, for one, puts all the socket stuff in socklib.o
2629     if $contains socklib libc.list >/dev/null 2>&1; then
2630         echo "Looks like you have Berkeley networking support."
2631         val="$define"
2632         : we will have to assume that it supports the 4.2 BSD interface
2633         val2="$undef"
2634     else
2635         echo "Hmmm...you don't have Berkeley networking in libc.a..."
2636         : look for an optional networking library
2637         if test -f /usr/lib/libnet.a; then
2638             (ar t /usr/lib/libnet.a ||
2639                 nm -g /usr/lib/libnet.a) 2>/dev/null >> libc.list
2640             if $contains socket libc.list >/dev/null 2>&1; then
2641                 echo "but the Wollongong group seems to have hacked it in."
2642                 socketlib="-lnet -lnsl_s"
2643                 val="$define"
2644                 : now check for advanced features
2645                 if $contains setsockopt libc.list >/dev/null 2>&1; then
2646                     val2="$undef"
2647                 else
2648                     echo "...using the old 4.1c interface, rather than 4.2"
2649                     val2="$define"
2650                 fi
2651             else
2652                 echo "or even in libnet.a, which is peculiar."
2653                 val="$undef"
2654                 val2="$undef"
2655             fi
2656         else
2657             echo "or anywhere else I see."
2658             val="$undef"
2659             val2="$undef"
2660         fi
2661     fi
2662 fi
2663 set d_socket
2664 eval $setvar
2665
2666 if $contains socketpair libc.list >/dev/null 2>&1; then
2667     val="$define"
2668 else
2669     val="$undef"
2670 fi
2671 set d_sockpair
2672 eval $setvar
2673 val=$val2
2674 set d_oldsock
2675 eval $setvar
2676
2677 : Locate the flags for 'open()'
2678 echo " "
2679 $cat >open3.c <<'EOCP'
2680 #include <sys/types.h>
2681 #ifdef I_FCNTL
2682 #include <fcntl.h>
2683 #endif
2684 #ifdef I_SYS_FILE
2685 #include <sys/file.h>
2686 #endif
2687 main() {
2688
2689         if(O_RDONLY);
2690
2691 #ifdef O_TRUNC
2692         exit(0);
2693 #else
2694         exit(1);
2695 #endif
2696 }
2697 EOCP
2698 : check sys/file.h first to get FREAD on Sun
2699 if $test -r $usrinclude/sys/file.h && \
2700    $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
2701     h_sys_file=true;
2702     echo "sys/file.h defines the O_* constants..."
2703     if ./open3; then
2704         echo "and you have the 3 argument form of open()."
2705         val="$define"
2706     else
2707         echo "but not the 3 argument form of open().  Oh, well."
2708         val="$undef"
2709     fi
2710 elif $test -r $usrinclude/fcntl.h && \
2711    $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
2712     h_fcntl=true;
2713     echo "fcntl.h defines the O_* constants..."
2714     if ./open3; then
2715         echo "and you have the 3 argument form of open()."
2716         val="$define"
2717     else
2718         echo "but not the 3 argument form of open().  Oh, well."
2719         val="$undef"
2720     fi
2721 else
2722     val="$undef"
2723     echo "I can't find the O_* constant definitions!  You got problems."
2724 fi
2725 set d_open3
2726 eval $setvar
2727
2728 : see if how pwd stuff is defined
2729 echo " "
2730 if $test -r $usrinclude/pwd.h ; then
2731     i_pwd="$define"
2732     echo "pwd.h found."
2733     $cppstdin $cppflags $cppminus <$usrinclude/pwd.h | \
2734         sed -n '/struct[        ][      ]*passwd/,/^};/p' >pwd.txt
2735     if $contains 'pw_quota' pwd.txt >/dev/null 2>&1; then
2736         d_pwquota="$define"
2737     else
2738         d_pwquota="$undef"
2739     fi
2740     if $contains 'pw_age' pwd.txt >/dev/null 2>&1; then
2741         d_pwage="$define"
2742     else
2743         d_pwage="$undef"
2744     fi
2745     if $contains 'pw_change' pwd.txt >/dev/null 2>&1; then
2746         d_pwchange="$define"
2747     else
2748         d_pwchange="$undef"
2749     fi
2750     if $contains 'pw_class' pwd.txt >/dev/null 2>&1; then
2751         d_pwclass="$define"
2752     else
2753         d_pwclass="$undef"
2754     fi
2755     if $contains 'pw_expire' pwd.txt >/dev/null 2>&1; then
2756         d_pwexpire="$define"
2757     else
2758         d_pwexpire="$undef"
2759     fi
2760     if $contains 'pw_comment' pwd.txt >/dev/null 2>&1; then
2761         d_pwcomment="$define"
2762     else
2763         d_pwcomment="$undef"
2764     fi
2765 else
2766     i_pwd="$undef"
2767     d_pwquota="$undef"
2768     d_pwage="$undef"
2769     d_pwchange="$undef"
2770     d_pwclass="$undef"
2771     d_pwexpire="$undef"
2772     d_pwcomment="$undef"
2773     echo "No pwd.h found."
2774 fi
2775
2776 : see if rename exists
2777 set rename d_rename
2778 eval $inlibc
2779
2780 : see if rewindir exists
2781 set rewinddir d_rewindir
2782 eval $inlibc
2783
2784 : see if rmdir exists
2785 set rmdir d_rmdir
2786 eval $inlibc
2787
2788 : see if seekdir exists
2789 set seekdir d_seekdir
2790 eval $inlibc
2791
2792 : see if select exists
2793 set select d_select
2794 eval $inlibc
2795
2796 : see if semctl exists
2797 set semctl d_semctl
2798 eval $inlibc
2799
2800 : see if semget exists
2801 set semget d_semget
2802 eval $inlibc
2803
2804 : see if semop exists
2805 set semop d_semop
2806 eval $inlibc
2807
2808 : see how much of the 'sem*(2)' library is present.
2809 h_sem=true
2810 echo " "
2811 case "$d_semctl$d_semget$d_semop" in
2812 *undef*) h_sem=false;;
2813 esac
2814 : we could also check for sys/ipc.h ...
2815 if $h_sem && $test -r $usrinclude/sys/sem.h; then
2816     echo "You have the full sem*(2) library."
2817     val="$define"
2818 else
2819     echo "You don't have the full sem*(2) library."
2820     val="$undef"
2821 fi
2822 set d_sem
2823 eval $setvar
2824
2825 : see if setegid exists
2826 set setegid d_setegid
2827 eval $inlibc
2828
2829 : see if seteuid exists
2830 set seteuid d_seteuid
2831 eval $inlibc
2832
2833 : see if setpgrp exists
2834 set setpgrp d_setpgrp
2835 eval $inlibc
2836
2837 : see if setpgrp2 exists
2838 set setpgrp2 d_setpgrp2
2839 eval $inlibc
2840
2841 : see if setpriority exists
2842 set setpriority d_setprior
2843 eval $inlibc
2844
2845 : see if setregid exists
2846 set setregid d_setregid
2847 eval $inlibc
2848 set setresgid d_setresgid
2849 eval $inlibc
2850
2851 : see if setreuid exists
2852 set setreuid d_setreuid
2853 eval $inlibc
2854 set setresuid d_setresuid
2855 eval $inlibc
2856
2857 : see if setrgid exists
2858 set setrgid d_setrgid
2859 eval $inlibc
2860
2861 : see if setruid exists
2862 set setruid d_setruid
2863 eval $inlibc
2864
2865 : see if shmctl exists
2866 set shmctl d_shmctl
2867 eval $inlibc
2868
2869 : see if shmget exists
2870 set shmget d_shmget
2871 eval $inlibc
2872
2873 : see if shmat exists
2874 set shmat d_shmat
2875 eval $inlibc
2876
2877 d_voidshmat="$undef"
2878 case "$d_shmat" in
2879 define)
2880     $cppstdin $cppflags $cppminus < $usrinclude/sys/shm.h >voidshmat.txt 2>/dev/null
2881     if $contains "void.*shmat" voidshmat.txt >/dev/null 2>&1; then
2882         echo "and shmat returns (void*)"
2883         d_voidshmat="$define"
2884     else
2885         echo "and shmat returns (char*)"
2886     fi
2887     ;;
2888 esac
2889
2890 : see if shmdt exists
2891 set shmdt d_shmdt
2892 eval $inlibc
2893
2894 : see how much of the 'shm*(2)' library is present.
2895 h_shm=true
2896 echo " "
2897 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
2898 *undef*) h_shm=false;;
2899 esac
2900 : we could also check for sys/ipc.h ...
2901 if $h_shm && $test -r $usrinclude/sys/shm.h; then
2902     echo "You have the full shm*(2) library."
2903     val="$define"
2904 else
2905     echo "You don't have the full shm*(2) library."
2906     val="$undef"
2907 fi
2908 set d_shm
2909 eval $setvar
2910
2911 : see if stat knows about block sizes
2912 echo " "
2913 if $contains 'st_blocks;' $usrinclude/sys/stat.h >/dev/null 2>&1 ; then
2914     if $contains 'st_blksize;' $usrinclude/sys/stat.h >/dev/null 2>&1 ; then
2915         echo "Your stat knows about block sizes."
2916         val="$define"
2917     else
2918         echo "Your stat doesn't know about block sizes."
2919         val="$undef"
2920     fi
2921 else
2922     echo "Your stat doesn't know about block sizes."
2923     val="$undef"
2924 fi
2925 set d_statblks
2926 eval $setvar
2927
2928 : see if stdio is really std
2929 echo " "
2930 if $contains 'char.*_ptr.*;' $usrinclude/stdio.h >/dev/null 2>&1 ; then
2931     if $contains '_cnt;' $usrinclude/stdio.h >/dev/null 2>&1 ; then
2932         echo "Your stdio is pretty std."
2933         val="$define"
2934     else
2935         echo "Your stdio isn't very std."
2936         val="$undef"
2937     fi
2938 else
2939     echo "Your stdio isn't very std."
2940     val="$undef"
2941 fi
2942 set d_stdstdio
2943 eval $setvar
2944
2945 : check for structure copying
2946 echo " "
2947 echo "Checking to see if your C compiler can copy structs..."
2948 $cat >strctcpy.c <<'EOCP'
2949 main()
2950 {
2951         struct blurfl {
2952             int dyick;
2953         } foo, bar;
2954
2955         foo = bar;
2956 }
2957 EOCP
2958 if $cc -c strctcpy.c >/dev/null 2>&1 ; then
2959     val="$define"
2960     echo "Yup, it can."
2961 else
2962     val="$undef"
2963     echo "Nope, it can't."
2964 fi
2965 set d_strctcpy
2966 eval $setvar
2967
2968 : see if strerror exists
2969 set strerror d_strerror
2970 eval $inlibc
2971
2972 : see if symlink exists
2973 set symlink d_symlink
2974 eval $inlibc
2975
2976 : see if syscall exists
2977 set syscall d_syscall
2978 eval $inlibc
2979
2980 : set if package uses struct tm
2981 w_s_tm=1
2982
2983 : set if package uses struct timeval
2984 case "$d_select" in
2985 define) w_s_timevl=1 ;;
2986 esac
2987
2988 : set if package uses localtime function
2989 w_localtim=1
2990
2991 : see which of time.h, sys/time.h, and sys/select should be included.
2992 idefs=''
2993 cat <<'EOM'
2994   
2995 Testing to see which of <time.h>, <sys/time.h>, and <sys/select.h>
2996 should be included, because this application wants:
2997
2998 EOM
2999 case "$w_s_itimer" in
3000 1)
3001     echo "      struct itimerval"
3002     idefs="-DS_ITIMERVAL $idefs"
3003     ;;
3004 esac
3005 case "$w_s_timevl" in
3006 1)
3007     echo "      struct timeval"
3008     idefs="-DS_TIMEVAL $idefs"
3009     ;;
3010 esac
3011 case "$w_s_tm" in
3012 1)
3013     echo "      struct tm"
3014     idefs="-DS_TM $idefs"
3015     ;;
3016 esac
3017 case "$w_localtim" in
3018 1)
3019     echo "      ctime(3) declarations"
3020     idefs="-DD_CTIME $idefs"
3021     ;;
3022 esac
3023 case "$idefs" in
3024 '')
3025     echo "      (something I don't know about)"
3026     ;;
3027 esac
3028 echo " "
3029 echo "I'm now running the test program..."
3030 $cat >i_time.c <<'EOCP'
3031 #include <sys/types.h>
3032 #ifdef I_TIME
3033 #include <time.h>
3034 #endif
3035 #ifdef I_SYS_TIME
3036 #ifdef SYSTIMEKERNEL
3037 #define KERNEL
3038 #endif
3039 #include <sys/time.h>
3040 #endif
3041 #ifdef I_SYS_SELECT
3042 #include <sys/select.h>
3043 #endif
3044 main()
3045 {
3046     struct tm foo;
3047     struct tm *tmp;
3048 #ifdef S_TIMEVAL
3049     struct timeval bar;
3050 #endif
3051 #ifdef S_ITIMERVAL
3052     struct itimerval baz;
3053 #endif
3054
3055     if (foo.tm_sec == foo.tm_sec)
3056         exit(0);
3057 #ifdef S_TIMEVAL
3058     if (bar.tv_sec == bar.tv_sec)
3059         exit(0);
3060 #endif
3061 #ifdef S_ITIMERVAL
3062     if (baz.it_interval == baz.it_interval)
3063         exit(0);
3064 #endif
3065 #ifdef S_TIMEVAL
3066     if (bar.tv_sec == bar.tv_sec)
3067         exit(0);
3068 #endif
3069 #ifdef D_CTIME
3070     /* this might not do anything for us... */
3071     tmp = localtime((time_t *)0);
3072 #endif
3073     exit(1);
3074 }
3075 EOCP
3076 flags=''
3077 for i_sys_select in '' '-DI_SYS_SELECT'; do
3078     for d_systimekernel in '' '-DSYSTIMEKERNEL'; do
3079         for i_time in '' '-DI_TIME'; do
3080             for i_systime in '-DI_SYS_TIME' ''; do
3081                 case "$flags" in
3082                 '') echo Trying $i_time $i_systime $d_systimekernel $i_sys_select
3083                     if $cc $ccflags $idefs \
3084                             $i_time $i_systime $d_systimekernel $i_sys_select \
3085                             i_time.c -o i_time >/dev/null 2>&1 ; then
3086                         set X $i_time $i_systime $d_systimekernel $i_sys_select
3087                         shift
3088                         flags="$*"
3089                         echo Succeeded with $flags
3090                     fi
3091                     ;;
3092                 esac
3093             done
3094         done
3095     done
3096 done
3097 case "$flags" in
3098 *SYSTIMEKERNEL*) val="$define";;
3099 *) val="$undef";;
3100 esac
3101 set d_systimekernel
3102 eval $setvar
3103 case "$flags" in
3104 *I_TIME*) val="$define";;
3105 *) val="$undef";;
3106 esac
3107 set i_time
3108 eval $setvar
3109 case "$flags" in
3110 *I_SYS_SELECT*) val="$define";;
3111 *) val="$undef";;
3112 esac
3113 set i_sys_select
3114 eval $setvar
3115 case "$flags" in
3116 *I_SYS_TIME*) val="$define";;
3117 *) val="$undef";;
3118 esac
3119 set i_sys_time
3120 eval $setvar
3121 case "$flags$i_sys_time$i_time" in
3122 undefundef) i_sys_time="$define"; i_time="$define";
3123     echo "ICK, NOTHING WORKED!!!  You may have to diddle the includes.";;
3124 esac
3125
3126 : see if telldir exists
3127 set telldir d_telldir
3128 eval $inlibc
3129
3130 : see if signal is declared as pointer to function returning int or void
3131 echo " "
3132 $cppstdin $cppflags $cppminus < $usrinclude/signal.h >d_voidsig.txt
3133 if $contains 'int[^A-Za-z]*signal' d_voidsig.txt >/dev/null 2>&1 ; then
3134     echo "You have int (*signal())() instead of void."
3135     val="$undef"
3136 else
3137     echo "You have void (*signal())() instead of int."
3138     val="$define"
3139 fi
3140 set d_voidsig
3141 eval $setvar
3142 case $voidsig in
3143 define) d_tosignal=void;;
3144 *) d_tosignal=int;;
3145 esac
3146
3147 : see if truncate exists
3148 set truncate d_truncate
3149 eval $inlibc
3150
3151 : see if there is a vfork
3152 set vfork d_vfork
3153 eval $inlibc
3154
3155 : check for volatile keyword
3156 echo " "
3157 echo 'Checking to see if your C compiler knows about "volatile"...'
3158 $cat >try.c <<'EOCP'
3159 main()
3160 {
3161         typedef unsigned short foo_t;
3162         char *volatile foo;
3163         volatile int bar;
3164         volatile foo_t blech;
3165         foo = foo;
3166 }
3167 EOCP
3168 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
3169     val="$define"
3170     echo "Yup, it does."
3171 else
3172     val="$undef"
3173     echo "Nope, it doesn't."
3174 fi
3175 set d_volatile
3176 eval $setvar
3177 $rm -f try.*
3178
3179 : see if there is a wait4
3180 set wait4 d_wait4
3181 eval $inlibc
3182
3183 : see if there is a waitpid
3184 set waitpid d_waitpid
3185 eval $inlibc
3186
3187 : see what type gids are declared as in the kernel
3188 case "$gidtype" in
3189 '')
3190     if $contains 'gid_t;' $usrinclude/sys/types.h >/dev/null 2>&1 ; then
3191         dflt='gid_t';
3192     else
3193         set `grep '_rgid;' $usrinclude/sys/user.h 2>/dev/null` unsigned short
3194         case $1 in
3195         unsigned) dflt="$1 $2" ;;
3196         *) dflt="$1" ;;
3197         esac
3198     fi
3199     ;;
3200 *)  dflt="$gidtype"
3201     ;;
3202 esac
3203 cont=true
3204 echo " "
3205 rp="What type are groups ids returned by getgid(), etc.? [$dflt]"
3206 $echo $n "$rp $c"
3207 . myread
3208 gidtype="$ans"
3209
3210 : see what type gids are returned by getgroups
3211 echo " "
3212 case "$groupstype" in
3213 '')
3214     if $contains 'getgroups.*short' /usr/lib/lint/llib-lc >/dev/null 2>&1; then
3215         dflt='short'
3216     elif $contains 'getgroups.*int' /usr/lib/lint/llib-lc >/dev/null 2>&1; then
3217         dflt='int'
3218     elif $contains 'getgroups.*short' /usr/include/libc.h >/dev/null 2>&1; then
3219         dflt='short'
3220     elif $contains 'getgroups.*int' /usr/include/libc.h >/dev/null 2>&1; then
3221         dflt='int'
3222     elif $contains 'getgroups.*short' /usr/lib/lint/llib-lbsd >/dev/null 2>&1; then
3223         dflt='short'
3224     elif $contains 'getgroups.*int' /usr/lib/lint/llib-lbsd >/dev/null 2>&1; then
3225         dflt='int'
3226     elif $contains 'int.*gidset' /usr/man/man2/getgroups.2 >/dev/null 2>&1; then
3227         dflt='int'
3228     elif $contains 'gid_t;' $usrinclude/sys/types.h >/dev/null 2>&1 ; then
3229         dflt='gid_t'
3230     else
3231         set `grep 'groups\[NGROUPS\];' $usrinclude/sys/user.h 2>/dev/null` unsigned short
3232         case $1 in
3233         unsigned) dflt="$1 $2" ;;
3234         *) dflt="$1" ;;
3235         esac
3236     fi
3237     ;;
3238 *)  dflt="$groupstype"
3239     ;;
3240 esac
3241 cont=true
3242 echo "(The following only matters if you have getgroups().)"
3243 rp="What type are the group ids returned by getgroups()? [$dflt]"
3244 $echo $n "$rp $c"
3245 . myread
3246 groupstype="$ans"
3247
3248 : check for length of integer
3249 echo " "
3250 case "$intsize" in
3251 '')
3252     echo "Checking to see how big your integers are..."
3253     $cat >intsize.c <<'EOCP'
3254 #include <stdio.h>
3255 main()
3256 {
3257     printf("%d\n", sizeof(int));
3258 }
3259 EOCP
3260     if $cc intsize.c -o intsize >/dev/null 2>&1 ; then
3261         dflt=`./intsize`
3262     else
3263         dflt='4'
3264         echo "(I can't seem to compile the test program.  Guessing...)"
3265     fi
3266     ;;
3267 *)
3268     dflt="$intsize"
3269     ;;
3270 esac
3271 rp="What is the size of an integer (in bytes)? [$dflt]"
3272 $echo $n "$rp $c"
3273 . myread
3274 intsize="$ans"
3275
3276 : determine where private executables go
3277 case "$privlib" in
3278 '')
3279     dflt=/usr/lib/$package
3280     test -d /usr/local/lib && dflt=/usr/local/lib/$package
3281     ;;
3282 *)  dflt="$privlib"
3283     ;;
3284 esac
3285 $cat <<EOM
3286
3287 The $package package has some auxiliary files that should be reside in a library
3288 that is accessible by everyone.  Where should these "private" but accessible
3289 EOM
3290 $echo $n "files reside? (~name ok) [$dflt] $c"
3291 rp="Private files will reside where? [$dflt]"
3292 . myread
3293 privlib=`./filexp "$ans"`
3294
3295 case "$installprivlib" in
3296 '')
3297     dflt=`echo $privlib | sed 's#^/afs/#/afs/.#'`
3298     test -d $dflt || dflt="$privlib"
3299     ;;
3300 *)  dflt="$installprivlib"
3301     ;;
3302 esac
3303 $cat <<EOM
3304
3305 On some systems (such as afs) you have to install the library files in a
3306 different directory to get them to go to the right place.  Where should the
3307 EOM
3308 $echo $n "library files be installed? (~name ok) [$dflt] $c"
3309 rp="Install private files where? [$dflt]"
3310 . myread
3311 installprivlib=`./filexp "$ans"`
3312
3313 : check for size of random number generator
3314 echo " "
3315 case "$randbits" in
3316 '')
3317     echo "Checking to see how many bits your rand function produces..."
3318     $cat >randbits.c <<'EOCP'
3319 #include <stdio.h>
3320 main()
3321 {
3322     register int i;
3323     register unsigned long tmp;
3324     register unsigned long max = 0L;
3325
3326     for (i=1000; i; i--) {
3327         tmp = (unsigned long)rand();
3328         if (tmp > max) max = tmp;
3329     }
3330     for (i=0; max; i++)
3331         max /= 2;
3332     printf("%d\n",i);
3333 }
3334 EOCP
3335     if $cc randbits.c -o randbits >/dev/null 2>&1 ; then
3336         dflt=`./randbits`
3337     else
3338         dflt='?'
3339         echo "(I can't seem to compile the test program...)"
3340     fi
3341     ;;
3342 *)
3343     dflt="$randbits"
3344     ;;
3345 esac
3346 rp="How many bits does your rand() function produce? [$dflt]"
3347 $echo $n "$rp $c"
3348 . myread
3349 randbits="$ans"
3350
3351 : determine where publicly executable scripts go
3352 case "$scriptdir" in
3353 '')
3354     dflt="$bin"
3355     : guess some guesses
3356     test -d /usr/share/scripts && dflt=/usr/share/scripts
3357     test -d /usr/share/bin && dflt=/usr/share/bin
3358     ;;
3359 *)  dflt="$scriptdir"
3360     ;;
3361 esac
3362 cont=true
3363 $cat <<EOM
3364  
3365 Some installations have a separate directory just for executable scripts so
3366 that they can mount it across multiple architectures but keep the scripts in
3367 one spot.  You might, for example, have a subdirectory of /usr/share for this.
3368 Or you might just lump your scripts in with all your other executables.
3369  
3370 EOM
3371 while $test "$cont" ; do
3372     rp="Where will publicly executable scripts reside (~name ok)? [$dflt]"
3373     $echo $n "$rp $c"
3374     . myread
3375     scriptdir="$ans"
3376     scriptdir=`./filexp "$scriptdir"`
3377     if test -d $scriptdir; then
3378         cont=''
3379     else
3380         case "$fastread" in
3381         yes) dflt=y;;
3382         *) dflt=n;;
3383         esac
3384         rp="Directory $scriptdir doesn't exist.  Use that name anyway? [$dflt]"
3385         $echo $n "$rp $c"
3386         . myread
3387         dflt=''
3388         case "$ans" in
3389         y*) cont='';;
3390         esac
3391     fi
3392 done
3393
3394 case "$installscr" in
3395 '')
3396     dflt=`echo $scriptdir | sed 's#^/afs/#/afs/.#'`
3397     test -d $dflt || dflt="$scriptdir"
3398     ;;
3399 *)  dflt="$scriptdir"
3400     ;;
3401 esac
3402 cont=true
3403 $cat <<EOM
3404  
3405 Some installations must install scripts in a different directory than where
3406 they will eventually reside.  On most systems they're the same directory.
3407 EOM
3408 while $test "$cont" ; do
3409     rp="Where do you install publicly executable scripts (~name ok)? [$dflt]"
3410     $echo $n "$rp $c"
3411     . myread
3412     installscr="$ans"
3413     installscr=`./filexp "$installscr"`
3414     if test -d $installscr; then
3415         cont=''
3416     else
3417         case "$fastread" in
3418         yes) dflt=y;;
3419         *) dflt=n;;
3420         esac
3421         rp="Directory $installscr doesn't exist.  Use that name anyway? [$dflt]"
3422         $echo $n "$rp $c"
3423         . myread
3424         dflt=''
3425         case "$ans" in
3426         y*) cont='';;
3427         esac
3428     fi
3429 done
3430
3431 : generate list of signal names
3432 echo " "
3433 case "$sig_name" in
3434 '')
3435     echo "Generating a list of signal names..."
3436     set X `cat $usrinclude/signal.h $usrinclude/sys/signal.h 2>&1 | awk '
3437 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $3 ~ /^[1-9][0-9]*$/ {
3438     sig[$3] = substr($2,4,20)
3439     if (max < $3 && $3 < 60) {
3440         max = $3
3441     }
3442 }
3443
3444 END {
3445     for (i=1; i<=max; i++) {
3446         if (sig[i] == "")
3447             printf "%d", i
3448         else
3449             printf "%s", sig[i]
3450         if (i < max)
3451             printf " "
3452     }
3453     printf "\n"
3454 }
3455 '`
3456     shift
3457     case $# in
3458     0)  echo 'kill -l' >/tmp/foo$$
3459         set X `$csh -f </tmp/foo$$`
3460         shift
3461         case $# in
3462         0)set HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM
3463             ;;
3464         esac
3465         ;;
3466     esac
3467     sig_name="ZERO $*"
3468     ;;
3469 esac
3470 echo "Signals are: $sig_name"
3471
3472 : see what type of char stdio uses.
3473 echo " "
3474 if $contains 'unsigned.*char.*\*.*_ptr.*;' $usrinclude/stdio.h >/dev/null 2>&1 ; then
3475     echo "Your stdio uses unsigned chars."
3476     stdchar="unsigned char"
3477 else
3478     echo "Your stdio uses signed chars."
3479     stdchar="char"
3480 fi
3481
3482 : see what type uids are declared as in the kernel
3483 case "$uidtype" in
3484 '')
3485     if $contains 'uid_t;' $usrinclude/sys/types.h >/dev/null 2>&1 ; then
3486         dflt='uid_t';
3487     else
3488         set `grep '_ruid;' $usrinclude/sys/user.h 2>/dev/null` unsigned short
3489         case $1 in
3490         unsigned) dflt="$1 $2" ;;
3491         *) dflt="$1" ;;
3492         esac
3493     fi
3494     ;;
3495 *)  dflt="$uidtype"
3496     ;;
3497 esac
3498 cont=true
3499 echo " "
3500 rp="What type are user ids returned by getuid(), etc.? [$dflt]"
3501 $echo $n "$rp $c"
3502 . myread
3503 uidtype="$ans"
3504
3505 : check for void type
3506 echo " "
3507 $cat <<EOM
3508 Checking to see how well your C compiler groks the void type...
3509
3510   Support flag bits are:
3511     1: basic void declarations.
3512     2: arrays of pointers to functions returning void.
3513     4: operations between pointers to and addresses of void functions.
3514
3515 EOM
3516 case "$voidhave" in
3517 '')
3518     $cat >void.c <<'EOCP'
3519 #if TRY & 1
3520 void main() {
3521 #else
3522 main() {
3523 #endif
3524         extern void moo();      /* function returning void */
3525         void (*goo)();          /* ptr to func returning void */
3526 #if TRY & 2
3527         void (*foo[10])();
3528 #endif
3529
3530 #if TRY & 4
3531         if(goo == moo) {
3532                 exit(0);
3533         }
3534 #endif
3535         exit(0);
3536 }
3537 EOCP
3538     if $cc -c -DTRY=$voidwant void.c >void.out 2>&1 ; then
3539         voidhave=$voidwant
3540         echo "It appears to support void to the level $package wants ($voidwant)."
3541         if $contains warning void.out >/dev/null 2>&1; then
3542             echo "However, you might get some warnings that look like this:"
3543             $cat void.out
3544         fi
3545     else
3546         echo "Hmm, your compiler has some difficulty with void.  Checking further..."
3547         if $cc -c -DTRY=1 void.c >/dev/null 2>&1 ; then
3548             echo "It supports 1..."
3549             if $cc -c -DTRY=3 void.c >/dev/null 2>&1 ; then
3550                 voidhave=3
3551                 echo "And it supports 2 but not 4."
3552             else
3553                 echo "It doesn't support 2..."
3554                 if $cc -c -DTRY=5 void.c >/dev/null 2>&1 ; then
3555                     voidhave=5
3556                     echo "But it supports 4."
3557                 else
3558                     voidhave=1
3559                     echo "And it doesn't support 4."
3560                 fi
3561             fi
3562         else
3563             echo "There is no support at all for void."
3564             voidhave=0
3565         fi
3566     fi
3567 esac
3568 dflt="$voidhave";
3569 rp="Your void support flags add up to what? [$dflt]"
3570 $echo $n "$rp $c"
3571 . myread
3572 voidhave="$ans"
3573
3574 : preserve RCS keywords in files with variable substitution, grrr
3575 Log='$Log'
3576 Header='$Header'
3577 Id='$Id'
3578 Author='$Author'
3579 Date='$Date'
3580 Locker='$Locker'
3581 RCSfile='$RCSfile'
3582 Revision='$Revision'
3583 Source='$Source'
3584 State='$State'
3585
3586
3587 : determine compiler compiler
3588 case "$yacc" in
3589 '') if xenix; then
3590         dflt=yacc
3591     else
3592         dflt='yacc -Sm25000'
3593     fi
3594     ;;
3595 *)  dflt="$yacc";;
3596 esac
3597 cont=true
3598     echo " "
3599 rp="Which compiler compiler (yacc or bison -y) will you use? [$dflt]"
3600 $echo $n "$rp $c"
3601 . myread
3602 case "$ans" in
3603 '') ans="$dflt";;
3604 esac
3605 yacc="$ans"
3606
3607 : see if we can include fcntl.h
3608 echo " "
3609 if $h_fcntl; then
3610     val="$define"
3611     echo "We'll be including <fcntl.h>."
3612 else
3613     val="$undef"
3614     if $h_sys_file; then
3615         echo "We don't need to <fcntl.h> if we include <sys/file.h>."
3616     else
3617         echo "We won't be including <fcntl.h>."
3618     fi
3619 fi
3620 set i_fcntl
3621 eval $setvar
3622
3623 : see if gdbm is available
3624 echo " "
3625 xxx=`./loc gdbm.h x $usrinclude /usr/local/include $inclwanted`
3626 if test -f $xxx; then
3627     val="$define"
3628     echo "gdbm.h found."
3629 else
3630     val="$undef"
3631     echo "gdbm.h NOT found."
3632 fi
3633 set i_gdbm
3634 eval $setvar
3635
3636 : see if this is an grp system
3637 echo " "
3638 if $test -r $usrinclude/grp.h ; then
3639     val="$define"
3640     echo "grp.h found."
3641 else
3642     val="$undef"
3643     echo "No grp.h found."
3644 fi
3645 set i_grp
3646 eval $setvar
3647
3648 : see if this is a netinet/in.h or sys/in.h system
3649 echo " "
3650 xxx=`./loc netinet/in.h x $usrinclude /usr/local/include $inclwanted`
3651 if test -f $xxx; then
3652     val="$define"
3653     val2="$undef"
3654     echo "netinet/in.h found."
3655 else
3656     val="$undef"
3657     echo "No netinet/in.h found, ..."
3658     xxx=`./loc sys/in.h x $usrinclude /usr/local/include $inclwanted`
3659     if test -f $xxx; then
3660         val2="$define"
3661         echo "but I found sys/in.h instead."
3662     else
3663         val2="$undef"
3664         echo "and I didn't find sys/in.h either."
3665     fi
3666 fi
3667 set i_niin
3668 eval $setvar
3669 val=$val2
3670 set i_sysin
3671 eval $setvar
3672
3673 : Do we need to #include <sys/file.h> ?
3674 echo " "
3675 if $h_sys_file; then
3676     val="$define"
3677     echo "We'll be including <sys/file.h>."
3678 else
3679     val="$undef"
3680     echo "We won't be including <sys/file.h>."
3681 fi
3682 set i_sys_file
3683 eval $setvar
3684
3685 : see if ioctl defs are in sgtty/termio or sys/ioctl
3686 echo " "
3687 if $test -r $usrinclude/sys/ioctl.h ; then
3688     val="$define"
3689     echo "sys/ioctl.h found."
3690 else
3691     val="$undef"
3692     echo "sys/ioctl.h NOT found, assuming ioctl args are defined in sgtty.h."
3693 fi
3694 set i_sysioctl
3695 eval $setvar
3696
3697 : see if we should include utime.h
3698 echo " "
3699 if $test -r $usrinclude/utime.h ; then
3700     val="$define"
3701     echo "utime.h found."
3702 else
3703     val="$undef"
3704     echo "No utime.h found, but that's ok."
3705 fi
3706 set i_utime
3707 eval $setvar
3708
3709 : see if this is a varargs system
3710 echo " "
3711 if $test -r $usrinclude/varargs.h ; then
3712     val="$define"
3713     echo "varargs.h found."
3714 else
3715     val="$undef"
3716     echo "No varargs.h found, but that's ok (I hope)."
3717 fi
3718 set i_varargs
3719 eval $setvar
3720
3721 : see if this is a vfork system
3722 echo " "
3723 if $test -r $usrinclude/vfork.h ; then
3724     val="$define"
3725     echo "vfork.h found."
3726 else
3727     val="$undef"
3728     echo "No vfork.h found."
3729 fi
3730 set i_vfork
3731 eval $setvar
3732
3733 : end of configuration questions
3734 echo " "
3735 echo "End of configuration questions."
3736 echo " "
3737
3738 : create config.sh file
3739 echo " "
3740 if test -d ../UU; then
3741     cd ..
3742 fi
3743 echo "Creating config.sh..."
3744 test -f config.sh && cp config.sh UU/oldconfig.sh
3745 $spitshell <<EOT >config.sh
3746 $startsh
3747 # config.sh
3748 # This file was produced by running the Configure script.
3749 d_eunice='$d_eunice'
3750 define='$define'
3751 eunicefix='$eunicefix'
3752 loclist='$loclist'
3753 expr='$expr'
3754 sed='$sed'
3755 echo='$echo'
3756 cat='$cat'
3757 rm='$rm'
3758 mv='$mv'
3759 cp='$cp'
3760 tail='$tail'
3761 tr='$tr'
3762 mkdir='$mkdir'
3763 sort='$sort'
3764 uniq='$uniq'
3765 grep='$grep'
3766 trylist='$trylist'
3767 test='$test'
3768 inews='$inews'
3769 egrep='$egrep'
3770 more='$more'
3771 pg='$pg'
3772 Mcc='$Mcc'
3773 vi='$vi'
3774 mailx='$mailx'
3775 mail='$mail'
3776 cpp='$cpp'
3777 perl='$perl'
3778 emacs='$emacs'
3779 ls='$ls'
3780 rmail='$rmail'
3781 sendmail='$sendmail'
3782 shar='$shar'
3783 smail='$smail'
3784 tbl='$tbl'
3785 troff='$troff'
3786 nroff='$nroff'
3787 uname='$uname'
3788 uuname='$uuname'
3789 line='$line'
3790 chgrp='$chgrp'
3791 chmod='$chmod'
3792 lint='$lint'
3793 sleep='$sleep'
3794 pr='$pr'
3795 tar='$tar'
3796 ln='$ln'
3797 lpr='$lpr'
3798 lp='$lp'
3799 touch='$touch'
3800 make='$make'
3801 date='$date'
3802 csh='$csh'
3803 bash='$bash'
3804 ksh='$ksh'
3805 lex='$lex'
3806 flex='$flex'
3807 bison='$bison'
3808 Log='$Log'
3809 Header='$Header'
3810 Id='$Id'
3811 lastuname='$lastuname'
3812 alignbytes='$alignbytes'
3813 bin='$bin'
3814 installbin='$installbin'
3815 byteorder='$byteorder'
3816 contains='$contains'
3817 cppstdin='$cppstdin'
3818 cppminus='$cppminus'
3819 d_bcmp='$d_bcmp'
3820 d_bcopy='$d_bcopy'
3821 d_safebcpy='$d_safebcpy'
3822 d_bzero='$d_bzero'
3823 d_castneg='$d_castneg'
3824 castflags='$castflags'
3825 d_charsprf='$d_charsprf'
3826 d_chsize='$d_chsize'
3827 d_crypt='$d_crypt'
3828 cryptlib='$cryptlib'
3829 d_csh='$d_csh'
3830 d_dosuid='$d_dosuid'
3831 d_dup2='$d_dup2'
3832 d_fchmod='$d_fchmod'
3833 d_fchown='$d_fchown'
3834 d_fcntl='$d_fcntl'
3835 d_flexfnam='$d_flexfnam'
3836 d_flock='$d_flock'
3837 d_getgrps='$d_getgrps'
3838 d_gethent='$d_gethent'
3839 d_getpgrp='$d_getpgrp'
3840 d_getpgrp2='$d_getpgrp2'
3841 d_getprior='$d_getprior'
3842 d_htonl='$d_htonl'
3843 d_index='$d_index'
3844 d_isascii='$d_isascii'
3845 d_killpg='$d_killpg'
3846 d_lstat='$d_lstat'
3847 d_memcmp='$d_memcmp'
3848 d_memcpy='$d_memcpy'
3849 d_safemcpy='$d_safemcpy'
3850 d_memmove='$d_memmove'
3851 d_memset='$d_memset'
3852 d_mkdir='$d_mkdir'
3853 d_msg='$d_msg'
3854 d_msgctl='$d_msgctl'
3855 d_msgget='$d_msgget'
3856 d_msgrcv='$d_msgrcv'
3857 d_msgsnd='$d_msgsnd'
3858 d_ndbm='$d_ndbm'
3859 d_odbm='$d_odbm'
3860 d_open3='$d_open3'
3861 d_readdir='$d_readdir'
3862 d_rename='$d_rename'
3863 d_rewindir='$d_rewindir'
3864 d_rmdir='$d_rmdir'
3865 d_seekdir='$d_seekdir'
3866 d_select='$d_select'
3867 d_sem='$d_sem'
3868 d_semctl='$d_semctl'
3869 d_semget='$d_semget'
3870 d_semop='$d_semop'
3871 d_setegid='$d_setegid'
3872 d_seteuid='$d_seteuid'
3873 d_setpgrp='$d_setpgrp'
3874 d_setpgrp2='$d_setpgrp2'
3875 d_setprior='$d_setprior'
3876 d_setregid='$d_setregid'
3877 d_setresgid='$d_setresgid'
3878 d_setreuid='$d_setreuid'
3879 d_setresuid='$d_setresuid'
3880 d_setrgid='$d_setrgid'
3881 d_setruid='$d_setruid'
3882 d_shm='$d_shm'
3883 d_shmat='$d_shmat'
3884 d_voidshmat='$d_voidshmat'
3885 d_shmctl='$d_shmctl'
3886 d_shmdt='$d_shmdt'
3887 d_shmget='$d_shmget'
3888 d_socket='$d_socket'
3889 d_sockpair='$d_sockpair'
3890 d_oldsock='$d_oldsock'
3891 socketlib='$socketlib'
3892 d_statblks='$d_statblks'
3893 d_stdstdio='$d_stdstdio'
3894 d_strctcpy='$d_strctcpy'
3895 d_strerror='$d_strerror'
3896 d_symlink='$d_symlink'
3897 d_syscall='$d_syscall'
3898 d_telldir='$d_telldir'
3899 d_truncate='$d_truncate'
3900 d_vfork='$d_vfork'
3901 d_voidsig='$d_voidsig'
3902 d_tosignal='$d_tosignal'
3903 d_volatile='$d_volatile'
3904 d_vprintf='$d_vprintf'
3905 d_charvspr='$d_charvspr'
3906 d_wait4='$d_wait4'
3907 d_waitpid='$d_waitpid'
3908 gidtype='$gidtype'
3909 groupstype='$groupstype'
3910 i_fcntl='$i_fcntl'
3911 i_gdbm='$i_gdbm'
3912 i_grp='$i_grp'
3913 i_niin='$i_niin'
3914 i_sysin='$i_sysin'
3915 i_pwd='$i_pwd'
3916 d_pwquota='$d_pwquota'
3917 d_pwage='$d_pwage'
3918 d_pwchange='$d_pwchange'
3919 d_pwclass='$d_pwclass'
3920 d_pwexpire='$d_pwexpire'
3921 d_pwcomment='$d_pwcomment'
3922 i_sys_file='$i_sys_file'
3923 i_sysioctl='$i_sysioctl'
3924 i_time='$i_time'
3925 i_sys_time='$i_sys_time'
3926 i_sys_select='$i_sys_select'
3927 d_systimekernel='$d_systimekernel'
3928 i_utime='$i_utime'
3929 i_varargs='$i_varargs'
3930 i_vfork='$i_vfork'
3931 intsize='$intsize'
3932 libc='$libc'
3933 nm_opts='$nm_opts'
3934 libndir='$libndir'
3935 i_my_dir='$i_my_dir'
3936 i_ndir='$i_ndir'
3937 i_sys_ndir='$i_sys_ndir'
3938 i_dirent='$i_dirent'
3939 i_sys_dir='$i_sys_dir'
3940 d_dirnamlen='$d_dirnamlen'
3941 ndirc='$ndirc'
3942 ndiro='$ndiro'
3943 mallocsrc='$mallocsrc'
3944 mallocobj='$mallocobj'
3945 d_mymalloc='$d_mymalloc'
3946 mallocptrtype='$mallocptrtype'
3947 mansrc='$mansrc'
3948 manext='$manext'
3949 models='$models'
3950 split='$split'
3951 small='$small'
3952 medium='$medium'
3953 large='$large'
3954 huge='$huge'
3955 optimize='$optimize'
3956 ccflags='$ccflags'
3957 cppflags='$cppflags'
3958 ldflags='$ldflags'
3959 cc='$cc'
3960 nativegcc='$nativegcc'
3961 libs='$libs'
3962 n='$n'
3963 c='$c'
3964 package='$package'
3965 randbits='$randbits'
3966 scriptdir='$scriptdir'
3967 installscr='$installscr'
3968 sig_name='$sig_name'
3969 spitshell='$spitshell'
3970 shsharp='$shsharp'
3971 sharpbang='$sharpbang'
3972 startsh='$startsh'
3973 stdchar='$stdchar'
3974 uidtype='$uidtype'
3975 usrinclude='$usrinclude'
3976 inclPath='$inclPath'
3977 void='$void'
3978 voidhave='$voidhave'
3979 voidwant='$voidwant'
3980 w_localtim='$w_localtim'
3981 w_s_timevl='$w_s_timevl'
3982 w_s_tm='$w_s_tm'
3983 yacc='$yacc'
3984 lib='$lib'
3985 privlib='$privlib'
3986 installprivlib='$installprivlib'
3987 EOT
3988
3989 test -f patchlevel.h && awk '{printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
3990 echo "CONFIG=true" >>config.sh
3991
3992 if test -f UU/oldconfig.sh; then
3993     sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
3994       sort | uniq -u >UU/oldsyms
3995     set X `cat UU/oldsyms`
3996     shift
3997     case $# in
3998     0) ;;
3999     *)  echo "Hmm...You had some extra variables I don't know about...I'll try to keep 'em..."
4000         for sym in `cat UU/oldsyms`; do
4001             echo "    Propagating $hint variable "'$'"$sym..."
4002             eval 'tmp="$'"${sym}"'"'
4003             echo "$tmp" | \
4004               sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
4005         done
4006         ;;
4007     esac
4008 fi
4009
4010 : Finish up
4011 CONFIG=true
4012
4013 echo " "
4014 dflt=''
4015 fastread=''
4016 echo "If you didn't make any mistakes, then just type a carriage return here."
4017 rp="If you need to edit config.sh, do it as a shell escape here:"
4018 $echo $n "$rp $c"
4019 . UU/myread
4020 case "$ans" in
4021 '') ;;
4022 *) : in case they cannot read
4023     eval $ans;;
4024 esac
4025 chmod +x doSH
4026 ./doSH
4027
4028 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
4029     dflt=n
4030     $cat <<EOM
4031
4032 Now you need to generate make dependencies by running "make depend".
4033 You might prefer to run it in background: "make depend > makedepend.out &"
4034 It can take a while, so you might not want to run it right now.
4035
4036 EOM
4037     rp="Run make depend now? [$dflt]"
4038     $echo $n "$rp $c"
4039     . UU/myread
4040     case "$ans" in
4041     y*) make depend && echo "Now you must run a make."
4042         ;;
4043     *)  echo "You must run 'make depend' then 'make'."
4044         ;;
4045     esac
4046 elif test -f [Mm]akefile; then
4047     echo " "
4048     echo "Now you must run a make."
4049 else
4050     echo "Done."
4051 fi
4052
4053 $rm -f kit*isdone
4054 $rm -rf UU
4055 : end of Configure