This is patch03 to PennMUSH 1.8.3. After applying this patch, you will have version 1.8.3p3 This patch is intended for a 1.8.3p1 source tree. Use 1.8.3-patch03-from-02-patch for a source tree that has been upgraded to 1.8.3p2 from 1.8.3p1 by the 1.8.3-patch02 patch, which includes files missing from that patch. Alternatively, use 1.8.3-patch03-from-02-tarball, which is a direct update to 1.8.3p3 from 1.8.3p2 source tree unpacked from that version's tarball. To apply this patch, save it to a file in your top-level MUSH directory, and do the following: patch -p0 < 1.8.3-patch03-from-01 make clean chmod +x configure ./configure make install If you use GNU patch 2.2, you probably want the above to be 'patch -b -p0', not just 'patch -p0'. Unix (or cygwin) users need not worry about failed hunks in src/switchinc.c, hdrs/switches.h, hdrs/cmds.h, or hdrs/funs.h. These files are automatically rebuilt on compile. On the off chance they appear not to be, simply rm them and re-run make. Then @shutdown and restart your MUSH. - Shawn/Raevnos In this patch: Minor changes: * The sockets used to talk to info_slave changed from streams to datagrams, simplifying code. [SW] * info_slave deals better with simultaneous connections. [SW] * info_slave requires the presence of the socketpair(2) function. It was already using it anyways. * Use of some system calls with portability issues encapsulated in wrapper functions. [SW] * sql() returns error codes directly instead of notifying %!. [SW] Functions: * lattr() and lattrp() take an optional delimiter argument. Suggested by Nathan Baum. [SW] * New csecs() and msecs() functions, like ctime() and mtime() but returning the time in seconds instead of a formatted string. Based on a patch by Talvo. * ctime() and mtime() take an optional second argument to control which time zone the time is displayed for: UTC or the server's. [SW] * fn() by Javelin * letq(). Suggested by Nathan Baum. [SW] Fixes: * Assorted compiler warning fixes. [SW] * Compile fix on OS X 10.3. Reported by Viila. [SW] * @sql wasn't enabled if Sqlite3 was the only database turned on. Reported by qa'toq. * Problems with sql() using Sqlite3. Reported by qa'toq. [SW] * Problems with null queries using MySQL. Reported by duckwa. [SW] * Start fixing code that assumes that int and long are the same size. [SW] * Linting of code that uses strcpy, strncpy() and sprintf() to rule out remote possibilities of buffer overflows. [SW] * align() off-by-one error in left coalescing fixed. Reported by Sketch. [Javelin] * User locks were broken in the last patch. Reported by Michael Brazaitis. [SW] * ./configure --without-ssl works. Reported by Starr. [SW] * objid matcher didn't work properly. [SW] * Many functions that used parse_dbref updated to use parse_objid, to see more objid compliance. [GM] Plus changes from 1.8.3p2 Prereq: 1.8.3p1 *** Patchlevel (.../p1) (revision 920) --- Patchlevel (.../p3) (revision 920) *************** *** 1,2 **** Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.8.3p1 --- 1,2 ---- Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.8.3p3 Index: Makefile.SH =================================================================== *** Makefile.SH (.../p1) (revision 920) --- Makefile.SH (.../p3) (revision 920) *************** *** 1,306 **** - case $CONFIG in - '') - if test -f config.sh; then TOP=.; - elif test -f ../config.sh; then TOP=..; - elif test -f ../../config.sh; then TOP=../..; - elif test -f ../../../config.sh; then TOP=../../..; - elif test -f ../../../../config.sh; then TOP=../../../..; - else - echo "Can't find config.sh."; exit 1 - fi - . $TOP/config.sh - ;; - esac - : This forces SH files to create target in same directory as SH file. - : This is so that make depend always knows where to find SH derivatives. - case "$0" in - */*) cd `expr X$0 : 'X\(.*\)/'` ;; - esac - - echo "Extracting Makefile (with variable substitutions)" - - if test "x$OSTYPE" = "xmsys"; then - INSTALL_LINKS="$lns ../src/netmud.exe netmush" - else - INSTALL_LINKS="$lns ../src/netmud netmush; \ - $lns ../src/info_slave info_slave" - fi - - : This section of the file will have variable substitutions done on it. - : Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. - : Protect any dollar signs and backticks that you do not want interpreted - : by putting a backslash in front. You may delete these comments. - $spitshell >Makefile <>Makefile <<'!NO!SUBS!' - - - # stupid SYS V shell - SHELL=/bin/sh - # Where to install with 'make globalinstall' - GLOBAL_INSTALL=/usr/libexec/pennmush - - all: config.h options.h autogen game/mush.cnf - @echo "Making all in src." - (cd src; make all "CC=$(CC)" "CCFLAGS=$(CCFLAGS)" \ - "LDFLAGS=$(LDFLAGS)" "CLIBS=$(CLIBS)" "MAKE=$(MAKE)" \ - "MAKEFLAGS=$(MAKEFLAGS)") - @echo "If the make was successful, use 'make install' to install links." - - config.h: Configure - @echo "Looks like your Configure has been updated." - @echo "Run that first." - exit 1 - - options.h: options.h.dist - @echo "Please use 'make update' to update your options.h file from options.h.dist" - @echo "You must cp options.h.dist to options.h and edit it." - exit 1 - - autogen: hdrs/cmds.h hdrs/funs.h hdrs/switches.h - - hdrs/cmds.h: src/cmds.c src/command.c src/cque.c src/help.c src/set.c src/sql.c Patchlevel - (cd utils; sh mkcmds.sh commands) - - hdrs/switches.h: src/SWITCHES Patchlevel - (cd utils; sh mkcmds.sh switches) - - src/switchinc.c: src/SWITCHES Patchlevel - (cd utils; sh mkcmds.sh switches) - - hdrs/funs.h: src/fun*.c src/bsd.c src/conf.c src/extmail.c src/help.c src/markup.c src/wiz.c src/sql.c Patchlevel - (cd utils; sh mkcmds.sh functions) - - hdrs/patches.h: patches/* - (cd utils; sh mkcmds.sh patches) - - install: localized all - -rm -f game/netmush - -rm -f game/info_slave - (cd game; $(INSTALL_LINKS)) - (cd game/txt; make) - @echo "If you plan to run multiple MUSHes, consider running 'make customize'" - - netmud: - (cd src; make netmud "CC=$(CC)" "CCFLAGS=$(CCFLAGS)" \ - "LDFLAGS=$(LDFLAGS)" "CLIBS=$(CLIBS)" ) - - access: - utils/make_access_cnf.sh game - - pennmush.pot: - (cd src; make ../po/pennmush.pot) - - localized: - -echo "Localizing for your locale..." - -(cd po; make localized) - - portmsg: - (cd src; make portmsg "CC=$(CC)" "CCFLAGS=$(CCFLAGS)" \ - "LDFLAGS=$(LDFLAGS)" "CLIBS=$(CLIBS)" ) - - announce: - (cd src; make announce "CC=$(CC)" "CCFLAGS=$(CCFLAGS)" \ - "LDFLAGS=$(LDFLAGS)" "CLIBS=$(CLIBS)" ) - - ssl_slave: - (cd src; make ssl_slave "CC=$(CC)" "CCFLAGS=$(CCFLAGS)" \ - "LDFLAGS=$(LDFLAGS)" "CLIBS=$(CLIBS)" "MAKE=$(MAKE)" \ - "MAKEFLAGS=$(MAKEFLAGS)") - - versions: CHANGES* - -@rm -rf CHANGES*~ CHANGES*bak - @utils/mkvershlp.pl game/txt/hlp CHANGES* - - safety: - $(CP) src/*.c /var/pennmush-bak/src - $(CP) hdrs/*.h /var/pennmush-bak/hdrs - $(CP) * /var/pennmush-bak - - distdepend: hdrs/funs.h hdrs/cmds.h - (cd src; make depend "CC=$(CC)" "CCFLAGS=$(CCFLAGS)" \ - "LDFLAGS=$(LDFLAGS)" "CLIBS=$(CLIBS)" ) - - local-files: - $(CP) -f src/cmdlocal.dst src/cmdlocal.c - $(CP) -f src/flaglocal.dst src/flaglocal.c - $(CP) -f src/funlocal.dst src/funlocal.c - $(CP) -f src/local.dst src/local.c - - # REQUIRES GNU INDENT! DON'T INDENT WITH ANYTHING ELSE! - indent: - @(cd src; make indent) - - protoize: - (cd src; make protoize "CCFLAGS=$(CCFLAGS)") - - !NO!SUBS! - - : This section of the file will have variable substitutions done on it. - : Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. - : Protect any dollar signs and backticks that you do not want interpreted - : by putting a backslash in front. You may delete these comments. - $spitshell >>Makefile <>Makefile <<'!NO!SUBS!' - - clean: - (cd src; make clean) - (cd game; rm -f netmush info_slave) - - distclean: - (cd hdrs; rm -f *.orig *~ \#* *.rej *.bak funs.h cmds.h buildinf.h patches.h) - (cd utils; rm -f *.orig *~ \#* *.rej *.bak mkcmds.sh) - (cd game; rm -rf *.log netmush info_slave *.orig *.rej *~ *.bak mush.cnf) - (cd os2; rm -rf *.rej *.orig *~ *.bak) - (cd src; make distclean; rm -f Makefile) - (cd game/txt; make clean) - (rm -rf .config Makefile config.h config.sh options.h) - - totallyclean: distclean - (cd hdrs; rm -rf *.rej) - (cd src; rm -rf *.rej) - -rm -f Makefile - - distci: distclean ci-src ci-game - - ci-src: - -(yes . | ci -l -f -N$(NAME) FAQ* BUGS COPY* CHANGE* READ* MANIFEST \ - Configure utils/* Makefile.SH Patchlevel config_h.SH confmagic.h \ - *.dist src/Makefile src/SWITCHES src/*.c src/*.dst \ - hdrs/* hints/* os2/*) - - ci-game: - -(yes . | ci -l -f -N$(NAME) game/restart game/mushcnf.dst \ - game/access.README \ - game/txt/* game/txt/nws/* game/txt/evt/* game/txt/hlp/* ) - - diffs: - @make indent > /dev/null 2>&1 - @make versions > /dev/null 2>&1 - @make touchswitches > /dev/null 2>&1 - @make autogen > /dev/null 2>&1 - @(prcs diff -r$(VS) -N pennmush `cat MANIFEST` | grep -v 'Index:') - - checkin: versions autogen - @prcs checkin - - commit: indent - @svn commit - - patch: versions - @make-patch-header - @make diffs - - etags: - (cd src; make etags) - - ctags: - (cd src; make ctags) - - dist.tar.Z: distclean dist.tar - compress /tmp/dist.tar - - dist.tar.gz: distclean dist.tar - gzip /tmp/dist.tar - - touchswitches: - @touch src/SWITCHES - - dist.tar: indent distclean versions touchswitches autogen - makedist -c pennmush - tar -cvf /tmp/dist.tar pennmush - -pgp -sb /tmp/dist.tar - -rm -rf pennmush - - CSRImalloc.tar.Z: - (cd src/CSRI; make clean) - (tar -cvFFf /tmp/CSRImalloc.tar `cat exclude.tar`) - compress /tmp/CSRImalloc.tar - - globalinstall: install - (cd game/txt; make clean compose.sh) - $(INSTALLDIR) $(GLOBAL_INSTALL) - $(CP) -R game/* $(GLOBAL_INSTALL) - rm -f $(GLOBAL_INSTALL)/netmush $(GLOBAL_INSTALL)/info_slave - $(INSTALL) config.sh $(GLOBAL_INSTALL)/config.sh - $(INSTALL) src/netmud $(GLOBAL_INSTALL)/netmush - $(INSTALL) src/info_slave utils/ln-dir.sh $(GLOBAL_INSTALL) - $(CHMOD) a+rX -R $(GLOBAL_INSTALL) - @echo "** Files installed in $(GLOBAL_INSTALL). Feel free to move them." - @echo "** You can run $(GLOBAL_INSTALL)/ln-dir.sh to create a user directory," - @echo "** or symlink that to somewhere easier to run. You may wish to strip them." - - !NO!SUBS! - chmod 644 Makefile --- 0 ---- Index: Configure =================================================================== *** Configure (.../p1) (revision 920) --- Configure (.../p3) (revision 920) *************** *** 1,7402 **** - #! /bin/sh - # - # If these # comments don't work, trim them. Don't worry about any other - # shell scripts, Configure will trim # comments from them for you. - # - # (If you are trying to port this package to a machine without sh, - # I would suggest you have a look at the prototypical config_h.SH file - # and edit it to reflect your system. Some packages may include samples - # of config.h for certain machines, so you might look for one of those.) - # - # Yes, you may rip this off to use in other distribution packages. This - # script belongs to the public domain and cannot be copyrighted. - # - # (Note: this Configure script was generated automatically. Rather than - # working with this copy of Configure, you may wish to get metaconfig. - # The dist-3.0 package (which contains metaconfig) was posted in - # comp.sources.misc and is available on CPAN under authors/id/RAM so - # you may fetch it yourself from your nearest archive site.) - # - - # $Id: Head.U 1.3 Mon, 10 Nov 2003 14:51:32 -0600 dunemush $ - # - # Generated on Fri Mar 24 14:36:30 CST 2006 [metaconfig 3.0 PL70] - - cat >/tmp/c1$$ </tmp/c2$$ </dev/null` - test "$me" || me=$0 - ;; - esac - - : Proper PATH separator - p_=: - : On OS/2 this directory should exist if this is not floppy only system :-] - if test -d c:/.; then - : Check for cygwin32 emulation - case "x$OSTYPE$OS" in - x*msys*Windows*) - echo 'Running on Windows? Using the MinGW MSys tools...' - ;; - x*win32*) - echo 'Running on Windows? Assuming cygwin32 emulation tools...' - ;; - x*windows*) - echo 'Running on Windows? Assuming cygwin32 emulation tools...' - ;; - x*cygwin*) - echo 'Looks like cygwin32...' - ;; - x*) - p_=\; - PATH=`cmd /c "echo %PATH%" | tr '\\\\' / ` - OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'` - ;; - esac - fi - - : Proper PATH setting - paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin' - paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin" - paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin" - paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin" - paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb" - paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin" - paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib" - paths="$paths /sbin /usr/sbin /usr/libexec /gnuwin32/b18/H-i386-cygwin32/bin" - - case "x$OSTYPE$OS" in - x*msys*Windows*) - PATH='/usr/local/bin:/mingw/bin:/bin:/perl/bin' - ;; - x*) - for p in $paths - do - case "$p_$PATH$p_" in - *$p_$p$p_*) ;; - *) test -d $p && PATH=$PATH$p_$p ;; - esac - done - - PATH=.$p_$PATH - export PATH - ;; - esac - - : shall we be using ksh? - inksh='' - needksh='' - avoidksh='' - newsh=/bin/ksh - changesh='' - if (PATH=.; alias -x) >/dev/null 2>&1; then - inksh=true - fi - if test -f /hp-ux -a -f /bin/ksh; then - needksh='to avoid sh bug in "here document" expansion' - fi - if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then - if test X`/usr/bin/uname -v` = X4; then - avoidksh="to avoid AIX 4's /bin/sh" - newsh=/usr/bin/bsh - fi - fi - case "$inksh/$needksh" in - /[a-z]*) - unset ENV - changesh=true - reason="$needksh" - ;; - esac - case "$inksh/$avoidksh" in - true/[a-z]*) - changesh=true - reason="$avoidksh" - ;; - esac - case "$inksh/$needksh-$avoidksh-" in - true/--) - cat <&2 - $me: Fatal Error: I can't find a Bourne Shell anywhere. - - Usually it's in /bin/sh. How did you even get this far? - Please contact me (PennMUSH developers) at pennmush-developers@pennmush.org and - we'll try to straighten this all out. - EOM - exit 1 - ;; - esac - - : see if sh knows # comments - if `$sh -c '#' >/dev/null 2>&1`; then - shsharp=true - spitshell=cat - xcat=/bin/cat - test -f $xcat || xcat=/usr/bin/cat - echo "#!$xcat" >try - $eunicefix try - chmod +x try - ./try > today - if test -s today; then - sharpbang='#!' - else - echo "#! $xcat" > try - $eunicefix try - chmod +x try - ./try > today - if test -s today; then - sharpbang='#! ' - else - sharpbang=': use ' - fi - fi - else - echo " " - echo "Your $sh doesn't grok # comments--I will strip them later on." - shsharp=false - cd .. - echo "exec grep -v '^[ ]*#'" >spitshell - chmod +x spitshell - $eunicefix spitshell - spitshell=`pwd`/spitshell - cd UU - echo "I presume that if # doesn't work, #! won't work either!" - sharpbang=': use ' - fi - rm -f try today - - : figure out how to guarantee sh startup - case "$startsh" in - '') startsh=${sharpbang}${sh} ;; - *) - esac - cat >try <options.awk <<'EOF' - BEGIN { - optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification - - len = length(optstr); - for (i = 1; i <= len; i++) { - c = substr(optstr, i, 1); - if (i < len) a = substr(optstr, i + 1, 1); else a = ""; - if (a == ":") { - arg[c] = 1; - i++; - } - opt[c] = 1; - } - } - { - expect = 0; - str = $0; - if (substr(str, 1, 1) != "-") { - printf("'%s'\n", str); - next; - } - len = length($0); - for (i = 2; i <= len; i++) { - c = substr(str, i, 1); - if (!opt[c]) { - printf("-%s\n", substr(str, i)); - next; - } - printf("-%s\n", c); - if (arg[c]) { - if (i < len) - printf("'%s'\n", substr(str, i + 1)); - else - expect = 1; - next; - } - } - } - END { - if (expect) - print "?"; - } - EOF - - : process the command line options - set X `for arg in "$@"; do echo "X$arg"; done | - sed -e s/X// | awk -f options.awk` - eval "set $*" - shift - rm -f options.awk - - : set up default values - fastread='' - reuseval=false - config_sh='' - alldone='' - error='' - silent='' - extractsh='' - override='' - knowitall='' - rm -f optdef.sh - cat >optdef.sh <&2 - error=true - fi - cd UU - shift;; - -h) shift; error=true;; - -r) shift; reuseval=true;; - -s) shift; silent=true; realsilent=true;; - -E) shift; alldone=exit;; - -K) shift; knowitall=true;; - -O) shift; override=true;; - -S) shift; silent=true; extractsh=true;; - -D) - shift - case "$1" in - *=) - echo "$me: use '-U symbol=', not '-D symbol='." >&2 - echo "$me: ignoring -D $1" >&2 - ;; - *=*) echo "$1" | \ - sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;; - *) echo "$1='define'" >> optdef.sh;; - esac - shift - ;; - -U) - shift - case "$1" in - *=) echo "$1" >> optdef.sh;; - *=*) - echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2 - echo "$me: ignoring -U $1" >&2 - ;; - *) echo "$1='undef'" >> optdef.sh;; - esac - shift - ;; - -V) echo "$me generated by metaconfig 3.0 PL70." >&2 - exit 0;; - --) break;; - -*) echo "$me: unknown option $1" >&2; shift; error=true;; - *) break;; - esac - done - - case "$error" in - true) - cat >&2 <&1 - case "$silent" in - true) exec 1>/dev/null;; - esac - - : run the defines and the undefines, if any, but leave the file out there... - touch optdef.sh - . ./optdef.sh - - : set package name - package=pennmush - - : Some greps do not return status, grrr. - echo "grimblepritz" >grimble - if grep blurfldyick grimble >/dev/null 2>&1 ; then - contains=contains - elif grep grimblepritz grimble >/dev/null 2>&1 ; then - contains=grep - else - contains=contains - fi - rm -f grimble - : the following should work in any shell - case "$contains" in - contains*) - echo " " - echo "AGH! Grep doesn't return a status. Attempting remedial action." - cat >contains <<'EOSS' - grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp - EOSS - chmod +x contains - esac - - : first determine how to suppress newline on echo command - echo " " - echo "Checking echo to see how to suppress newlines..." - (echo "hi there\c" ; echo " ") >.echotmp - if $contains c .echotmp >/dev/null 2>&1 ; then - echo "...using -n." - n='-n' - c='' - else - cat <<'EOM' - ...using \c - EOM - n='' - c='\c' - fi - echo $n "The star should be here-->$c" - echo '*' - rm -f .echotmp - - : compute the number of columns on the terminal for proper question formatting - case "$COLUMNS" in - '') COLUMNS='80';; - esac - - : set up the echo used in my read - myecho="case \"\$xxxm\" in - '') echo $n \"\$rp $c\" >&4;; - *) case \"\$rp\" in - '') echo $n \"[\$xxxm] $c\";; - *) - if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then - echo \"\$rp\" >&4 - echo $n \"[\$xxxm] $c\" >&4 - else - echo $n \"\$rp [\$xxxm] $c\" >&4 - fi - ;; - esac;; - esac" - - : now set up to do reads with possible shell escape and default assignment - cat <myread - $startsh - xxxm=\$dflt - $myecho - ans='!' - case "\$fastread" in - yes) case "\$dflt" in - '') ;; - *) ans=''; - case "\$silent-\$rp" in - true-) ;; - *) echo " " >&4;; - esac;; - esac;; - *) case "\$silent" in - true) case "\$rp" in - '') ans='';; - esac;; - esac;; - esac - while expr "X\$ans" : "X!" >/dev/null; do - read answ - set x \$xxxm - shift - aok=''; eval "ans=\\"\$answ\\"" && aok=y - case "\$answ" in - "!") - sh 1>&4 - echo " " - $myecho - ;; - !*) - set x \`expr "X\$ans" : "X!\(.*\)\$"\` - shift - sh 1>&4 -c "\$*" - echo " " - $myecho - ;; - "\$ans") - case "\$ans" in - \\&*) - set x \`expr "X\$ans" : "X&\(.*\)\$"\` - shift - case "\$1" in - -d) - fastread=yes - echo "(OK, I'll run with -d after this question.)" >&4 - ;; - -*) - echo "*** Sorry, \$1 not supported yet." >&4 - ;; - esac - $myecho - ans=! - ;; - esac;; - *) - case "\$aok" in - y) - echo "*** Substitution done -- please confirm." - xxxm="\$ans" - ans=\`echo $n "\$ans$c" | tr '\012' ' '\` - xxxm="\$ans" - ans=! - ;; - *) - echo "*** Error -- try again." - ans=! - ;; - esac - $myecho - ;; - esac - case "\$ans\$xxxm\$nostick" in - '') - ans=! - $myecho - ;; - esac - done - case "\$ans" in - '') ans="\$xxxm";; - esac - EOSC - - : Find the path to the source tree - case "$src" in - '') src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;; - esac - case "$src" in - '') - src=. - rsrc=.. - ;; - /*) rsrc="$src/..";; - *) rsrc="../$src";; - esac - if test -f $rsrc/Configure && \ - $contains "^package=$package" $rsrc/Configure >/dev/null 2>&1 - then - : found it, so we are ok. - else - rsrc='' - for src in . .. ../.. ../../.. ../../../..; do - if test -f ../$src/Configure && \ - $contains "^package=$package" ../$src/Configure >/dev/null 2>&1 - then - rsrc=../$src - break - fi - done - fi - case "$rsrc" in - '') - echo " " - dflt= - rp="Directory where sources for $package are located?" - . ./myread - src="$ans" - rsrc="$src" - if test -f $rsrc/Configure && \ - $contains "^package=$package" $rsrc/Configure >/dev/null 2>&1 - then - echo "Ok, I've found them under $src" - else - echo "Sorry, I can't seem to be able to locate $package sources." >&4 - exit 1 - fi - ;; - ../.) ;; - *) - echo " " - echo "Sources for $package found in $src" >&4 - ;; - esac - - : script used to extract .SH files with variable substitutions - cat >extract <<'EOS' - CONFIG=true - echo "Doing variable substitutions on .SH files..." - if test -f $src/MANIFEST; then - set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH'` - else - echo "(Looking for .SH files under the source directory.)" - set x `(cd $src; find . -name "*.SH" -print)` - fi - shift - case $# in - 0) set x `(cd $src; echo *.SH)`; shift;; - esac - if test ! -f $src/$1; then - shift - fi - mkdir_p=' - name=$1; - create=""; - while test $name; do - if test ! -d "$name"; then - create="$name $create"; - name=`echo $name | sed -e "s|^[^/]*$||"`; - name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`; - else - name=""; - fi; - done; - for file in $create; do - mkdir $file; - done - ' - for file in $*; do - case "$src" in - ".") - case "$file" in - */*) - dir=`expr X$file : 'X\(.*\)/'` - file=`expr X$file : 'X.*/\(.*\)'` - (cd $dir && . ./$file) - ;; - *) - . ./$file - ;; - esac - ;; - *) - case "$file" in - */*) - dir=`expr X$file : 'X\(.*\)/'` - file=`expr X$file : 'X.*/\(.*\)'` - (set x $dir; shift; eval $mkdir_p) - sh <$src/$dir/$file - ;; - *) - sh <$src/$file - ;; - esac - ;; - esac - done - if test -f $src/config_h.SH; then - if test ! -f config.h; then - : oops, they left it out of MANIFEST, probably, so do it anyway. - . $src/config_h.SH - fi - fi - EOS - - : extract files and exit if asked to do so - case "$extractsh" in - true) - case "$realsilent" in - true) ;; - *) exec 1>&4;; - esac - case "$config_sh" in - '') config_sh='config.sh'; config="$rsrc/config.sh";; - /*) config="$config_sh";; - *) config="$rsrc/$config_sh";; - esac - echo " " - echo "Fetching answers from $config_sh..." - . $config - test "$override" && . ./optdef.sh - echo " " - cd .. - . UU/extract - rm -rf UU - echo "Done." - exit 0 - ;; - esac - - : Eunice requires " " instead of "", can you believe it - echo " " - : Here we go... - echo "Beginning of configuration questions for $package." - - trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15 - - : Now test for existence of everything in MANIFEST - echo " " - if test -f $rsrc/MANIFEST; then - echo "First let's make sure your kit is complete. Checking..." >&4 - awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50 - rm -f missing - tmppwd=`pwd` - for filelist in x??; do - (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing) - done - if test -s missing; then - cat missing >&4 - cat >&4 <<'EOM' - - THIS PACKAGE SEEMS TO BE INCOMPLETE. - - You have the option of continuing the configuration process, despite the - distinct possibility that your kit is damaged, by typing 'y'es. If you - do, don't blame me if something goes wrong. I advise you to type 'n'o - and contact the author (pennmush-developers@pennmush.org). - - EOM - echo $n "Continue? [n] $c" >&4 - read ans - case "$ans" in - y*) - echo "Continuing..." >&4 - rm -f missing - ;; - *) - echo "ABORTING..." >&4 - kill $$ - ;; - esac - else - echo "Looks good..." - fi - else - echo "There is no MANIFEST file. I hope your kit is complete !" - fi - rm -f missing x?? - - : create .config dir to save info across Configure sessions - test -d ../.config || mkdir ../.config - cat >../.config/README </dev/null` - case "$user" in - '') user=`whoami 2>&1`;; - esac - if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then - firsttime=false - echo " " - rp='Would you like to see the instructions?' - dflt=n - . ./myread - case "$ans" in - [yY]*) ;; - *) needman=false;; - esac - fi - if $needman; then - cat <>../.config/instruct;; - esac - fi - - : find out where common programs are - echo " " - echo "Locating common programs..." >&4 - cat <loc - $startsh - case \$# in - 0) exit 1;; - esac - thing=\$1 - shift - dflt=\$1 - shift - for dir in \$*; do - case "\$thing" in - .) - if test -d \$dir/\$thing; then - echo \$dir - exit 0 - fi - ;; - *) - for thisthing in \$dir/\$thing; do - : just loop through to pick last item - done - if test -f \$thisthing; then - echo \$thisthing - exit 0 - elif test -f \$dir/\$thing.exe; then - : on Eunice apparently - echo \$dir/\$thing - exit 0 - fi - ;; - esac - done - echo \$dflt - exit 1 - EOSC - chmod +x loc - $eunicefix loc - loclist=" - awk - cat - chmod - comm - cp - echo - expr - grep - make - mkdir - rm - sed - sort - touch - tr - uniq - " - trylist=" - Mcc - cpp - date - ln - mail - perl - rmail - sendmail - smail - test - uname - uptime - " - pth=`echo $PATH | sed -e "s/$p_/ /g"` - pth="$pth /lib /usr/lib" - for file in $loclist; do - eval xxx=\$$file - case "$xxx" in - /*|?:[\\/]*) - if test -f "$xxx"; then - : ok - else - echo "WARNING: no $xxx -- ignoring your setting for $file." >&4 - xxx=`./loc $file $file $pth` - fi - ;; - '') xxx=`./loc $file $file $pth`;; - *) xxx=`./loc $xxx $xxx $pth`;; - esac - eval $file=$xxx - eval _$file=$xxx - case "$xxx" in - /*) - echo $file is in $xxx. - ;; - ?:[\\/]*) - echo $file is in $xxx. - ;; - *) - echo "I don't know where '$file' is, and my life depends on it." >&4 - echo "Go find a public domain implementation or fix your PATH setting!" >&4 - exit 1 - ;; - esac - done - echo " " - echo "Don't worry if any of the following aren't found..." - say=offhand - for file in $trylist; do - eval xxx=\$$file - case "$xxx" in - /*|?:[\\/]*) - if test -f "$xxx"; then - : ok - else - echo "WARNING: no $xxx -- ignoring your setting for $file." >&4 - xxx=`./loc $file $file $pth` - fi - ;; - '') xxx=`./loc $file $file $pth`;; - *) xxx=`./loc $xxx $xxx $pth`;; - esac - eval $file=$xxx - eval _$file=$xxx - case "$xxx" in - /*) - echo $file is in $xxx. - ;; - ?:[\\/]*) - echo $file is in $xxx. - ;; - *) - echo "I don't see $file out there, $say." - say=either - ;; - esac - done - case "$egrep" in - egrep) - echo "Substituting grep for egrep." - egrep=$grep - ;; - esac - case "$ln" in - ln) - echo "Substituting cp for ln." - ln=$cp - ;; - esac - case "$test" in - test) - echo "Hopefully test is built into your sh." - ;; - *) - if `sh -c "PATH= test true" >/dev/null 2>&1`; then - echo "Using the test built into your sh." - test=test - _test=test - fi - ;; - esac - case "$echo" in - echo) - echo "Hopefully echo is built into your sh." - ;; - '') ;; - *) - echo " " - echo "Checking compatibility between $echo and builtin echo (if any)..." >&4 - $echo $n "hi there$c" >foo1 - echo $n "hi there$c" >foo2 - if cmp foo1 foo2 >/dev/null 2>&1; then - echo "They are compatible. In fact, they may be identical." - else - case "$n" in - '-n') n='' c='\c';; - *) n='-n' c='';; - esac - cat <$c" - $echo "*" - fi - $rm -f foo1 foo2 - ;; - esac - - : determine whether symbolic links are supported - echo " " - $touch blurfl - if $ln -s blurfl sym > /dev/null 2>&1 ; then - echo "Symbolic links are supported." >&4 - lns="$ln -s" - else - echo "Symbolic links are NOT supported." >&4 - lns="$ln" - fi - $rm -f blurfl sym - - : see whether [:lower:] and [:upper:] are supported character classes - echo " " - up='[A-Z]' - low='[a-z]' - case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in - ABYZ) - echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4 - up='[:upper:]' - low='[:lower:]' - ;; - *) - echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4 - ;; - esac - : set up the translation script tr, must be called with ./tr of course - cat >tr </dev/null || hostname) 2>&1` - myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \ - ./tr '[A-Z]' '[a-z]' | tr '\012' ' '` - newmyuname="$myuname" - dflt=n - case "$knowitall" in - '') - if test -f ../config.sh; then - if $contains myuname= ../config.sh >/dev/null 2>&1; then - eval "`grep myuname= ../config.sh`" - fi - if test "X$myuname" = "X$newmyuname"; then - dflt=y - fi - fi - ;; - *) dflt=y;; - esac - - : Get old answers from old config file if Configure was run on the - : same system, otherwise use the hints. - hint=default - cd .. - if test -f config.sh; then - echo " " - rp="I see a config.sh file. Shall I use it to set the defaults?" - . UU/myread - case "$ans" in - n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;; - *) echo "Fetching default answers from your old config.sh file..." >&4 - tmp_n="$n" - tmp_c="$c" - tmp_sh="$sh" - . ./config.sh - cp config.sh UU - n="$tmp_n" - c="$tmp_c" - : Older versions did not always set $sh. Catch re-use of such - : an old config.sh. - case "$sh" in - '') sh="$tmp_sh" ;; - esac - hint=previous - ;; - esac - fi - if test ! -f config.sh; then - $cat <&4 - dflt='' - : Half the following guesses are probably wrong... If you have better - : tests or hints, please send them to pennmush-developers@pennmush.org - : The metaconfig authors would also appreciate a copy... - $test -f /irix && osname=irix - $test -f /xenix && osname=sco_xenix - $test -f /dynix && osname=dynix - $test -f /dnix && osname=dnix - $test -f /lynx.os && osname=lynxos - $test -f /unicos && osname=unicos && osvers=`$uname -r` - $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r` - $test -f /bin/mips && /bin/mips && osname=mips - $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \ - $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4 - $test -d /usr/apollo/bin && osname=apollo - $test -f /etc/saf/_sactab && osname=svr4 - $test -d /usr/include/minix && osname=minix - if $test -d /MachTen; then - osname=machten - if $test -x /sbin/version; then - osvers=`/sbin/version | $awk '{print $2}' | - $sed -e 's/[A-Za-z]$//'` - elif $test -x /usr/etc/version; then - osvers=`/usr/etc/version | $awk '{print $2}' | - $sed -e 's/[A-Za-z]$//'` - else - osvers="$2.$3" - fi - fi - if $test -f $uname; then - set X $myuname - shift - - case "$5" in - fps*) osname=fps ;; - mips*) - case "$4" in - umips) osname=umips ;; - *) osname=mips ;; - esac;; - [23]100) osname=mips ;; - next*) osname=next ;; - news*) osname=news ;; - i386*) - if $test -f /etc/kconfig; then - osname=isc - if test "$lns" = "ln -s"; then - osvers=4 - elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then - osvers=3 - elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then - osvers=2 - fi - fi - ;; - esac - - case "$1" in - aix) osname=aix - tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1` - case "$tmp" in - 'not found') osvers="$4"."$3" ;; - '<3240'|'<>3240') osvers=3.2.0 ;; - '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;; - '=3250'|'>3250') osvers=3.2.5 ;; - *) osvers=$tmp;; - esac - ;; - *dc.osx) osname=dcosx - osvers="$3" - ;; - dnix) osname=dnix - osvers="$3" - ;; - domainos) osname=apollo - osvers="$3" - ;; - dgux) osname=dgux - osvers="$3" - ;; - dynixptx*) osname=dynixptx - osvers="$3" - ;; - freebsd) osname=freebsd - osvers="$3" ;; - genix) osname=genix ;; - hp*) osname=hpux - case "$3" in - *.08.*) osvers=9 ;; - *.09.*) osvers=9 ;; - *.10.*) osvers=10 ;; - *) osvers="$3" ;; - esac - ;; - irix*) osname=irix - case "$3" in - 4*) osvers=4 ;; - 5*) osvers=5 ;; - 6*) osvers=6 ;; - *) osvers="$3" ;; - esac - ;; - linux) osname=linux - case "$3" in - 1*) osvers=1 ;; - *) osvers="$3" ;; - esac - ;; - netbsd*) osname=netbsd - osvers="$3" - ;; - bsd386) osname=bsd386 - osvers=`$uname -r` - ;; - next*) osname=next ;; - solaris) osname=solaris - case "$3" in - 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;; - *) osvers="$3" ;; - esac - ;; - sunos) osname=sunos - case "$3" in - 5*) osname=solaris - osvers=`echo $3 | $sed 's/^5/2/g'` ;; - *) osvers="$3" ;; - esac - ;; - titanos) osname=titanos - case "$3" in - 1*) osvers=1 ;; - 2*) osvers=2 ;; - 3*) osvers=3 ;; - 4*) osvers=4 ;; - *) osvers="$3" ;; - esac - ;; - ultrix) osname=ultrix - osvers="$3" - ;; - osf1|mls+) case "$5" in - alpha) - osname=dec_osf - osvers=`echo "$3" | sed 's/^[vt]//'` - ;; - hp*) osname=hp_osf1 ;; - mips) osname=mips_osf1 ;; - esac - ;; - uts) osname=uts - osvers="$3" - ;; - qnx) osname=qnx - osvers="$4" - ;; - mingw32*) osname=mingw32 - osvers="$3" - ;; - $2) case "$osname" in - *isc*) ;; - *freebsd*) ;; - svr*) - : svr4.x or possibly later - case "svr$3" in - ${osname}*) - osname=svr$3 - osvers=$4 - ;; - esac - case "$osname" in - svr4.0) - : Check for ESIX - if test -f /stand/boot ; then - eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot` - if test -n "$INITPROG" -a -f "$INITPROG"; then - isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'` - if test -n "$isesix"; then - osname=esix4 - fi - fi - fi - ;; - esac - ;; - *) if test -f /etc/systemid; then - osname=sco - set `echo $3 | $sed 's/\./ /g'` $4 - if $test -f sco_$1_$2_$3.sh; then - osvers=$1.$2.$3 - elif $test -f sco_$1_$2.sh; then - osvers=$1.$2 - elif $test -f sco_$1.sh; then - osvers=$1 - fi - else - case "$osname" in - '') : Still unknown. Probably a generic Sys V. - osname="sysv" - osvers="$3" - ;; - esac - fi - ;; - esac - ;; - *) case "$osname" in - '') : Still unknown. Probably a generic BSD. - osname="$1" - osvers="$3" - ;; - esac - ;; - esac - else - if test -f /vmunix -a -f $src/hints/news_os.sh; then - (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1 - if $contains news-os UU/kernel.what >/dev/null 2>&1; then - osname=news_os - fi - $rm -f UU/kernel.what - elif test -d c:/.; then - : Check for cygwin32 emulation - case "x$OS" in - xWindows_*) - set X $myuname - osname=win32 - osvers="$3" - ;; - x*) - set X $myuname - osname=os2 - osvers="$5" - ;; - esac - fi - fi - case "x$osname" in - xcygwin32*) - osname=win32 - ;; - esac - - : Now look for a hint file osname_osvers, unless one has been - : specified already. - case "$hintfile" in - ''|' ') - file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'` - : Also try without trailing minor version numbers. - xfile=`echo $file | $sed -e 's@_[^_]*$@@'` - xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'` - xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'` - xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'` - case "$file" in - '') dflt=none ;; - *) case "$osvers" in - '') dflt=$file - ;; - *) if $test -f $src/hints/$file.sh ; then - dflt=$file - elif $test -f $src/hints/$xfile.sh ; then - dflt=$xfile - elif $test -f $src/hints/$xxfile.sh ; then - dflt=$xxfile - elif $test -f $src/hints/$xxxfile.sh ; then - dflt=$xxxfile - elif $test -f $src/hints/$xxxxfile.sh ; then - dflt=$xxxxfile - elif $test -f "$src/hints/${osname}.sh" ; then - dflt="${osname}" - else - dflt=none - fi - ;; - esac - ;; - esac - ;; - *) - dflt=`echo $hintfile | $sed 's/\.sh$//'` - ;; - esac - - $cat <> UU/config.sh - elif $test X$tans = X -o X$tans = Xnone ; then - : nothing - else - : Give one chance to correct a possible typo. - echo "$file.sh does not exist" - dflt=$file - rp="hint to use instead?" - . UU/myread - for file in $ans; do - if $test -f "$src/hints/$file.sh"; then - . $src/hints/$file.sh - $cat $src/hints/$file.sh >> UU/config.sh - elif $test X$ans = X -o X$ans = Xnone ; then - : nothing - else - echo "$file.sh does not exist -- ignored." - fi - done - fi - done - - hint=recommended - : Remember our hint file for later. - if $test -f "$src/hints/$file.sh" ; then - hintfile="$file" - else - hintfile='' - fi - fi - cd UU - ;; - *) - echo " " - echo "Fetching default answers from $config_sh..." >&4 - tmp_n="$n" - tmp_c="$c" - cd .. - cp $config_sh config.sh 2>/dev/null - chmod +w config.sh - . ./config.sh - cd UU - cp ../config.sh . - n="$tmp_n" - c="$tmp_c" - hint=previous - ;; - esac - test "$override" && . ./optdef.sh - myuname="$newmyuname" - - : Restore computed paths - for file in $loclist $trylist; do - eval $file="\$_$file" - done - - cat << EOM - - Configure uses the operating system name and version to set some defaults. - The default value is probably right if the name rings a bell. Otherwise, - since spelling matters for me, either accept the default or answer "none" - to leave it blank. - - EOM - case "$osname" in - ''|' ') - case "$hintfile" in - ''|' '|none) dflt=none ;; - *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;; - esac - ;; - *) dflt="$osname" ;; - esac - rp="Operating system name?" - . ./myread - case "$ans" in - none) osname='' ;; - *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;; - esac - : who configured the system - cf_time=`$date 2>&1` - cf_by=`(logname) 2>/dev/null` - case "$cf_by" in - "") - cf_by=`(whoami) 2>/dev/null` - case "$cf_by" in - "") cf_by=unknown ;; - esac ;; - esac - - : determine where manual pages are on this system - echo " " - case "$sysman" in - '') - syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1' - syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1" - syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1" - syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1" - syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1" - sysman=`./loc . /usr/man/man1 $syspath` - ;; - esac - if $test -d "$sysman"; then - echo "System manual is in $sysman." >&4 - else - echo "Could not find manual pages in source form." >&4 - fi - - : make some quick guesses about what we are up against - echo " " - $echo $n "Hmm... $c" - echo exit 1 >bsd - echo exit 1 >usg - echo exit 1 >v7 - echo exit 1 >osf1 - echo exit 1 >eunice - echo exit 1 >xenix - echo exit 1 >venix - d_bsd="$undef" - $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null - if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1 - then - echo "Looks kind of like an OSF/1 system, but we'll see..." - echo exit 0 >osf1 - elif test `echo abc | tr a-z A-Z` = Abc ; then - xxx=`./loc addbib blurfl $pth` - if $test -f $xxx; then - echo "Looks kind of like a USG system with BSD features, but we'll see..." - echo exit 0 >bsd - echo exit 0 >usg - else - if $contains SIGTSTP foo >/dev/null 2>&1 ; then - echo "Looks kind of like an extended USG system, but we'll see..." - else - echo "Looks kind of like a USG system, but we'll see..." - fi - echo exit 0 >usg - fi - elif $contains SIGTSTP foo >/dev/null 2>&1 ; then - echo "Looks kind of like a BSD system, but we'll see..." - d_bsd="$define" - echo exit 0 >bsd - else - echo "Looks kind of like a Version 7 system, but we'll see..." - echo exit 0 >v7 - fi - case "$eunicefix" in - *unixtovms*) - $cat <<'EOI' - There is, however, a strange, musty smell in the air that reminds me of - something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. - EOI - echo exit 0 >eunice - d_eunice="$define" - : it so happens the Eunice I know will not run shell scripts in Unix format - ;; - *) - echo " " - echo "Congratulations. You aren't running Eunice." - d_eunice="$undef" - ;; - esac - if test -f /xenix; then - echo "Actually, this looks more like a XENIX system..." - echo exit 0 >xenix - d_xenix="$define" - else - echo " " - echo "It's not Xenix..." - d_xenix="$undef" - fi - chmod +x xenix - $eunicefix xenix - if test -f /venix; then - echo "Actually, this looks more like a VENIX system..." - echo exit 0 >venix - else - echo " " - if ./xenix; then - : null - else - echo "Nor is it Venix..." - fi - fi - chmod +x bsd usg v7 osf1 eunice xenix venix - $eunicefix bsd usg v7 osf1 eunice xenix venix - $rm -f foo - - : see if we need a special compiler - echo " " - if ./usg; then - case "$cc" in - '') case "$Mcc" in - /*) dflt='Mcc';; - *) case "$large" in - -M*) dflt='cc';; - *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then - if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then - dflt='cc' - else - dflt='cc -M' - fi - else - dflt='cc' - fi;; - esac;; - esac;; - *) dflt="$cc";; - esac - $cat <<'EOM' - On some systems the default C compiler will not resolve multiple global - references that happen to have the same name. On some such systems the "Mcc" - command may be used to force these to be resolved. On other systems a "cc -M" - command is required. (Note that the -M flag on other systems indicates a - memory model to use!) If you have the Gnu C compiler, you might wish to use - that instead. - - EOM - rp="What command will force resolution on this system?" - . ./myread - cc="$ans" - else - case "$cc" in - '') dflt=cc;; - *) dflt="$cc";; - esac - rp="Use which C compiler?" - . ./myread - cc="$ans" - fi - echo " " - echo "Checking for GNU cc in disguise and/or its version number..." >&4 - $cat >gccvers.c < - int main() { - #ifdef __GNUC__ - #ifdef __VERSION__ - printf("%s\n", __VERSION__); - #else - printf("%s\n", "1"); - #endif - #endif - exit(0); - } - EOM - if $cc -o gccvers gccvers.c >/dev/null 2>&1; then - gccversion=`./gccvers` - case "$gccversion" in - '') echo "You are not using GNU cc." ;; - *) echo "You are using GNU cc $gccversion." ;; - esac - else - echo " " - echo "*** WHOA THERE!!! ***" >&4 - echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4 - case "$knowitall" in - '') - echo " You'd better start hunting for one and let me know about it." >&4 - exit 1 - ;; - esac - fi - $rm -f gccvers* - case "$gccversion" in - 1*) cpp=`./loc gcc-cpp $cpp $pth` ;; - esac - - : decide how portable to be - case "$d_portable" in - "$define") dflt=y;; - *) dflt=n;; - esac - $cat <<'EOH' - - I can set things up so that your shell scripts and binaries are more portable, - at what may be a noticable cost in performance. In particular, if you - ask to be portable, the following happens: - - 1) Shell scripts will rely on the PATH variable rather than using - the paths derived above. - 2) ~username interpretations will be done at run time rather than - by Configure. - - EOH - rp="Do you expect to run these scripts and binaries on multiple machines?" - . ./myread - case "$ans" in - y*) d_portable="$define" - ;; - *) d_portable="$undef" ;; - esac - - : set up shell script to do ~ expansion - cat >filexp <&2 - exit 1 - fi - case "\$1" in - */*) - echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\` - ;; - *) - echo \$dir - ;; - esac - fi - ;; - *) - echo \$1 - ;; - esac - EOSS - chmod +x filexp - $eunicefix filexp - - : now set up to get a file name - cat <getfile - $startsh - EOS - cat <<'EOSC' >>getfile - tilde='' - fullpath='' - already='' - skip='' - none_ok='' - exp_file='' - nopath_ok='' - orig_rp="$rp" - orig_dflt="$dflt" - - case "$fn" in - *\(*) - expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok - fn=`echo $fn | sed 's/(.*)//'` - ;; - esac - - case "$fn" in - *:*) - loc_file=`expr $fn : '.*:\(.*\)'` - fn=`expr $fn : '\(.*\):.*'` - ;; - esac - - case "$fn" in - *~*) tilde=true;; - esac - case "$fn" in - */*) fullpath=true;; - esac - case "$fn" in - *+*) skip=true;; - esac - case "$fn" in - *n*) none_ok=true;; - esac - case "$fn" in - *e*) exp_file=true;; - esac - case "$fn" in - *p*) nopath_ok=true;; - esac - - case "$fn" in - *f*) type='File';; - *d*) type='Directory';; - *l*) type='Locate';; - esac - - what="$type" - case "$what" in - Locate) what='File';; - esac - - case "$exp_file" in - '') - case "$d_portable" in - "$define") ;; - *) exp_file=true;; - esac - ;; - esac - - cd .. - while test "$type"; do - redo='' - rp="$orig_rp" - dflt="$orig_dflt" - case "$tilde" in - true) rp="$rp (~name ok)";; - esac - . UU/myread - if test -f UU/getfile.ok && \ - $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1 - then - value="$ans" - ansexp="$ans" - break - fi - case "$ans" in - none) - value='' - ansexp='' - case "$none_ok" in - true) type='';; - esac - ;; - *) - case "$tilde" in - '') value="$ans" - ansexp="$ans";; - *) - value=`UU/filexp $ans` - case $? in - 0) - if test "$ans" != "$value"; then - echo "(That expands to $value on this system.)" - fi - ;; - *) value="$ans";; - esac - ansexp="$value" - case "$exp_file" in - '') value="$ans";; - esac - ;; - esac - case "$fullpath" in - true) - case "$ansexp" in - /*) value="$ansexp" ;; - *) - redo=true - case "$already" in - true) - echo "I shall only accept a full path name, as in /bin/ls." >&4 - echo "Use a ! shell escape if you wish to check pathnames." >&4 - ;; - *) - echo "Please give a full path name, starting with slash." >&4 - case "$tilde" in - true) - echo "Note that using ~name is ok provided it expands well." >&4 - already=true - ;; - esac - esac - ;; - esac - ;; - esac - case "$redo" in - '') - case "$type" in - File) - if test -f "$ansexp"; then - type='' - elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1 - then - echo "($value is not a plain file, but that's ok.)" - type='' - fi - ;; - Directory) - if test -d "$ansexp"; then - type='' - fi - ;; - Locate) - if test -d "$ansexp"; then - echo "(Looking for $loc_file in directory $value.)" - value="$value/$loc_file" - ansexp="$ansexp/$loc_file" - fi - if test -f "$ansexp"; then - type='' - fi - case "$nopath_ok" in - true) case "$value" in - */*) ;; - *) echo "Assuming $value will be in people's path." - type='' - ;; - esac - ;; - esac - ;; - esac - - case "$skip" in - true) type=''; - esac - - case "$type" in - '') ;; - *) - if test "$fastread" = yes; then - dflt=y - else - dflt=n - fi - rp="$what $value doesn't exist. Use that name anyway?" - . UU/myread - dflt='' - case "$ans" in - y*) type='';; - *) echo " ";; - esac - ;; - esac - ;; - esac - ;; - esac - done - cd UU - ans="$value" - rp="$orig_rp" - dflt="$orig_dflt" - rm -f getfile.ok - EOSC - - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" - dflt='/usr/include' - incpath='' - mips_type='' - if $test -f /bin/mips && /bin/mips; then - echo "Looks like a MIPS system..." - $cat >usr.c <<'EOCP' - #ifdef SYSTYPE_BSD43 - /bsd43 - #endif - EOCP - if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then - dflt='/bsd43/usr/include' - incpath='/bsd43' - mips_type='BSD 4.3' - else - mips_type='System V' - fi - $rm -f usr.c usr.out - echo "and you're compiling with the $mips_type compiler and libraries." - xxx_prompt=y - echo "exit 0" >mips - else - echo "Doesn't look like a MIPS system." - xxx_prompt=n - echo "exit 1" >mips - fi - chmod +x mips - $eunicefix mips - case "$usrinc" in - '') ;; - *) dflt="$usrinc";; - esac - case "$xxx_prompt" in - y) fn=d/ - echo " " - rp='Where are the include files you want to use?' - . ./getfile - usrinc="$ans" - ;; - *) usrinc="$dflt" - ;; - esac - - : see how we invoke the C preprocessor - echo " " - echo "Now, how can we feed standard input to your C preprocessor..." >&4 - cat <<'EOT' >testcpp.c - #define ABC abc - #define XYZ xyz - ABC.XYZ - EOT - cd .. - echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin - chmod 755 cppstdin - wrapper=`pwd`/cppstdin - ok='false' - cd UU - - if $test "X$cppstdin" != "X" && \ - $cppstdin $cppminus testcpp.out 2>&1 && \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 - then - echo "You used to use $cppstdin $cppminus so we'll use that again." - case "$cpprun" in - '') echo "But let's see if we can live without a wrapper..." ;; - *) - if $cpprun $cpplast testcpp.out 2>&1 && \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 - then - echo "(And we'll use $cpprun $cpplast to preprocess directly.)" - ok='true' - else - echo "(However, $cpprun $cpplast does not work, let's see...)" - fi - ;; - esac - else - case "$cppstdin" in - '') ;; - *) - echo "Good old $cppstdin $cppminus does not seem to be of any help..." - ;; - esac - fi - - if $ok; then - : nothing - elif echo 'Maybe "'"$cc"' -E" will work...'; \ - $cc -E testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Yup, it does." - x_cpp="$cc -E" - x_minus=''; - elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \ - $cc -E - testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Yup, it does." - x_cpp="$cc -E" - x_minus='-'; - elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \ - $cc -P testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Yipee, that works!" - x_cpp="$cc -P" - x_minus=''; - elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \ - $cc -P - testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "At long last!" - x_cpp="$cc -P" - x_minus='-'; - elif echo 'No such luck, maybe "'$cpp'" will work...'; \ - $cpp testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "It works!" - x_cpp="$cpp" - x_minus=''; - elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \ - $cpp - testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Hooray, it works! I was beginning to wonder." - x_cpp="$cpp" - x_minus='-'; - elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \ - $wrapper testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - x_cpp="$wrapper" - x_minus='' - echo "Eureka!" - else - dflt='' - rp="No dice. I can't find a C preprocessor. Name one:" - . ./myread - x_cpp="$ans" - x_minus='' - $x_cpp testcpp.out 2>&1 - if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "OK, that will do." >&4 - else - echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4 - exit 1 - fi - fi - - case "$ok" in - false) - cppstdin="$x_cpp" - cppminus="$x_minus" - cpprun="$x_cpp" - cpplast="$x_minus" - set X $x_cpp - shift - case "$1" in - "$cpp") - echo "Perhaps can we force $cc -E using a wrapper..." - if $wrapper testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 - then - echo "Yup, we can." - cppstdin="$wrapper" - cppminus=''; - else - echo "Nope, we'll have to live without it..." - fi - ;; - esac - case "$cpprun" in - "$wrapper") - cpprun='' - cpplast='' - ;; - esac - ;; - esac - - case "$cppstdin" in - "$wrapper") ;; - *) $rm -f $wrapper;; - esac - $rm -f testcpp.c testcpp.out - - : Set private lib path - case "$plibpth" in - '') if ./mips; then - plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib" - fi;; - esac - case "$libpth" in - ' ') dlist='';; - '') dlist="$loclibpth $plibpth $glibpth";; - *) dlist="$libpth";; - esac - - : Now check and see which directories actually exist, avoiding duplicates - libpth='' - for xxx in $dlist - do - if $test -d $xxx; then - case " $libpth " in - *" $xxx "*) ;; - *) libpth="$libpth $xxx";; - esac - fi - done - $cat <<'EOM' - - Some systems have incompatible or broken versions of libraries. Among - the directories listed in the question below, please remove any you - know not to be holding relevant libraries, and add any that are needed. - Say "none" for none. - - EOM - case "$libpth" in - '') dflt='none';; - *) - set X $libpth - shift - dflt=${1+"$@"} - ;; - esac - rp="Directories to use for library searches?" - . ./myread - case "$ans" in - none) libpth=' ';; - *) libpth="$ans";; - esac - - : determine optimize, if desired, or use for debug flag also - case "$optimize" in - ' ') dflt='none';; - '') case $gccversion in - 2*) dflt='-g -O' ;; - *egcs*) dflt='-g -O' ;; - *) dflt='-g' ;; - esac ;; - *) dflt="$optimize";; - esac - $cat </dev/null 2>&1 - then - dflt="$dflt -posix" - fi - ;; - esac - ;; - esac - - case "$mips_type" in - *BSD*|'') inclwanted="$locincpth $usrinc";; - *) inclwanted="$locincpth $inclwanted $usrinc/bsd";; - esac - for thisincl in $inclwanted; do - if $test -d $thisincl; then - if $test x$thisincl != x$usrinc; then - case "$dflt" in - *$thisincl*);; - *) dflt="$dflt -I$thisincl";; - esac - fi - fi - done - - inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then - xxx=true; - elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then - xxx=true; - else - xxx=false; - fi; - if $xxx; then - case "$dflt" in - *$2*);; - *) dflt="$dflt -D$2";; - esac; - fi' - - if ./osf1; then - set signal.h __LANGUAGE_C__; eval $inctest - else - set signal.h LANGUAGE_C; eval $inctest - fi - - case "$hint" in - none|recommended) dflt="$ccflags $dflt" ;; - *) dflt="$ccflags";; - esac - - case "$dflt" in - ''|' ') dflt=none;; - esac - $cat <&4 - set X $cppflags - shift - cppflags='' - $cat >cpp.c <<'EOM' - #define BLURFL foo - - BLURFL xx LFRULB - EOM - previous='' - for flag in $* - do - case "$flag" in - -*) ftry="$flag";; - *) ftry="$previous $flag";; - esac - if $cppstdin -DLFRULB=bar $ftry $cppminus cpp1.out 2>/dev/null && \ - $cpprun -DLFRULB=bar $ftry $cpplast cpp2.out 2>/dev/null && \ - $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \ - $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1 - then - cppflags="$cppflags $ftry" - previous='' - else - previous="$flag" - fi - done - set X $cppflags - shift - cppflags=${1+"$@"} - case "$cppflags" in - *-*) echo "They appear to be: $cppflags";; - esac - $rm -f cpp.c cpp?.out - ;; - esac - - : flags used in final linking phase - case "$ldflags" in - '') if ./venix; then - dflt='-i -z' - else - dflt='' - fi - case "$ccflags" in - *-posix*) dflt="$dflt -posix" ;; - esac - ;; - *) dflt="$ldflags";; - esac - - : Try to guess additional flags to pick up local libraries. - for thislibdir in $libpth; do - case " $loclibpth " in - *" $thislibdir "*) - case "$dflt " in - *"-L$thislibdir "*) ;; - *) dflt="$dflt -L$thislibdir" ;; - esac - ;; - esac - done - - case "$dflt" in - '') dflt='none' ;; - esac - - $cat <&4 - set X $cc $optimize $ccflags $ldflags try.c -o try - shift - $cat >try.msg < try.c <<'EOF' - #include - main() { exit(0); } - EOF - dflt=y - if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then - if sh -c './try' >>try.msg 2>&1; then - dflt=n - else - echo "The program compiled OK, but exited with status $?." >>try.msg - rp="You have a problem. Shall I abort Configure" - dflt=y - fi - else - echo "I can't compile the test program." >>try.msg - rp="You have a BIG problem. Shall I abort Configure" - dflt=y - fi - case "$dflt" in - y) - $cat try.msg - case "$knowitall" in - '') - echo "(The supplied flags might be incorrect with this C compiler.)" - ;; - *) dflt=n;; - esac - echo " " - . ./myread - case "$ans" in - n*|N*) ;; - *) echo "Ok. Stopping Configure." >&4 - exit 1 - ;; - esac - ;; - n) echo "OK, that should do.";; - esac - $rm -f try try.* core - - : Initialize h_fcntl - h_fcntl=false - - : Initialize h_sysfile - h_sysfile=false - - : compute shared library extension - case "$so" in - '') - if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then - dflt='sl' - else - dflt='so' - fi - ;; - *) dflt="$so";; - esac - $cat <&4 - case "$libs" in - ' '|'') dflt='';; - *) dflt="$libs";; - esac - case "$libswanted" in - '') libswanted='c_s';; - esac - for thislib in $libswanted; do - - - - if $test "$thislib" = "resolv"; then - case " $dflt " in - *"-lbind "*) echo "We've already found -lbind, so we don't need -lresolv" ;; - *) - - if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then - echo "Found -l$thislib (shared)." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then - echo "Found -l$thislib (shared)." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then - echo "Found -l$thislib." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then - echo "Found -l$thislib." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then - echo "Found -l${thislib}_s." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l${thislib}_s";; - esac - elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then - echo "Found -l$thislib." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - else - echo "No -l$thislib." - fi - - ;; - esac - else - - if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then - echo "Found -l$thislib (shared)." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then - echo "Found -l$thislib (shared)." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then - echo "Found -l$thislib." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then - echo "Found -l$thislib." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then - echo "Found -l${thislib}_s." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l${thislib}_s";; - esac - elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then - echo "Found -l$thislib." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - else - echo "No -l$thislib." - fi - - fi - done - set X $dflt - shift - dflt="$*" - case "$libs" in - '') dflt="$dflt";; - *) dflt="$libs";; - esac - case "$dflt" in - ' '|'') dflt='none';; - esac - - $cat <whoa - $startsh - EOS - cat <<'EOSC' >>whoa - dflt=y - echo " " - echo "*** WHOA THERE!!! ***" >&4 - echo " The $hint value for \$$var on this machine was \"$was\"!" >&4 - rp=" Keep the $hint value?" - . ./myread - case "$ans" in - y) td=$was; tu=$was;; - esac - EOSC - - : function used to set $1 to $val - setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef; - case "$val$was" in - $define$undef) . ./whoa; eval "$var=\$td";; - $undef$define) . ./whoa; eval "$var=\$tu";; - *) eval "$var=$val";; - esac' - - echo " " - echo "Checking for GNU C Library..." >&4 - cat >gnulibc.c </dev/null 2>&1 && \ - ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then - val="$define" - echo "You are using the GNU C Library" >&4 - else - cat >gnulibc.c < - int main() - { - #ifdef __GLIBC__ - return 0; - #else - return 1; - #endif - } - EOM - if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \ - ./gnulibc; then - val="$define" - echo "You are using the GNU C Library" >&4 - else - val="$undef" - echo "You are not using the GNU C Library" >&4 - fi - fi - $rm -f gnulibc* - set d_gnulibc - eval $setvar - - : see if nm is to be used to determine whether a symbol is defined or not - case "$usenm" in - '') - case "$d_gnulibc" in - $define) - dflt=n - ;; - *) - dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null` - if $test $dflt -gt 20; then - dflt=y - else - dflt=n - fi - ;; - esac - ;; - *) - case "$usenm" in - true) dflt=y;; - *) dflt=n;; - esac - ;; - esac - $cat < /dev/null 2>&1; then - nm_so_opt='--dynamic' - fi - ;; - esac - ;; - esac - - case "$runnm" in - true) - : get list of predefined functions in a handy place - echo " " - case "$libc" in - '') libc=unknown - case "$libs" in - *-lc_s*) libc=`./loc libc_s$_a $libc $libpth` - esac - ;; - esac - libnames=''; - case "$libs" in - '') ;; - *) for thislib in $libs; do - case "$thislib" in - -lc|-lc_s) - : Handle C library specially below. - ;; - -l*) - thislib=`echo $thislib | $sed -e 's/^-l//'` - if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then - : - elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then - : - elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then - : - elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then - : - elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then - : - elif try=`./loc $thislib X $libpth`; $test -f "$try"; then - : - elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then - : - else - try='' - fi - libnames="$libnames $try" - ;; - *) libnames="$libnames $thislib" ;; - esac - done - ;; - esac - xxx=normal - case "$libc" in - unknown) - set /lib/libc.$so - for xxx in $libpth; do - $test -r $1 || set $xxx/libc.$so - $test -r $1 || \ - set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \ - tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e ' - h - s/[0-9][0-9]*/0000&/g - s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g - G - s/\n/ /' | \ - sort | $sed -e 's/^.* //'` - eval set \$$# - done - $test -r $1 || set /usr/ccs/lib/libc.$so - $test -r $1 || set /lib/libsys_s$_a - ;; - *) - set blurfl - ;; - esac - if $test -r "$1"; then - echo "Your (shared) C library seems to be in $1." - libc="$1" - elif $test -r /lib/libc && $test -r /lib/clib; then - echo "Your C library seems to be in both /lib/clib and /lib/libc." - xxx=apollo - libc='/lib/clib /lib/libc' - if $test -r /lib/syslib; then - echo "(Your math library is in /lib/syslib.)" - libc="$libc /lib/syslib" - fi - elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then - echo "Your C library seems to be in $libc, as you said before." - elif $test -r $incpath/usr/lib/libc$_a; then - libc=$incpath/usr/lib/libc$_a; - echo "Your C library seems to be in $libc. That's fine." - elif $test -r /lib/libc$_a; then - libc=/lib/libc$_a; - echo "Your C library seems to be in $libc. You're normal." - else - if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then - : - elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then - libnames="$libnames "`./loc clib blurfl/dyick $libpth` - elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then - : - elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then - : - elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then - : - else - tans=`./loc Llibc$_a blurfl/dyick $xlibpth` - fi - if $test -r "$tans"; then - echo "Your C library seems to be in $tans, of all places." - libc=$tans - else - libc='blurfl' - fi - fi - if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then - dflt="$libc" - cat < libpath - cat >&4 < libnames - set X `cat libnames` - shift - xxx=files - case $# in 1) xxx=file; esac - echo "Extracting names from the following $xxx for later perusal:" >&4 - echo " " - $sed 's/^/ /' libnames >&4 - echo " " - $echo $n "This may take a while...$c" >&4 - - for file in $*; do - case $file in - *$so*) nm $nm_so_opt $nm_opt $file 2>/dev/null;; - *) nm $nm_opt $file 2>/dev/null;; - esac - done >libc.tmp - - $echo $n ".$c" - $grep fprintf libc.tmp > libc.ptf - xscan='eval "libc.list"; $echo $n ".$c" >&4' - xrun='eval "libc.list"; echo "done" >&4' - xxx='[ADTSIW]' - if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \ - -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun - else - nm -p $* 2>/dev/null >libc.tmp - $grep fprintf libc.tmp > libc.ptf - if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\ - eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1 - then - nm_opt='-p' - eval $xrun - else - echo " " - echo "nm didn't seem to work right. Trying ar instead..." >&4 - com='' - if ar t $libc > libc.tmp; then - for thisname in $libnames; do - ar t $thisname >>libc.tmp - done - $sed -e "s/\\$_o\$//" < libc.tmp > libc.list - echo "Ok." >&4 - else - echo "ar didn't seem to work right." >&4 - echo "Maybe this is a Cray...trying bld instead..." >&4 - if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list - then - for thisname in $libnames; do - bld t $libnames | \ - $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list - ar t $thisname >>libc.tmp - done - echo "Ok." >&4 - else - echo "That didn't work either. Giving up." >&4 - exit 1 - fi - fi - fi - fi - nm_extract="$com" - if $test -f /lib/syscalls.exp; then - echo " " - echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4 - $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list - fi - ;; - esac - $rm -f libnames libpath - - : is a C symbol defined? - csym='tlook=$1; - case "$3" in - -v) tf=libc.tmp; tc=""; tdc="";; - -a) tf=libc.tmp; tc="[0]"; tdc="[]";; - *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";; - esac; - tx=yes; - case "$reuseval-$4" in - true-) ;; - true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;; - esac; - case "$tx" in - yes) - case "$runnm" in - true) - if $contains $tlook $tf >/dev/null 2>&1; - then tval=true; - else tval=false; - fi;; - *) - echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c; - if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1; - then tval=true; - else tval=false; - fi; - $rm -f t t.c;; - esac;; - *) - case "$tval" in - $define) tval=true;; - *) tval=false;; - esac;; - esac; - eval "$2=$tval"' - - : define an is-in-libc? function - inlibc='echo " "; td=$define; tu=$undef; - sym=$1; var=$2; eval "was=\$$2"; - tx=yes; - case "$reuseval$was" in - true) ;; - true*) tx=no;; - esac; - case "$tx" in - yes) - set $sym tres -f; - eval $csym; - case "$tres" in - true) - echo "$sym() found." >&4; - case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";; - *) - echo "$sym() NOT found." >&4; - case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";; - esac;; - *) - case "$was" in - $define) echo "$sym() found." >&4;; - *) echo "$sym() NOT found." >&4;; - esac;; - esac' - - : determine filename position in cpp output - echo " " - echo "Computing filename position in cpp output for #include directives..." >&4 - echo '#include ' > foo.c - $cat >fieldn </dev/null | \ - $grep '^[ ]*#.*stdio\.h' | \ - while read cline; do - pos=1 - qline=\`echo "\$cline" | $sed -e 's/\\([][{}#$<>;&()|^*?\\\\]\\)/\\\\\\\\\\1/g'\` - eval set \$qline - while $test "x\$1" \!= x; do - if $test -r "\$1"; then - echo "\$pos" - exit 0 - fi - shift - pos=\`expr \$pos + 1\` - done - done - EOF - chmod +x fieldn - fieldn=`./fieldn` - $rm -f foo.c fieldn - case $fieldn in - '') pos='???';; - 1) pos=first;; - 2) pos=second;; - 3) pos=third;; - *) pos="${fieldn}th";; - esac - echo "Your cpp writes the filename in the $pos field of the line." - - : locate header file - $cat >findhdr <" > foo\$\$.c - $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \ - $grep "^[ ]*#.*\$wanted" | \ - while read cline; do - pos=1 - qline=\`echo "\$cline" | $sed -e 's/\\([][{}#$<>;&()|^'"'"'*?\\\\]\\)/\\\\\\\\\\1/g'\` - eval set \$qline - while $test $fieldn -gt \$pos; do - shift - pos=\`expr \$pos + 1\` - done - name=\$1 - case "\$name" in - */\$wanted) echo "\$name"; exit 0;; - *\\\\\$wanted) echo "\$name"; exit 0;; - *) name='';; - esac; - done; - $rm -f foo\$\$.c; - case "\$name" in - '') exit 1;; - esac - EOF - chmod +x findhdr - - : access call always available on UNIX - set access d_access - eval $inlibc - - : locate the flags for 'access()' - case "$d_access" in - "$define") - echo " " - $cat >access.c <<'EOCP' - #include - #ifdef I_FCNTL - #include - #endif - #ifdef I_SYS_FILE - #include - #endif - #ifdef I_UNISTD - #include - #endif - main() { - exit(R_OK); - } - EOCP - : check sys/file.h first, no particular reason here - if $test `./findhdr sys/file.h` && \ - $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then - h_sysfile=true; - echo " defines the *_OK access constants." >&4 - elif $test `./findhdr fcntl.h` && \ - $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then - h_fcntl=true; - echo " defines the *_OK access constants." >&4 - elif $test `./findhdr unistd.h` && \ - $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then - echo " defines the *_OK access constants." >&4 - else - echo "I can't find the four *_OK access constants--I'll use mine." >&4 - fi - ;; - esac - $rm -f access* - - : check for ok to use function ptr arguments in prototypes - echo " " - $cat >test_argsinfp.c <<'EOCP' - #include - int myfun(int); - int fun(int (*func)(int)); - int fun2(int, int (*prevfun)(int(*func)(int))); - int fun (int (*func)(int)) { int a = 1; return func(a); } - int myfun(int x) { return x - 1; } - - int main(int argc, char **argv) { - exit(fun(myfun)); - } - EOCP - - if $cc $ccflags $ldflags -o test_argsinfp test_argsinfp.c >/dev/null 2>&1 ; then - d_argsinfp='define' - echo 'Your compiler prefers arguments in function pointers in prototypes.' >&4 - else - d_argsinfp='undef' - echo "Your compiler prefers no arguments in function pointers in prototypes." >&4 - fi - $rm -f test_argsinfp* core - - : see if we have the assert macro - echo " " - echo "Let's see if I can assert() myself." >&4 - $cat >d_assert.c < - #include - - int main() - { - assert(1); - } - EOCP - - if $cc $ccflags $ldflags d_assert.c -o d_assert $libs >/dev/null 2>&1; then - val="$define" - set d_assert; eval $setvar - echo "Looks like I can." >&4 - else - val="$undef" - set d_assert; eval $setvar - echo "Nope, I need assertiveness training." >&4 - fi - $rm -f d_assert* - - : Look for GNU-cc style attribute checking - echo " " - echo "Checking whether your compiler can handle __attribute__ ..." >&4 - $cat >attrib.c <<'EOCP' - #include - void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn)); - EOCP - if $cc $optimize $ccflags -c attrib.c >attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then - echo "Your C compiler doesn't fully support __attribute__." - val="$undef" - else - echo "Your C compiler supports __attribute__." - val="$define" - fi - else - echo "Your C compiler doesn't seem to understand __attribute__ at all." - val="$undef" - fi - set d_attribut - eval $setvar - $rm -f attrib* - - : see if bcopy exists - set bcopy d_bcopy - eval $inlibc - - : define an alternate in-header-list? function - inhdr='echo " "; td=$define; tu=$undef; yyy=$@; - cont=true; xxf="echo \"<\$1> found.\" >&4"; - case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";; - *) xxnf="echo \"<\$1> NOT found, ...\" >&4";; - esac; - case $# in 4) instead=instead;; *) instead="at last";; esac; - while $test "$cont"; do - xxx=`./findhdr $1` - var=$2; eval "was=\$$2"; - if $test "$xxx" && $test -r "$xxx"; - then eval $xxf; - eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td"; - cont=""; - else eval $xxnf; - eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi; - set $yyy; shift; shift; yyy=$@; - case $# in 0) cont="";; - 2) xxf="echo \"but I found <\$1> $instead.\" >&4"; - xxnf="echo \"and I did not find <\$1> either.\" >&4";; - *) xxf="echo \"but I found <\$1\> instead.\" >&4"; - xxnf="echo \"there is no <\$1>, ...\" >&4";; - esac; - done; - while $test "$yyy"; - do set $yyy; var=$2; eval "was=\$$2"; - eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; - set $yyy; shift; shift; yyy=$@; - done' - - : see if libintl.h can be included - set libintl.h i_libintl - eval $inhdr - : check for a new-style definitions - echo " " - $cat >test_bindtextdomain.c < - #endif - int main(int argc, char **argv) { - return (int) bindtextdomain ("", ""); - } - EOCP - - if $cc $ccflags $ldflags -o test_bindtextdomain test_bindtextdomain.c $libs >/dev/null 2>&1 ; then - d_bindtextdomain='define' - echo 'Otima! You seem to have bindtextdomain for translations.' >&4 - else - d_bindtextdomain='undef' - echo "You don't seem to have bindtextdomain. Sinto muito." >&4 - fi - $rm -f test_bindtextdomain* core - - : see if this is a unistd.h system - set unistd.h i_unistd - eval $inhdr - - : see if setpgrp exists - set setpgrp d_setpgrp - eval $inlibc - - case "$d_setpgrp" in - "$define") - echo " " - echo "Checking to see which flavor of setpgrp is in use..." - $cat >set.c < - #ifdef I_UNISTD - # include - #endif - main() - { - if (getuid() == 0) { - printf("(I see you are running Configure as super-user...)\n"); - setuid(1); - } - #ifdef TRY_BSD_PGRP - if (-1 == setpgrp(1, 1)) - exit(0); - #else - if (setpgrp() != -1) - exit(0); - #endif - exit(1); - } - EOP - if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then - echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4 - val="$define" - elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then - echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4 - val="$undef" - else - echo "(I can't seem to compile and run the test program.)" - if ./usg; then - xxx="a USG one, i.e. you use setpgrp()." - else - # SVR4 systems can appear rather BSD-ish. - case "$i_unistd" in - $undef) - xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)." - val="$define" - ;; - $define) - xxx="probably a USG one, i.e. you use setpgrp()." - val="$undef" - ;; - esac - fi - echo "Assuming your setpgrp is $xxx" >&4 - fi - ;; - *) val="$undef";; - esac - set d_bsdsetpgrp - eval $setvar - $rm -f set set.c - : see if bzero exists - set bzero d_bzero - eval $inlibc - - : check for const keyword - echo " " - echo 'Checking to see if your C compiler knows about "const"...' >&4 - $cat >const.c <<'EOCP' - typedef struct spug { int drokk; } spug; - main() - { - const char *foo; - const spug y; - } - EOCP - if $cc -c $ccflags const.c >/dev/null 2>&1 ; then - val="$define" - echo "Yup, it does." - else - val="$undef" - echo "Nope, it doesn't." - fi - set d_const - eval $setvar - - : see if crypt exists - echo " " - if set crypt val -f d_crypt; eval $csym; $val; then - echo 'crypt() found.' >&4 - val="$define" - cryptlib='' - else - cryptlib=`./loc Slibcrypt.a "" $xlibpth` - if $test -z "$cryptlib"; then - cryptlib=`./loc Mlibcrypt.a "" $xlibpth` - else - cryptlib=-lcrypt - fi - if $test -z "$cryptlib"; then - cryptlib=`./loc Llibcrypt.a "" $xlibpth` - else - cryptlib=-lcrypt - fi - if $test -z "$cryptlib"; then - cryptlib=`./loc libcrypt.a "" $libpth` - else - cryptlib=-lcrypt - fi - if $test -z "$cryptlib"; then - echo 'crypt() NOT found!' >&4 - val="$undef" - else - val="$define" - fi - fi - set d_crypt - eval $setvar - : see if crypt.h can be included - set crypt.h i_crypt - eval $inhdr - - : Do nothing by default - val="$undef" - set d_force_ipv4; eval $setvar - - echo " " - : see if floatingpoint.h can be included - set floatingpoint.h i_floatingpoint - eval $inhdr - - : see if fpsetround exists - $cat >test_fpsetround.c <<'EOCP' - #$i_floatingpoint I_FLOATINGPOINT - #ifdef I_FLOATINGPOINT - #include - #endif - - int main() { - fpsetround(FP_RN); - } - EOCP - - if ($cc $ccflags $ldflags -o test_fpsetround test_fpsetround.c $libs \ - && ./test_fpsetround) >/dev/null 2>&1 ; then - echo 'fpsetround() is around (and found).' >&4 - val="$define" - else - echo 'no fpsetround(). No problem.' >&4 - val="$undef" - fi - set d_fpsetround - eval $setvar - - : see if fpsetmask exists - $cat >test_fpsetmask.c <<'EOCP' - #$i_floatingpoint I_FLOATINGPOINT - #ifdef I_FLOATINGPOINT - #include - #endif - - int main() { - fpsetmask(0L); - } - EOCP - - if ($cc $ccflags $ldflags -o test_fpsetmask test_fpsetmask.c $libs && \ - ./test_fpsetmask) >/dev/null 2>&1 ; then - echo 'fpsetmask() is up to the task.' >&4 - val="$define" - else - echo 'no fpsetmask(). No problem.' >&4 - val="$undef" - fi - set d_fpsetmask - eval $setvar - - $rm -f test_fpset* core - - : see if gai_strerror exists - set gai_strerror d_gaistr - eval $inlibc - - : see if getaddrinfo exists - set getaddrinfo d_getadinf - eval $inlibc - - : see which of string.h or strings.h is needed - echo " " - strings=`./findhdr string.h` - if $test "$strings" && $test -r "$strings"; then - echo "Using instead of ." >&4 - val="$define" - else - val="$undef" - strings=`./findhdr strings.h` - if $test "$strings" && $test -r "$strings"; then - echo "Using instead of ." >&4 - else - echo "No string header found -- You'll surely have problems." >&4 - fi - fi - set i_string - eval $setvar - case "$i_string" in - "$undef") strings=`./findhdr strings.h`;; - *) strings=`./findhdr string.h`;; - esac - - : see if getdate exists - set getdate d_getdate - eval $inlibc - - if test $d_getdate = 'define'; then - $cat >test_getdate.c < - #else - #include - #endif - #include - #ifdef __GNUC__ - /* Required to get the getdate() prototype on glibc. */ - #define __USE_XOPEN_EXTENDED - #endif - #include - int main(int argc, char **argv) { - int i; - i = getdate_err; - } - EOCP - - if $cc $ccflags $ldflags -o test_getdate test_getdate.c $libs >/dev/null 2>&1 ; then - d_getdate='define' - else - d_getdate='undef' - echo "You may have getdate, but it's broken." >&4 - fi - $rm -f test_getdate* core - - fi - - : see if gethostbyname2 exists - set gethostbyname2 d_gethbynm2 - eval $inlibc - - : see if getnameinfo exists - along with constants we use - set getnameinfo d_getnminf - eval $inlibc - - if test $d_getnminf = 'define'; then - - echo " " - $cat >test_getnminf.c < - int main(int argc, char **argv) { - int i; - i = NI_MAXHOST + NI_MAXSERV + NI_NOFQDN + NI_NUMERICHOST + NI_NAMEREQD; - i += NI_NUMERICSERV + NI_DGRAM; - } - EOCP - - if $cc $ccflags $ldflags -o test_getnminf test_getnminf.c $libs >/dev/null 2>&1 ; then - d_getnminf='define' - echo "You've got getnameinfo and the netdb constants." >&4 - else - d_getnminf='undef' - echo "You've got getnameinfo but not the NI_* constants! Broken!" >&4 - fi - $rm -f test_getnminf* core - - fi - : see if sysctl exists - set sysctl d_sysctl - eval $inlibc - : see if sysctlbyname exists - set sysctlbyname d_sysctlbyname - eval $inlibc - - : see if getpagesize exists - set getpagesize d_getpagsz - eval $inlibc - - : determine the system page size - echo " " - guess=' (OK to guess)' - case "$pagesize" in - '') - $cat >page.c < - extern int getpagesize(); - int main() - { - printf("%d\n", getpagesize()); - } - EOP - echo "Computing the granularity of memory management calls..." >&4 - dflt='4096' - case "$d_getpagsz" in - "$define") - if $cc $ccflags $ldflags page.c -o page $libs >/dev/null 2>&1; then - dflt=`./page` - guess='' - else - echo "(I can't seem to compile the test program--guessing)" - fi - ;; - *) - if $cc $ccflags $ldflags page.c -o page $libs -lPW >/dev/null 2>&1; then - dflt=`./page` - guess='' - echo "(For your eyes only: I used the getpagesize() from -lPW.)" - else - if $contains PAGESIZE `./findhdr sys/param.h` >/dev/null 2>&1; then - $cat >page.c < - #include - int main() - { - printf("%d\n", PAGESIZE); - } - EOP - if $cc $ccflags $ldflags page.c -o page $libs >/dev/null 2>&1; then - dflt=`./page` - guess='' - echo "(Using value of PAGESIZE found in .)" - else - if $test "x$d_sysctlbyname" = "x$define"; then - $cat >page.c < - #include - #include - int main() - { - int res, pgsize - size_t len; - len = sizeof(pgsize); - res = sysctlbyname("hw.pagesize",&pgsize,&len,NULL,0); - if (res < 0) - res = sysctlbyname("hw_pagesize",&pgsize,&len,NULL,0); - printf("%d\n", res ? -1 : pgsize); - } - EOP - if $cc $ccflags $ldflags page.c -o page $libs >/dev/null 2>&1; then - dflt=`./page` - if $test $dflt -gt 0; then - guess='' - echo "(Using value from sysctlbyname)" - else - dflt='4096' - fi - fi - fi - fi - fi - fi - ;; - esac - ;; - *) dflt="$pagesize"; guess='';; - esac - rp="What is the system page size, in bytes$guess?" - . ./myread - pagesize=$ans - $rm -f page.c page - - : see if getpriority exists - set getpriority d_getprior - eval $inlibc - - : see if getdtablesize exists - echo " " - case "$d_gettblsz" in - $define) d_gettblsz="$undef";; - $undef) d_gettblsz="$define";; - esac - if set getdtablesize val -f d_gettblsz; eval $csym; $val; then - echo 'getdtablesize() found.' >&4 - d_gettblsz="$undef" - tablesize='' - else - echo 'getdtablesize() NOT found...' >&4 - if set ulimit val -f; eval $csym; $val; then - echo 'Maybe ulimit(4,0) will work...' - $cat >nofile.c <<'EOCP' - #include - #ifdef GETPARAM_H - #include - #endif - main() - { - printf("%d %d\n", - #ifdef NOFILE - NOFILE, - #else - 0, - #endif - ulimit(4,0)); - exit(0); - } - EOCP - if $cc $ccflags -DGETPARAM_H nofile.c -o nofile $libs >/dev/null 2>&1 \ - || $cc $ccflags nofile.c -o nofile $libs >/dev/null 2>&1 ; then - set `./nofile` - d_gettblsz=$1 - d_ulimit4=$2 - if $test "$d_ulimit4" -lt 0; then - echo "Your ulimit() call doesn't tell me what I want to know." - echo "We'll just use NOFILE in this case." - nofile=$d_gettblsz - d_gettblsz="$define" - tablesize='NOFILE' - else - if $test "$d_gettblsz" -gt 0; then - echo "Your system defines NOFILE to be $d_gettblsz, and" >&4 - else - echo "I had trouble getting NOFILE from your system, but" >&4 - fi - echo "ulimit returns $d_ulimit4 as the number of available file descriptors." >&4 - dflt='y'; - echo " " - rp='Should I use ulimit to get the number of available file descriptors?' - . ./myread - case "$ans" in - y*) - nofile=$d_ulimit4 - d_gettblsz="$define" - tablesize='ulimit(4, 0L)' - echo "Using ulimit(4,0)." - ;; - *) - nofile=$d_gettblsz - d_gettblsz="$define" - tablesize='NOFILE' - echo "Using NOFILE." - ;; - esac - fi - else - echo "Strange, I couldn't get my test program to compile." - echo "We'll just use NOFILE in this case." - d_gettblsz="$define" - tablesize='NOFILE' - nofile='' - fi - else - echo 'Using NOFILE instead.' - d_gettblsz="$define" - tablesize='NOFILE' - nofile='' - fi - fi - $rm -f nofile* - - : check for a new-style definitions - echo " " - $cat >test_gettext.c < - #endif - int main(int argc, char **argv) { - return (int) gettext (""); - } - EOCP - - if $cc $ccflags $ldflags -o test_gettext test_gettext.c $libs >/dev/null 2>&1 ; then - d_gettext='define' - echo 'Voila! You seem to have gettext for translations.' >&4 - else - d_gettext='undef' - echo "You don't seem to have gettext. Quel dommage." >&4 - fi - $rm -f test_gettext* core - - : see if this is a values.h system - set values.h i_values - eval $inhdr - - : see if this is a limits.h system - set limits.h i_limits - eval $inhdr - - : see if we have HUGE, HUGE_VAL, MAXINT, or MAXDOUBLE - echo " " - echo "Let's try to figure out a really big double." >&4 - $cat >d_huge.c < - #include - #$i_values I_VALUES - #$i_limits I_LIMITS - #ifdef I_LIMITS - #include - #else - #ifdef I_VALUES - #include - #endif - #endif - - int main() - { - printf("%f\n",HUGE_VAL); - } - EOCP - if $cc $ccflags $ldflags d_huge.c -o d_huge $libs >/dev/null 2>&1; then - val="$define" - set d_huge_val; eval $setvar - val="$undef" - set d_huge; eval $setvar - set d_maxdouble; eval $setvar - echo "Great. Your system defines HUGE_VAL." >&4 - else - val="$undef" - set d_huge_val; eval $setvar - echo "Your system doesn't have HUGE_VAL. Maybe HUGE?" >&4 - $cat >d_huge.c < - #include - #$i_values I_VALUES - #$i_limits I_LIMITS - #ifdef I_LIMITS - #include - #else - #ifdef I_VALUES - #include - #endif - #endif - int main() - { - printf("%f\n",HUGE); - } - EOCP - - if $cc $ccflags $ldflags d_huge.c -o d_huge $libs >/dev/null 2>&1; then - val="$define" - set d_huge; eval $setvar - val="$undef" - set d_maxdouble; eval $setvar - echo "Good. Your system defines HUGE." >&4 - else - val="$undef" - set d_huge; eval $setvar - echo "Hmm. Your system doesn't define HUGE. MAX_DOUBLE?" >&4 - $cat >d_huge.c < - #include - #$i_limits I_LIMITS - #ifdef I_LIMITS - #include - #else - #$i_values I_VALUES - #ifdef I_VALUES - #include - #endif - #endif - int main() - { - printf("%f\n",MAX_DOUBLE); - } - EOCP - - if $cc $ccflags $ldflags d_huge.c -o d_huge $libs >/dev/null 2>&1; then - val="$define" - echo "Ok, you've got MAXDOUBLE." >&4 - else - val="$undef" - echo "Nope, no MAXDOUBLE either. We'll guess one." >&4 - fi - set d_maxdouble; eval $setvar - fi - fi - - - echo " " - echo "Let's try to figure out a really big int, too." >&4 - $cat >d_huge.c < - #include - #$i_limits I_LIMITS - #ifdef I_LIMITS - #include - #else - #$i_values I_VALUES - #ifdef I_VALUES - #include - #endif - #endif - int main() - { - printf("%d\n",INT_MAX); - } - EOCP - - if $cc $ccflags $ldflags d_huge.c -o d_huge $libs >/dev/null 2>&1; then - val="$define" - set d_int_max; eval $setvar - val="$undef" - set d_maxint; eval $setvar - echo "Ok, you've got INT_MAX." >&4 - else - val="$undef" - echo "No INT_MAX. Maybe MAXINT?" >&4 - set d_int_max; eval $setvar - $cat >d_huge.c < - #include - #$i_limits I_LIMITS - #ifdef I_LIMITS - #include - #else - #$i_values I_VALUES - #ifdef I_VALUES - #include - #endif - #endif - int main() - { - printf("%d\n",MAXINT); - } - EOCP - if $cc $ccflags $ldflags d_huge.c -o d_huge $libs >/dev/null 2>&1; then - val="$define" - echo "Ok, you've got MAXINT." >&4 - set d_maxint; eval $setvar - else - val="$undef" - echo "No MAXINT. I give up. I'll take a guess." >&4 - set d_maxint; eval $setvar - fi - fi - - $rm -f d_huge* - - : check for a safe ieee - echo " " - echo "Let's see if your math functions handle errors nicely..." >&4 - $cat >test_ieee.c <<'EOCP' - #include - #include - - int main() { - double x; - x = pow(-1,.5); - x = pow(10000,10000); - printf("define\n"); - exit(0); - } - EOCP - - if $cc $ccflags $ldflags -o test_ieee test_ieee.c -lm >/dev/null 2>&1 ; then - d_ieee=`./test_ieee` - if test $d_ieee = define ; then - echo "Great! They can." >&4 - else - echo "Nope, they crash and burn." >&4 - d_ieee='undef' - fi - else - $cat </dev/null 2>&1 ; then - val="$define" - vali="$define" - echo "strchr() and index() found." >&4 - else - val="$undef" - vali="$define" - echo "index() found." >&4 - fi - else - val="$undef" - vali="$define" - echo "index() found." >&4 - fi - else - if set strchr val -f d_strchr; eval $csym; $val; then - val="$define" - vali="$undef" - echo "strchr() found." >&4 - else - echo "No index() or strchr() found!" >&4 - val="$undef" - vali="$undef" - fi - fi - set d_strchr; eval $setvar - val="$vali" - set d_index; eval $setvar - - : check for internet mailer - dflt=y - case "$d_internet" in - "$undef") dflt=n;; - esac - cat <d_ipv6.c < - #endif - #ifdef I_SYS_SOCK - #include - #endif - #ifdef I_NETINET_IN - #include - #else - #ifdef I_SYS_IN - #include - #endif - #endif - #include - main() - { - struct sockaddr_in6 test; - int foo = AF_INET6; - printf("%d\n", foo); - } - EOCP - if $cc $ccflags $ldflags d_ipv6.c -o d_ipv6 $libs >/dev/null 2>&1; then - val="$define" - set d_ipv6; eval $setvar - echo "IPv6 structures found." >&4 - else - val="$undef" - set d_ipv6; eval $setvar - echo "No IPv6 structures found. No problem." >&4 - fi - : see if setitimer exists - set setitimer d_itimer - eval $inlibc - - socketlib='' - sockethdr='' - : see whether socket exists - echo " " - $echo $n "Hmm... $c" >&4 - if set socket val -f d_socket; eval $csym; $val; then - echo "Looks like you have Berkeley networking support." >&4 - d_socket="$define" - if set setsockopt val -f; eval $csym; $val; then - d_oldsock="$undef" - else - echo "...but it uses the old 4.1c interface, rather than 4.2" >&4 - d_oldsock="$define" - fi - else - if $contains socklib libc.list >/dev/null 2>&1; then - echo "Looks like you have Berkeley networking support." >&4 - d_socket="$define" - : we will have to assume that it supports the 4.2 BSD interface - d_oldsock="$undef" - else - echo "You don't have Berkeley networking in libc$_a..." >&4 - if test -f /usr/lib/libnet$_a; then - ( (nm $nm_opt /usr/lib/libnet$_a | eval $nm_extract) || \ - ar t /usr/lib/libnet$_a) 2>/dev/null >> libc.list - if $contains socket libc.list >/dev/null 2>&1; then - echo "...but the Wollongong group seems to have hacked it in." >&4 - socketlib="-lnet" - sockethdr="-I/usr/netinclude" - d_socket="$define" - if $contains setsockopt libc.list >/dev/null 2>&1; then - d_oldsock="$undef" - else - echo "...using the old 4.1c interface, rather than 4.2" >&4 - d_oldsock="$define" - fi - else - echo "or even in libnet$_a, which is peculiar." >&4 - d_socket="$undef" - d_oldsock="$undef" - fi - else - echo "or anywhere else I see." >&4 - d_socket="$undef" - d_oldsock="$undef" - fi - fi - fi - - : see if socketpair exists - set socketpair d_sockpair - eval $inlibc - - : see if this is a netinet/tcp.h system - set netinet/tcp.h i_nitcp - eval $inhdr - - : see if setsockopt with SO_KEEPALIVE works as advertised - echo " " - case "$d_oldsock" in - "$undef") - echo "OK, let's see if SO_KEEPALIVE works as advertised..." >&4 - $cat > socket.c < - #include - #include - #$i_nitcp I_NETINET_TCP - #ifdef I_NETINET_TCP - #include - #endif - #include - - main() - { - int s = socket(AF_INET, SOCK_STREAM, 0); - int val = 1; - if (s == -1) - exit(1); - if (-1 == setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &val, sizeof(val))) - exit(2); - #ifdef I_NETINET_TCP - #ifdef TCP_KEEPIDLE - val = 1; - if (-1 == setsockopt(s, IPPROTO_TCP, TCP_KEEPIDLE, &val, sizeof(val))) - exit(3); - #else - exit(3); - #endif - #endif - exit(0); - } - EOP - if $cc $ccflags $sockethdr socket.c -o socket $libs \ - $socketlib >/dev/null 2>&1; then - ./socket >/dev/null 2>&1 - case $? in - 0) echo "Yes, it does!" - val="$define" - val2="$i_nitcp" - ;; - 1) $cat <&4 - val="$define" - else - echo 'sigaction NOT found.' >&4 - val="$undef" - fi - $cat > set.c <<'EOP' - #include - #include - #include - main() - { - struct sigaction act, oact; - } - EOP - if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then - : - else - echo "But you don't seem to have a useable struct sigaction." >&4 - val="$undef" - fi - set d_sigaction; eval $setvar - $rm -f set set$_o set.c - - : see if signals are kept - val="$undef" - echo " " - echo "Checking to see if signal handlers stick around..." >&4 - if test ${d_sigaction} = "$define"; then - echo "You've got sigaction, so we can force 'em to." >&4 - val="$define" - else - $cat >try.c <<'EOCP' - foo() {} - - int main() - { - signal(2, foo); - kill(getpid(), 2); - kill(getpid(), 2); - printf("abc\n"); - } - EOCP - if $cc -o try $ccflags $ldflags try.c >/dev/null 2>&1; then - sh -c ./try >try.out 2>/dev/null - if $contains abc try.out >/dev/null 2>&1; then - echo "Yes, they do." - val="$define"; - else - echo "No, they don't." - fi - else - $echo $n "(I can't seem to compile the test program. Assuming $c" - if ./bsd; then - echo "they do.)" - val="$define" - else - echo "they don't.)" - fi - fi - fi - set d_keepsig - eval $setvar - $rm -f try* - - : random, lrand48, or rand - set random d_random - eval $inlibc - set lrand48 d_lrand48 - eval $inlibc - set rand d_rand - eval $inlibc - - : see if memcpy exists - set memcpy d_memcpy - eval $inlibc - set memmove d_memmove - eval $inlibc - - : see if memset exists - set memset d_memset - eval $inlibc - - : see if we should include -lmysqlclient - echo " " - - d_mysql="$undef" - - if $test "x$no_mysql" = "x"; then - - libmysqlclient="-lmysqlclient" - - $cat > test_mysql.c < - #include - #include - #include - - int main(int argc, char **argv) { - printf("Your mysql is version %s\n",mysql_get_client_info()); - exit(0); - } - EOM - - if $cc $ccflags $ldflags -o test_mysql test_mysql.c $libs $libmysqlclient >/dev/null 2>&1 ; - then - echo 'You have mysql...' >&4 - version=`./test_mysql` - if $test $? -eq 0; then - echo "$version" >&4 - d_mysql="$define" - else - echo "...but my test program didn't run correctly." >&4 - libmysqlclient='' - fi - else - echo "You don't seem to have mysql." >&4 - libmysqlclient='' - fi - $rm -f test_mysql* core - - else - - echo "Skipping mysql tests." >&4 - libmysqlclient='' - - fi - - : check for a new-style definitions - echo " " - $cat >test_newstyle.c <<'EOCP' - #include - int main(int argc, char **argv) { - exit(0); - } - EOCP - - if $cc $ccflags $ldflags -o test_newstyle test_newstyle.c >/dev/null 2>&1 ; then - d_newstyle='define' - echo 'Your compiler accepts new-style function definitions.' >&4 - else - d_newstyle='undef' - echo "Your compiler DOESN'T accept new-style function definitions." >&4 - fi - $rm -f test_newstyle* core - - : Locate the flags for 'open()' - echo " " - $cat >open3.c <<'EOCP' - #include - #ifdef I_FCNTL - #include - #endif - #ifdef I_SYS_FILE - #include - #endif - int main() { - if(O_RDONLY); - #ifdef O_TRUNC - exit(0); - #else - exit(1); - #endif - } - EOCP - : check sys/file.h first to get FREAD on Sun - if $test "`./findhdr sys/file.h`" && \ - $cc $ccflags $ldflags "-DI_SYS_FILE" open3.c -o open3 $libs >/dev/null 2>&1 ; then - h_sysfile=true; - echo " defines the O_* constants..." >&4 - if ./open3; then - echo "and you have the 3 argument form of open()." >&4 - val="$define" - else - echo "but not the 3 argument form of open(). Oh, well." >&4 - val="$undef" - fi - elif $test "`./findhdr fcntl.h`" && \ - $cc $ccflags $ldflags "-DI_FCNTL" open3.c -o open3 $libs >/dev/null 2>&1 ; then - h_fcntl=true; - echo " defines the O_* constants..." >&4 - if ./open3; then - echo "and you have the 3 argument fo