This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: [ID 20020205.007] BSDi test failure perl 5.6.1
[perl5.git] / Configure
CommitLineData
2304df62
AD
1#! /bin/sh
2#
3# If these # comments don't work, trim them. Don't worry about any other
4# shell scripts, Configure will trim # comments from them for you.
5#
6# (If you are trying to port this package to a machine without sh,
7# I would suggest you have a look at the prototypical config_h.SH file
8# and edit it to reflect your system. Some packages may include samples
9# of config.h for certain machines, so you might look for one of those.)
10#
11# Yes, you may rip this off to use in other distribution packages. This
12# script belongs to the public domain and cannot be copyrighted.
13#
14# (Note: this Configure script was generated automatically. Rather than
15# working with this copy of Configure, you may wish to get metaconfig.
16# The dist-3.0 package (which contains metaconfig) was posted in
dfe9444c
AD
17# comp.sources.misc and is available on CPAN under authors/id/RAM so
18# you may fetch it yourself from your nearest archive site.)
2304df62
AD
19#
20
dfe9444c 21# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
2304df62 22#
306a8474 23# Generated on Fri Feb 8 17:01:30 EET 2002 [metaconfig 3.0 PL70]
7f2de2d2 24# (with additional metaconfig patches by perlbug@perl.org)
2304df62 25
283fdd21 26cat >c1$$ <<EOF
2304df62
AD
27ARGGGHHHH!!!!!
28
29SCO csh still thinks true is false. Write to SCO today and tell them that next
30year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35[End of diatribe. We now return you to your regularly scheduled programming...]
36EOF
283fdd21 37cat >c2$$ <<EOF
2304df62
AD
38
39OOPS! You naughty creature! You didn't run Configure with sh!
40I will attempt to remedy the situation by running sh for you...
41EOF
42
283fdd21 43true || cat c1$$ c2$$
2304df62
AD
44true || exec sh $0 $argv:q
45
283fdd21 46(exit $?0) || cat c2$$
2304df62 47(exit $?0) || exec sh $0 $argv:q
283fdd21 48rm -f c1$$ c2$$
2304df62 49
a0d0e21e
LW
50: compute my invocation name
51me=$0
52case "$0" in
53*/*)
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55 test "$me" || me=$0
56 ;;
57esac
58
dfe9444c 59: Proper separator for the PATH environment variable
8e07c86e
AD
60p_=:
61: On OS/2 this directory should exist if this is not floppy only system :-]
dfe9444c
AD
62if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
64 p_=\;
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
c4f23d77 67 elif test -n "$DJGPP"; then
495e2cbe
MB
68 case "X${MACHTYPE:-nonesuchmach}" in
69 *cygwin) ;;
70 *) p_=\; ;;
71 esac
dfe9444c 72 fi
39e571d4 73fi
a0d0e21e
LW
74
75: Proper PATH setting
76paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
16d20bd9 77paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
232e078e 78paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
16d20bd9 79paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
232e078e
AD
80paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
81paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
82paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
83paths="$paths /sbin /usr/sbin /usr/libexec"
3c728e00 84paths="$paths /system/gnu_library/bin"
a0d0e21e
LW
85
86for p in $paths
87do
8e07c86e
AD
88 case "$p_$PATH$p_" in
89 *$p_$p$p_*) ;;
90 *) test -d $p && PATH=$PATH$p_$p ;;
a0d0e21e
LW
91 esac
92done
93
8e07c86e 94PATH=.$p_$PATH
2304df62
AD
95export PATH
96
dfe9444c
AD
97: shall we be using ksh?
98inksh=''
99needksh=''
100avoidksh=''
101newsh=/bin/ksh
102changesh=''
ff0cee69 103if (PATH=.; alias -x) >/dev/null 2>&1; then
dfe9444c
AD
104 inksh=true
105fi
106if test -f /hp-ux -a -f /bin/ksh; then
107 needksh='to avoid sh bug in "here document" expansion'
108fi
109if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
110 if test X`/usr/bin/uname -v` = X4; then
111 avoidksh="to avoid AIX 4's /bin/sh"
112 newsh=/usr/bin/bsh
2304df62 113 fi
dfe9444c 114fi
cf04f91f
JH
115if test -f /osf_boot -a -f /usr/sbin/setld; then
116 if test X`/usr/bin/uname -s` = XOSF1; then
117 avoidksh="to avoid Digital UNIX' ksh"
118 newsh=/bin/sh
119 unset BIN_SH # if this is 'xpg4' sh will start up ksh
120 fi
121fi
dfe9444c
AD
122case "$inksh/$needksh" in
123/[a-z]*)
c4f23d77 124 ENV=''
dfe9444c
AD
125 changesh=true
126 reason="$needksh"
127 ;;
128esac
129case "$inksh/$avoidksh" in
130true/[a-z]*)
131 changesh=true
132 reason="$avoidksh"
133 ;;
134esac
135case "$inksh/$needksh-$avoidksh-" in
136true/--)
a0d0e21e
LW
137 cat <<EOM
138(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 139mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 140EOM
dfe9444c
AD
141 ;;
142esac
143case "$changesh" in
144true)
2e2a97a6 145 export newsh
dfe9444c
AD
146 echo "(Feeding myself to $newsh $reason.)"
147 case "$0" in
148 Configure|*/Configure) exec $newsh $0 "$@";;
149 *) exec $newsh Configure "$@";;
150 esac
151 ;;
152esac
2304df62 153
bfb7748a
AD
154: if needed set CDPATH to a harmless value that is not chatty
155: avoid bash 2.02 problems with empty CDPATH.
156case "$CDPATH" in
157'') ;;
158*) case "$SHELL" in
159 *bash*) CDPATH='.' ;;
160 *) CDPATH='' ;;
161 esac
162 ;;
163esac
2304df62
AD
164: Configure runs within the UU subdirectory
165test -d UU || mkdir UU
8e07c86e 166cd UU && rm -f ./*
2304df62 167
1fef16b3 168
6b356c8e
JH
169ccname=''
170ccversion=''
b4eb6b3d
JH
171ccsymbols=''
172cppccsymbols=''
173cppsymbols=''
5440bc8e
JH
174from=''
175run=''
176targetarch=''
177to=''
178usecrosscompile=''
9c839522 179perllibs=''
b4eb6b3d
JH
180dynamic_ext=''
181extensions=''
182known_extensions=''
183nonxs_ext=''
184static_ext=''
185useopcode=''
186useposix=''
6fcddf3b 187extras=''
ecfc5424 188d_bsd=''
40a7a20a 189d_eunice=''
2304df62
AD
190d_xenix=''
191eunicefix=''
192Mcc=''
dfe9444c 193ar=''
2304df62
AD
194awk=''
195bash=''
196bison=''
197byacc=''
198cat=''
199chgrp=''
200chmod=''
201chown=''
ecfc5424 202comm=''
2304df62
AD
203compress=''
204cp=''
205cpio=''
206cpp=''
207csh=''
208date=''
209echo=''
210egrep=''
211emacs=''
212expr=''
213find=''
214flex=''
3c728e00 215gmake=''
2304df62 216grep=''
8ff267be 217gzip=''
2304df62
AD
218inews=''
219ksh=''
220less=''
221line=''
222lint=''
223ln=''
224lp=''
225lpr=''
226ls=''
227mail=''
228mailx=''
dfe9444c 229make=''
2304df62
AD
230mkdir=''
231more=''
232mv=''
693762b4 233nm=''
2304df62
AD
234nroff=''
235perl=''
236pg=''
237pmake=''
238pr=''
239rm=''
240rmail=''
241sed=''
242sendmail=''
2304df62
AD
243shar=''
244sleep=''
245smail=''
246sort=''
247submit=''
248tail=''
249tar=''
250tbl=''
693762b4 251tee=''
2304df62
AD
252test=''
253touch=''
254tr=''
255troff=''
256uname=''
257uniq=''
258uuname=''
259vi=''
260zcat=''
8ff267be 261zip=''
b4eb6b3d
JH
262full_ar=''
263full_sed=''
a0d0e21e 264libswanted=''
2304df62
AD
265hint=''
266myuname=''
85e6fe83
LW
267osname=''
268osvers=''
2304df62
AD
269Author=''
270Date=''
271Header=''
272Id=''
273Locker=''
274Log=''
275RCSfile=''
276Revision=''
277Source=''
278State=''
dfe9444c
AD
279_a=''
280_exe=''
281_o=''
4633a7c4
LW
282archobjs=''
283exe_ext=''
284firstmakefile=''
285lib_ext=''
286obj_ext=''
287path_sep=''
b4eb6b3d 288afs=''
a6d26a0d 289afsroot=''
b4eb6b3d
JH
290alignbytes=''
291ansi2knr=''
292archlib=''
293archlibexp=''
294d_archlib=''
295installarchlib=''
296archname=''
297myarchname=''
298d_atolf=''
299d_atoll=''
300baserev=''
301bin=''
302binexp=''
303installbin=''
304bincompat5005=''
305d_bincompat5005=''
306byteorder=''
2304df62 307cc=''
2304df62
AD
308ccflags=''
309cppflags=''
310ldflags=''
311lkflags=''
8e07c86e 312locincpth=''
2304df62 313optimize=''
b4eb6b3d 314cf_email=''
2304df62
AD
315cf_by=''
316cf_time=''
b4eb6b3d 317charsize=''
2304df62 318contains=''
b4eb6b3d 319cpp_stuff=''
2304df62
AD
320cpplast=''
321cppminus=''
322cpprun=''
323cppstdin=''
74cac757 324d__fwalk=''
b4eb6b3d
JH
325d_access=''
326d_accessx=''
327d_alarm=''
328d_attribut=''
329d_bcmp=''
330d_bcopy=''
331d_bzero=''
332d_casti32=''
333castflags=''
334d_castneg=''
335d_chown=''
336d_chroot=''
337d_chsize=''
758a5d79 338d_class=''
b4eb6b3d
JH
339d_closedir=''
340d_void_closedir=''
4e0554ec 341d_cmsghdr_s=''
b4eb6b3d
JH
342d_const=''
343cryptlib=''
344d_crypt=''
345d_csh=''
346full_csh=''
347d_cuserid=''
348d_dbl_dig=''
2ef53570 349d_dbminitproto=''
b4eb6b3d 350d_difftime=''
ae0e3d3b 351d_dirfd=''
b4eb6b3d 352d_dlerror=''
a0d0e21e 353d_dlopen=''
b4eb6b3d
JH
354d_dlsymun=''
355d_dosuid=''
356d_suidsafe=''
357d_drand48proto=''
358d_dup2=''
359d_eaccess=''
360d_endgrent=''
361d_endhent=''
362d_endnent=''
363d_endpent=''
364d_endpwent=''
365d_endsent=''
b363b713 366d_fchdir=''
b4eb6b3d
JH
367d_fchmod=''
368d_fchown=''
369d_fcntl=''
9d9004a9 370d_fcntl_can_lock=''
b4eb6b3d
JH
371d_fd_macros=''
372d_fd_set=''
373d_fds_bits=''
374d_fgetpos=''
758a5d79
JH
375d_finite=''
376d_finitel=''
b4eb6b3d
JH
377d_flexfnam=''
378d_flock=''
2ef53570 379d_flockproto=''
b4eb6b3d 380d_fork=''
758a5d79
JH
381d_fp_class=''
382d_fpclass=''
383d_fpclassify=''
384d_fpclassl=''
b4eb6b3d
JH
385d_fpos64_t=''
386d_frexpl=''
387d_fs_data_s=''
388d_fseeko=''
389d_fsetpos=''
390d_fstatfs=''
411ab01c 391d_fsync=''
b4eb6b3d
JH
392d_ftello=''
393d_ftime=''
394d_gettimeod=''
395d_Gconvert=''
396d_getcwd=''
397d_getespwnam=''
398d_getfsstat=''
399d_getgrent=''
400d_getgrps=''
401d_gethbyaddr=''
402d_gethbyname=''
403d_gethent=''
404aphostname=''
405d_gethname=''
406d_phostname=''
407d_uname=''
408d_gethostprotos=''
4e0554ec 409d_getitimer=''
b4eb6b3d
JH
410d_getlogin=''
411d_getmnt=''
412d_getmntent=''
413d_getnbyaddr=''
414d_getnbyname=''
415d_getnent=''
416d_getnetprotos=''
0c0643d0 417d_getpagsz=''
b4eb6b3d
JH
418d_getpent=''
419d_getpgid=''
420d_getpgrp2=''
421d_bsdgetpgrp=''
422d_getpgrp=''
423d_getppid=''
424d_getprior=''
425d_getpbyname=''
426d_getpbynumber=''
427d_getprotoprotos=''
428d_getprpwnam=''
429d_getpwent=''
430d_getsent=''
431d_getservprotos=''
432d_getspnam=''
433d_getsbyname=''
434d_getsbyport=''
a4f3eea9 435d_gnulibc=''
b4eb6b3d
JH
436d_hasmntopt=''
437d_htonl=''
b4eb6b3d
JH
438d_inetaton=''
439d_int64_t=''
440d_isascii=''
758a5d79
JH
441d_isfinite=''
442d_isinf=''
b4eb6b3d
JH
443d_isnan=''
444d_isnanl=''
445d_killpg=''
446d_lchown=''
447d_ldbl_dig=''
448d_link=''
449d_locconv=''
450d_lockf=''
451d_longdbl=''
452longdblsize=''
453d_longlong=''
454longlongsize=''
455d_lseekproto=''
456d_lstat=''
457d_madvise=''
458d_mblen=''
459d_mbstowcs=''
460d_mbtowc=''
461d_memchr=''
462d_memcmp=''
463d_memcpy=''
464d_memmove=''
465d_memset=''
466d_mkdir=''
467d_mkdtemp=''
468d_mkfifo=''
469d_mkstemp=''
470d_mkstemps=''
471d_mktime=''
472d_mmap=''
473mmaptype=''
474d_modfl=''
e67aeab1 475d_modfl_pow32_bug=''
b4eb6b3d
JH
476d_mprotect=''
477d_msg=''
478d_msgctl=''
479d_msgget=''
4e0554ec 480d_msghdr_s=''
b4eb6b3d
JH
481d_msgrcv=''
482d_msgsnd=''
483d_msync=''
484d_munmap=''
485d_nice=''
2765b840 486d_nl_langinfo=''
b4eb6b3d
JH
487d_off64_t=''
488d_open3=''
489d_fpathconf=''
490d_pathconf=''
491d_pause=''
492d_pipe=''
493d_poll=''
2304df62 494d_portable=''
a33c94aa 495d_procselfexe=''
f24dbf84 496procselfexe=''
b4eb6b3d
JH
497d_old_pthread_create_joinable=''
498old_pthread_create_joinable=''
d6483fcc 499d_pthread_atfork=''
b4eb6b3d
JH
500d_pthread_yield=''
501d_sched_yield=''
502sched_yield=''
503d_qgcvt=''
504d_readdir=''
505d_rewinddir=''
506d_seekdir=''
507d_telldir=''
508d_readlink=''
4e0554ec
JH
509d_readv=''
510d_recvmsg=''
b4eb6b3d
JH
511d_rename=''
512d_rmdir=''
513d_safebcpy=''
514d_safemcpy=''
515d_sanemcmp=''
ef9f17be 516d_sbrkproto=''
b4eb6b3d
JH
517d_select=''
518d_sem=''
519d_semctl=''
520d_semget=''
521d_semop=''
4e0554ec 522d_sendmsg=''
b4eb6b3d
JH
523d_setegid=''
524d_seteuid=''
525d_setgrent=''
526d_setgrps=''
527d_sethent=''
4e0554ec 528d_setitimer=''
b4eb6b3d
JH
529d_setlinebuf=''
530d_setlocale=''
531d_setnent=''
532d_setpent=''
533d_setpgid=''
534d_setpgrp2=''
535d_bsdsetpgrp=''
536d_setpgrp=''
537d_setprior=''
538d_setproctitle=''
539d_setpwent=''
540d_setregid=''
541d_setresgid=''
542d_setresuid=''
543d_setreuid=''
544d_setrgid=''
545d_setruid=''
546d_setsent=''
547d_setsid=''
548d_setvbuf=''
549d_sfio=''
550usesfio=''
551d_shm=''
552d_shmat=''
553d_shmatprototype=''
554shmattype=''
555d_shmctl=''
556d_shmdt=''
557d_shmget=''
558d_sigaction=''
983dbef6 559d_sigprocmask=''
b4eb6b3d 560d_sigsetjmp=''
49a78c82 561d_sockatmark=''
2ef53570 562d_sockatmarkproto=''
b4eb6b3d
JH
563d_msg_ctrunc=''
564d_msg_dontroute=''
565d_msg_oob=''
566d_msg_peek=''
567d_msg_proxy=''
568d_oldsock=''
569d_scm_rights=''
570d_socket=''
571d_sockpair=''
572sockethdr=''
573socketlib=''
574d_socklen_t=''
575d_socks5_init=''
576d_sqrtl=''
eef837ea 577d_sresgproto=''
640374d0 578d_sresuproto=''
b4eb6b3d
JH
579d_statblks=''
580d_statfs_f_flags=''
581d_statfs_s=''
582d_fstatvfs=''
583d_statvfs=''
584d_stdio_cnt_lval=''
585d_stdio_ptr_lval=''
a7ffa9b9
NC
586d_stdio_ptr_lval_nochange_cnt=''
587d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
588d_stdiobase=''
589d_stdstdio=''
590stdio_base=''
591stdio_bufsiz=''
592stdio_cnt=''
593stdio_filbuf=''
594stdio_ptr=''
595d_index=''
596d_strchr=''
597d_strcoll=''
598d_strctcpy=''
599d_strerrm=''
600d_strerror=''
601d_sysernlst=''
602d_syserrlst=''
b3c85772 603d_strftime=''
b4eb6b3d
JH
604d_strtod=''
605d_strtol=''
606d_strtold=''
607d_strtoll=''
28e5dec8 608d_strtoq=''
b4eb6b3d
JH
609d_strtoul=''
610d_strtoull=''
611d_strtouq=''
612d_strxfrm=''
613d_symlink=''
614d_syscall=''
2ef53570 615d_syscallproto=''
b4eb6b3d
JH
616d_sysconf=''
617d_system=''
618d_tcgetpgrp=''
619d_tcsetpgrp=''
620d_telldirproto=''
621d_time=''
622timetype=''
623clocktype=''
624d_times=''
625d_truncate=''
626d_tzname=''
4e0554ec
JH
627d_u32align=''
628d_ualarm=''
b4eb6b3d
JH
629d_umask=''
630d_semctl_semid_ds=''
631d_semctl_semun=''
632d_union_semun=''
758a5d79 633d_unordered=''
4e0554ec 634d_usleep=''
2ef53570 635d_usleepproto=''
b4eb6b3d
JH
636d_ustat=''
637d_vfork=''
638usevfork=''
639d_voidsig=''
640signal_t=''
641d_volatile=''
642d_charvspr=''
643d_vprintf=''
644d_wait4=''
645d_waitpid=''
646d_wcstombs=''
647d_wctomb=''
4e0554ec 648d_writev=''
b4eb6b3d 649dlext=''
85e6fe83
LW
650cccdlflags=''
651ccdlflags=''
2304df62 652dlsrc=''
232e078e 653ld=''
85e6fe83 654lddlflags=''
2304df62 655usedl=''
b4eb6b3d
JH
656doublesize=''
657ebcdic=''
658fflushNULL=''
659fflushall=''
660fpossize=''
661fpostype=''
5b463ca7 662gccosandvers=''
8a27cf78 663gccversion=''
b4eb6b3d
JH
664gidformat=''
665gidsign=''
666gidsize=''
667gidtype=''
668groupstype=''
669h_fcntl=''
670h_sysfile=''
671i_arpainet=''
672db_hashtype=''
673db_prefixtype=''
640374d0
JH
674db_version_major=''
675db_version_minor=''
676db_version_patch=''
b4eb6b3d
JH
677i_db=''
678i_dbm=''
679i_rpcsvcdbm=''
680d_dirnamlen=''
681direntrytype=''
682i_dirent=''
a0d0e21e 683i_dld=''
b4eb6b3d
JH
684i_dlfcn=''
685i_fcntl=''
686i_float=''
758a5d79
JH
687i_fp=''
688i_fp_class=''
b4eb6b3d
JH
689i_gdbm=''
690d_grpasswd=''
691i_grp=''
b4eb6b3d
JH
692i_ieeefp=''
693i_inttypes=''
2765b840 694i_langinfo=''
b4eb6b3d
JH
695i_libutil=''
696i_limits=''
697i_locale=''
698i_machcthr=''
699i_malloc=''
700i_math=''
701i_memory=''
702i_mntent=''
703i_ndbm=''
704i_netdb=''
705i_neterrno=''
706i_netinettcp=''
707i_niin=''
708i_sysin=''
709i_poll=''
710i_prot=''
711i_pthread=''
712d_pwage=''
713d_pwchange=''
714d_pwclass=''
715d_pwcomment=''
716d_pwexpire=''
717d_pwgecos=''
718d_pwpasswd=''
719d_pwquota=''
720i_pwd=''
721i_sfio=''
722i_shadow=''
723i_socks=''
724i_stddef=''
725i_stdlib=''
726i_string=''
727strings=''
728i_sunmath=''
729i_sysaccess=''
730i_sysdir=''
731i_sysfile=''
732d_voidtty=''
733i_bsdioctl=''
734i_sysfilio=''
735i_sysioctl=''
736i_syssockio=''
737i_syslog=''
738i_sysmman=''
739i_sysmode=''
740i_sysmount=''
741i_sysndir=''
742i_sysparam=''
743i_sysresrc=''
744i_syssecrt=''
745i_sysselct=''
746i_sysstat=''
747i_sysstatfs=''
748i_sysstatvfs=''
749i_systimes=''
750i_systypes=''
751i_sysuio=''
752i_sysun=''
753i_sysutsname=''
754i_sysvfs=''
755i_syswait=''
756i_sgtty=''
757i_termio=''
758i_termios=''
759i_systime=''
760i_systimek=''
761i_time=''
762timeincl=''
763i_unistd=''
764i_ustat=''
765i_utime=''
766i_values=''
767i_stdarg=''
768i_varargs=''
769i_varhdr=''
770i_vfork=''
771inc_version_list=''
772inc_version_list_init=''
773installprefix=''
774installprefixexp=''
775installstyle=''
776installusrbinperl=''
777intsize=''
778longsize=''
779shortsize=''
4b661809 780issymlink=''
2304df62 781libc=''
b4eb6b3d
JH
782ldlibpthname=''
783libperl=''
784shrpenv=''
785useshrplib=''
a0d0e21e 786glibpth=''
2304df62 787libpth=''
8e07c86e 788loclibpth=''
2304df62
AD
789plibpth=''
790xlibpth=''
1cfa4ec7 791ignore_versioned_solibs=''
2304df62 792libs=''
43999f95
JH
793libsdirs=''
794libsfiles=''
795libsfound=''
13b3f787 796libspath=''
85e6fe83 797lns=''
b4eb6b3d
JH
798d_PRIEUldbl=''
799d_PRIFUldbl=''
800d_PRIGUldbl=''
801d_PRIeldbl=''
802d_PRIfldbl=''
803d_PRIgldbl=''
804d_SCNfldbl=''
805sPRIEUldbl=''
806sPRIFUldbl=''
807sPRIGUldbl=''
808sPRIeldbl=''
809sPRIfldbl=''
810sPRIgldbl=''
811sSCNfldbl=''
812lseeksize=''
813lseektype=''
8ff267be 814make_set_make=''
b4eb6b3d
JH
815d_mymalloc=''
816freetype=''
817mallocobj=''
818mallocsrc=''
819malloctype=''
820usemymalloc=''
821installman1dir=''
822man1dir=''
823man1direxp=''
824man1ext=''
825installman3dir=''
826man3dir=''
827man3direxp=''
828man3ext=''
829modetype=''
830multiarch=''
831mydomain=''
832myhostname=''
833phostname=''
2304df62
AD
834c=''
835n=''
b4eb6b3d
JH
836d_eofnblk=''
837eagain=''
838o_nonblock=''
839rd_nodata=''
2cc61e15 840need_va_copy=''
b4eb6b3d
JH
841netdb_hlen_type=''
842netdb_host_type=''
843netdb_name_type=''
844netdb_net_type=''
845groupcat=''
846hostcat=''
847passcat=''
848orderlib=''
849ranlib=''
850d_perl_otherlibdirs=''
851otherlibdirs=''
2304df62
AD
852package=''
853spackage=''
b4eb6b3d
JH
854pager=''
855api_revision=''
856api_subversion=''
857api_version=''
858api_versionstring=''
859patchlevel=''
151e6568 860perl_patchlevel=''
b4eb6b3d
JH
861revision=''
862subversion=''
863version=''
861eb78d 864version_patchlevel_string=''
b4eb6b3d
JH
865perl5=''
866perladmin=''
867perlpath=''
868d_nv_preserves_uv=''
869d_nv_preserves_uv_bits=''
870i16size=''
871i16type=''
872i32size=''
873i32type=''
874i64size=''
875i64type=''
876i8size=''
877i8type=''
878ivsize=''
879ivtype=''
880nvsize=''
881nvtype=''
882u16size=''
883u16type=''
884u32size=''
885u32type=''
886u64size=''
887u64type=''
888u8size=''
889u8type=''
890uvsize=''
891uvtype=''
892ivdformat=''
893nvEUformat=''
894nvFUformat=''
895nvGUformat=''
896nveformat=''
897nvfformat=''
898nvgformat=''
899uvXUformat=''
900uvoformat=''
901uvuformat=''
902uvxformat=''
903pidtype=''
904prefix=''
905prefixexp=''
906installprivlib=''
907privlib=''
908privlibexp=''
909prototype=''
910ptrsize=''
911d_PRIXU64=''
912d_PRId64=''
913d_PRIi64=''
914d_PRIo64=''
915d_PRIu64=''
916d_PRIx64=''
917sPRIXU64=''
918sPRId64=''
919sPRIi64=''
920sPRIo64=''
921sPRIu64=''
922sPRIx64=''
923d_quad=''
924quadkind=''
925quadtype=''
926uquadtype=''
927drand01=''
928randbits=''
929randfunc=''
930randseedtype=''
931seedfunc=''
932installscript=''
933scriptdir=''
934scriptdirexp=''
935selectminbits=''
936selecttype=''
8ff267be 937sh=''
b4eb6b3d
JH
938sig_count=''
939sig_name=''
940sig_name_init=''
941sig_num=''
942sig_num_init=''
76d3c696 943sig_size=''
b4eb6b3d
JH
944installsitearch=''
945sitearch=''
946sitearchexp=''
947installsitebin=''
948sitebin=''
949sitebinexp=''
950installsitelib=''
951sitelib=''
952sitelib_stem=''
953sitelibexp=''
954siteprefix=''
955siteprefixexp=''
956sizesize=''
957sizetype=''
a0d0e21e 958so=''
b4eb6b3d 959socksizetype=''
2304df62
AD
960sharpbang=''
961shsharp=''
962spitshell=''
dfe9444c 963src=''
b4eb6b3d
JH
964ssizetype=''
965startperl=''
2304df62 966startsh=''
b4eb6b3d
JH
967stdchar=''
968d_stdio_stream_array=''
969stdio_stream_array=''
970sysman=''
5ff3f7a4 971trnl=''
b4eb6b3d
JH
972uidformat=''
973uidsign=''
974uidsize=''
975uidtype=''
976archname64=''
977use64bitall=''
978use64bitint=''
979ccflags_uselargefiles=''
980ldflags_uselargefiles=''
981libswanted_uselargefiles=''
982uselargefiles=''
983uselongdouble=''
984usemorebits=''
985usemultiplicity=''
2304df62 986nm_opt=''
40a7a20a 987nm_so_opt=''
2304df62
AD
988runnm=''
989usenm=''
b4eb6b3d 990useperlio=''
29209bc5 991usesocks=''
b4eb6b3d
JH
992d_oldpthreads=''
993use5005threads=''
994useithreads=''
9514c62b 995usereentrant=''
b4eb6b3d 996usethreads=''
2304df62 997incpath=''
2304df62
AD
998mips_type=''
999usrinc=''
b4eb6b3d
JH
1000d_vendorarch=''
1001installvendorarch=''
1002vendorarch=''
1003vendorarchexp=''
1004d_vendorbin=''
1005installvendorbin=''
1006vendorbin=''
1007vendorbinexp=''
1008d_vendorlib=''
1009installvendorlib=''
1010vendorlib=''
1011vendorlib_stem=''
1012vendorlibexp=''
1013usevendorprefix=''
1014vendorprefix=''
1015vendorprefixexp=''
d56c5707 1016versiononly=''
b4eb6b3d
JH
1017defvoidused=''
1018voidflags=''
1019pm_apiversion=''
1020xs_apiversion=''
3659ebf1
JH
1021yacc=''
1022yaccflags=''
2304df62
AD
1023CONFIG=''
1024
ecfc5424
AD
1025define='define'
1026undef='undef'
1027smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1028rmlist=''
1029
1030: We must find out about Eunice early
1031eunicefix=':'
1032if test -f /etc/unixtovms; then
1033 eunicefix=/etc/unixtovms
1034fi
1035if test -f /etc/unixtovms.exe; then
1036 eunicefix=/etc/unixtovms.exe
1037fi
1038
cfb04860
JH
1039: Set executable suffix now -- needed before hints available
1040: maybe Stratus VOS
868439a2 1041if test -f "/system/gnu_library/bin/ar.pm"; then
cfb04860
JH
1042 _exe=".pm"
1043fi
1044: maybe dos djgpp
1045if test -n "$DJGPP"; then
1046 _exe=".exe"
868439a2
JH
1047fi
1048
b4eb6b3d 1049i_whoami=''
a33c94aa
JH
1050ccname=''
1051ccversion=''
1052perllibs=''
1053: set useposix=false in your hint file to disable the POSIX extension.
1054useposix=true
1055: set useopcode=false in your hint file to disable the Opcode extension.
1056useopcode=true
1057: Trailing extension. Override this in a hint file, if needed.
a33c94aa
JH
1058: Extra object files, if any, needed on this platform.
1059archobjs=''
1060archname=''
ff935051
JH
1061: Possible local include directories to search.
1062: Set locincpth to "" in a hint file to defeat local include searches.
1063locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1064locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1065:
1066: no include file wanted by default
1067inclwanted=''
1068
b4eb6b3d 1069groupstype=''
64615a5e 1070libnames=''
732c9516
JH
1071: change the next line if compiling for Xenix/286 on Xenix/386
1072xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1073: Possible local library directories to search.
1074loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1075loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1076
1077: general looking path for locating libraries
5869b1f1 1078glibpth="/lib /usr/lib $xlibpth"
732c9516 1079glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1080test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1081test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1082
1083: Private path used by Configure to find libraries. Its value
1084: is prepended to libpth. This variable takes care of special
1085: machines, like the mips. Usually, it should be empty.
1086plibpth=''
1087
1cfa4ec7
GS
1088: default library list
1089libswanted=''
921b2963 1090: some systems want to use only the non-versioned libso:s
1cfa4ec7 1091ignore_versioned_solibs=''
b4eb6b3d
JH
1092archname64=''
1093ccflags_uselargefiles=''
1094ldflags_uselargefiles=''
1095libswanted_uselargefiles=''
1096: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1097: set usesocks on the Configure command line to enable socks.
b4eb6b3d 1098: set usethreads on the Configure command line to enable threads.
cd040c5e 1099usereentrant='undef'
a33c94aa
JH
1100: full support for void wanted by default
1101defvoidused=15
1102
ecfc5424 1103: List of libraries we want.
693762b4 1104: If anyone needs -lnet, put it in a hint file.
997d70a2 1105libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1106libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1107libswanted="$libswanted ndir dir crypt sec"
e61ecf27 1108libswanted="$libswanted ucb bsd BSD PW x util"
1aef975c 1109: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1110: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1111glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1112glibpth="/usr/shlib $glibpth"
1113: Do not use vfork unless overridden by a hint file.
1114usevfork=false
1115
8ff267be 1116: Find the basic shell for Bourne shell scripts
1117case "$sh" in
1118'')
8ff267be 1119 case "$SYSTYPE" in
1120 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1121 *) xxx='/bin/sh';;
1122 esac
1123 if test -f "$xxx"; then
1124 sh="$xxx"
1125 else
1126 : Build up a list and do a single loop so we can 'break' out.
1127 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1128 for xxx in sh bash ksh pdksh ash; do
1129 for p in $pth; do
1130 try="$try ${p}/${xxx}"
1131 done
1132 done
1133 for xxx in $try; do
1134 if test -f "$xxx"; then
1135 sh="$xxx";
8ff267be 1136 break
a5a94ea5
JH
1137 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1138 sh="$xxx";
1139 break
8ff267be 1140 elif test -f "$xxx.exe"; then
1141 sh="$xxx";
8ff267be 1142 break
1143 fi
1144 done
1145 fi
1146 ;;
1147esac
1148
1149case "$sh" in
a33c94aa 1150'') cat >&2 <<EOM
8ff267be 1151$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1152
8ff267be 1153Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1154Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1155we'll try to straighten this all out.
8ff267be 1156EOM
1157 exit 1
1158 ;;
1159esac
1160
760ac839 1161: see if sh knows # comments
73614538 1162if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1163 shsharp=true
1164 spitshell=cat
760ac839 1165 xcat=/bin/cat
a931254c
JH
1166 test -f $xcat$_exe || xcat=/usr/bin/cat
1167 if test ! -f $xcat$_exe; then
4bdb8fb5 1168 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
a931254c 1169 if test -f $p/cat$_exe; then
1deb0a86 1170 xcat=$p/cat
3c728e00
JH
1171 break
1172 fi
1173 done
1deb0a86
JH
1174 if test ! -f $xcat$_exe; then
1175 echo "Can't find cat anywhere!"
3c728e00
JH
1176 exit 1
1177 fi
1178 fi
5440bc8e
JH
1179 echo "#!$xcat" >sharp
1180 $eunicefix sharp
1181 chmod +x sharp
1182 ./sharp > today
760ac839 1183 if test -s today; then
760ac839
LW
1184 sharpbang='#!'
1185 else
5440bc8e
JH
1186 echo "#! $xcat" > sharp
1187 $eunicefix sharp
1188 chmod +x sharp
1189 ./sharp > today
760ac839 1190 if test -s today; then
760ac839
LW
1191 sharpbang='#! '
1192 else
760ac839
LW
1193 sharpbang=': use '
1194 fi
1195 fi
1196else
dfe9444c 1197 echo " "
8ff267be 1198 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1199 shsharp=false
1200 cd ..
1201 echo "exec grep -v '^[ ]*#'" >spitshell
1202 chmod +x spitshell
1203 $eunicefix spitshell
1204 spitshell=`pwd`/spitshell
1205 cd UU
1206 echo "I presume that if # doesn't work, #! won't work either!"
1207 sharpbang=': use '
1208fi
5440bc8e 1209rm -f sharp today
760ac839
LW
1210
1211: figure out how to guarantee sh startup
8ff267be 1212case "$startsh" in
1213'') startsh=${sharpbang}${sh} ;;
1214*)
760ac839 1215esac
5440bc8e 1216cat >sharp <<EOSS
760ac839
LW
1217$startsh
1218set abc
1219test "$?abc" != 1
1220EOSS
1221
5440bc8e
JH
1222chmod +x sharp
1223$eunicefix sharp
1224if ./sharp; then
8ff267be 1225 : echo "Yup, it does."
760ac839 1226else
dfe9444c
AD
1227 echo "Hmm... '$startsh' does not guarantee sh startup..."
1228 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1229fi
5440bc8e 1230rm -f sharp
760ac839 1231
aebf16e7
AD
1232
1233: Save command line options in file UU/cmdline.opt for later use in
1234: generating config.sh.
1235cat > cmdline.opt <<EOSH
1236# Configure command line arguments.
1237config_arg0='$0'
1238config_args='$*'
1239config_argc=$#
1240EOSH
1241argn=1
ee45ea83
IZ
1242args_exp=''
1243args_sep=''
aebf16e7
AD
1244for arg in "$@"; do
1245 cat >>cmdline.opt <<EOSH
1246config_arg$argn='$arg'
1247EOSH
ee45ea83
IZ
1248 # Extreme backslashitis: replace each ' by '"'"'
1249 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1250$arg
1251EOC
1252 arg_exp=`cat cmdl.opt`
1253 args_exp="$args_exp$args_sep'$arg_exp'"
aebf16e7 1254 argn=`expr $argn + 1`
ee45ea83 1255 args_sep=' '
aebf16e7 1256done
ee45ea83
IZ
1257# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1258# used by ./hints/os2.sh
1259rm -f cmdl.opt
aebf16e7 1260
2304df62
AD
1261: produce awk script to parse command line options
1262cat >options.awk <<'EOF'
1263BEGIN {
02e93a22 1264 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1265
1266 len = length(optstr);
1267 for (i = 1; i <= len; i++) {
1268 c = substr(optstr, i, 1);
1269 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1270 if (a == ":") {
1271 arg[c] = 1;
1272 i++;
1273 }
1274 opt[c] = 1;
1275 }
1276}
1277{
1278 expect = 0;
1279 str = $0;
1280 if (substr(str, 1, 1) != "-") {
1281 printf("'%s'\n", str);
1282 next;
1283 }
1284 len = length($0);
1285 for (i = 2; i <= len; i++) {
1286 c = substr(str, i, 1);
1287 if (!opt[c]) {
1288 printf("-%s\n", substr(str, i));
1289 next;
1290 }
1291 printf("-%s\n", c);
1292 if (arg[c]) {
1293 if (i < len)
1294 printf("'%s'\n", substr(str, i + 1));
1295 else
1296 expect = 1;
1297 next;
1298 }
1299 }
1300}
1301END {
1302 if (expect)
1303 print "?";
1304}
1305EOF
1306
1307: process the command line options
4633a7c4
LW
1308set X `for arg in "$@"; do echo "X$arg"; done |
1309 sed -e s/X// | awk -f options.awk`
2304df62
AD
1310eval "set $*"
1311shift
1312rm -f options.awk
1313
1314: set up default values
1315fastread=''
1316reuseval=false
1317config_sh=''
1318alldone=''
1319error=''
1320silent=''
1321extractsh=''
ecfc5424 1322override=''
16d20bd9 1323knowitall=''
02e93a22 1324rm -f optdef.sh posthint.sh
28757baa 1325cat >optdef.sh <<EOS
1326$startsh
1327EOS
2304df62 1328
dfe9444c 1329
2304df62
AD
1330: option parsing
1331while test $# -gt 0; do
1332 case "$1" in
1333 -d) shift; fastread=yes;;
1334 -e) shift; alldone=cont;;
1335 -f)
1336 shift
1337 cd ..
1338 if test -r "$1"; then
1339 config_sh="$1"
1340 else
a0d0e21e 1341 echo "$me: cannot read config file $1." >&2
2304df62
AD
1342 error=true
1343 fi
1344 cd UU
1345 shift;;
1346 -h) shift; error=true;;
1347 -r) shift; reuseval=true;;
dfe9444c 1348 -s) shift; silent=true; realsilent=true;;
2304df62 1349 -E) shift; alldone=exit;;
16d20bd9 1350 -K) shift; knowitall=true;;
ecfc5424 1351 -O) shift; override=true;;
dfe9444c 1352 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1353 -D)
1354 shift
1355 case "$1" in
1356 *=)
1357 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1358 echo "$me: ignoring -D $1" >&2
1359 ;;
ecfc5424 1360 *=*) echo "$1" | \
1aef975c
AD
1361 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1362 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1363 esac
1364 shift
1365 ;;
1366 -U)
1367 shift
1368 case "$1" in
1aef975c 1369 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1370 *=*)
1371 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1372 echo "$me: ignoring -U $1" >&2
1373 ;;
1aef975c 1374 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1375 esac
1376 shift
1377 ;;
02e93a22
JH
1378 -A)
1379 shift
1380 xxx=''
1381 yyy="$1"
02e93a22 1382 zzz=''
5f83a3e9 1383 uuu=undef
02e93a22 1384 case "$yyy" in
5f83a3e9
JH
1385 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1386 case "$zzz" in
1387 *:*) zzz='' ;;
1388 *) xxx=append
1389 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1390 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1391 esac
1392 ;;
1393 esac
1394 case "$xxx" in
1395 '') case "$yyy" in
1396 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1397 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1398 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1399 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1400 *) xxx=`echo $yyy|sed 's!:.*!!'`
1401 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1402 esac
1403 ;;
1404 esac
02e93a22
JH
1405 case "$xxx" in
1406 append)
5f83a3e9 1407 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1408 clear)
5f83a3e9 1409 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1410 define)
1411 case "$zzz" in
1412 '') zzz=define ;;
1413 esac
5f83a3e9 1414 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1415 eval)
5f83a3e9 1416 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1417 prepend)
5f83a3e9 1418 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1419 undef)
1420 case "$zzz" in
1421 '') zzz="$uuu" ;;
1422 esac
5f83a3e9
JH
1423 echo "$yyy=$zzz" >> posthint.sh ;;
1424 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1425 esac
bde6b06b 1426 shift
02e93a22 1427 ;;
dfe9444c 1428 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1429 exit 0;;
2304df62 1430 --) break;;
a0d0e21e 1431 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1432 *) break;;
1433 esac
1434done
1435
1436case "$error" in
1437true)
1438 cat >&2 <<EOM
2afac517 1439Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1440 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1441 -d : use defaults for all answers.
1442 -e : go on without questioning past the production of config.sh.
1443 -f : specify an alternate default configuration file.
1444 -h : print this help message and exit (with an error status).
1445 -r : reuse C symbols value if possible (skips costly nm extraction).
1446 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1447 -D : define symbol to have some value:
1448 -D symbol symbol gets the value 'define'
1449 -D symbol=value symbol gets the value 'value'
2304df62 1450 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1451 -K : do not use unless you know what you are doing.
ecfc5424 1452 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1453 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1454 -U : undefine symbol:
1455 -U symbol symbol gets the value 'undef'
1456 -U symbol= symbol gets completely empty
02e93a22 1457 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1458 -A symbol=value append " "value to symbol
02e93a22
JH
1459 -A append:symbol=value append value to symbol
1460 -A define:symbol=value define symbol to have value
02e93a22
JH
1461 -A clear:symbol define symbol to be ''
1462 -A define:symbol define symbol to be 'define'
1463 -A eval:symbol=value define symbol to be eval of value
1464 -A prepend:symbol=value prepend value to symbol
1465 -A undef:symbol define symbol to be 'undef'
1466 -A undef:symbol= define symbol to be ''
2304df62
AD
1467 -V : print version number and exit (with a zero status).
1468EOM
1469 exit 1
1470 ;;
1471esac
1472
dfe9444c
AD
1473: Sanity checks
1474case "$fastread$alldone" in
1475yescont|yesexit) ;;
1476*)
aaeb8e51
GS
1477 case "$extractsh" in
1478 true) ;;
1479 *)
1480 if test ! -t 0; then
1481 echo "Say 'sh Configure', not 'sh <Configure'"
1482 exit 1
1483 fi
1484 ;;
1485 esac
dfe9444c
AD
1486 ;;
1487esac
1488
2304df62
AD
1489exec 4>&1
1490case "$silent" in
1491true) exec 1>/dev/null;;
1492esac
1493
ecfc5424 1494: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1495touch optdef.sh
1496. ./optdef.sh
02e93a22
JH
1497: create the posthint manipulation script and leave the file out there...
1498touch posthint.sh
a0d0e21e 1499
2304df62 1500: set package name
85e6fe83 1501package=perl5
b4eb6b3d
JH
1502first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1503last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1504case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1505ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1506*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1507esac
2304df62 1508
2304df62
AD
1509: Some greps do not return status, grrr.
1510echo "grimblepritz" >grimble
1511if grep blurfldyick grimble >/dev/null 2>&1 ; then
1512 contains=contains
1513elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1514 contains=grep
1515else
1516 contains=contains
1517fi
1518rm -f grimble
1519: the following should work in any shell
1520case "$contains" in
1521contains*)
1522 echo " "
1523 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1524 cat >contains <<'EOSS'
1525grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1526EOSS
1527chmod +x contains
1528esac
1529
dfe9444c
AD
1530: Find the path to the source tree
1531case "$src" in
1532'') case "$0" in
b233458b
JH
1533 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1534 case "$src" in
1535 /*) ;;
8504afb7 1536 .) ;;
b233458b
JH
1537 *) src=`cd ../$src && pwd` ;;
1538 esac
1539 ;;
dfe9444c
AD
1540 *) src='.';;
1541 esac;;
1542esac
1543case "$src" in
1544'') src=/
1545 rsrc=/
1546 ;;
1547/*) rsrc="$src";;
1548*) rsrc="../$src";;
1549esac
1550if test -f $rsrc/Configure && \
1551 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1552then
1553 : found it, so we are ok.
1554else
1555 rsrc=''
1556 for src in . .. ../.. ../../.. ../../../..; do
1557 if test -f ../$src/Configure && \
1558 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1559 then
1560 rsrc=../$src
1561 break
1562 fi
1563 done
1564fi
1565case "$rsrc" in
1566'')
1567 cat <<EOM >&4
1568
1569Sorry, I can't seem to locate the source dir for $package. Please start
1570Configure with an explicit path -- i.e. /some/path/Configure.
1571
1572EOM
1573 exit 1
1574 ;;
1575../.) rsrc='..';;
1576*)
1577 echo " "
1578 echo "Sources for $package found in \"$src\"." >&4
1579 ;;
1580esac
1581
1582: script used to extract .SH files with variable substitutions
1583cat >extract <<'EOS'
a02608de 1584PERL_CONFIG_SH=true
dfe9444c 1585echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1586if test -f MANIFEST; then
1587 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1588else
1589 echo "(Looking for .SH files under the source directory.)"
6904989c 1590 set x `(cd "$src"; find . -name "*.SH" -print)`
dfe9444c
AD
1591fi
1592shift
1593case $# in
6904989c 15940) set x `(cd "$src"; echo *.SH)`; shift;;
dfe9444c 1595esac
6904989c 1596if test ! -f "$src/$1"; then
dfe9444c
AD
1597 shift
1598fi
1599mkdir_p='
1600name=$1;
1601create="";
1602while test $name; do
1603 if test ! -d "$name"; then
1604 create="$name $create";
1605 name=`echo $name | sed -e "s|^[^/]*$||"`;
1606 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1607 else
1608 name="";
1609 fi;
1610done;
1611for file in $create; do
1612 mkdir $file;
1613done
1614'
1615for file in $*; do
1616 case "$src" in
1617 ".")
1618 case "$file" in
1619 */*)
1620 dir=`expr X$file : 'X\(.*\)/'`
1621 file=`expr X$file : 'X.*/\(.*\)'`
6904989c 1622 (cd "$dir" && . ./$file)
dfe9444c
AD
1623 ;;
1624 *)
1625 . ./$file
1626 ;;
1627 esac
1628 ;;
1629 *)
1630 case "$file" in
1631 */*)
1632 dir=`expr X$file : 'X\(.*\)/'`
1633 file=`expr X$file : 'X.*/\(.*\)'`
1634 (set x $dir; shift; eval $mkdir_p)
6904989c 1635 sh <"$src/$dir/$file"
dfe9444c
AD
1636 ;;
1637 *)
6904989c 1638 sh <"$src/$file"
dfe9444c
AD
1639 ;;
1640 esac
1641 ;;
1642 esac
1643done
6904989c 1644if test -f "$src/config_h.SH"; then
dfe9444c
AD
1645 if test ! -f config.h; then
1646 : oops, they left it out of MANIFEST, probably, so do it anyway.
6904989c 1647 . "$src/config_h.SH"
dfe9444c
AD
1648 fi
1649fi
1650EOS
1651
1652: extract files and exit if asked to do so
1653case "$extractsh" in
1654true)
1655 case "$realsilent" in
1656 true) ;;
1657 *) exec 1>&4;;
1658 esac
1659 case "$config_sh" in
1660 '') config_sh='config.sh';;
1661 esac
1662 echo " "
1663 echo "Fetching answers from $config_sh..."
1664 cd ..
1665 . $config_sh
1666 test "$override" && . ./optdef.sh
1667 echo " "
1668 . UU/extract
1669 rm -rf UU
24ccb310 1670 echo "Extraction done."
dfe9444c
AD
1671 exit 0
1672 ;;
1673esac
1674
1675: Eunice requires " " instead of "", can you believe it
1676echo " "
1677: Here we go...
1678echo "Beginning of configuration questions for $package."
1679
1680trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1681
2304df62
AD
1682: first determine how to suppress newline on echo command
1683echo " "
1684echo "Checking echo to see how to suppress newlines..."
1685(echo "hi there\c" ; echo " ") >.echotmp
1686if $contains c .echotmp >/dev/null 2>&1 ; then
1687 echo "...using -n."
1688 n='-n'
1689 c=''
1690else
1691 cat <<'EOM'
1692...using \c
1693EOM
1694 n=''
1695 c='\c'
1696fi
1697echo $n "The star should be here-->$c"
1698echo '*'
1699rm -f .echotmp
1700
1701: Now test for existence of everything in MANIFEST
1702echo " "
6904989c 1703if test -f "$rsrc/MANIFEST"; then
2304df62 1704 echo "First let's make sure your kit is complete. Checking..." >&4
6904989c 1705 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | split -50
2304df62 1706 rm -f missing
dfe9444c 1707 tmppwd=`pwd`
2304df62 1708 for filelist in x??; do
6904989c 1709 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
2304df62
AD
1710 done
1711 if test -s missing; then
1712 cat missing >&4
1713 cat >&4 <<'EOM'
1714
1715THIS PACKAGE SEEMS TO BE INCOMPLETE.
1716
1717You have the option of continuing the configuration process, despite the
1718distinct possibility that your kit is damaged, by typing 'y'es. If you
1719do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1720and contact the author (perlbug@perl.org).
2304df62
AD
1721
1722EOM
1723 echo $n "Continue? [n] $c" >&4
1724 read ans
1725 case "$ans" in
1726 y*)
1727 echo "Continuing..." >&4
1728 rm -f missing
1729 ;;
1730 *)
1731 echo "ABORTING..." >&4
1732 kill $$
1733 ;;
1734 esac
1735 else
dfe9444c 1736 echo "Looks good..."
2304df62
AD
1737 fi
1738else
1739 echo "There is no MANIFEST file. I hope your kit is complete !"
1740fi
1741rm -f missing x??
1742
5ff3f7a4
GS
1743echo " "
1744: Find the appropriate value for a newline for tr
1745if test -n "$DJGPP"; then
1746 trnl='\012'
1747fi
1748if test X"$trnl" = X; then
1749 case "`echo foo|tr '\n' x 2>/dev/null`" in
1750 foox) trnl='\n' ;;
1751 esac
1752fi
1753if test X"$trnl" = X; then
1754 case "`echo foo|tr '\012' x 2>/dev/null`" in
1755 foox) trnl='\012' ;;
1756 esac
1757fi
1758if test X"$trnl" = X; then
1759 cat <<EOM >&2
1760
1761$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1762
1763EOM
1764 exit 1
1765fi
1766
2304df62
AD
1767: compute the number of columns on the terminal for proper question formatting
1768case "$COLUMNS" in
1769'') COLUMNS='80';;
1770esac
1771
1772: set up the echo used in my read
1773myecho="case \"\$xxxm\" in
1774'') echo $n \"\$rp $c\" >&4;;
1775*) case \"\$rp\" in
1776 '') echo $n \"[\$xxxm] $c\";;
1777 *)
1778 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1779 echo \"\$rp\" >&4
1780 echo $n \"[\$xxxm] $c\" >&4
1781 else
1782 echo $n \"\$rp [\$xxxm] $c\" >&4
1783 fi
1784 ;;
1785 esac;;
1786esac"
1787
1788: now set up to do reads with possible shell escape and default assignment
1789cat <<EOSC >myread
28757baa 1790$startsh
2304df62
AD
1791xxxm=\$dflt
1792$myecho
1793ans='!'
1794case "\$fastread" in
1795yes) case "\$dflt" in
1796 '') ;;
1797 *) ans='';
1798 case "\$silent-\$rp" in
1799 true-) ;;
1800 *) echo " " >&4;;
1801 esac;;
1802 esac;;
1803*) case "\$silent" in
1804 true) case "\$rp" in
1805 '') ans='';;
1806 esac;;
1807 esac;;
1808esac
1809while expr "X\$ans" : "X!" >/dev/null; do
1810 read answ
1811 set x \$xxxm
1812 shift
dfe9444c 1813 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1814 case "\$answ" in
dfe9444c
AD
1815 "!")
1816 sh 1>&4
1817 echo " "
1818 $myecho
1819 ;;
1820 !*)
1821 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1822 shift
1823 sh 1>&4 -c "\$*"
1824 echo " "
1825 $myecho
1826 ;;
2304df62
AD
1827 "\$ans")
1828 case "\$ans" in
ecfc5424
AD
1829 \\&*)
1830 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1831 shift
1832 case "\$1" in
1833 -d)
1834 fastread=yes
40a7a20a 1835 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1836 ;;
1837 -*)
40a7a20a 1838 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1839 ;;
1840 esac
1841 $myecho
1842 ans=!
1843 ;;
2304df62
AD
1844 esac;;
1845 *)
1846 case "\$aok" in
1847 y)
1848 echo "*** Substitution done -- please confirm."
1849 xxxm="\$ans"
c9795ab7 1850 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1851 xxxm="\$ans"
1852 ans=!
1853 ;;
1854 *)
1855 echo "*** Error -- try again."
1856 ans=!
1857 ;;
1858 esac
1859 $myecho
1860 ;;
1861 esac
1862 case "\$ans\$xxxm\$nostick" in
1863 '')
1864 ans=!
1865 $myecho
1866 ;;
1867 esac
1868done
1869case "\$ans" in
1870'') ans="\$xxxm";;
1871esac
1872EOSC
1873
1874: create .config dir to save info across Configure sessions
1875test -d ../.config || mkdir ../.config
1876cat >../.config/README <<EOF
1877This directory created by Configure to save information that should
dfe9444c 1878persist across sessions for $package.
2304df62
AD
1879
1880You may safely delete it if you wish.
1881EOF
1882
9507cadf 1883xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1884case "$usedevel" in
0107c034 1885$define|true|[yY]*) ;;
9507cadf 1886*) case "$xversion" in
0107c034
JH
1887 *[13579])
1888 cat >&4 <<EOH
1889*** WHOA THERE!!! ***
1890
1891 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
1892 The version of this $package distribution is $xversion, that is, odd,
1893 (as opposed to even) and that signifies a development release.
3d5d58b1 1894 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
1895
1896 Do ***NOT*** install this into production use.
1897 Data corruption and crashes are possible.
1898
1899 It is most seriously suggested that you do not continue any further
1900 unless you want to help in developing and debugging Perl.
1901
6adc6a45
JH
1902 If you *still* want to build perl, you can answer 'y' now,
1903 or pass -Dusedevel to Configure.
1904
0107c034
JH
1905EOH
1906 rp='Do you really want to continue?'
1907 dflt='n'
1908 . ./myread
1909 case "$ans" in
8feeef0e
JH
1910 [yY]) echo >&4 "Okay, continuing."
1911 usedevel="$define" ;;
0107c034
JH
1912 *) echo >&4 "Okay, bye."
1913 exit 1
1914 ;;
1915 esac
1916 ;;
1917 esac
1918 ;;
1919esac
8feeef0e
JH
1920case "$usedevel" in
1921$define|true|[yY]*)
1922 case "$versiononly" in
1923 '') versiononly="$define" ;;
1924 esac
1925 case "$installusrbinperl" in
1926 '') installusrbinperl="$undef" ;;
1927 esac
1928 ;;
1929esac
0107c034 1930
2304df62
AD
1931: general instructions
1932needman=true
1933firsttime=true
760ac839 1934user=`(logname) 2>/dev/null`
dfe9444c
AD
1935case "$user" in
1936'') user=`whoami 2>&1`;;
760ac839 1937esac
2304df62
AD
1938if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1939 firsttime=false
1940 echo " "
1941 rp='Would you like to see the instructions?'
1942 dflt=n
1943 . ./myread
1944 case "$ans" in
1945 [yY]*) ;;
1946 *) needman=false;;
1947 esac
1948fi
1949if $needman; then
1950 cat <<EOH
4e2a5f63 1951
2304df62 1952This installation shell script will examine your system and ask you questions
a0d0e21e 1953to determine how the perl5 package should be installed. If you get
2304df62
AD
1954stuck on a question, you may use a ! shell escape to start a subshell or
1955execute a command. Many of the questions will have default answers in square
1956brackets; typing carriage return will give you the default.
1957
1958On some of the questions which ask for file or directory names you are allowed
1959to use the ~name construct to specify the login directory belonging to "name",
1960even if you don't have a shell which knows about that. Questions where this is
1961allowed will be marked "(~name ok)".
1962
1963EOH
1964 rp=''
1965 dflt='Type carriage return to continue'
1966 . ./myread
1967 cat <<'EOH'
1968
1969The prompter used in this script allows you to use shell variables and
1970backticks in your answers. You may use $1, $2, etc... to refer to the words
1971in the default answer, as if the default line was a set of arguments given to a
1972script shell. This means you may also use $* to repeat the whole default line,
1973so you do not have to re-type everything to add something to the default.
1974
1975Everytime there is a substitution, you will have to confirm. If there is an
1976error (e.g. an unmatched backtick), the default answer will remain unchanged
1977and you will be prompted again.
1978
1979If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1980the questions and use the computed defaults (or the previous answers if there
1981was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1982You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1983on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1984
1985EOH
1986 . ./myread
1987 cat <<EOH
1988
1989Much effort has been expended to ensure that this shell script will run on any
1990Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1991Configure and run it again. If you can't run Configure for some reason,
1992you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 1993have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
1994
1995This installation script affects things in two ways:
1996
19971) it may do direct variable substitutions on some of the files included
1998 in this kit.
19992) it builds a config.h file for inclusion in C programs. You may edit
2000 any of these files as the need arises after running this script.
2001
2002If you make a mistake on a question, there is no easy way to back up to it
2003currently. The easiest thing to do is to edit config.sh and rerun all the SH
2004files. Configure will offer to let you do this before it runs the SH files.
2005
2006EOH
2007 dflt='Type carriage return to continue'
2008 . ./myread
2009 case "$firsttime" in
2010 true) echo $user >>../.config/instruct;;
2011 esac
2012fi
2013
2304df62
AD
2014: find out where common programs are
2015echo " "
2016echo "Locating common programs..." >&4
2017cat <<EOSC >loc
2018$startsh
2019case \$# in
20200) exit 1;;
2021esac
2022thing=\$1
2023shift
2024dflt=\$1
2025shift
2026for dir in \$*; do
2027 case "\$thing" in
2028 .)
2029 if test -d \$dir/\$thing; then
2030 echo \$dir
2031 exit 0
2032 fi
2033 ;;
2034 *)
a0d0e21e 2035 for thisthing in \$dir/\$thing; do
ecfc5424 2036 : just loop through to pick last item
a0d0e21e 2037 done
25f94b33 2038 if test -f \$thisthing; then
a0d0e21e 2039 echo \$thisthing
2304df62 2040 exit 0
a5a94ea5
JH
2041 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2042 echo \$thisthing
2043 exit 0
2304df62 2044 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
2045 if test -n "$DJGPP"; then
2046 echo \$dir/\$thing.exe
2047 else
2048 : on Eunice apparently
2049 echo \$dir/\$thing
2050 fi
2304df62
AD
2051 exit 0
2052 fi
2053 ;;
2054 esac
2055done
2056echo \$dflt
2057exit 1
2058EOSC
2059chmod +x loc
2060$eunicefix loc
2061loclist="
2062awk
2063cat
f8006fac 2064chmod
b4eb6b3d
JH
2065comm
2066cp
2304df62
AD
2067echo
2068expr
2069grep
a0d0e21e 2070ls
b4eb6b3d 2071mkdir
2304df62
AD
2072rm
2073sed
b4eb6b3d 2074sort
85e6fe83 2075touch
2304df62 2076tr
b4eb6b3d 2077uniq
2304df62
AD
2078"
2079trylist="
2080Mcc
dfe9444c 2081ar
3659ebf1 2082bison
b4eb6b3d 2083byacc
2304df62 2084cpp
b4eb6b3d 2085csh
2304df62
AD
2086date
2087egrep
1fef16b3 2088gmake
8ff267be 2089gzip
b4eb6b3d 2090less
8ff267be 2091ln
3c728e00 2092make
b4eb6b3d 2093more
693762b4 2094nm
b4eb6b3d
JH
2095nroff
2096pg
2304df62
AD
2097test
2098uname
8ff267be 2099zip
2304df62 2100"
8e07c86e 2101pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2102pth="$pth /lib /usr/lib"
2103for file in $loclist; do
dfe9444c
AD
2104 eval xxx=\$$file
2105 case "$xxx" in
2106 /*|?:[\\/]*)
2107 if test -f "$xxx"; then
2108 : ok
2109 else
2110 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2111 xxx=`./loc $file $file $pth`
2112 fi
2113 ;;
2114 '') xxx=`./loc $file $file $pth`;;
2115 *) xxx=`./loc $xxx $xxx $pth`;;
2116 esac
a5a94ea5 2117 eval $file=$xxx$_exe
2304df62
AD
2118 eval _$file=$xxx
2119 case "$xxx" in
2120 /*)
2121 echo $file is in $xxx.
2122 ;;
8e07c86e
AD
2123 ?:[\\/]*)
2124 echo $file is in $xxx.
2125 ;;
2304df62 2126 *)
25f94b33
AD
2127 echo "I don't know where '$file' is, and my life depends on it." >&4
2128 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2129 exit 1
2304df62
AD
2130 ;;
2131 esac
2132done
2133echo " "
2134echo "Don't worry if any of the following aren't found..."
2135say=offhand
2136for file in $trylist; do
dfe9444c
AD
2137 eval xxx=\$$file
2138 case "$xxx" in
2139 /*|?:[\\/]*)
2140 if test -f "$xxx"; then
2141 : ok
2142 else
2143 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2144 xxx=`./loc $file $file $pth`
2145 fi
2146 ;;
2147 '') xxx=`./loc $file $file $pth`;;
2148 *) xxx=`./loc $xxx $xxx $pth`;;
2149 esac
306a8474 2150 eval $file=$xxx$_exe
2304df62
AD
2151 eval _$file=$xxx
2152 case "$xxx" in
2153 /*)
2154 echo $file is in $xxx.
2155 ;;
8e07c86e
AD
2156 ?:[\\/]*)
2157 echo $file is in $xxx.
2158 ;;
2304df62
AD
2159 *)
2160 echo "I don't see $file out there, $say."
2161 say=either
2162 ;;
2163 esac
2164done
2165case "$egrep" in
1fef16b3 2166egrep)
2304df62
AD
2167 echo "Substituting grep for egrep."
2168 egrep=$grep
868439a2 2169 _egrep=$grep
2304df62
AD
2170 ;;
2171esac
8ff267be 2172case "$ln" in
1fef16b3 2173ln)
8ff267be 2174 echo "Substituting cp for ln."
2175 ln=$cp
868439a2 2176 _ln=$cp
8ff267be 2177 ;;
2178esac
2e26f1d5
JH
2179case "$make" in
2180make)
2181 case "$gmake" in
2182 gmake)
2183 echo "I can't find make or gmake, and my life depends on it." >&4
2184 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2185 exit 1
2186 ;;
2187 esac
2188 ;;
2189esac
2190case "$gmake" in
2191gmake) ;;
2192*) # We can't have osname yet.
1fef16b3
JH
2193 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2194 # Assume that gmake, if found, is definitely GNU make
2195 # and prefer it over the system make.
2196 echo "Substituting gmake for make."
2197 make=$gmake
868439a2 2198 _make=$gmake
1fef16b3
JH
2199 fi
2200 ;;
a5a94ea5 2201esac
2304df62
AD
2202case "$test" in
2203test)
2204 echo "Hopefully test is built into your sh."
2205 ;;
2206*)
73614538 2207 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2208 echo "Using the test built into your sh."
2304df62
AD
2209 test=test
2210 _test=test
2211 fi
2212 ;;
2213esac
2214case "$echo" in
2215echo)
2216 echo "Hopefully echo is built into your sh."
2217 ;;
2218'') ;;
2219*)
2220 echo " "
2221echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2222 $echo $n "hi there$c" >foo1
2223 echo $n "hi there$c" >foo2
2224 if cmp foo1 foo2 >/dev/null 2>&1; then
2225 echo "They are compatible. In fact, they may be identical."
2226 else
2227 case "$n" in
2228 '-n') n='' c='\c';;
2229 *) n='-n' c='';;
2230 esac
2231 cat <<FOO
2232They are not compatible! You are probably running ksh on a non-USG system.
2233I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2234have echo built in and we may have to run some Bourne shell scripts. That
2235means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2236
2237FOO
2238 $echo $n "The star should be here-->$c"
2239 $echo "*"
2240 fi
2241 $rm -f foo1 foo2
2242 ;;
2243esac
2244
2573c5f9
JH
2245cat <<EOS >checkcc
2246$startsh
2247EOS
2248cat <<'EOSC' >>checkcc
2249case "$cc" in
2250'') ;;
2251*) $rm -f try try.*
2252 $cat >try.c <<EOM
2253int main(int argc, char *argv[]) {
2254 return 0;
2255}
2256EOM
e4778687 2257 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2258 :
2259 else
2260 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2261 despair=yes
2262 trygcc=yes
2263 case "$cc" in
2264 *gcc*) trygcc=no ;;
2265 esac
2266 case "`$cc -v -c try.c 2>&1`" in
2267 *gcc*) trygcc=no ;;
2268 esac
2269 if $test X"$trygcc" = Xyes; then
2270 if gcc -o try -c try.c; then
2271 echo " "
2272 echo "You seem to have a working gcc, though." >&4
2273 rp="Would you like to use it?"
2274 dflt=y
2275 if $test -f myread; then
2276 . ./myread
2277 else
2278 if $test -f UU/myread; then
2279 . ./UU/myread
2280 else
2281 echo "Cannot find myread, sorry. Aborting." >&2
2282 exit 1
2283 fi
2284 fi
2285 case "$ans" in
e723fc21 2286 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2573c5f9
JH
2287 esac
2288 fi
2289 fi
2290 if $test X"$despair" = Xyes; then
5dd4fbdf
MB
2291 $cat >&4 <<EOM
2292You need to find a working C compiler.
2293Either (purchase and) install the C compiler supplied by your OS vendor,
2294or for a free C compiler try http://gcc.gnu.org/
2295I cannot continue any further, aborting.
2296EOM
2573c5f9
JH
2297 exit 1
2298 fi
2299 fi
2300 $rm -f try try.*
2301 ;;
2302esac
2303EOSC
2304
a0d0e21e
LW
2305: determine whether symbolic links are supported
2306echo " "
2307$touch blurfl
2308if $ln -s blurfl sym > /dev/null 2>&1 ; then
2309 echo "Symbolic links are supported." >&4
2310 lns="$ln -s"
2311else
2312 echo "Symbolic links are NOT supported." >&4
2313 lns="$ln"
2314fi
2315$rm -f blurfl sym
2316
dafca956
JH
2317: determine whether symbolic links are supported
2318echo " "
2319case "$lns" in
2320*"ln -s")
2321 echo "Checking how to test for symbolic links..." >&4
2322 $lns blurfl sym
4b661809 2323 if $test "X$issymlink" = X; then
2e2a97a6
JH
2324 case "$newsh" in
2325 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2326 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2327 esac
5d644a95
MB
2328 if test $? = 0; then
2329 issymlink="test -h"
2e2a97a6
JH
2330 else
2331 echo "Your builtin 'test -h' may be broken." >&4
2332 case "$test" in
2333 /*) ;;
2334 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2335 for p in $pth
2336 do
2337 if test -f "$p/$test"; then
2338 test="$p/$test"
2339 break
2340 fi
2341 done
2342 ;;
2343 esac
2344 case "$test" in
2345 /*)
2346 echo "Trying external '$test -h'." >&4
2347 issymlink="$test -h"
2348 if $test ! -h sym >/dev/null 2>&1; then
3c728e00 2349 echo "External '$test -h' is broken, too." >&4
2e2a97a6
JH
2350 issymlink=''
2351 fi
2352 ;;
2353 *) issymlink='' ;;
2354 esac
5d644a95
MB
2355 fi
2356 fi
4b661809 2357 if $test "X$issymlink" = X; then
dafca956 2358 if $test -L sym 2>/dev/null; then
5d644a95 2359 issymlink="$test -L"
2e2a97a6 2360 echo "The builtin '$test -L' worked." >&4
dafca956
JH
2361 fi
2362 fi
4b661809 2363 if $test "X$issymlink" != X; then
5d644a95 2364 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2365 else
2366 echo "I do not know how you can test for symbolic links." >&4
2367 fi
2368 $rm -f blurfl sym
2369 ;;
2370*) echo "No symbolic links, so not testing for their testing..." >&4
2371 ;;
2372esac
2373echo " "
2374
2375
2376case "$mksymlinks" in
2377$define|true|[yY]*)
2378 case "$src" in
2379 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2380 exit 1
2381 ;;
4b661809 2382 *) case "$lns:$issymlink" in
7a800fca 2383 *"ln -s:"*"test -"?)
dafca956
JH
2384 echo "Creating the symbolic links..." >&4
2385 echo "(First creating the subdirectories...)" >&4
2386 cd ..
2387 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2388 read directory
2389 test -z "$directory" && break
2390 mkdir -p $directory
2391 done
2392 # Sanity check 1.
2393 if test ! -d t/base; then
2394 echo "Failed to create the subdirectories. Aborting." >&4
2395 exit 1
2396 fi
2397 echo "(Then creating the symlinks...)" >&4
2398 awk '{print $1}' $src/MANIFEST | while true; do
2399 read filename
2400 test -z "$filename" && break
2401 if test -f $filename; then
5d644a95 2402 if $issymlink $filename; then
dafca956
JH
2403 rm -f $filename
2404 fi
2405 fi
2406 if test -f $filename; then
2407 echo "$filename already exists, not symlinking."
2408 else
2409 ln -s $src/$filename $filename
2410 fi
2411 done
2412 # Sanity check 2.
a0d24b8a
JH
2413 if test ! -f t/base/lex.t; then
2414 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
dafca956
JH
2415 exit 1
2416 fi
2417 cd UU
2418 ;;
2419 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2420 ;;
2421 esac
2422 ;;
2423 esac
2424 ;;
2425esac
2426
5440bc8e
JH
2427
2428case "$usecrosscompile" in
2429$define|true|[yY]*)
93bc48fa 2430 $echo "Cross-compiling..."
5440bc8e
JH
2431 croak=''
2432 case "$cc" in
2433 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2434 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2435 ar=$targetarch-ar
2436 # leave out ld, choosing it is more complex
2437 nm=$targetarch-nm
2438 ranlib=$targetarch-ranlib
93bc48fa 2439 $echo 'extern int foo;' > try.c
f8006fac 2440 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
93bc48fa
JH
2441 shift
2442 if $test $# -gt 0; then
2443 incpth="$incpth $*"
f8006fac
JH
2444 incpth="`$echo $incpth|$sed 's/^ //'`"
2445 echo "Guessing incpth '$incpth'." >&4
93bc48fa 2446 for i in $*; do
f8006fac 2447 j="`$echo $i|$sed 's,/include$,/lib,'`"
93bc48fa
JH
2448 if $test -d $j; then
2449 libpth="$libpth $j"
2450 fi
2451 done
f8006fac
JH
2452 libpth="`$echo $libpth|$sed 's/^ //'`"
2453 echo "Guessing libpth '$libpth'." >&4
93bc48fa
JH
2454 fi
2455 $rm -f try.c
5440bc8e
JH
2456 ;;
2457 esac
2458 case "$targetarch" in
93bc48fa
JH
2459 '') echo "Targetarch not defined." >&4; croak=y ;;
2460 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2461 esac
2462 case "$incpth" in
93bc48fa 2463 '') echo "Incpth not defined." >&4; croak=y ;;
f8006fac 2464 *) echo "Using incpth '$incpth'." >&4 ;;
5440bc8e
JH
2465 esac
2466 case "$libpth" in
93bc48fa 2467 '') echo "Libpth not defined." >&4; croak=y ;;
f8006fac 2468 *) echo "Using libpth '$libpth'." >&4 ;;
5440bc8e 2469 esac
93bc48fa
JH
2470 case "$usrinc" in
2471 '') for i in $incpth; do
2472 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2473 usrinc=$i
2474 echo "Guessing usrinc $usrinc." >&4
2475 break
2476 fi
2477 done
2478 case "$usrinc" in
2479 '') echo "Usrinc not defined." >&4; croak=y ;;
2480 esac
2481 ;;
2482 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2483 esac
93bc48fa
JH
2484 case "$targethost" in
2485 '') echo "Targethost not defined." >&4; croak=y ;;
2486 *) echo "Using targethost $targethost." >&4
5440bc8e 2487 esac
93bc48fa
JH
2488 locincpth=' '
2489 loclibpth=' '
5440bc8e 2490 case "$croak" in
93bc48fa 2491 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2492 esac
2493 case "$src" in
2494 /*) run=$src/Cross/run
93c0359c 2495 targetmkdir=$src/Cross/mkdir
5440bc8e
JH
2496 to=$src/Cross/to
2497 from=$src/Cross/from
2498 ;;
93bc48fa 2499 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e 2500 run=$pwd/Cross/run
f8006fac 2501 targetmkdir=$pwd/Cross/mkdir
5440bc8e
JH
2502 to=$pwd/Cross/to
2503 from=$pwd/Cross/from
2504 ;;
2505 esac
2506 case "$targetrun" in
2507 '') targetrun=ssh ;;
2508 esac
2509 case "$targetto" in
2510 '') targetto=scp ;;
2511 esac
2512 case "$targetfrom" in
2513 '') targetfrom=scp ;;
2514 esac
2515 run=$run-$targetrun
2516 to=$to-$targetto
2517 from=$from-$targetfrom
93bc48fa
JH
2518 case "$targetdir" in
2519 '') targetdir=/tmp
2520 echo "Guessing targetdir $targetdir." >&4
2521 ;;
2522 esac
5440bc8e 2523 case "$targetuser" in
93bc48fa
JH
2524 '') targetuser=root
2525 echo "Guessing targetuser $targetuser." >&4
2526 ;;
5440bc8e
JH
2527 esac
2528 case "$targetfrom" in
2529 scp) q=-q ;;
2530 *) q='' ;;
2531 esac
2532 case "$targetrun" in
2533 ssh|rsh)
2534 cat >$run <<EOF
2535#!/bin/sh
93c0359c
JH
2536case "\$1" in
2537-cwd)
2538 shift
2539 cwd=\$1
2540 shift
2541 ;;
2542esac
2543case "\$cwd" in
2544'') cwd=$targetdir ;;
2545esac
5440bc8e
JH
2546exe=\$1
2547shift
93c0359c
JH
2548if $test ! -f \$exe.xok; then
2549 $to \$exe
2550 $touch \$exe.xok
2551fi
2552$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
5440bc8e
JH
2553EOF
2554 ;;
93bc48fa 2555 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2556 exit 1
2557 ;;
2558 esac
93c0359c
JH
2559 case "$targetmkdir" in
2560 */Cross/mkdir)
2561 cat >$targetmkdir <<EOF
2562#!/bin/sh
2563$targetrun -l $targetuser $targethost "mkdir -p \$@"
2564EOF
f8006fac 2565 $chmod a+rx $targetmkdir
93c0359c
JH
2566 ;;
2567 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2568 exit 1
2569 ;;
2570 esac
5440bc8e
JH
2571 case "$targetto" in
2572 scp|rcp)
2573 cat >$to <<EOF
2574#!/bin/sh
2575for f in \$@
2576do
93c0359c
JH
2577 case "\$f" in
2578 /*)
2579 $targetmkdir \`dirname \$f\`
2580 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2581 ;;
2582 *)
2583 $targetmkdir $targetdir/\`dirname \$f\`
2584 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2585 ;;
2586 esac
5440bc8e
JH
2587done
2588exit 0
2589EOF
2590 ;;
2591 cp) cat >$to <<EOF
2592#!/bin/sh
93c0359c
JH
2593for f in \$@
2594do
2595 case "\$f" in
2596 /*)
2597 $mkdir -p $targetdir/\`dirname \$f\`
2598 $cp \$f $targetdir/\$f || exit 1
2599 ;;
2600 *)
2601 $targetmkdir $targetdir/\`dirname \$f\`
2602 $cp \$f $targetdir/\$f || exit 1
2603 ;;
2604 esac
2605done
2606exit 0
5440bc8e
JH
2607EOF
2608 ;;
93bc48fa 2609 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2610 exit 1
2611 ;;
2612 esac
2613 case "$targetfrom" in
2614 scp|rcp)
2615 cat >$from <<EOF
2616#!/bin/sh
2617for f in \$@
2618do
93c0359c 2619 $rm -f \$f
5440bc8e
JH
2620 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2621done
2622exit 0
2623EOF
2624 ;;
2625 cp) cat >$from <<EOF
2626#!/bin/sh
2627for f in \$@
2628do
93c0359c 2629 $rm -f \$f
5440bc8e
JH
2630 cp $targetdir/\$f . || exit 1
2631done
2632exit 0
2633EOF
2634 ;;
93bc48fa 2635 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2636 exit 1
2637 ;;
2638 esac
93bc48fa
JH
2639 if $test ! -f $run; then
2640 echo "Target 'run' script '$run' not found." >&4
5440bc8e 2641 else
f8006fac 2642 $chmod a+rx $run
5440bc8e 2643 fi
93bc48fa
JH
2644 if $test ! -f $to; then
2645 echo "Target 'to' script '$to' not found." >&4
5440bc8e 2646 else
f8006fac 2647 $chmod a+rx $to
5440bc8e 2648 fi
93bc48fa
JH
2649 if $test ! -f $from; then
2650 echo "Target 'from' script '$from' not found." >&4
5440bc8e 2651 else
f8006fac 2652 $chmod a+rx $from
5440bc8e 2653 fi
93bc48fa 2654 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
2655 exit 1
2656 fi
2657 cat >&4 <<EOF
f8006fac
JH
2658Using '$run' for remote execution,
2659and '$from' and '$to'
93bc48fa 2660for remote file transfer.
5440bc8e
JH
2661EOF
2662 ;;
2663*) run=''
2664 to=:
2665 from=:
2666 usecrosscompile='undef'
2667 targetarch=''
2668 ;;
2669esac
2670
ecfc5424
AD
2671: see whether [:lower:] and [:upper:] are supported character classes
2672echo " "
ecfc5424
AD
2673case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2674ABYZ)
2675 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2676 up='[:upper:]'
2677 low='[:lower:]'
2678 ;;
28e8609d
JH
2679*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2680 # (0xc9 and 0xd1), therefore that is a nice testing point.
2681 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2682 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2683 ij) up='[A-Z]'
2684 low='[a-z]'
2685 ;;
2686 esac
2687 fi
2688 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2689 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2690 ij) up='A-Z'
2691 low='a-z'
2692 ;;
2693 esac
2694 fi
2695 if test "X$up" = X -o "X$low" = X; then
2696 case "`echo IJ | od -x 2>/dev/null`" in
2697 *C9D1*|*c9d1*)
2698 echo "Hey, this might be EBCDIC." >&4
2699 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2700 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2701 ij) up='[A-IJ-RS-Z]'
2702 low='[a-ij-rs-z]'
2703 ;;
2704 esac
2705 fi
2706 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2707 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2708 ij) up='A-IJ-RS-Z'
2709 low='a-ij-rs-z'
2710 ;;
2711 esac
2712 fi
2713 ;;
2714 esac
2715 fi
2716esac
3eaeeeae 2717case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2718ij)
2719 echo "Using $up and $low to convert case." >&4
2720 ;;
ecfc5424 2721*)
28e8609d
JH
2722 echo "I don't know how to translate letters from upper to lower case." >&4
2723 echo "Your tr is not acting any way I know of." >&4
2724 exit 1
2725 ;;
ecfc5424
AD
2726esac
2727: set up the translation script tr, must be called with ./tr of course
2728cat >tr <<EOSC
2729$startsh
2730case "\$1\$2" in
2731'[A-Z][a-z]') exec $tr '$up' '$low';;
2732'[a-z][A-Z]') exec $tr '$low' '$up';;
2733esac
2734exec $tr "\$@"
2735EOSC
2736chmod +x tr
2737$eunicefix tr
2738
2304df62
AD
2739: Try to determine whether config.sh was made on this system
2740case "$config_sh" in
2741'')
43999f95
JH
2742myuname=`$uname -a 2>/dev/null`
2743$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2744# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2745# because the A-Z/a-z are not consecutive.
a0d0e21e 2746myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2747 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2748newmyuname="$myuname"
2304df62 2749dflt=n
16d20bd9
AD
2750case "$knowitall" in
2751'')
2752 if test -f ../config.sh; then
2753 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2754 eval "`grep myuname= ../config.sh`"
2755 fi
2756 if test "X$myuname" = "X$newmyuname"; then
2757 dflt=y
2758 fi
2304df62 2759 fi
16d20bd9
AD
2760 ;;
2761*) dflt=y;;
2762esac
2304df62
AD
2763
2764: Get old answers from old config file if Configure was run on the
2765: same system, otherwise use the hints.
2766hint=default
2767cd ..
2768if test -f config.sh; then
16d20bd9
AD
2769 echo " "
2770 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2771 . UU/myread
2772 case "$ans" in
f83701cd
AD
2773 n*|N*) echo "OK, I'll ignore it."
2774 mv config.sh config.sh.old
2775 myuname="$newmyuname"
2776 ;;
2304df62 2777 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2778 tmp_n="$n"
2779 tmp_c="$c"
85cad39c 2780 tmp_sh="$sh"
2304df62
AD
2781 . ./config.sh
2782 cp config.sh UU
ecfc5424
AD
2783 n="$tmp_n"
2784 c="$tmp_c"
85cad39c 2785 : Older versions did not always set $sh. Catch re-use of such
2786 : an old config.sh.
2787 case "$sh" in
2788 '') sh="$tmp_sh" ;;
2789 esac
2304df62
AD
2790 hint=previous
2791 ;;
2792 esac
2793fi
2573c5f9 2794. ./UU/checkcc
2304df62
AD
2795if test ! -f config.sh; then
2796 $cat <<EOM
2797
4e2a5f63
AD
2798First time through, eh? I have some defaults handy for some systems
2799that need some extra help getting the Configure answers right:
2304df62
AD
2800
2801EOM
dfe9444c 2802 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2803 dflt=''
2804 : Half the following guesses are probably wrong... If you have better
7f2de2d2 2805 : tests or hints, please send them to perlbug@perl.org
2304df62 2806 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2807 $test -f /irix && osname=irix
85e6fe83
LW
2808 $test -f /xenix && osname=sco_xenix
2809 $test -f /dynix && osname=dynix
2810 $test -f /dnix && osname=dnix
5f05dabc 2811 $test -f /lynx.os && osname=lynxos
2812 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2813 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2814 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2815 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2816 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2817 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2818 $test -d /usr/apollo/bin && osname=apollo
2819 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2820 $test -d /usr/include/minix && osname=minix
d54344fc 2821 $test -f /system/gnu_library/bin/ar.pm && osname=vos
e060872b 2822 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2823 osname=machten
4633a7c4 2824 if $test -x /sbin/version; then
dfe9444c 2825 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2826 $sed -e 's/[A-Za-z]$//'`
2827 elif $test -x /usr/etc/version; then
dfe9444c 2828 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2829 $sed -e 's/[A-Za-z]$//'`
2830 else
2831 osvers="$2.$3"
2832 fi
2833 fi
aaacdc8b
GS
2834
2835 $test -f /sys/posix.dll &&
2836 $test -f /usr/bin/what &&
2837 set X `/usr/bin/what /sys/posix.dll` &&
2838 $test "$3" = UWIN &&
2839 osname=uwin &&
2840 osvers="$5"
2841
2304df62
AD
2842 if $test -f $uname; then
2843 set X $myuname
2844 shift
2845
2304df62 2846 case "$5" in
85e6fe83 2847 fps*) osname=fps ;;
2304df62
AD
2848 mips*)
2849 case "$4" in
85e6fe83
LW
2850 umips) osname=umips ;;
2851 *) osname=mips ;;
2304df62 2852 esac;;
85e6fe83
LW
2853 [23]100) osname=mips ;;
2854 next*) osname=next ;;
ecfc5424 2855 i386*)
c6912327
JH
2856 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2857 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2858 osname='sco'
2859 osvers=$tmp
2860 elif $test -f /etc/kconfig; then
ecfc5424 2861 osname=isc
bd628c73 2862 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2863 osvers=4
2864 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2865 osvers=3
2304df62 2866 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2867 osvers=2
ecfc5424
AD
2868 fi
2869 fi
2000072c 2870 tmp=''
ecfc5424 2871 ;;
c4f23d77
AD
2872 pc*)
2873 if test -n "$DJGPP"; then
2874 osname=dos
2875 osvers=djgpp
2876 fi
2877 ;;
2304df62
AD
2878 esac
2879
2880 case "$1" in
a0d0e21e
LW
2881 aix) osname=aix
2882 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2883 case "$tmp" in
1aef975c 2884 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2885 '<3240'|'<>3240') osvers=3.2.0 ;;
2886 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2887 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2888 *) osvers=$tmp;;
a0d0e21e
LW
2889 esac
2890 ;;
aaacdc8b
GS
2891 bsd386) osname=bsd386
2892 osvers=`$uname -r`
2893 ;;
2894 cygwin*) osname=cygwin
2895 osvers="$3"
2896 ;;
23f87696
SZ
2897 *dc.osx) osname=dcosx
2898 osvers="$3"
2899 ;;
a0d0e21e
LW
2900 dnix) osname=dnix
2901 osvers="$3"
2902 ;;
2903 domainos) osname=apollo
2904 osvers="$3"
2905 ;;
2906 dgux) osname=dgux
2907 osvers="$3"
2908 ;;
760ac839 2909 dynixptx*) osname=dynixptx
e58e581d 2910 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2911 ;;
a0d0e21e
LW
2912 freebsd) osname=freebsd
2913 osvers="$3" ;;
2914 genix) osname=genix ;;
2915 hp*) osname=hpux
bfb7748a 2916 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2917 ;;
a78b0d02 2918 irix*) osname=irix
a0d0e21e
LW
2919 case "$3" in
2920 4*) osvers=4 ;;
2921 5*) osvers=5 ;;
ecfc5424 2922 *) osvers="$3" ;;
a0d0e21e
LW
2923 esac
2924 ;;
2925 linux) osname=linux
2926 case "$3" in
a0d0e21e
LW
2927 *) osvers="$3" ;;
2928 esac
2929 ;;
28e8609d
JH
2930 MiNT) osname=mint
2931 ;;
2932 netbsd*) osname=netbsd
ecfc5424
AD
2933 osvers="$3"
2934 ;;
4e81affe
MM
2935 news-os) osvers="$3"
2936 case "$3" in
2937 4*) osname=newsos4 ;;
2938 *) osname=newsos ;;
2939 esac
2940 ;;
aaacdc8b 2941 next*) osname=next ;;
28bb1e2c 2942 nonstop-ux) osname=nonstopux ;;
aaacdc8b
GS
2943 POSIX-BC | posix-bc ) osname=posix-bc
2944 osvers="$3"
a0d0e21e 2945 ;;
ae3afa4e
TH
2946 powerux | power_ux | powermax_os | powermaxos | \
2947 powerunix | power_unix) osname=powerux
2948 osvers="$3"
2949 ;;
aaacdc8b
GS
2950 qnx) osname=qnx
2951 osvers="$4"
2952 ;;
a0d0e21e
LW
2953 solaris) osname=solaris
2954 case "$3" in
2955 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2956 *) osvers="$3" ;;
a0d0e21e
LW
2957 esac
2958 ;;
85e6fe83
LW
2959 sunos) osname=sunos
2960 case "$3" in
85e6fe83
LW
2961 5*) osname=solaris
2962 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2963 *) osvers="$3" ;;
2304df62
AD
2964 esac
2965 ;;
a0d0e21e 2966 titanos) osname=titanos
85e6fe83 2967 case "$3" in
a0d0e21e
LW
2968 1*) osvers=1 ;;
2969 2*) osvers=2 ;;
2970 3*) osvers=3 ;;
2971 4*) osvers=4 ;;
ecfc5424 2972 *) osvers="$3" ;;
2304df62
AD
2973 esac
2974 ;;
85e6fe83 2975 ultrix) osname=ultrix
ecfc5424 2976 osvers="$3"
2304df62 2977 ;;
28757baa 2978 osf1|mls+) case "$5" in
fed7345c
AD
2979 alpha)
2980 osname=dec_osf
2aa76180
JH
2981 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2982 case "$osvers" in
2983 [1-9].[0-9]*) ;;
2984 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2985 esac
ecfc5424
AD
2986 ;;
2987 hp*) osname=hp_osf1 ;;
2988 mips) osname=mips_osf1 ;;
85e6fe83
LW
2989 esac
2990 ;;
0337d152
BG
2991 unixware) osname=svr5
2992 osvers="$4"
2993 ;;
3c728e00 2994 uts) osname=uts
a0d0e21e
LW
2995 osvers="$3"
2996 ;;
3c728e00
JH
2997 vos) osvers="$3"
2998 ;;
85e6fe83 2999 $2) case "$osname" in
2304df62 3000 *isc*) ;;
a0d0e21e 3001 *freebsd*) ;;
5f05dabc 3002 svr*)
a0d0e21e
LW
3003 : svr4.x or possibly later
3004 case "svr$3" in
3005 ${osname}*)
3006 osname=svr$3
3007 osvers=$4
3008 ;;
3009 esac
3010 case "$osname" in
3011 svr4.0)
3012 : Check for ESIX
3013 if test -f /stand/boot ; then
3014 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
3015 if test -n "$INITPROG" -a -f "$INITPROG"; then
3016 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3017 if test -n "$isesix"; then
a0d0e21e
LW
3018 osname=esix4
3019 fi
3020 fi
3021 fi
3022 ;;
3023 esac
3024 ;;
2304df62 3025 *) if test -f /etc/systemid; then
a0d0e21e
LW
3026 osname=sco
3027 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 3028 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 3029 osvers=$1.$2.$3
c4f23d77 3030 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 3031 osvers=$1.$2
c4f23d77 3032 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 3033 osvers=$1
2304df62 3034 fi
a0d0e21e
LW
3035 else
3036 case "$osname" in
3037 '') : Still unknown. Probably a generic Sys V.
3038 osname="sysv"
3039 osvers="$3"
3040 ;;
3041 esac
2304df62
AD
3042 fi
3043 ;;
3044 esac
3045 ;;
a0d0e21e
LW
3046 *) case "$osname" in
3047 '') : Still unknown. Probably a generic BSD.
3048 osname="$1"
3049 osvers="$3"
3050 ;;
3051 esac
3052 ;;
2304df62
AD
3053 esac
3054 else
dfe9444c
AD
3055 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3056 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3057 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3058 osname=news_os
2304df62 3059 fi
dfe9444c 3060 $rm -f UU/kernel.what
8e07c86e
AD
3061 elif test -d c:/.; then
3062 set X $myuname
3063 osname=os2
3064 osvers="$5"
2304df62
AD
3065 fi
3066 fi
85e6fe83 3067
5440bc8e
JH
3068 case "$targetarch" in
3069 '') ;;
3070 *) hostarch=$osname
3071 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3072 osvers=''
3073 ;;
3074 esac
3075
a0d0e21e
LW
3076 : Now look for a hint file osname_osvers, unless one has been
3077 : specified already.
3078 case "$hintfile" in
3079 ''|' ')
1e127011 3080 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 3081 : Also try without trailing minor version numbers.
1e127011
DD
3082 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3083 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3084 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3085 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
3086 case "$file" in
3087 '') dflt=none ;;
3088 *) case "$osvers" in
3089 '') dflt=$file
3090 ;;
dfe9444c 3091 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 3092 dflt=$file
dfe9444c 3093 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 3094 dflt=$xfile
dfe9444c 3095 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 3096 dflt=$xxfile
dfe9444c 3097 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 3098 dflt=$xxxfile
dfe9444c 3099 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 3100 dflt=$xxxxfile
dfe9444c 3101 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
3102 dflt="${osname}"
3103 else
3104 dflt=none
3105 fi
3106 ;;
3107 esac
85e6fe83
LW
3108 ;;
3109 esac
4e2a5f63
AD
3110 if $test -f Policy.sh ; then
3111 case "$dflt" in
3112 *Policy*) ;;
3113 none) dflt="Policy" ;;
3114 *) dflt="Policy $dflt" ;;
3115 esac
3116 fi
85e6fe83 3117 ;;
a0d0e21e 3118 *)
ecfc5424 3119 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 3120 ;;
2304df62 3121 esac
1aef975c 3122
4e2a5f63
AD
3123 if $test -f Policy.sh ; then
3124 $cat <<EOM
3125
3126There's also a Policy hint file available, which should make the
3127site-specific (policy) questions easier to answer.
3128EOM
3129
3130 fi
3131
2304df62
AD
3132 $cat <<EOM
3133
3134You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 3135A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 3136is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
3137
3138EOM
4e2a5f63 3139
2304df62 3140 rp="Which of these apply, if any?"
dfe9444c 3141 . UU/myread
85e6fe83
LW
3142 tans=$ans
3143 for file in $tans; do
4e2a5f63
AD
3144 if $test X$file = XPolicy -a -f Policy.sh; then
3145 . Policy.sh
3146 $cat Policy.sh >> UU/config.sh
3147 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
3148 . $src/hints/$file.sh
3149 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 3150 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
3151 : nothing
3152 else
85e6fe83
LW
3153 : Give one chance to correct a possible typo.
3154 echo "$file.sh does not exist"
3155 dflt=$file
3156 rp="hint to use instead?"
dfe9444c 3157 . UU/myread
85e6fe83 3158 for file in $ans; do
dfe9444c
AD
3159 if $test -f "$src/hints/$file.sh"; then
3160 . $src/hints/$file.sh
3161 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
3162 elif $test X$ans = X -o X$ans = Xnone ; then
3163 : nothing
3164 else
3165 echo "$file.sh does not exist -- ignored."
3166 fi
3167 done
2304df62
AD
3168 fi
3169 done
85e6fe83 3170
2304df62 3171 hint=recommended
85e6fe83 3172 : Remember our hint file for later.
dfe9444c 3173 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3174 hintfile="$file"
85e6fe83 3175 else
a0d0e21e 3176 hintfile=''
85e6fe83 3177 fi
2304df62
AD
3178fi
3179cd UU
3180;;
3181*)
3182 echo " "
3183 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3184 tmp_n="$n"
3185 tmp_c="$c"
2304df62
AD
3186 cd ..
3187 cp $config_sh config.sh 2>/dev/null
a78b0d02 3188 chmod +w config.sh
2304df62
AD
3189 . ./config.sh
3190 cd UU
3191 cp ../config.sh .
ecfc5424
AD
3192 n="$tmp_n"
3193 c="$tmp_c"
2304df62
AD
3194 hint=previous
3195 ;;
3196esac
1aef975c 3197test "$override" && . ./optdef.sh
2304df62
AD
3198
3199: Restore computed paths
3200for file in $loclist $trylist; do
3201 eval $file="\$_$file"
3202done
3203
85e6fe83 3204cat << EOM
a0d0e21e 3205
85e6fe83 3206Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3207The default value is probably right if the name rings a bell. Otherwise,
3208since spelling matters for me, either accept the default or answer "none"
3209to leave it blank.
a0d0e21e 3210
85e6fe83 3211EOM
85e6fe83 3212case "$osname" in
a0d0e21e 3213 ''|' ')
85e6fe83 3214 case "$hintfile" in
a0d0e21e 3215 ''|' '|none) dflt=none ;;
ecfc5424 3216 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3217 esac
3218 ;;
3219 *) dflt="$osname" ;;
3220esac
3221rp="Operating system name?"
3222. ./myread
3223case "$ans" in
ecfc5424
AD
3224none) osname='' ;;
3225*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3226esac
8ff267be 3227echo " "
3228case "$osvers" in
3229 ''|' ')
3230 case "$hintfile" in
3231 ''|' '|none) dflt=none ;;
3232 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3233 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3234 case "$dflt" in
3235 ''|' ') dflt=none ;;
3236 esac
3237 ;;
3238 esac
3239 ;;
3240 *) dflt="$osvers" ;;
3241esac
3242rp="Operating system version?"
3243. ./myread
3244case "$ans" in
3245none) osvers='' ;;
3246*) osvers="$ans" ;;
3247esac
3248
02e93a22
JH
3249
3250. ./posthint.sh
3251
2304df62 3252: who configured the system
59b83a6f 3253cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 3254cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
3255case "$cf_by" in
3256"")
8ff267be 3257 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
3258 case "$cf_by" in
3259 "") cf_by=unknown ;;
8ff267be 3260 esac ;;
3261esac
2304df62 3262
b4eb6b3d
JH
3263: set up the script used to warn in case of inconsistency
3264cat <<EOS >whoa
3265$startsh
3266EOS
3267cat <<'EOSC' >>whoa
3268dflt=y
3269echo " "
3270echo "*** WHOA THERE!!! ***" >&4
3271echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3272rp=" Keep the $hint value?"
3273. ./myread
3274case "$ans" in
3275y) td=$was; tu=$was;;
3276esac
3277EOSC
3278
3279: function used to set $1 to $val
3280setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3281case "$val$was" in
3282$define$undef) . ./whoa; eval "$var=\$td";;
3283$undef$define) . ./whoa; eval "$var=\$tu";;
3284*) eval "$var=$val";;
3285esac'
3286
3287case "$usethreads" in
3288$define|true|[yY]*) dflt='y';;
3289*) dflt='n';;
3290esac
3291cat <<EOM
3292
3293Perl can be built to take advantage of threads on some systems.
3294To do so, Configure can be run with -Dusethreads.
3295
3296Note that threading is a highly experimental feature, and
3297some known race conditions still remain. If you choose to try
3298it, be very sure to not actually deploy it for production
3299purposes. README.threads has more details, and is required
3300reading if you enable threads.
3301
3302If this doesn't make any sense to you, just accept the default '$dflt'.
3303EOM
3304rp='Build a threading Perl?'
3305. ./myread
3306case "$ans" in
3307y|Y) val="$define" ;;
3308*) val="$undef" ;;
3309esac
3310set usethreads
3311eval $setvar
3312
3313case "$usethreads" in
3314$define)
3315 $cat <<EOM
3316
3317As of 5.5.640, Perl has two different internal threading implementations,
3318the 5.005 version (5005threads) and an interpreter-based version
3319(ithreads) that has one interpreter per thread. Both are very
3320experimental. This arrangement exists to help developers work out
3321which one is better.
3322
3323If you're a casual user, you probably don't want interpreter-threads
1a060de3
JH
3324at this time. But if you do, the 'threads' module allows their use,
3325and the 'Thread' module offers an interface to both 5005threads and
3326ithreads (whichever has been configured).
b4eb6b3d
JH
3327EOM
3328 : Default to ithreads unless overridden on command line or with
3329 : old config.sh
3330 dflt='y'
3331 case "$use5005threads" in
3332 $define|true|[yY]*) dflt='n';;
3333 esac
3334 case "$useithreads" in
3335 $undef|false|[nN]*) dflt='n';;
3336 esac
3337 rp='Use interpreter-based ithreads?'
3338 . ./myread
3339 case "$ans" in
3340 y|Y) val="$define" ;;
3341 *) val="$undef" ;;
3342 esac
3343 set useithreads
3344 eval $setvar
3345 : Now set use5005threads to the opposite value.
3346 case "$useithreads" in
3347 $define) val="$undef" ;;
3348 *) val="$define" ;;
3349 esac
3350 set use5005threads
3351 eval $setvar
3352 ;;
3353*)
3354 useithreads="$undef"
3355 use5005threads="$undef"
3356 ;;
3357esac
3358
c915ce7f
JH
3359case "$useithreads$use5005threads" in
3360"$define$define")
3361 $cat >&4 <<EOM
3362
3363You cannot have both the ithreads and the 5.005 threads enabled
3364at the same time. Disabling the 5.005 threads since they are
3365much less stable than the ithreads.
3366
3367EOM
3368 use5005threads="$undef"
3369 ;;
3370esac
3371
b4eb6b3d
JH
3372case "$d_oldpthreads" in
3373'') : Configure tests would be welcome here. For now, assume undef.
3374 val="$undef" ;;
3375*) val="$d_oldpthreads" ;;
3376esac
3377set d_oldpthreads
3378eval $setvar
3379
3380
3381case "$usethreads" in
3382"$define"|true|[yY]*)
3383: Look for a hint-file generated 'call-back-unit'. If the
3384: user has specified that a threading perl is to be built,
3385: we may need to set or change some other defaults.
3386 if $test -f usethreads.cbu; then
3387 echo "Your platform has some specific hints for threaded builds, using them..."
3388 . ./usethreads.cbu
3389 else
3390 $cat <<EOM
3391(Your platform doesn't have any specific hints for threaded builds.
3392 Assuming POSIX threads, then.)
3393EOM
3394 fi
3395 ;;
3396esac
3397
3398cat <<EOM
3399
3400Perl can be built so that multiple Perl interpreters can coexist
3401within the same Perl executable.
3402EOM
3403
3404case "$useithreads" in
3405$define)
3406 cat <<EOM
3407This multiple interpreter support is required for interpreter-based threads.
3408EOM
3409 val="$define"
3410 ;;
3411*) case "$usemultiplicity" in
3412 $define|true|[yY]*) dflt='y';;
3413 *) dflt='n';;
3414 esac
3415 echo " "
3416 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3417 rp='Build Perl for multiplicity?'
3418 . ./myread
3419 case "$ans" in
3420 y|Y) val="$define" ;;
3421 *) val="$undef" ;;
3422 esac
3423 ;;
3424esac
3425set usemultiplicity
3426eval $setvar
3427
96056487
JH
3428
3429case "$usemorebits" in
3430"$define"|true|[yY]*)
3431 use64bitint="$define"
3432 uselongdouble="$define"
3433 usemorebits="$define"
3434 ;;
3435*) usemorebits="$undef"
3436 ;;
3437esac
3438
e5e20432
JH
3439: make some quick guesses about what we are up against
3440echo " "
3441$echo $n "Hmm... $c"
3442echo exit 1 >bsd
3443echo exit 1 >usg
3444echo exit 1 >v7
3445echo exit 1 >osf1
3446echo exit 1 >eunice
3447echo exit 1 >xenix
3448echo exit 1 >venix
3449echo exit 1 >os2
3450d_bsd="$undef"
3451$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3452if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3453then
3454 echo "Looks kind of like an OSF/1 system, but we'll see..."
3455 echo exit 0 >osf1
381aa1ff 3456elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3457 xxx=`./loc addbib blurfl $pth`
3458 if $test -f $xxx; then
3459 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3460 echo exit 0 >bsd
3461 echo exit 0 >usg
3462 else
3463 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3464 echo "Looks kind of like an extended USG system, but we'll see..."
3465 else
3466 echo "Looks kind of like a USG system, but we'll see..."
3467 fi
3468 echo exit 0 >usg
3469 fi
3470elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3471 echo "Looks kind of like a BSD system, but we'll see..."
3472 d_bsd="$define"
3473 echo exit 0 >bsd
3474else
3475 echo "Looks kind of like a Version 7 system, but we'll see..."
3476 echo exit 0 >v7
3477fi
3478case "$eunicefix" in
3479*unixtovms*)
3480 $cat <<'EOI'
3481There is, however, a strange, musty smell in the air that reminds me of
3482something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3483EOI
3484 echo exit 0 >eunice
3485 d_eunice="$define"
3486: it so happens the Eunice I know will not run shell scripts in Unix format
3487 ;;
3488*)
3489 echo " "
3490 echo "Congratulations. You aren't running Eunice."
3491 d_eunice="$undef"
3492 ;;
3493esac
3494: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3495: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3496: semicolon as a patch separator
e5e20432
JH
3497case "$p_" in
3498:) ;;
3499*)
3500 $cat <<'EOI'
3501I have the feeling something is not exactly right, however...don't tell me...
3502lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3503(Or you may be running DOS with DJGPP.)
e5e20432
JH
3504EOI
3505 echo exit 0 >os2
3506 ;;
3507esac
3508if test -f /xenix; then
3509 echo "Actually, this looks more like a XENIX system..."
3510 echo exit 0 >xenix
3511 d_xenix="$define"
3512else
3513 echo " "
3514 echo "It's not Xenix..."
3515 d_xenix="$undef"
3516fi
3517chmod +x xenix
3518$eunicefix xenix
3519if test -f /venix; then
3520 echo "Actually, this looks more like a VENIX system..."
3521 echo exit 0 >venix
3522else
3523 echo " "
3524 if ./xenix; then
3525 : null
3526 else
3527 echo "Nor is it Venix..."
3528 fi
3529fi
3530chmod +x bsd usg v7 osf1 eunice xenix venix os2
3531$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3532$rm -f foo
3533
5869b1f1
JH
3534case "$cc" in
3535'') dflt=cc;;
3536*) dflt="$cc";;
3537esac
3538rp="Use which C compiler?"
3539. ./myread
3540cc="$ans"
e5e20432
JH
3541: Look for a hint-file generated 'call-back-unit'. Now that the
3542: user has specified the compiler, we may need to set or change some
3543: other defaults.
3544if $test -f cc.cbu; then
3545 . ./cc.cbu
3546fi
2573c5f9 3547. ./checkcc
8a27cf78 3548
e5e20432
JH
3549echo " "
3550echo "Checking for GNU cc in disguise and/or its version number..." >&4
5440bc8e 3551$cat >try.c <<EOM
e5e20432
JH
3552#include <stdio.h>
3553int main() {
3554#ifdef __GNUC__
3555#ifdef __VERSION__
3556 printf("%s\n", __VERSION__);
3557#else
3558 printf("%s\n", "1");
3559#endif
3560#endif
3561 exit(0);
3562}
3563EOM
5440bc8e
JH
3564if $cc -o try $ccflags $ldflags try.c; then
3565 gccversion=`$run ./try`
e5e20432
JH
3566 case "$gccversion" in
3567 '') echo "You are not using GNU cc." ;;
fc68435e 3568 *) echo "You are using GNU cc $gccversion."
e723fc21 3569 ccname=gcc
fc68435e 3570 ;;
e5e20432
JH
3571 esac
3572else
3573 echo " "
3574 echo "*** WHOA THERE!!! ***" >&4
3575 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3576 case "$knowitall" in
3577 '')
3578 echo " You'd better start hunting for one and let me know about it." >&4
3579 exit 1
3580 ;;
3581 esac
3582fi
5440bc8e 3583$rm -f try try.*
e5e20432
JH
3584case "$gccversion" in
35851*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3586esac
5b463ca7
KS
3587case "$gccversion" in
3588'') gccosandvers='' ;;
10b4ebb5
JH
3589*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3590 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3591 gccshortvers=''
5b463ca7 3592 case "$gccosandvers" in
02903077
JH
3593 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3594 $osname$osvers) ;; # looking good
5b463ca7
KS
3595 $osname*) cat <<EOM >&4
3596
3597*** WHOA THERE!!! ***
3598
3599 Your gcc has not been compiled for the exact release of
3600 your operating system ($gccosandvers versus $osname$osvers).
3601
3602 In general it is a good idea to keep gcc synchronized with
3603 the operating system because otherwise serious problems
3604 may ensue when trying to compile software, like Perl.
3605
3606 I'm trying to be optimistic here, though, and will continue.
3607 If later during the configuration and build icky compilation
02903077
JH
3608 problems appear (headerfile conflicts being the most common
3609 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3610 your operating system release.
3611
3612EOM
3613 ;;
81575342 3614 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3615 esac
3616 ;;
3617esac
e723fc21
JH
3618case "$ccname" in
3619'') ccname="$cc" ;;
3620esac
e5e20432 3621
640374d0 3622
bd9b35c9
JH
3623: decide how portable to be. Allow command line overrides.
3624case "$d_portable" in
3625"$undef") ;;
3626*) d_portable="$define" ;;
104d25b7 3627esac
85ab1d1d 3628
bd9b35c9
JH
3629: set up shell script to do ~ expansion
3630cat >filexp <<EOSS
3631$startsh
3632: expand filename
3633case "\$1" in
3634 ~/*|~)
3635 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3636 ;;
3637 ~*)
3638 if $test -f /bin/csh; then
3639 /bin/csh -f -c "glob \$1"
3640 failed=\$?
3641 echo ""
3642 exit \$failed
e5e20432 3643 else
bd9b35c9
JH
3644 name=\`$expr x\$1 : '..\([^/]*\)'\`
3645 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3646 if $test ! -d "\$dir"; then
3647 me=\`basename \$0\`
3648 echo "\$me: can't locate home directory for: \$name" >&2
3649 exit 1
3650 fi
3651 case "\$1" in
3652 */*)
3653 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3654 ;;
3655 *)
3656 echo \$dir
e5e20432
JH
3657 ;;
3658 esac
3659 fi
b691c02f 3660 ;;
4633a7c4 3661*)
bd9b35c9 3662 echo \$1
2304df62
AD
3663 ;;
3664esac
4633a7c4
LW
3665EOSS
3666chmod +x filexp
3667$eunicefix filexp
2304df62
AD
3668
3669: now set up to get a file name
28757baa 3670cat <<EOS >getfile
3671$startsh
3672EOS
3673cat <<'EOSC' >>getfile
2304df62
AD
3674tilde=''
3675fullpath=''
3676already=''
3677skip=''
3678none_ok=''
3679exp_file=''
a0d0e21e 3680nopath_ok=''
2304df62
AD
3681orig_rp="$rp"
3682orig_dflt="$dflt"
b233458b
JH
3683case "$gfpth" in
3684'') gfpth='.' ;;
3685esac
2304df62
AD
3686
3687case "$fn" in
ecfc5424 3688*\(*)
381aa1ff 3689 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
3690 fn=`echo $fn | sed 's/(.*)//'`
3691 ;;
3692esac
3693
3694case "$fn" in
a0d0e21e
LW
3695*:*)
3696 loc_file=`expr $fn : '.*:\(.*\)'`
3697 fn=`expr $fn : '\(.*\):.*'`
3698 ;;
3699esac
3700
3701case "$fn" in
2304df62
AD
3702*~*) tilde=true;;
3703esac
3704case "$fn" in
3705*/*) fullpath=true;;
3706esac
3707case "$fn" in
3708*+*) skip=true;;
3709esac
3710case "$fn" in
3711*n*) none_ok=true;;
3712esac
3713case "$fn" in
3714*e*) exp_file=true;;
3715esac
a0d0e21e
LW
3716case "$fn" in
3717*p*) nopath_ok=true;;
3718esac
2304df62
AD
3719
3720case "$fn" in
3721*f*) type='File';;
3722*d*) type='Directory';;
a0d0e21e 3723*l*) type='Locate';;
2304df62
AD
3724esac
3725
3726what="$type"
3727case "$what" in
3728Locate) what='File';;
3729esac
3730
3731case "$exp_file" in
3732'')
3733 case "$d_portable" in
3734 "$define") ;;
3735 *) exp_file=true;;
3736 esac
3737 ;;
3738esac
3739
3740cd ..
3741while test "$type"; do
3742 redo=''
3743 rp="$orig_rp"
3744 dflt="$orig_dflt"
3745 case "$tilde" in
3746 true) rp="$rp (~name ok)";;
3747 esac
3748 . UU/myread
ecfc5424
AD
3749 if test -f UU/getfile.ok && \
3750 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3751 then
3752 value="$ans"
3753 ansexp="$ans"
3754 break
3755 fi
2304df62
AD
3756 case "$ans" in
3757 none)
3758 value=''
3759 ansexp=''
3760 case "$none_ok" in
3761 true) type='';;
3762 esac
3763 ;;
3764 *)
3765 case "$tilde" in
3766 '') value="$ans"
3767 ansexp="$ans";;
3768 *)
3769 value=`UU/filexp $ans`
3770 case $? in
3771 0)
3772 if test "$ans" != "$value"; then
ecfc5424 3773 echo "(That expands to $value on this system.)"
2304df62
AD
3774 fi
3775 ;;
3776 *) value="$ans";;
3777 esac
3778 ansexp="$value"
3779 case "$exp_file" in
3780 '') value="$ans";;
3781 esac
3782 ;;
3783 esac
3784 case "$fullpath" in
3785 true)
3786 case "$ansexp" in
3787 /*) value="$ansexp" ;;
23da6c43 3788 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3789 *)
3790 redo=true
3791 case "$already" in
3792 true)
3793 echo "I shall only accept a full path name, as in /bin/ls." >&4
3794 echo "Use a ! shell escape if you wish to check pathnames." >&4
3795 ;;
3796 *)
3797 echo "Please give a full path name, starting with slash." >&4
3798 case "$tilde" in
3799 true)
3800 echo "Note that using ~name is ok provided it expands well." >&4
3801 already=true
3802 ;;
3803 esac
3804 esac
3805 ;;
3806 esac
3807 ;;
3808 esac
3809 case "$redo" in
3810 '')
3811 case "$type" in
3812 File)
b233458b
JH
3813 for fp in $gfpth; do
3814 if test "X$fp" = X.; then
3815 pf="$ansexp"
3816 else
3817 pf="$fp/$ansexp"
3818 fi
3819 if test -f "$pf"; then
3820 type=''
3821 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3822 then
3823 echo "($value is not a plain file, but that's ok.)"
3824 type=''
3825 fi
3826 if test X"$type" = X; then
3827 value="$pf"
3828 break
3829 fi
3830 done
2304df62
AD
3831 ;;
3832 Directory)
b233458b
JH
3833 for fp in $gfpth; do
3834 if test "X$fp" = X.; then
f78bfc9c
JH
3835 dir="$ans"
3836 direxp="$ansexp"
b233458b 3837 else
dd858076 3838 dir="$fp/$ansexp"
f78bfc9c 3839 direxp="$fp/$ansexp"
b233458b 3840 fi
f78bfc9c 3841 if test -d "$direxp"; then
b233458b 3842 type=''
f78bfc9c 3843 value="$dir"
b233458b
JH
3844 break
3845 fi
3846 done
2304df62
AD
3847 ;;
3848 Locate)
40000a8c 3849 if test -d "$ansexp"; then
a0d0e21e
LW
3850 echo "(Looking for $loc_file in directory $value.)"
3851 value="$value/$loc_file"
40000a8c 3852 ansexp="$ansexp/$loc_file"
2304df62 3853 fi
40000a8c 3854 if test -f "$ansexp"; then
2304df62
AD
3855 type=''
3856 fi
a0d0e21e
LW
3857 case "$nopath_ok" in
3858 true) case "$value" in
3859 */*) ;;
3860 *) echo "Assuming $value will be in people's path."
3861 type=''
3862 ;;
3863 esac
3864 ;;
3865 esac
2304df62
AD
3866 ;;
3867 esac
3868
3869 case "$skip" in
3870 true) type='';
3871 esac
3872
3873 case "$type" in
3874 '') ;;
3875 *)
3876 if test "$fastread" = yes; then
3877 dflt=y
3878 else
3879 dflt=n
3880 fi
3881 rp="$what $value doesn't exist. Use that name anyway?"
3882 . UU/myread
3883 dflt=''
3884 case "$ans" in
3885 y*) type='';;
3886 *) echo " ";;
3887 esac
3888 ;;
3889 esac
3890 ;;
3891 esac
3892 ;;
3893 esac
3894done
3895cd UU
3896ans="$value"
3897rp="$orig_rp"
3898dflt="$orig_dflt"
ecfc5424 3899rm -f getfile.ok
b233458b 3900test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3901EOSC
3902
bd9b35c9
JH
3903: What should the include directory be ?
3904echo " "
3905$echo $n "Hmm... $c"
3906dflt='/usr/include'
3907incpath=''
3908mips_type=''
3909if $test -f /bin/mips && /bin/mips; then
3910 echo "Looks like a MIPS system..."
3911 $cat >usr.c <<'EOCP'
3912#ifdef SYSTYPE_BSD43
3913/bsd43
3914#endif
3915EOCP
8a27cf78 3916 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3917 dflt='/bsd43/usr/include'
3918 incpath='/bsd43'
3919 mips_type='BSD 4.3'
3920 else
3921 mips_type='System V'
3922 fi
3923 $rm -f usr.c usr.out
3924 echo "and you're compiling with the $mips_type compiler and libraries."
3925 xxx_prompt=y
3926 echo "exit 0" >mips
3927else
3928 echo "Doesn't look like a MIPS system."
3929 xxx_prompt=n
3930 echo "exit 1" >mips
3931fi
3932chmod +x mips
3933$eunicefix mips
3934case "$usrinc" in
3935'') ;;
3936*) dflt="$usrinc";;
3937esac
3938case "$xxx_prompt" in
3939y) fn=d/
3940 echo " "
3941 rp='Where are the include files you want to use?'
3942 . ./getfile
3943 usrinc="$ans"
8e07c86e 3944 ;;
bd9b35c9 3945*) usrinc="$dflt"
8e07c86e
AD
3946 ;;
3947esac
2304df62 3948
96056487
JH
3949: see how we invoke the C preprocessor
3950echo " "
3951echo "Now, how can we feed standard input to your C preprocessor..." >&4
3952cat <<'EOT' >testcpp.c
3953#define ABC abc
3954#define XYZ xyz
3955ABC.XYZ
3956EOT
3957cd ..
3958if test ! -f cppstdin; then
3959 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3960 # AIX cc -E doesn't show the absolute headerfile
3961 # locations but we'll cheat by using the -M flag.
3962 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
3963 else
3964 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3965 fi
3966else
3967 echo "Keeping your $hint cppstdin wrapper."
3968fi
3969chmod 755 cppstdin
3970wrapper=`pwd`/cppstdin
3971ok='false'
3972cd UU
3973
3974if $test "X$cppstdin" != "X" && \
3975 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3976 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3977then
3978 echo "You used to use $cppstdin $cppminus so we'll use that again."
3979 case "$cpprun" in
3980 '') echo "But let's see if we can live without a wrapper..." ;;
3981 *)
3982 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3983 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3984 then
3985 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3986 ok='true'
3987 else
3988 echo "(However, $cpprun $cpplast does not work, let's see...)"
3989 fi
3990 ;;
3991 esac
3992else
3993 case "$cppstdin" in
3994 '') ;;
3995 *)
3996 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3997 ;;
3998 esac
3999fi
4000
4001if $ok; then
4002 : nothing
4003elif echo 'Maybe "'"$cc"' -E" will work...'; \
4004 $cc -E <testcpp.c >testcpp.out 2>&1; \
4005 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4006 echo "Yup, it does."
4007 x_cpp="$cc -E"
4008 x_minus='';
4009elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4010 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4011 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4012 echo "Yup, it does."
4013 x_cpp="$cc -E"
4014 x_minus='-';
4015elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4016 $cc -P <testcpp.c >testcpp.out 2>&1; \
4017 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4018 echo "Yipee, that works!"
4019 x_cpp="$cc -P"
4020 x_minus='';
4021elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4022 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4023 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4024 echo "At long last!"
4025 x_cpp="$cc -P"
4026 x_minus='-';
4027elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4028 $cpp <testcpp.c >testcpp.out 2>&1; \
4029 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4030 echo "It works!"
4031 x_cpp="$cpp"
4032 x_minus='';
4033elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4034 $cpp - <testcpp.c >testcpp.out 2>&1; \
4035 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4036 echo "Hooray, it works! I was beginning to wonder."
4037 x_cpp="$cpp"
4038 x_minus='-';
4039elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4040 $wrapper <testcpp.c >testcpp.out 2>&1; \
4041 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4042 x_cpp="$wrapper"
4043 x_minus=''
4044 echo "Eureka!"
4045else
4046 dflt=''
4047 rp="No dice. I can't find a C preprocessor. Name one:"
4048 . ./myread
4049 x_cpp="$ans"
4050 x_minus=''
4051 $x_cpp <testcpp.c >testcpp.out 2>&1
4052 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4053 echo "OK, that will do." >&4
4054 else
4055echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4056 exit 1
4057 fi
4058fi
4059
4060case "$ok" in
4061false)
4062 cppstdin="$x_cpp"
4063 cppminus="$x_minus"
4064 cpprun="$x_cpp"
4065 cpplast="$x_minus"
4066 set X $x_cpp
4067 shift
4068 case "$1" in
4069 "$cpp")
4070 echo "Perhaps can we force $cc -E using a wrapper..."
4071 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4072 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4073 then
4074 echo "Yup, we can."
4075 cppstdin="$wrapper"
4076 cppminus='';
4077 else
4078 echo "Nope, we'll have to live without it..."
4079 fi
4080 ;;
4081 esac
4082 case "$cpprun" in
4083 "$wrapper")
4084 cpprun=''
4085 cpplast=''
4086 ;;
4087 esac
4088 ;;
4089esac
4090
4091case "$cppstdin" in
4092"$wrapper"|'cppstdin') ;;
4093*) $rm -f $wrapper;;
4094esac
4095$rm -f testcpp.c testcpp.out
4096
bd9b35c9
JH
4097: Set private lib path
4098case "$plibpth" in
4099'') if ./mips; then
4100 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4101 fi;;
4102esac
4103case "$libpth" in
4104' ') dlist='';;
4105'') dlist="$loclibpth $plibpth $glibpth";;
4106*) dlist="$libpth";;
4107esac
4108
4109: Now check and see which directories actually exist, avoiding duplicates
4110libpth=''
4111for xxx in $dlist
4112do
4113 if $test -d $xxx; then
4114 case " $libpth " in
4115 *" $xxx "*) ;;
4116 *) libpth="$libpth $xxx";;
4117 esac
4118 fi
4119done
4120$cat <<'EOM'
4121
4122Some systems have incompatible or broken versions of libraries. Among
4123the directories listed in the question below, please remove any you
4124know not to be holding relevant libraries, and add any that are needed.
4125Say "none" for none.
8e07c86e
AD
4126
4127EOM
bd9b35c9
JH
4128case "$libpth" in
4129'') dflt='none';;
8e07c86e 4130*)
bd9b35c9
JH
4131 set X $libpth
4132 shift
4133 dflt=${1+"$@"}
8e07c86e 4134 ;;
a0d0e21e 4135esac
bd9b35c9
JH
4136rp="Directories to use for library searches?"
4137. ./myread
4138case "$ans" in
4139none) libpth=' ';;
4140*) libpth="$ans";;
4141esac
a0d0e21e 4142
bd9b35c9
JH
4143: compute shared library extension
4144case "$so" in
4145'')
4146 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4147 dflt='sl'
dd4e71fd 4148 else
bd9b35c9 4149 dflt='so'
dd4e71fd
JH
4150 fi
4151 ;;
bd9b35c9 4152*) dflt="$so";;
dd4e71fd 4153esac
dd4e71fd
JH
4154$cat <<EOM
4155
bd9b35c9 4156On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 4157you want to suppress searching of shared libraries for the remainder
bd9b35c9 4158of this configuration.
dd4e71fd
JH
4159
4160EOM
bd9b35c9
JH
4161rp='What is the file extension used for shared libraries?'
4162. ./myread
4163so="$ans"
dd4e71fd 4164
bd9b35c9
JH
4165: Define several unixisms.
4166: Hints files or command line option can be used to override them.
4167: The convoluted testing is in case hints files set either the old
4168: or the new name.
4169case "$_exe" in
4170'') case "$exe_ext" in
1fef16b3 4171 '') ;;
bd9b35c9 4172 *) _exe="$exe_ext" ;;
dd4e71fd 4173 esac
bd9b35c9 4174 ;;
bfb7748a 4175esac
bd9b35c9
JH
4176case "$_a" in
4177'') case "$lib_ext" in
4178 '') _a='.a';;
4179 *) _a="$lib_ext" ;;
dd4e71fd
JH
4180 esac
4181 ;;
dd4e71fd 4182esac
bd9b35c9
JH
4183case "$_o" in
4184'') case "$obj_ext" in
4185 '') _o='.o';;
4186 *) _o="$obj_ext";;
4187 esac
4188 ;;
4189esac
4190case "$p_" in
4191'') case "$path_sep" in
4192 '') p_=':';;
4193 *) p_="$path_sep";;
4194 esac
4195 ;;
4196esac
4197exe_ext=$_exe
4198lib_ext=$_a
4199obj_ext=$_o
4200path_sep=$p_
dd4e71fd 4201
b4eb6b3d
JH
4202: Which makefile gets called first. This is used by make depend.
4203case "$firstmakefile" in
4204'') firstmakefile='makefile';;
4633a7c4 4205esac
4633a7c4 4206
0f0995ae
JH
4207case "$usesocks" in
4208$define|true|[yY]*) dflt='y';;
4209*) dflt='n';;
4210esac
bd9b35c9 4211cat <<EOM
4633a7c4 4212
bd9b35c9 4213Perl can be built to use the SOCKS proxy protocol library. To do so,
cf829ab0
JH
4214Configure must be run with -Dusesocks. If you use SOCKS you also need
4215to use the PerlIO abstraction layer, this will be implicitly selected.
4633a7c4 4216
0f0995ae 4217If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 4218EOM
bd9b35c9
JH
4219rp='Build Perl for SOCKS?'
4220. ./myread
4221case "$ans" in
4222y|Y) val="$define" ;;
4223*) val="$undef" ;;
4224esac
4225set usesocks
4226eval $setvar
4227
cf829ab0
JH
4228case "$usesocks" in
4229$define|true|[yY]*) useperlio="$define";;
4230esac
4231
bd9b35c9
JH
4232: Looking for optional libraries
4233echo " "
4234echo "Checking for optional libraries..." >&4
4235case "$libs" in
4236' '|'') dflt='';;
4237*) dflt="$libs";;
4238esac
4239case "$libswanted" in
4240'') libswanted='c_s';;
4241esac
4242case "$usesocks" in
923fc586 4243"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 4244esac
68435ea7
JH
4245libsfound=''
4246libsfiles=''
4247libsdirs=''
13b3f787
JH
4248libspath=''
4249for thisdir in $libpth $xlibpth; do
4250 test -d $thisdir && libspath="$libspath $thisdir"
4251done
bd9b35c9 4252for thislib in $libswanted; do
13b3f787 4253 for thisdir in $libspath; do
f7dd4e7f
JH
4254 xxx=''
4255 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4256 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4257 $test -f "$xxx" && eval $libscheck
4258 $test -f "$xxx" && libstyle=shared
4259 fi
4260 if test ! -f "$xxx"; then
4261 xxx=$thisdir/lib$thislib.$so
4262 $test -f "$xxx" && eval $libscheck
4263 $test -f "$xxx" && libstyle=shared
4264 fi
4265 if test ! -f "$xxx"; then
4266 xxx=$thisdir/lib$thislib$_a
4267 $test -f "$xxx" && eval $libscheck
4268 $test -f "$xxx" && libstyle=static
4269 fi
4270 if test ! -f "$xxx"; then
4271 xxx=$thisdir/$thislib$_a
4272 $test -f "$xxx" && eval $libscheck
4273 $test -f "$xxx" && libstyle=static
4274 fi
4275 if test ! -f "$xxx"; then
4276 xxx=$thisdir/lib${thislib}_s$_a
4277 $test -f "$xxx" && eval $libscheck
4278 $test -f "$xxx" && libstyle=static
09ea5ba9 4279 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
4280 fi
4281 if test ! -f "$xxx"; then
4282 xxx=$thisdir/Slib$thislib$_a
4283 $test -f "$xxx" && eval $libscheck
4284 $test -f "$xxx" && libstyle=static
4285 fi
4286 if $test -f "$xxx"; then
43999f95 4287 case "$libstyle" in
f7dd4e7f
JH
4288 shared) echo "Found -l$thislib (shared)." ;;
4289 static) echo "Found -l$thislib." ;;
4290 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 4291 esac
bd9b35c9
JH
4292 case " $dflt " in
4293 *"-l$thislib "*);;
f7dd4e7f 4294 *) dflt="$dflt -l$thislib"
43999f95
JH
4295 libsfound="$libsfound $xxx"
4296 yyy=`basename $xxx`
4297 libsfiles="$libsfiles $yyy"
1e127011 4298 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
4299 case " $libsdirs " in
4300 *" $yyy "*) ;;
4301 *) libsdirs="$libsdirs $yyy" ;;
4302 esac
4303 ;;
bd9b35c9 4304 esac
f7dd4e7f
JH
4305 break
4306 fi
4307 done
4308 if $test ! -f "$xxx"; then
4309 echo "No -l$thislib."
bd9b35c9
JH
4310 fi
4311done
4312set X $dflt
4313shift
4314dflt="$*"
4315case "$libs" in
4316'') dflt="$dflt";;
4317*) dflt="$libs";;
4318esac
4319case "$dflt" in
4320' '|'') dflt='none';;
4321esac
4633a7c4 4322
bd9b35c9 4323$cat <<EOM
4633a7c4 4324
bd9b35c9
JH
4325In order to compile $package on your machine, a number of libraries
4326are usually needed. Include any other special libraries here as well.
4327Say "none" for none. The default list is almost always right.
8e07c86e 4328EOM
8e07c86e 4329
bd9b35c9
JH
4330echo " "
4331rp="What libraries to use?"
4332. ./myread
4333case "$ans" in
4334none) libs=' ';;
4335*) libs="$ans";;
4336esac
d71b2b6b 4337
bd9b35c9
JH
4338: determine optimization, if desired, or use for debug flag also
4339case "$optimize" in
4340' '|$undef) dflt='none';;
4341'') dflt='-O';;
4342*) dflt="$optimize";;
4343esac
4344$cat <<EOH
d71b2b6b 4345
bd9b35c9
JH
4346By default, $package compiles with the -O flag to use the optimizer.
4347Alternately, you might want to use the symbolic debugger, which uses
4348the -g flag (on traditional Unix systems). Either flag can be
4349specified here. To use neither flag, specify the word "none".
d71b2b6b 4350
bd9b35c9
JH
4351EOH
4352rp="What optimizer/debugger flag should be used?"
4353. ./myread
4354optimize="$ans"
4355case "$optimize" in
4356'none') optimize=" ";;
4357esac
4358
4359dflt=''
4360: We will not override a previous value, but we might want to
4361: augment a hint file
4362case "$hint" in
4363default|recommended)
4364 case "$gccversion" in
4365 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4366 esac
bd9b35c9
JH
4367 case "$optimize" in
4368 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4369 esac
bd9b35c9
JH
4370 case "$gccversion" in
4371 2*) if test -d /etc/conf/kconfig.d &&
4372 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4373 then
4374 dflt="$dflt -posix"
4375 fi
f0d04425 4376 ;;
bd9b35c9
JH
4377 esac
4378 case "$gccversion" in
4379 1*) ;;
4380 2.[0-8]*) ;;
4381 ?*) echo " "
4382 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4383 echo 'int main(void) { return 0; }' > gcctest.c
4384 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4385 echo "Yes, it does." 2>&1
4386 case "$ccflags" in
4387 *strict-aliasing*)
4388 echo "Leaving current flags $ccflags alone." 2>&1
4389 ;;
4390 *) dflt="$dflt -fno-strict-aliasing" ;;
4391 esac
4392 else
4393 echo "Nope, it doesn't, but that's ok." 2>&1
4394 fi
f0d04425 4395 ;;
e5e20432
JH
4396 esac
4397 ;;
4398esac
4399
bd9b35c9
JH
4400case "$mips_type" in
4401*BSD*|'') inclwanted="$locincpth $usrinc";;
4402*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4403esac
4404for thisincl in $inclwanted; do
4405 if $test -d $thisincl; then
4406 if $test x$thisincl != x$usrinc; then
4407 case "$dflt" in
422af00a
LC
4408 *" -I$thisincl "*);;
4409 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
4410 esac
4411 fi
4412 fi
4413done
40a7a20a 4414
bd9b35c9
JH
4415inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4416 xxx=true;
4417elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4418 xxx=true;
4419else
4420 xxx=false;
4421fi;
4422if $xxx; then
4423 case "$dflt" in
4424 *$2*);;
4425 *) dflt="$dflt -D$2";;
4426 esac;
4427fi'
40a7a20a 4428
bd9b35c9 4429set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4430
bd9b35c9
JH
4431case "$usesocks" in
4432$define)
4433 ccflags="$ccflags -DSOCKS"
4434 ;;
4435esac
40a7a20a 4436
bd9b35c9
JH
4437case "$hint" in
4438default|recommended) dflt="$ccflags $dflt" ;;
4439*) dflt="$ccflags";;
4440esac
40a7a20a 4441
bd9b35c9
JH
4442case "$dflt" in
4443''|' ') dflt=none;;
4444esac
422af00a 4445
bd9b35c9 4446$cat <<EOH
40a7a20a 4447
bd9b35c9
JH
4448Your C compiler may want other flags. For this question you should include
4449-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4450but you should NOT include libraries or ld flags like -lwhatever. If you
4451want $package to honor its debug switch, you should include -DDEBUGGING here.
4452Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4453
bd9b35c9 4454To use no flags, specify the word "none".
40a7a20a 4455
bd9b35c9
JH
4456EOH
4457set X $dflt
4458shift
4459dflt=${1+"$@"}
4460rp="Any additional cc flags?"
4461. ./myread
4462case "$ans" in
4463none) ccflags='';;
4464*) ccflags="$ans";;
4465esac
8e07c86e 4466
bd9b35c9 4467: the following weeds options from ccflags that are of no interest to cpp
58e77565
JH
4468case "$cppflags" in
4469'') cppflags="$ccflags" ;;
4470*) cppflags="$cppflags $ccflags" ;;
4471esac
bd9b35c9
JH
4472case "$gccversion" in
44731*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4474esac
bd9b35c9
JH
4475case "$mips_type" in
4476'');;
4477*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4478esac
4479case "$cppflags" in
4480'');;
4481*)
4482 echo " "
4483 echo "Let me guess what the preprocessor flags are..." >&4
4484 set X $cppflags
4485 shift
4486 cppflags=''
4487 $cat >cpp.c <<'EOM'
4488#define BLURFL foo
8e07c86e 4489
bd9b35c9
JH
4490BLURFL xx LFRULB
4491EOM
4492 previous=''
4493 for flag in $*
4494 do
4495 case "$flag" in
4496 -*) ftry="$flag";;
4497 *) ftry="$previous $flag";;
4498 esac
4499 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4500 >cpp1.out 2>/dev/null && \
4501 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4502 >cpp2.out 2>/dev/null && \
4503 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4504 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4505 then
4506 cppflags="$cppflags $ftry"
4507 previous=''
4508 else
4509 previous="$flag"
4510 fi
4511 done
4512 set X $cppflags
4513 shift
4514 cppflags=${1+"$@"}
4515 case "$cppflags" in
4516 *-*) echo "They appear to be: $cppflags";;
4517 esac
4518 $rm -f cpp.c cpp?.out
2afac517 4519 ;;
4520esac
8e07c86e 4521
bd9b35c9
JH
4522: flags used in final linking phase
4523case "$ldflags" in
4524'') if ./venix; then
4525 dflt='-i -z'
10a23457 4526 else
bd9b35c9 4527 dflt=''
10a23457 4528 fi
bd9b35c9
JH
4529 case "$ccflags" in
4530 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4531 esac
bd9b35c9
JH
4532 ;;
4533*) dflt="$ldflags";;
4534esac
4535
4536: Try to guess additional flags to pick up local libraries.
4537for thislibdir in $libpth; do
4538 case " $loclibpth " in
4539 *" $thislibdir "*)
4540 case "$dflt " in
4541 *"-L$thislibdir "*) ;;
4542 *) dflt="$dflt -L$thislibdir" ;;
4543 esac
c4f23d77
AD
4544 ;;
4545 esac
bd9b35c9 4546done
c4f23d77 4547
bd9b35c9
JH
4548case "$dflt" in
4549'') dflt='none' ;;
4550esac
c4f23d77 4551
bd9b35c9
JH
4552$cat <<EOH
4553
4554Your C linker may need flags. For this question you should
4555include -L/whatever and any other flags used by the C linker, but you
4556should NOT include libraries like -lwhatever.
4557
4558Make sure you include the appropriate -L/path flags if your C linker
4559does not normally search all of the directories you specified above,
4560namely
4561 $libpth
4562To use no flags, specify the word "none".
4563
4564EOH
4565
4566rp="Any additional ld flags (NOT including libraries)?"
4567. ./myread
4568case "$ans" in
4569none) ldflags='';;
4570*) ldflags="$ans";;
4571esac
4572rmlist="$rmlist pdp11"
4573
4574: coherency check
4575echo " "
4576echo "Checking your choice of C compiler and flags for coherency..." >&4
4577$cat > try.c <<'EOF'
4578#include <stdio.h>
4579int main() { printf("Ok\n"); exit(0); }
4580EOF
7a282f6d 4581set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4582shift
4583$cat >try.msg <<'EOM'
4584I've tried to compile and run the following simple program:
4585
4586EOM
4587$cat try.c >> try.msg
4588
4589$cat >> try.msg <<EOM
4590
4591I used the command:
4592
4593 $*
5440bc8e 4594 $run ./try
bd9b35c9
JH
4595
4596and I got the following output:
4597
4598EOM
4599dflt=y
73614538 4600if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5440bc8e
JH
4601 if $sh -c "$run ./try" >>try.msg 2>&1; then
4602 xxx=`$run ./try`
bd9b35c9
JH
4603 case "$xxx" in
4604 "Ok") dflt=n ;;
4605 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4606 case " $libs " in
4607 *" -lsfio "*)
4608 cat >> try.msg <<'EOQS'
4609If $libs contains -lsfio, and sfio is mis-configured, then it
4610sometimes (apparently) runs and exits with a 0 status, but with no
4611output! It may have to do with sfio's use of _exit vs. exit.
4612
4613EOQS
4614 rp="You have a big problem. Shall I abort Configure"
4615 dflt=y
4616 ;;
4617 esac
4618 ;;
4619 esac
4620 else
4621 echo "The program compiled OK, but exited with status $?." >>try.msg
4622 rp="You have a problem. Shall I abort Configure"
4623 dflt=y
4624 fi
4625else
4626 echo "I can't compile the test program." >>try.msg
4627 rp="You have a BIG problem. Shall I abort Configure"
4628 dflt=y
4629fi
4630case "$dflt" in
4631y)
4632 $cat try.msg >&4
4633 case "$knowitall" in
4634 '')
4635 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4636 ;;
bd9b35c9 4637 *) dflt=n;;
c4f23d77 4638 esac
bd9b35c9
JH
4639 echo " "
4640 . ./myread
4641 case "$ans" in
4642 n*|N*) ;;
4643 *) echo "Ok. Stopping Configure." >&4
4644 exit 1
c4f23d77
AD
4645 ;;
4646 esac
4647 ;;
bd9b35c9 4648n) echo "OK, that should do.";;
c4f23d77 4649esac
bd9b35c9 4650$rm -f try try.* core
c4f23d77 4651
bd9b35c9
JH
4652: define a shorthand compile call
4653compile='
4654mc_file=$1;
4655shift;
08413ebc 4656$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4657: define a shorthand compile call for compilations that should be ok.
4658compile_ok='
4659mc_file=$1;
4660shift;
7a282f6d 4661$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4662
b4eb6b3d 4663: check for lengths of integral types
bd9b35c9 4664echo " "
b4eb6b3d
JH
4665case "$intsize" in
4666'')
4667 echo "Checking to see how big your integers are..." >&4
5440bc8e 4668 $cat >try.c <<'EOCP'
bd9b35c9
JH
4669#include <stdio.h>
4670int main()
4671{
b4eb6b3d
JH
4672 printf("intsize=%d;\n", (int)sizeof(int));
4673 printf("longsize=%d;\n", (int)sizeof(long));
4674 printf("shortsize=%d;\n", (int)sizeof(short));
4675 exit(0);
bd9b35c9 4676}
b4eb6b3d 4677EOCP
5440bc8e
JH
4678 set try
4679 if eval $compile_ok && $run ./try > /dev/null; then
4680 eval `$run ./try`
b4eb6b3d
JH
4681 echo "Your integers are $intsize bytes long."
4682 echo "Your long integers are $longsize bytes long."
4683 echo "Your short integers are $shortsize bytes long."
4684 else
4685 $cat >&4 <<EOM
4686!
4687Help! I can't compile and run the intsize test program: please enlighten me!
4688(This is probably a misconfiguration in your system or libraries, and
4689you really ought to fix it. Still, I'll try anyway.)
4690!
bd9b35c9 4691EOM
b4eb6b3d
JH
4692 dflt=4
4693 rp="What is the size of an integer (in bytes)?"
96056487
JH
4694 . ./myread
4695 intsize="$ans"
4696 dflt=$intsize
4697 rp="What is the size of a long integer (in bytes)?"
4698 . ./myread
4699 longsize="$ans"
4700 dflt=2
4701 rp="What is the size of a short integer (in bytes)?"
4702 . ./myread
4703 shortsize="$ans"
b4eb6b3d
JH
4704 fi
4705 ;;
4706esac
96056487 4707$rm -f try try.*
b4eb6b3d 4708
8dfa8df9
JH
4709: check for void type
4710echo " "
4711echo "Checking to see how well your C compiler groks the void type..." >&4
4712case "$voidflags" in
4713'')
4714 $cat >try.c <<'EOCP'
4715#if TRY & 1
4716void sub() {
4717#else
4718sub() {
4719#endif
4720 extern void moo(); /* function returning void */
4721 void (*goo)(); /* ptr to func returning void */
4722#if TRY & 8
4723 void *hue; /* generic ptr */
4724#endif
4725#if TRY & 2
4726 void (*foo[10])();
4727#endif
4728
4729#if TRY & 4
4730 if(goo == moo) {
4731 exit(0);
4732 }
4733#endif
4734 exit(0);
4735}
4736int main() { sub(); }
4737EOCP
4738 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4739 voidflags=$defvoidused
4740 echo "Good. It appears to support void to the level $package wants.">&4
4741 if $contains warning .out >/dev/null 2>&1; then
4742 echo "However, you might get some warnings that look like this:"
4743 $cat .out
4744 fi
4745 else
4746echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4747 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4748 echo "It supports 1..."
4749 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4750 echo "It also supports 2..."
4751 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4752 voidflags=7
4753 echo "And it supports 4 but not 8 definitely."
4754 else
4755 echo "It doesn't support 4..."
4756 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4757 voidflags=11
4758 echo "But it supports 8."
4759 else
4760 voidflags=3
4761 echo "Neither does it support 8."
4762 fi
4763 fi
4764 else
4765 echo "It does not support 2..."
4766 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4767 voidflags=13
4768 echo "But it supports 4 and 8."
4769 else
4770 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4771 voidflags=5
4772 echo "And it supports 4 but has not heard about 8."
4773 else
4774 echo "However it supports 8 but not 4."
4775 fi
4776 fi
4777 fi
4778 else
4779 echo "There is no support at all for void."
4780 voidflags=0
4781 fi
4782 fi
4783esac
4784case "$voidflags" in
4785"$defvoidused") ;;
4786*) $cat >&4 <<'EOM'
4787 Support flag bits are:
4788 1: basic void declarations.
4789 2: arrays of pointers to functions returning void.
4790 4: operations between pointers to and addresses of void functions.
4791 8: generic void pointers.
4792EOM
4793 dflt="$voidflags";
4794 rp="Your void support flags add up to what?"
4795 . ./myread
4796 voidflags="$ans"
4797 ;;
4798esac
4799$rm -f try.* .out
4800
4801: check for length of pointer
4802echo " "
4803case "$ptrsize" in
4804'')
4805 echo "Checking to see how big your pointers are..." >&4
4806 if test "$voidflags" -gt 7; then
4807 echo '#define VOID_PTR char *' > try.c
4808 else
4809 echo '#define VOID_PTR void *' > try.c
4810 fi
4811 $cat >>try.c <<'EOCP'
4812#include <stdio.h>
4813int main()
4814{
4815 printf("%d\n", (int)sizeof(VOID_PTR));
4816 exit(0);
4817}
4818EOCP
4819 set try
4820 if eval $compile_ok; then
5440bc8e 4821 ptrsize=`$run ./try`
8dfa8df9
JH
4822 echo "Your pointers are $ptrsize bytes long."
4823 else
4824 dflt='4'
4825 echo "(I can't seem to compile the test program. Guessing...)" >&4
4826 rp="What is the size of a pointer (in bytes)?"
4827 . ./myread
4828 ptrsize="$ans"
4829 fi
4830 ;;
4831esac
4832$rm -f try.c try
4833
4834: check for long long
4835echo " "
4836echo "Checking to see if you have long long..." >&4
4837echo 'int main() { long long x = 7; return 0; }' > try.c
4838set try
4839if eval $compile; then
4840 val="$define"
4841 echo "You have long long."
4842else
4843 val="$undef"
4844 echo "You do not have long long."
4845fi
4846$rm try.*
4847set d_longlong
4848eval $setvar
4849
4850: check for length of long long
4851case "${d_longlong}${longlongsize}" in
4852$define)
4853 echo " "
4854 echo "Checking to see how big your long longs are..." >&4
4855 $cat >try.c <<'EOCP'
4856#include <stdio.h>
4857int main()
4858{
4859 printf("%d\n", (int)sizeof(long long));
4860 return(0);
4861}
4862EOCP
4863 set try
4864 if eval $compile_ok; then
5440bc8e 4865 longlongsize=`$run ./try`
8dfa8df9
JH
4866 echo "Your long longs are $longlongsize bytes long."
4867 else
4868 dflt='8'
4869 echo " "
4870 echo "(I can't seem to compile the test program. Guessing...)"
4871 rp="What is the size of a long long (in bytes)?"
4872 . ./myread
4873 longlongsize="$ans"
4874 fi
4875 if $test "X$longsize" = "X$longlongsize"; then
4876 echo "(That isn't any different from an ordinary long.)"
4877 fi
4878 ;;
4879esac
4880$rm -f try.* try
4881
4882: determine filename position in cpp output
4883echo " "
4884echo "Computing filename position in cpp output for #include directives..." >&4
a5a94ea5
JH
4885case "$osname" in
4886vos) testaccess=-e ;;
4887*) testaccess=-r ;;
4888esac
8dfa8df9
JH
4889echo '#include <stdio.h>' > foo.c
4890$cat >fieldn <<EOF
4891$startsh
4892$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4893$grep '^[ ]*#.*stdio\.h' | \
4894while read cline; do
4895 pos=1
4896 set \$cline
4897 while $test \$# -gt 0; do
a5a94ea5 4898 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
8dfa8df9
JH
4899 echo "\$pos"
4900 exit 0
4901 fi
4902 shift
4903 pos=\`expr \$pos + 1\`
4904 done
4905done
4906EOF
4907chmod +x fieldn
4908fieldn=`./fieldn`
4909$rm -f foo.c fieldn
4910case $fieldn in
4911'') pos='???';;
49121) pos=first;;
49132) pos=second;;
49143) pos=third;;
4915*) pos="${fieldn}th";;
4916esac
4917echo "Your cpp writes the filename in the $pos field of the line."
4918
3c728e00
JH
4919case "$osname" in
4920vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
4921*) cppfilter='' ;;
4922esac
8dfa8df9
JH
4923: locate header file
4924$cat >findhdr <<EOF
4925$startsh
4926wanted=\$1
4927name=''
4928for usrincdir in $usrinc
4929do
4930 if test -f \$usrincdir/\$wanted; then
4931 echo "\$usrincdir/\$wanted"
4932 exit 0
4933 fi
4934done
4935awkprg='{ print \$$fieldn }'
4936echo "#include <\$wanted>" > foo\$\$.c
4937$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
3c728e00 4938$cppfilter $grep "^[ ]*#.*\$wanted" | \
8dfa8df9
JH
4939while read cline; do
4940 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4941 case "\$name" in
4942 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4943 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4944 *) exit 2;;
4945 esac;
4946done;
4947#
4948# status = 0: grep returned 0 lines, case statement not executed
4949# status = 1: headerfile found
4950# status = 2: while loop executed, no headerfile found
4951#
4952status=\$?
4953$rm -f foo\$\$.c;
4954if test \$status -eq 1; then
4955 exit 0;
4956fi
4957exit 1
4958EOF
4959chmod +x findhdr
4960
4961: define an alternate in-header-list? function
4962inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4963cont=true; xxf="echo \"<\$1> found.\" >&4";
4964case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4965*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4966esac;
4967case $# in 4) instead=instead;; *) instead="at last";; esac;
4968while $test "$cont"; do
4969 xxx=`./findhdr $1`
4970 var=$2; eval "was=\$$2";
4971 if $test "$xxx" && $test -r "$xxx";
4972 then eval $xxf;
4973 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4974 cont="";
4975 else eval $xxnf;
4976 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4977 set $yyy; shift; shift; yyy=$@;
4978 case $# in 0) cont="";;
4979 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4980 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4981 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4982 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4983 esac;
4984done;
4985while $test "$yyy";
4986do set $yyy; var=$2; eval "was=\$$2";
4987 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4988 set $yyy; shift; shift; yyy=$@;
4989done'
4990
4991: see if inttypes.h is available
4992: we want a real compile instead of Inhdr because some systems
4993: have an inttypes.h which includes non-existent headers
4994echo " "
4995$cat >try.c <<EOCP
4996#include <inttypes.h>
4997int main() {
4998 static int32_t foo32 = 0x12345678;
4999}
5000EOCP
5001set try
5002if eval $compile; then
5003 echo "<inttypes.h> found." >&4
5004 val="$define"
5005else
5006 echo "<inttypes.h> NOT found." >&4
5007 val="$undef"
5008fi
5009$rm -f try.c try
5010set i_inttypes
5011eval $setvar
5012
5013: check for int64_t
5014echo " "
5015echo "Checking to see if you have int64_t..." >&4
5016$cat >try.c <<EOCP
5017#include <sys/types.h>
5018#$i_inttypes I_INTTYPES
5019#ifdef I_INTTYPES
5020#include <inttypes.h>
5021#endif
5022int main() { int64_t x = 7; }
5023EOCP
5024set try
5025if eval $compile; then
5026 val="$define"
5027 echo "You have int64_t."
5028else
5029 val="$undef"
5030 echo "You do not have int64_t."
5031fi
5032$rm -f try try.*
5033set d_int64_t
5034eval $setvar
5035
5036
5037echo " "
5038echo "Checking which 64-bit integer type we could use..." >&4
5039
5040case "$intsize" in
50418) val=int
5042 set quadtype
5043 eval $setvar
5044 val='"unsigned int"'
5045 set uquadtype
5046 eval $setvar
5047 quadkind=1
5048 ;;
5049*) case "$longsize" in
5050 8) val=long
5051 set quadtype
5052 eval $setvar
5053 val='"unsigned long"'
5054 set uquadtype
5055 eval $setvar
5056 quadkind=2
5057 ;;
5058 *) case "$d_longlong:$longlongsize" in
5059 define:8)
5060 val='"long long"'
5061 set quadtype
5062 eval $setvar
5063 val='"unsigned long long"'
5064 set uquadtype
5065 eval $setvar
5066 quadkind=3
5067 ;;
5068 *) case "$d_int64_t" in
5069 define)
5070 val=int64_t
5071 set quadtype
5072 eval $setvar
5073 val=uint64_t
5074 set uquadtype
5075 eval $setvar
5076 quadkind=4
5077 ;;
5078 esac
5079 ;;
5080 esac
5081 ;;
5082 esac
5083 ;;
5084esac
5085
5086case "$quadtype" in
5087'') echo "Alas, no 64-bit integer types in sight." >&4
5088 d_quad="$undef"
5089 ;;
5090*) echo "We could use '$quadtype' for 64-bit integers." >&4
5091 d_quad="$define"
5092 ;;
5093esac
5094
b4eb6b3d
JH
5095
5096case "$uselonglong" in
5097"$define"|true|[yY]*)
5098 cat <<EOM >&4
5099
5100*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5101EOM
5102 use64bitint="$define"
5103 ;;
5104esac
5105case "$use64bits" in
5106"$define"|true|[yY]*)
5107 cat <<EOM >&4
5108
5109*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5110EOM
5111 use64bitint="$define"
5112 ;;
5113esac
5114case "$use64bitints" in
5115"$define"|true|[yY]*)
5116 cat <<EOM >&4
5117
5118*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5119EOM
5120 use64bitint="$define"
5121 ;;
5122esac
5123case "$use64bitsint" in
5124"$define"|true|[yY]*)
5125 cat <<EOM >&4
5126
5127*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5128EOM
5129 use64bitint="$define"
5130 ;;
5131esac
5132case "$uselonglongs" in
5133"$define"|true|[yY]*)
5134 cat <<EOM >&4
5135
5136*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5137EOM
5138 use64bitint="$define"
5139 ;;
5140esac
5141case "$use64bitsall" in
5142"$define"|true|[yY]*)
5143 cat <<EOM >&4
5144
5145*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5146EOM
5147 use64bitall="$define"
5148 ;;
5149esac
5150
5151case "$ccflags" in
5152*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5153esac
5154case "$use64bitall" in
5155"$define"|true|[yY]*) use64bitint="$define" ;;
5156esac
5157
5158case "$longsize" in
51598) cat <<EOM
5160
5161You have natively 64-bit long integers.
5162EOM
5163 val="$define"
5164 ;;
5165*) case "$use64bitint" in
5166 "$define"|true|[yY]*) dflt='y';;
5167 *) dflt='n';;
5168 esac
8dfa8df9
JH
5169 case "$d_quad" in
5170 "$define") ;;
5171 *) dflt='n' ;;
5172 esac
b4eb6b3d
JH
5173 cat <<EOM
5174
5175Perl can be built to take advantage of 64-bit integer types
5176on some systems. To do so, Configure can be run with -Duse64bitint.
5177Choosing this option will most probably introduce binary incompatibilities.
5178
5179If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5180(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5181EOM
5182 rp='Try to use 64-bit integers, if available?'
5183 . ./myread
5184 case "$ans" in
5185 [yY]*) val="$define" ;;
5186 *) val="$undef" ;;
5187 esac
5188 ;;
5189esac
5190set use64bitint
5191eval $setvar
5192
5193case "$use64bitall" in
5194"$define"|true|[yY]*) dflt='y' ;;
5195*) case "$longsize" in
5196 8) dflt='y' ;;
5197 *) dflt='n' ;;
5198 esac
5199 ;;
5200esac
5201cat <<EOM
5202
5203You may also choose to try maximal 64-bitness. It means using as much
520464-bitness as possible on the platform. This in turn means even more
5205binary incompatibilities. On the other hand, your platform may not
5206have any more 64-bitness available than what you already have chosen.
5207
5208If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5209(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5210EOM
5211rp='Try to use maximal 64-bit support, if available?'
5212. ./myread
5213case "$ans" in
5214[yY]*) val="$define" ;;
5215*) val="$undef" ;;
5216esac
5217set use64bitall
5218eval $setvar
5219case "$use64bitall" in
5220"$define")
5221 case "$use64bitint" in
5222 "$undef")
5223 cat <<EOM
5224
5225Since you have chosen a maximally 64-bit build, I'm also turning on
5226the use of 64-bit integers.
5227EOM
5228 use64bitint="$define" ;;
5229 esac
5230 ;;
5231esac
5232
8dfa8df9
JH
5233case "$use64bitall" in
5234"$define"|true|[yY]*)
5235 case "$ptrsize" in
5236 4) cat <<EOM >&4
5237
5238*** You have chosen a maximally 64-bit build, but your pointers
5239*** are only 4 bytes wide, disabling maximal 64-bitness.
5240
5241EOM
5242 use64bitall="$undef"
5243 case "$use64bitint" in
5244 "$define"|true|[yY]*) ;;
5245 *) cat <<EOM >&4
5246
5247*** Downgrading from maximal 64-bitness to using 64-bit integers.
5248
5249EOM
5250 use64bitint="$define"
5251 ;;
5252 esac
5253 ;;
5254 esac
5255 ;;
5256esac
5257
b4eb6b3d
JH
5258case "$use64bitint" in
5259"$define"|true|[yY]*)
5260: Look for a hint-file generated 'call-back-unit'. If the
5261: user has specified that a 64-bit perl is to be built,
5262: we may need to set or change some other defaults.
5263 if $test -f use64bitint.cbu; then
5264 echo "Your platform has some specific hints for 64-bit integers, using them..."
5265 . ./use64bitint.cbu
5266 fi
5267 case "$longsize" in
5268 4) case "$archname64" in
5269 '') archname64=64int ;;
5270 esac
5271 ;;
5272 esac
5273 ;;
5274esac
5275
5276case "$use64bitall" in
5277"$define"|true|[yY]*)
5278: Look for a hint-file generated 'call-back-unit'. If the
5279: user has specified that a maximally 64-bit perl is to be built,
5280: we may need to set or change some other defaults.
5281 if $test -f use64bitall.cbu; then
5282 echo "Your platform has some specific hints for 64-bit builds, using them..."
5283 . ./use64bitall.cbu
5284 fi
5285 case "$longsize" in
5286 4) case "$archname64" in
5287 ''|64int) archname64=64all ;;
5288 esac
5289 ;;
5290 esac
5291 ;;
5292esac
5293
5294echo " "
5295echo "Checking for GNU C Library..." >&4
5440bc8e 5296cat >try.c <<EOM
b4eb6b3d
JH
5297#include <stdio.h>
5298int main()
5299{
5300#ifdef __GLIBC__
5301 exit(0);
5302#else
5303 exit(1);
5304#endif
5305}
5306EOM
5440bc8e
JH
5307set try
5308if eval $compile_ok && $run ./try; then
b4eb6b3d
JH
5309 val="$define"
5310 echo "You are using the GNU C Library"
5311else
5312 val="$undef"
5313 echo "You are not using the GNU C Library"
5314fi
5440bc8e 5315$rm -f try try.*
b4eb6b3d
JH
5316set d_gnulibc
5317eval $setvar
5318
5319: see if nm is to be used to determine whether a symbol is defined or not
5320case "$usenm" in
5321'')
5322 dflt=''
c1a7f87b
JH
5323 case "$d_gnulibc" in
5324 "$define")
5325 echo " "
5326 echo "nm probably won't work on the GNU C Library." >&4
5327 dflt=n
bd9b35c9 5328 ;;
c1a7f87b
JH
5329 esac
5330 case "$dflt" in
5331 '')
5332 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5333 echo " "
5334 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5335 echo "'nm' won't be sufficient on this sytem." >&4
5336 dflt=n
5337 fi
5338 ;;
5339 esac
5340 case "$dflt" in
5341 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5342 if $test $dflt -gt 20; then
5343 dflt=y
5344 else
5345 dflt=n
5346 fi
bd9b35c9
JH
5347 ;;
5348 esac
bd9b35c9
JH
5349 ;;
5350*)
c1a7f87b
JH
5351 case "$usenm" in
5352 true|$define) dflt=y;;
5353 *) dflt=n;;
5354 esac
bd9b35c9
JH
5355 ;;
5356esac
5357$cat <<EOM
5358
c1a7f87b
JH
5359I can use $nm to extract the symbols from your C libraries. This
5360is a time consuming task which may generate huge output on the disk (up
5361to 3 megabytes) but that should make the symbols extraction faster. The
5362alternative is to skip the 'nm' extraction part and to compile a small
5363test program instead to determine whether each symbol is present. If
5364you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5365this may be the best solution.
5366
5367You probably shouldn't let me use 'nm' if you are using the GNU C Library.
bd9b35c9
JH
5368
5369EOM
c1a7f87b
JH
5370rp="Shall I use $nm to extract C symbols from the libraries?"
5371. ./myread
5372case "$ans" in
5373[Nn]*) usenm=false;;
5374*) usenm=true;;
bd9b35c9 5375esac
bd9b35c9 5376
c1a7f87b
JH
5377runnm=$usenm
5378case "$reuseval" in
5379true) runnm=false;;
8e07c86e 5380esac
29209bc5 5381
c1a7f87b
JH
5382: nm options which may be necessary
5383case "$nm_opt" in
5384'') if $test -f /mach_boot; then
5385 nm_opt='' # Mach
5386 elif $test -d /usr/ccs/lib; then
5387 nm_opt='-p' # Solaris (and SunOS?)
5388 elif $test -f /dgux; then
5389 nm_opt='-p' # DG-UX
5390 elif $test -f /lib64/rld; then
5391 nm_opt='-p' # 64-bit Irix
5392 else
5393 nm_opt=''
5394 fi;;
5395esac
bd9b35c9 5396
c1a7f87b
JH
5397: nm options which may be necessary for shared libraries but illegal
5398: for archive libraries. Thank you, Linux.
5399case "$nm_so_opt" in
5400'') case "$myuname" in
5401 *linux*)
5402 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5403 nm_so_opt='--dynamic'
5404 fi
5405 ;;
bd9b35c9 5406 esac
c1a7f87b
JH
5407 ;;
5408esac
8e07c86e 5409
c1a7f87b
JH
5410case "$runnm" in
5411true)
5412: get list of predefined functions in a handy place
5413echo " "
5414case "$libc" in
5415'') libc=unknown
5416 case "$libs" in
5417 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
bd9b35c9 5418 esac
ff935051
JH
5419 ;;
5420esac
c1a7f87b
JH
5421case "$libs" in
5422'') ;;
5423*) for thislib in $libs; do
5424 case "$thislib" in
5425 -lc|-lc_s)
5426 : Handle C library specially below.
5427 ;;
5428 -l*)
5429 thislib=`echo $thislib | $sed -e 's/^-l//'`
5430 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5431 :
5432 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5433 :
5434 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5435 :
5436 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5437 :
5438 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5439 :
5440 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5441 :
5442 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5443 :
5444 else
5445 try=''
5446 fi
5447 libnames="$libnames $try"
5448 ;;
5449 *) libnames="$libnames $thislib" ;;
34d1710f 5450 esac
c1a7f87b 5451 done
4633a7c4
LW
5452 ;;
5453esac
c1a7f87b
JH
5454xxx=normal
5455case "$libc" in
5456unknown)
5457 set /lib/libc.$so
5458 for xxx in $libpth; do
5459 $test -r $1 || set $xxx/libc.$so
5460 : The messy sed command sorts on library version numbers.
5461 $test -r $1 || \
5462 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5463 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5464 h
5465 s/[0-9][0-9]*/0000&/g
5466 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5467 G
5468 s/\n/ /' | \
381aa1ff 5469 $sort | $sed -e 's/^.* //'`
c1a7f87b
JH
5470 eval set \$$#
5471 done
5472 $test -r $1 || set /usr/ccs/lib/libc.$so
5473 $test -r $1 || set /lib/libsys_s$_a
5474 ;;
5475*)
5476 set blurfl
5477 ;;
a4f3eea9 5478esac
c1a7f87b
JH
5479if $test -r "$1"; then
5480 echo "Your (shared) C library seems to be in $1."
5481 libc="$1"
5482elif $test -r /lib/libc && $test -r /lib/clib; then
5483 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5484 xxx=apollo
5485 libc='/lib/clib /lib/libc'
5486 if $test -r /lib/syslib; then
5487 echo "(Your math library is in /lib/syslib.)"
5488 libc="$libc /lib/syslib"
5489 fi
5490elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5491 echo "Your C library seems to be in $libc, as you said before."
5492elif $test -r $incpath/usr/lib/libc$_a; then
5493 libc=$incpath/usr/lib/libc$_a;
5494 echo "Your C library seems to be in $libc. That's fine."
5495elif $test -r /lib/libc$_a; then
5496 libc=/lib/libc$_a;
5497 echo "Your C library seems to be in $libc. You're normal."
5498else
5499 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5500 :
5501 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5502 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5503 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5504 :
5505 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5506 :
5507 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5508 :
5509 else
5510 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5511 fi
5512 if $test -r "$tans"; then
5513 echo "Your C library seems to be in $tans, of all places."
5514 libc=$tans
5515 else
5516 libc='blurfl'
5517 fi
5518fi
5519if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5520 dflt="$libc"
5521 cat <<EOM
a4f3eea9 5522
c1a7f87b
JH
5523If the guess above is wrong (which it might be if you're using a strange
5524compiler, or your machine supports multiple models), you can override it here.
bd9b35c9
JH
5525
5526EOM
a4f3eea9 5527else
c1a7f87b 5528 dflt=''
381aa1ff 5529 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
c1a7f87b
JH
5530 cat >&4 <<EOM
5531I can't seem to find your C library. I've looked in the following places:
a4f3eea9 5532
c1a7f87b
JH
5533EOM
5534 $sed 's/^/ /' libpath
5535 cat <<EOM
29209bc5 5536
c1a7f87b 5537None of these seems to contain your C library. I need to get its name...
a4f3eea9 5538
bd9b35c9 5539EOM
bd9b35c9 5540fi
c1a7f87b
JH
5541fn=f
5542rp='Where is your C library?'
5543. ./getfile
5544libc="$ans"
a4f3eea9 5545
c1a7f87b 5546echo " "
381aa1ff 5547echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
c1a7f87b
JH
5548set X `cat libnames`
5549shift
5550xxx=files
5551case $# in 1) xxx=file; esac
5552echo "Extracting names from the following $xxx for later perusal:" >&4
5553echo " "
5554$sed 's/^/ /' libnames >&4
5555echo " "
5556$echo $n "This may take a while...$c" >&4
a4f3eea9 5557
c1a7f87b
JH
5558for file in $*; do
5559 case $file in
5560 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5561 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 5562 esac
c1a7f87b 5563done >libc.tmp
a4f3eea9 5564
c1a7f87b
JH
5565$echo $n ".$c"
5566$grep fprintf libc.tmp > libc.ptf
5567xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5568xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5569xxx='[ADTSIW]'
5570if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5571 eval $xscan;\
5572 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5573 eval $xrun
5574elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5575 eval $xscan;\
5576 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5577 eval $xrun
5578elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5579 eval $xscan;\
5580 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5581 eval $xrun
5582elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5583 eval $xscan;\
5584 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5585 eval $xrun
5586elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5587 eval $xscan;\
5588 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5589 eval $xrun
5590elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5591 eval $xscan;\
5592 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5593 eval $xrun
5594elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5595 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5596 eval $xscan;\
5597 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5598 eval $xrun
5599elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5600 eval $xscan;\
5601 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5602 eval $xrun
5603elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5604 eval $xscan;\
5605 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5606 eval $xrun
5607elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5608 eval $xscan;\
5609 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5610 eval $xrun
5611elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5612 eval $xscan;\
5613 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5614 eval $xrun
5615elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5616 eval $xscan;\
5617 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5618 eval $xrun
5619elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5620 eval $xscan;\
5621 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5622 eval $xrun
5623elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5624 eval $xscan;\
5625 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5626 eval $xrun
5627else
5628 $nm -p $* 2>/dev/null >libc.tmp
5629 $grep fprintf libc.tmp > libc.ptf
5630 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5631 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5632 then
5633 nm_opt='-p'
5634 eval $xrun
bd9b35c9 5635 else
c1a7f87b
JH
5636 echo " "
5637 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5638 com=''
5639 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5640 for thisname in $libnames $libc; do
5641 $ar t $thisname >>libc.tmp
5642 done
5643 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5644 echo "Ok." >&4
5645 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5646 # Repeat libc to extract forwarders to DLL entries too
5647 for thisname in $libnames $libc; do
5648 $ar tv $thisname >>libc.tmp
5649 # Revision 50 of EMX has bug in $ar.
5650 # it will not extract forwarders to DLL entries
5651 # Use emximp which will extract exactly them.
5652 emximp -o tmp.imp $thisname \
5653 2>/dev/null && \
5654 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5655 < tmp.imp >>libc.tmp
5656 $rm tmp.imp
5657 done
5658 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5659 echo "Ok." >&4
5660 else
5661 echo "$ar didn't seem to work right." >&4
5662 echo "Maybe this is a Cray...trying bld instead..." >&4
5663 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5664 then
5665 for thisname in $libnames; do
5666 bld t $libnames | \
5667 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5668 $ar t $thisname >>libc.tmp
5669 done
5670 echo "Ok." >&4
bd9b35c9 5671 else
c1a7f87b
JH
5672 echo "That didn't work either. Giving up." >&4
5673 exit 1
bd9b35c9 5674 fi
c1a7f87b 5675 fi
a4f3eea9 5676 fi
a4f3eea9 5677fi
c1a7f87b
JH
5678nm_extract="$com"
5679if $test -f /lib/syscalls.exp; then
5680 echo " "
5681 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
a8c676c6 5682 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
c1a7f87b
JH
5683fi
5684;;
5685esac
5686$rm -f libnames libpath
bd9b35c9 5687
c1a7f87b
JH
5688: is a C symbol defined?
5689csym='tlook=$1;
5690case "$3" in
5691-v) tf=libc.tmp; tc=""; tdc="";;
5692-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5693*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5694esac;
5695tx=yes;
5696case "$reuseval-$4" in
5697true-) ;;
5698true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5699esac;
5700case "$tx" in
5701yes)
5702 case "$runnm" in
5703 true)
5704 if $contains $tlook $tf >/dev/null 2>&1;
5705 then tval=true;
5706 else tval=false;
5707 fi;;
5708 *)
5709 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7a282f6d 5710 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
c1a7f87b
JH
5711 then tval=true;
5712 else tval=false;
5713 fi;
5714 $rm -f t t.c;;
5715 esac;;
5716*)
5717 case "$tval" in
5718 $define) tval=true;;
5719 *) tval=false;;
5720 esac;;
5721esac;
5722eval "$2=$tval"'
bd9b35c9 5723
c1a7f87b
JH
5724: define an is-in-libc? function
5725inlibc='echo " "; td=$define; tu=$undef;
5726sym=$1; var=$2; eval "was=\$$2";
5727tx=yes;
5728case "$reuseval$was" in
5729true) ;;
5730true*) tx=no;;
5731esac;
5732case "$tx" in
5733yes)
5734 set $sym tres -f;
5735 eval $csym;
5736 case "$tres" in
5737 true)
5738 echo "$sym() found." >&4;
5739 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5740 *)
5741 echo "$sym() NOT found." >&4;
5742 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5743 esac;;
bd9b35c9 5744*)
c1a7f87b
JH
5745 case "$was" in
5746 $define) echo "$sym() found." >&4;;
5747 *) echo "$sym() NOT found." >&4;;
5748 esac;;
5749esac'
5750
b4eb6b3d
JH
5751: see if sqrtl exists
5752set sqrtl d_sqrtl
c1a7f87b
JH
5753eval $inlibc
5754
b4eb6b3d
JH
5755: check for length of double
5756echo " "
5757case "$doublesize" in
5758'')
5759 echo "Checking to see how big your double precision numbers are..." >&4
5760 $cat >try.c <<'EOCP'
5761#include <stdio.h>
5762int main()
5763{
5764 printf("%d\n", (int)sizeof(double));
5765 exit(0);
5766}
5767EOCP
5768 set try
5769 if eval $compile_ok; then
5440bc8e 5770 doublesize=`$run ./try`
b4eb6b3d
JH
5771 echo "Your double is $doublesize bytes long."
5772 else
5773 dflt='8'
5774 echo "(I can't seem to compile the test program. Guessing...)"
5775 rp="What is the size of a double precision number (in bytes)?"
5776 . ./myread
5777 doublesize="$ans"
5778 fi
5779 ;;
5780esac
5781$rm -f try.c try
5782
5783: check for long doubles
5784echo " "
5785echo "Checking to see if you have long double..." >&4
5786echo 'int main() { long double x = 7.0; }' > try.c
5787set try
5788if eval $compile; then
5789 val="$define"
5790 echo "You have long double."
5791else
5792 val="$undef"
5793 echo "You do not have long double."
5794fi
5795$rm try.*
5796set d_longdbl
5797eval $setvar
5798
5799: check for length of long double
5800case "${d_longdbl}${longdblsize}" in
5801$define)
5802 echo " "
5803 echo "Checking to see how big your long doubles are..." >&4
5804 $cat >try.c <<'EOCP'
5805#include <stdio.h>
5806int main()
5807{
5808 printf("%d\n", sizeof(long double));
5809}
5810EOCP
5811 set try
5812 set try
5813 if eval $compile; then
5440bc8e 5814 longdblsize=`$run ./try`
b4eb6b3d
JH
5815 echo "Your long doubles are $longdblsize bytes long."
5816 else
5817 dflt='8'
5818 echo " "
5819 echo "(I can't seem to compile the test program. Guessing...)" >&4
5820 rp="What is the size of a long double (in bytes)?"
5821 . ./myread
5822 longdblsize="$ans"
5823 fi
5824 if $test "X$doublesize" = "X$longdblsize"; then
5825 echo "(That isn't any different from an ordinary double.)"
5826 fi
5827 ;;
5828esac
5829$rm -f try.* try
5830
dc526090
NC
5831echo " "
5832
5833if $test X"$d_longdbl" = X"$define"; then
5834
5835echo "Checking how to print long doubles..." >&4
5836
5837if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5838 $cat >try.c <<'EOCP'
5839#include <sys/types.h>
5840#include <stdio.h>
5841int main() {
5842 double d = 123.456;
5843 printf("%.3f\n", d);
5844}
5845EOCP
5846 set try
5847 if eval $compile; then
5848 yyy=`$run ./try`
5849 case "$yyy" in
5850 123.456)
5851 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5852 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5853 echo "We will use %f."
5854 ;;
5855 esac
5856 fi
5857fi
5858
5859if $test X"$sPRIfldbl" = X; then
5860 $cat >try.c <<'EOCP'
5861#include <sys/types.h>
5862#include <stdio.h>
5863int main() {
5864 long double d = 123.456;
5865 printf("%.3Lf\n", d);
5866}
5867EOCP
5868 set try
5869 if eval $compile; then
5870 yyy=`$run ./try`
5871 case "$yyy" in
5872 123.456)
5873 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
5874 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
5875 echo "We will use %Lf."
5876 ;;
5877 esac
5878 fi
5879fi
5880
5881if $test X"$sPRIfldbl" = X; then
5882 $cat >try.c <<'EOCP'
5883#include <sys/types.h>
5884#include <stdio.h>
5885int main() {
5886 long double d = 123.456;
5887 printf("%.3llf\n", d);
5888}
5889EOCP
5890 set try
5891 if eval $compile; then
5892 yyy=`$run ./try`
5893 case "$yyy" in
5894 123.456)
5895 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
5896 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
5897 echo "We will use %llf."
5898 ;;
5899 esac
5900 fi
5901fi
5902
5903if $test X"$sPRIfldbl" = X; then
5904 $cat >try.c <<'EOCP'
5905#include <sys/types.h>
5906#include <stdio.h>
5907int main() {
5908 long double d = 123.456;
5909 printf("%.3lf\n", d);
5910}
5911EOCP
5912 set try
5913 if eval $compile; then
5914 yyy=`$run ./try`
5915 case "$yyy" in
5916 123.456)
5917 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
5918 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
5919 echo "We will use %lf."
5920 ;;
5921 esac
5922 fi
5923fi
5924
5925if $test X"$sPRIfldbl" = X; then
5926 echo "Cannot figure out how to print long doubles." >&4
5927else
5928 sSCNfldbl=$sPRIfldbl # expect consistency
5929fi
5930
5931$rm -f try try.*
5932
5933fi # d_longdbl
5934
5935case "$sPRIfldbl" in
5936'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
5937 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
5938 d_SCNfldbl="$undef";
5939 ;;
5940*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
5941 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
5942 d_SCNfldbl="$define";
5943 ;;
5944esac
5945
5946: see if modfl exists
5947set modfl d_modfl
5948eval $inlibc
5949
5950d_modfl_pow32_bug="$undef"
5951
5952case "$d_longdbl$d_modfl" in
5953$define$define)
5954 $cat <<EOM
5955Checking to see whether your modfl() is okay for large values...
5956EOM
5957$cat >try.c <<EOCP
5958#include <math.h>
5959#include <stdio.h>
5960int main() {
5961 long double nv = 4294967303.15;
5962 long double v, w;
5963 v = modfl(nv, &w);
5964#ifdef __GLIBC__
5965 printf("glibc");
5966#endif
5967 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
5968 return 0;
5969}
5970EOCP
5971 case "$osname:$gccversion" in
5972 aix:) saveccflags="$ccflags"
5973 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
5974 esac
5975 set try
5976 if eval $compile; then
5977 foo=`$run ./try`
5978 case "$foo" in
5979 *" 4294967303.150000 1.150000 4294967302.000000")
5980 echo >&4 "Your modfl() is broken for large values."
5981 d_modfl_pow32_bug="$define"
5982 case "$foo" in
5983 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
5984 ;;
5985 esac
5986 ;;
5987 *" 4294967303.150000 0.150000 4294967303.000000")
5988 echo >&4 "Your modfl() seems okay for large values."
5989 ;;
5990 *) echo >&4 "I don't understand your modfl() at all."
5991 d_modfl="$undef"
5992 ;;
5993 esac
5994 $rm -f try.* try core core.try.*
5995 else
5996 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
5997 d_modfl="$undef"
5998 fi
5999 case "$osname:$gccversion" in
6000 aix:) ccflags="$saveccflags" ;; # restore
6001 esac
6002 ;;
6003esac
6004
6005case "$ccflags" in
6006*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6007esac
6008
6009case "$uselongdouble" in
6010$define|true|[yY]*) dflt='y';;
6011*) dflt='n';;
6012esac
6013cat <<EOM
6014
6015Perl can be built to take advantage of long doubles which
6016(if available) may give more accuracy and range for floating point numbers.
6017
6018If this doesn't make any sense to you, just accept the default '$dflt'.
6019EOM
6020rp='Try to use long doubles if available?'
6021. ./myread
6022case "$ans" in
6023y|Y) val="$define" ;;
6024*) val="$undef" ;;
6025esac
6026set uselongdouble
6027eval $setvar
6028
6029case "$uselongdouble" in
6030true|[yY]*) uselongdouble="$define" ;;
6031esac
6032
6033case "$uselongdouble" in
6034$define)
6035: Look for a hint-file generated 'call-back-unit'. If the
6036: user has specified that long doubles should be used,
6037: we may need to set or change some other defaults.
6038 if $test -f uselongdouble.cbu; then
6039 echo "Your platform has some specific hints for long doubles, using them..."
6040 . ./uselongdouble.cbu
6041 else
6042 $cat <<EOM
6043(Your platform doesn't have any specific hints for long doubles.)
6044EOM
6045 fi
6046 ;;
6047esac
6048
6049message=X
6050case "$uselongdouble:$d_sqrtl:$d_modfl" in
6051$define:$define:$define)
6052 : You have both
6053 ;;
6054$define:$define:$undef)
6055 message="I could not find modfl"
6056 ;;
6057$define:$undef:$define)
6058 message="I could not find sqrtl"
6059 ;;
6060$define:$undef:$undef)
6061 message="I found neither sqrtl nor modfl"
6062 ;;
6063esac
6064
6065if $test "$message" != X; then
6066 $cat <<EOM >&4
6067
6068*** You requested the use of long doubles but you do not seem to have
6069*** the mathematic functions for long doubles.
6070*** ($message)
6071*** I'm disabling the use of long doubles.
6072
6073EOM
6074
6075 uselongdouble=$undef
6076fi
6077
51de783f 6078case "$useperlio" in
5a3a8a02 6079$define|true|[yY]*|'') dflt='y';;
51de783f
JH
6080*) dflt='n';;
6081esac
6082cat <<EOM
6083
6084Previous version of $package used the standard IO mechanisms as
5a3a8a02 6085defined in <stdio.h>. Versions 5.003_02 and later of $package allow
51de783f 6086alternate IO mechanisms via the PerlIO abstraction layer, but the
5a3a8a02
JH
6087stdio mechanism is still available if needed. The abstraction layer
6088can use AT&T's sfio (if you already have sfio installed) or regular stdio.
51de783f
JH
6089Using PerlIO with sfio may cause problems with some extension modules.
6090
6091If this doesn't make any sense to you, just accept the default '$dflt'.
6092EOM
5a3a8a02 6093rp='Use the PerlIO abstraction layer?'
51de783f
JH
6094. ./myread
6095case "$ans" in
6096y|Y)
6097 val="$define"
5a3a8a02 6098 ;;
51de783f
JH
6099*)
6100 echo "Ok, doing things the stdio way."
6101 val="$undef"
6102 ;;
6103esac
6104set useperlio
6105eval $setvar
6106
6107case "$usesocks" in
6108$define|true|[yY]*)
6109 case "$useperlio" in
6110 $define|true|[yY]*) ;;
6111 *) cat >&4 <<EOM
6112
6113You are using the SOCKS proxy protocol library which means that you
6114should also use the PerlIO layer. You may be headed for trouble.
6115
6116EOM
6117 ;;
6118 esac
6119 ;;
6120esac
6121
6122
b4eb6b3d
JH
6123: determine the architecture name
6124echo " "
6125if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6126 tarch=`arch`"-$osname"
6127elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6128 if uname -m > tmparch 2>&1 ; then
6129 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6130 -e 's/$/'"-$osname/" tmparch`
6131 else
6132 tarch="$osname"
6133 fi
6134 $rm -f tmparch
6135else
6136 tarch="$osname"
6137fi
6138case "$myarchname" in
6139''|"$tarch") ;;
6140*)
6141 echo "(Your architecture name used to be $myarchname.)"
6142 archname=''
6143 ;;
6144esac
5440bc8e
JH
6145case "$targetarch" in
6146'') ;;
6147*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6148esac
b4eb6b3d
JH
6149myarchname="$tarch"
6150case "$archname" in
6151'') dflt="$tarch";;
6152*) dflt="$archname";;
6153esac
6154rp='What is your architecture name'
6155. ./myread
6156archname="$ans"
6157case "$usethreads" in
6158$define)
6159 echo "Threads selected." >&4
6160 case "$archname" in
6161 *-thread*) echo "...and architecture name already has -thread." >&4
6162 ;;
6163 *) archname="$archname-thread"
6164 echo "...setting architecture name to $archname." >&4
6165 ;;
6166 esac
6167 ;;
6168esac
6169case "$usemultiplicity" in
6170$define)
6171 echo "Multiplicity selected." >&4
6172 case "$archname" in
6173 *-multi*) echo "...and architecture name already has -multi." >&4
6174 ;;
6175 *) archname="$archname-multi"
6176 echo "...setting architecture name to $archname." >&4
6177 ;;
6178 esac
6179 ;;
6180esac
6181case "$use64bitint$use64bitall" in
6182*"$define"*)
6183 case "$archname64" in
6184 '')
6185 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6186 ;;
6187 *)
6188 case "$use64bitint" in
6189 "$define") echo "64 bit integers selected." >&4 ;;
6190 esac
6191 case "$use64bitall" in
6192 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6193 esac
6194 case "$archname" in
6195 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6196 ;;
6197 *) archname="$archname-$archname64"
6198 echo "...setting architecture name to $archname." >&4
6199 ;;
6200 esac
6201 ;;
6202 esac
6203esac
6204case "$uselongdouble" in
6205$define)
6206 echo "Long doubles selected." >&4
6207 case "$longdblsize" in
6208 $doublesize)
262495b9 6209 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
b4eb6b3d
JH
6210 ;;
6211 *)
6212 case "$archname" in
6213 *-ld*) echo "...and architecture name already has -ld." >&4
6214 ;;
6215 *) archname="$archname-ld"
6216 echo "...setting architecture name to $archname." >&4
6217 ;;
6218 esac
6219 ;;
6220 esac
6221 ;;
6222esac
51de783f
JH
6223case "$useperlio" in
6224$define)
6225 echo "Perlio selected." >&4
d46c9a2d
JH
6226 ;;
6227*)
6228 echo "Perlio not selected, using stdio." >&4
51de783f 6229 case "$archname" in
d46c9a2d 6230 *-stdio*) echo "...and architecture name already has -stdio." >&4
51de783f 6231 ;;
d46c9a2d 6232 *) archname="$archname-stdio"
51de783f
JH
6233 echo "...setting architecture name to $archname." >&4
6234 ;;
6235 esac
6236 ;;
6237esac
b4eb6b3d
JH
6238
6239: determine root of directory hierarchy where package will be installed.
6240case "$prefix" in
6241'')
6242 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6243 ;;
6244*)
6245 dflt="$prefix"
6246 ;;
6247esac
6248$cat <<EOM
6249
6250By default, $package will be installed in $dflt/bin, manual pages
6251under $dflt/man, etc..., i.e. with $dflt as prefix for all
6252installation directories. Typically this is something like /usr/local.
6253If you wish to have binaries under /usr/bin but other parts of the
6254installation under /usr/local, that's ok: you will be prompted
6255separately for each of the installation directories, the prefix being
6256only used to set the defaults.
6257
6258EOM
6259fn=d~
6260rp='Installation prefix to use?'
6261. ./getfile
6262oldprefix=''
6263case "$prefix" in
6264'') ;;
6265*)
6266 case "$ans" in
6267 "$prefix") ;;
6268 *) oldprefix="$prefix";;
6269 esac
6270 ;;
6271esac
6272prefix="$ans"
6273prefixexp="$ansexp"
6274
a6d26a0d
JH
6275case "$afsroot" in
6276'') afsroot=/afs ;;
6277*) afsroot=$afsroot ;;
6278esac
6279
b4eb6b3d
JH
6280: is AFS running?
6281echo " "
6282case "$afs" in
6283$define|true) afs=true ;;
6284$undef|false) afs=false ;;
a6d26a0d 6285*) if test -d $afsroot; then
b4eb6b3d
JH
6286 afs=true
6287 else
6288 afs=false
6289 fi
6290 ;;
6291esac
6292if $afs; then
6293 echo "AFS may be running... I'll be extra cautious then..." >&4
6294else
6295 echo "AFS does not seem to be running..." >&4
6296fi
6297
6298: determine installation prefix for where package is to be installed.
6299if $afs; then
6300$cat <<EOM
6301
6302Since you are running AFS, I need to distinguish the directory in which
6303files will reside from the directory in which they are installed (and from
6304which they are presumably copied to the former directory by occult means).
6305
6306EOM
6307 case "$installprefix" in
6308 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6309 *) dflt="$installprefix";;
6310 esac
6311else
6312$cat <<EOM
6313
6314In some special cases, particularly when building $package for distribution,
6315it is convenient to distinguish between the directory in which files should
6316be installed from the directory ($prefix) in which they
6317will eventually reside. For most users, these two directories are the same.
6318
6319EOM
6320 case "$installprefix" in
6321 '') dflt=$prefix ;;
6322 *) dflt=$installprefix;;
6323 esac
6324fi
6325fn=d~
6326rp='What installation prefix should I use for installing files?'
6327. ./getfile
6328installprefix="$ans"
6329installprefixexp="$ansexp"
6330
6331: set the prefixit variable, to compute a suitable default value
6332prefixit='case "$3" in
6333""|none)
6334 case "$oldprefix" in
6335 "") eval "$1=\"\$$2\"";;
6336 *)
6337 case "$3" in
6338 "") eval "$1=";;
6339 none)
6340 eval "tp=\"\$$2\"";
6341 case "$tp" in
6342 ""|" ") eval "$1=\"\$$2\"";;
6343 *) eval "$1=";;
6344 esac;;
6345 esac;;
6346 esac;;
6347*)
6348 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6349 case "$tp" in
6350 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6351 /*-$oldprefix/*|\~*-$oldprefix/*)
6352 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6353 *) eval "$1=\"\$$2\"";;
6354 esac;;
6355esac'
6356
b4eb6b3d
JH
6357: get the patchlevel
6358echo " "
6359echo "Getting the current patchlevel..." >&4
6360if $test -r $rsrc/patchlevel.h;then
6361 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6362 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6363 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6364 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6365 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6366 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
151e6568 6367 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
b4eb6b3d
JH
6368else
6369 revision=0
6370 patchlevel=0
6371 subversion=0
6372 api_revision=0
6373 api_version=0
6374 api_subversion=0
151e6568
MB
6375 perl_patchlevel=0
6376 $echo "(You do not have patchlevel.h. Eek.)"
b4eb6b3d 6377fi
151e6568
MB
6378if $test -r $rsrc/.patch ; then
6379 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6380 perl_patchlevel=`cat $rsrc/.patch`
6381 fi
6382fi
861eb78d
AD
6383: Define a handy string here to avoid duplication in myconfig.SH and configpm.
6384version_patchlevel_string="version $patchlevel subversion $subversion"
151e6568 6385case "$perl_patchlevel" in
861eb78d
AD
63860|'') ;;
6387*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
151e6568 6388esac
861eb78d
AD
6389
6390$echo "(You have $package $version_patchlevel_string.)"
6391
b4eb6b3d
JH
6392case "$osname" in
6393dos|vms)
6394 : XXX Should be a Configure test for double-dots in filenames.
6395 version=`echo $revision $patchlevel $subversion | \
6396 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6397 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6398 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6399 ;;
6400*)
6401 version=`echo $revision $patchlevel $subversion | \
6402 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6403 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6404 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6405 ;;
6406esac
6407: Special case the 5.005_xx maintenance series, which used 5.005
6408: without any subversion label as a subdirectory in $sitelib
6409if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6410 api_versionstring='5.005'
6411fi
6412
6413: determine installation style
6414: For now, try to deduce it from prefix unless it is already set.
6415: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6416case "$installstyle" in
6417'') case "$prefix" in
6418 *perl*) dflt='lib';;
6419 *) dflt='lib/perl5' ;;
6420 esac
6421 ;;
6422*) dflt="$installstyle" ;;
6423esac
6424: Probably not worth prompting for this since we prompt for all
6425: the directories individually, and the prompt would be too long and
6426: confusing anyway.
6427installstyle=$dflt
6428
6429: determine where private library files go
6430: Usual default is /usr/local/lib/perl5/$version.
6431: Also allow things like /opt/perl/lib/$version, since
6432: /opt/perl/lib/perl5... would be redundant.
6433: The default "style" setting is made in installstyle.U
6434case "$installstyle" in
6435*lib/perl5*) set dflt privlib lib/$package/$version ;;
6436*) set dflt privlib lib/$version ;;
6437esac
6438eval $prefixit
6439$cat <<EOM
6440
6441There are some auxiliary files for $package that need to be put into a
6442private library directory that is accessible by everyone.
6443
6444EOM
6445fn=d~+
6446rp='Pathname where the private library files will reside?'
6447. ./getfile
6448privlib="$ans"
6449privlibexp="$ansexp"
6450: Change installation prefix, if necessary.
6451if $test X"$prefix" != X"$installprefix"; then
6452 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6453else
6454 installprivlib="$privlibexp"
6455fi
6456
6457: set the prefixup variable, to restore leading tilda escape
6458prefixup='case "$prefixexp" in
6459"$prefix") ;;
6460*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6461esac'
6462
6463: determine where public architecture dependent libraries go
6464set archlib archlib
6465eval $prefixit
6466: privlib default is /usr/local/lib/$package/$version
6467: archlib default is /usr/local/lib/$package/$version/$archname
6468: privlib may have an optional trailing /share.
6469tdflt=`echo $privlib | $sed 's,/share$,,'`
6470tdflt=$tdflt/$archname
6471case "$archlib" in
6472'') dflt=$tdflt
6473 ;;
6474*) dflt="$archlib"
6475 ;;
6476esac
6477$cat <<EOM
6478
6479$spackage contains architecture-dependent library files. If you are
6480sharing libraries in a heterogeneous environment, you might store
6481these files in a separate location. Otherwise, you can just include
6482them with the rest of the public library files.
6483
6484EOM
6485fn=d+~
6486rp='Where do you want to put the public architecture-dependent libraries?'
6487. ./getfile
6488archlib="$ans"
6489archlibexp="$ansexp"
6490if $test X"$archlib" = X"$privlib"; then
6491 d_archlib="$undef"
6492else
6493 d_archlib="$define"
6494fi
6495: Change installation prefix, if necessary.
6496if $test X"$prefix" != X"$installprefix"; then
6497 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6498else
6499 installarchlib="$archlibexp"
6500fi
6501
6502
6503: Binary compatibility with 5.005 is not possible for builds
6504: with advanced features
6505case "$usethreads$usemultiplicity" in
6506*define*)
6507 bincompat5005="$undef"
6508 d_bincompat5005="$undef"
6509 ;;
6510*) $cat <<EOM
6511
6512This version of Perl can be compiled for binary compatibility with 5.005.
6513If you decide to do so, you will be able to continue using most of the
6514extensions that were compiled for Perl 5.005.
6515
6516EOM
6517 case "$bincompat5005$d_bincompat5005" in
6518 *"$undef"*) dflt=n ;;
6519 *) dflt=y ;;
6520 esac
6521 rp='Binary compatibility with Perl 5.005?'
6522 . ./myread
6523 case "$ans" in
6524 y*) val="$define" ;;
6525 *) val="$undef" ;;
6526 esac
6527 set d_bincompat5005
6528 eval $setvar
6529 case "$d_bincompat5005" in
6530 "$define")
6531 bincompat5005="$define"
6532 ;;
6533 *) bincompat5005="$undef"
6534 d_bincompat5005="$undef"
6535 ;;
6536 esac
6537 ;;
6538esac
6539
6540
6541: see if setuid scripts can be secure
6542$cat <<EOM
6543
6544Some kernels have a bug that prevents setuid #! scripts from being
6545secure. Some sites have disabled setuid #! scripts because of this.
6546
6547First let's decide if your kernel supports secure setuid #! scripts.
6548(If setuid #! scripts would be secure but have been disabled anyway,
6549don't say that they are secure if asked.)
6550
6551EOM
6552
6553val="$undef"
6554if $test -d /dev/fd; then
6555 echo "#!$ls" >reflect
6556 chmod +x,u+s reflect
6557 ./reflect >flect 2>&1
6558 if $contains "/dev/fd" flect >/dev/null; then
6559 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6560 val="$define"
6561 else
6562 $cat <<EOM
6563If you are not sure if they are secure, I can check but I'll need a
6564username and password different from the one you are using right now.
6565If you don't have such a username or don't want me to test, simply
6566enter 'none'.
6567
6568EOM
6569 rp='Other username to test security of setuid scripts with?'
6570 dflt='none'
6571 . ./myread
6572 case "$ans" in
6573 n|none)
6574 case "$d_suidsafe" in
6575 '') echo "I'll assume setuid scripts are *not* secure." >&4
6576 dflt=n;;
6577 "$undef")
6578 echo "Well, the $hint value is *not* secure." >&4
6579 dflt=n;;
6580 *) echo "Well, the $hint value *is* secure." >&4
6581 dflt=y;;
6582 esac
c1a7f87b 6583 ;;
b4eb6b3d
JH
6584 *)
6585 $rm -f reflect flect
6586 echo "#!$ls" >reflect
6587 chmod +x,u+s reflect
6588 echo >flect
6589 chmod a+w flect
6590 echo '"su" will (probably) prompt you for '"$ans's password."
6591 su $ans -c './reflect >flect'
6592 if $contains "/dev/fd" flect >/dev/null; then
6593 echo "Okay, it looks like setuid scripts are secure." >&4
6594 dflt=y
6595 else
6596 echo "I don't think setuid scripts are secure." >&4
6597 dflt=n
6598 fi
6599 ;;
6600 esac
6601 rp='Does your kernel have *secure* setuid scripts?'
6602 . ./myread
6603 case "$ans" in
6604 [yY]*) val="$define";;
6605 *) val="$undef";;
6606 esac
6607 fi
6608else
6609 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6610 echo "(That's for file descriptors, not floppy disks.)"
6611 val="$undef"
6612fi
6613set d_suidsafe
6614eval $setvar
6615
6616$rm -f reflect flect
6617
6618: now see if they want to do setuid emulation
6619echo " "
6620val="$undef"
6621case "$d_suidsafe" in
6622"$define")
6623 val="$undef"
3c728e00 6624 echo "No need to emulate SUID scripts since they are secure here." >&4
b4eb6b3d
JH
6625 ;;
6626*)
6627 $cat <<EOM
6628Some systems have disabled setuid scripts, especially systems where
6629setuid scripts cannot be secure. On systems where setuid scripts have
6630been disabled, the setuid/setgid bits on scripts are currently
6631useless. It is possible for $package to detect those bits and emulate
6632setuid/setgid in a secure fashion. This emulation will only work if
6633setuid scripts have been disabled in your kernel.
6634
6635EOM
6636 case "$d_dosuid" in
6637 "$define") dflt=y ;;
6638 *) dflt=n ;;
6639 esac
6640 rp="Do you want to do setuid/setgid emulation?"
6641 . ./myread
6642 case "$ans" in
6643 [yY]*) val="$define";;
6644 *) val="$undef";;
6645 esac
6646 ;;
6647esac
6648set d_dosuid
6649eval $setvar
6650
b4eb6b3d
JH
6651: see if this is a malloc.h system
6652set malloc.h i_malloc
6653eval $inhdr
6654
6655: see if stdlib is available
6656set stdlib.h i_stdlib
6657eval $inhdr
6658
6659: determine which malloc to compile in
6660echo " "
6661case "$usemymalloc" in
c4163172
JH
6662[yY]*|true|$define) dflt='y' ;;
6663[nN]*|false|$undef) dflt='n' ;;
6664*) case "$ptrsize" in
6665 4) dflt='y' ;;
6666 *) dflt='n' ;;
6667 esac
6668 ;;
8dfa8df9 6669esac
b4eb6b3d
JH
6670rp="Do you wish to attempt to use the malloc that comes with $package?"
6671. ./myread
6672usemymalloc="$ans"
6673case "$ans" in
6674y*|true)
6675 usemymalloc='y'
6676 mallocsrc='malloc.c'
6677 mallocobj="malloc$_o"
6678 d_mymalloc="$define"
6679 case "$libs" in
6680 *-lmalloc*)
6681 : Remove malloc from list of libraries to use
6682 echo "Removing unneeded -lmalloc from library list" >&4
6683 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6684 shift
6685 libs="$*"
6686 echo "libs = $libs" >&4
6687 ;;
6688 esac
6689 ;;
6690*)
6691 usemymalloc='n'
6692 mallocsrc=''
6693 mallocobj=''
6694 d_mymalloc="$undef"
6695 ;;
6696esac
6697
6698: compute the return types of malloc and free
6699echo " "
6700$cat >malloc.c <<END
6701#$i_malloc I_MALLOC
6702#$i_stdlib I_STDLIB
6703#include <stdio.h>
6704#include <sys/types.h>
6705#ifdef I_MALLOC
6706#include <malloc.h>
6707#endif
6708#ifdef I_STDLIB
6709#include <stdlib.h>
6710#endif
6711#ifdef TRY_MALLOC
6712void *malloc();
6713#endif
6714#ifdef TRY_FREE
6715void free();
6716#endif
6717END
6718case "$malloctype" in
6719'')
6720 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6721 malloctype='void *'
6722 else
6723 malloctype='char *'
6724 fi
6725 ;;
6726esac
6727echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6728
6729case "$freetype" in
6730'')
6731 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6732 freetype='void'
6733 else
6734 freetype='int'
6735 fi
6736 ;;
6737esac
6738echo "Your system uses $freetype free(), it would seem." >&4
6739$rm -f malloc.[co]
6740$cat <<EOM
6741
6742After $package is installed, you may wish to install various
6743add-on modules and utilities. Typically, these add-ons will
6744be installed under $prefix with the rest
6745of this package. However, you may wish to install such add-ons
6746elsewhere under a different prefix.
6747
6748If you do not wish to put everything under a single prefix, that's
6749ok. You will be prompted for the individual locations; this siteprefix
6750is only used to suggest the defaults.
6751
6752The default should be fine for most people.
6753
6754EOM
6755fn=d~+
6756rp='Installation prefix to use for add-on modules and utilities?'
6757: XXX Here might be another good place for an installstyle setting.
6758case "$siteprefix" in
6759'') dflt=$prefix ;;
6760*) dflt=$siteprefix ;;
6761esac
6762. ./getfile
6763: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6764oldsiteprefix=''
6765case "$siteprefix" in
6766'') ;;
6767*) case "$ans" in
6768 "$prefix") ;;
6769 *) oldsiteprefix="$prefix";;
6770 esac
6771 ;;
6772esac
6773siteprefix="$ans"
6774siteprefixexp="$ansexp"
6775
6776: determine where site specific libraries go.
6777: Usual default is /usr/local/lib/perl5/site_perl/$version
6778: The default "style" setting is made in installstyle.U
6779: XXX No longer works with Prefixit stuff.
6780prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6781case "$sitelib" in
6782'') case "$installstyle" in
6783 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6784 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6785 esac
6786 ;;
6787*) dflt="$sitelib"
6788 ;;
6789esac
6790$cat <<EOM
6791
6792The installation process will create a directory for
6793site-specific extensions and modules. Most users find it convenient
6794to place all site-specific files in this directory rather than in the
6795main distribution directory.
6796
6797EOM
6798fn=d~+
6799rp='Pathname for the site-specific library files?'
6800. ./getfile
6801sitelib="$ans"
6802sitelibexp="$ansexp"
6803sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6804: Change installation prefix, if necessary.
6805if $test X"$prefix" != X"$installprefix"; then
6806 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6807else
6808 installsitelib="$sitelibexp"
6809fi
6810
6811: determine where site specific architecture-dependent libraries go.
6812: sitelib default is /usr/local/lib/perl5/site_perl/$version
6813: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6814: sitelib may have an optional trailing /share.
6815case "$sitearch" in
6816'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6817 dflt="$dflt/$archname"
6818 ;;
6819*) dflt="$sitearch"
6820 ;;
6821esac
6822set sitearch sitearch none
6823eval $prefixit
6824$cat <<EOM
6825
6826The installation process will also create a directory for
6827architecture-dependent site-specific extensions and modules.
6828
6829EOM
6830fn=d~+
6831rp='Pathname for the site-specific architecture-dependent library files?'
6832. ./getfile
6833sitearch="$ans"
6834sitearchexp="$ansexp"
6835: Change installation prefix, if necessary.
6836if $test X"$prefix" != X"$installprefix"; then
6837 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6838else
6839 installsitearch="$sitearchexp"
6840fi
6841
6842$cat <<EOM
6843
6844The installation process will also create a directory for
6845vendor-supplied add-ons. Vendors who supply perl with their system
6846may find it convenient to place all vendor-supplied files in this
6847directory rather than in the main distribution directory. This will
6848ease upgrades between binary-compatible maintenance versions of perl.
6849
6850Of course you may also use these directories in whatever way you see
6851fit. For example, you might use them to access modules shared over a
6852company-wide network.
6853
6854The default answer should be fine for most people.
6855This causes further questions about vendor add-ons to be skipped
6856and no vendor-specific directories will be configured for perl.
6857
6858EOM
6859rp='Do you want to configure vendor-specific add-on directories?'
6860case "$usevendorprefix" in
6861define|true|[yY]*) dflt=y ;;
6862*) : User may have set vendorprefix directly on Configure command line.
6863 case "$vendorprefix" in
6864 ''|' ') dflt=n ;;
6865 *) dflt=y ;;
6866 esac
6867 ;;
6868esac
6869. ./myread
6870case "$ans" in
6871[yY]*) fn=d~+
6872 rp='Installation prefix to use for vendor-supplied add-ons?'
6873 case "$vendorprefix" in
6874 '') dflt='' ;;
6875 *) dflt=$vendorprefix ;;
6876 esac
6877 . ./getfile
6878 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6879 oldvendorprefix=''
6880 case "$vendorprefix" in
6881 '') ;;
6882 *) case "$ans" in
6883 "$prefix") ;;
6884 *) oldvendorprefix="$prefix";;
6885 esac
6886 ;;
6887 esac
6888 usevendorprefix="$define"
6889 vendorprefix="$ans"
6890 vendorprefixexp="$ansexp"
6891 ;;
6892*) usevendorprefix="$undef"
6893 vendorprefix=''
6894 vendorprefixexp=''
6895 ;;
6896esac
6897
6898case "$vendorprefix" in
6899'') d_vendorlib="$undef"
6900 vendorlib=''
6901 vendorlibexp=''
6902 ;;
6903*) d_vendorlib="$define"
6904 : determine where vendor-supplied modules go.
6905 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6906 case "$vendorlib" in
6907 '')
6908 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6909 case "$installstyle" in
6910 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6911 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6912 esac
6913 ;;
6914 *) dflt="$vendorlib"
6915 ;;
6916 esac
6917 fn=d~+
6918 rp='Pathname for the vendor-supplied library files?'
6919 . ./getfile
6920 vendorlib="$ans"
6921 vendorlibexp="$ansexp"
6922 ;;
6923esac
6924vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6925: Change installation prefix, if necessary.
6926if $test X"$prefix" != X"$installprefix"; then
6927 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6928else
6929 installvendorlib="$vendorlibexp"
6930fi
6931
6932case "$vendorprefix" in
6933'') d_vendorarch="$undef"
6934 vendorarch=''
6935 vendorarchexp=''
6936 ;;
6937*) d_vendorarch="$define"
6938 : determine where vendor-supplied architecture-dependent libraries go.
6939 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6940 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6941 : vendorlib may have an optional trailing /share.
6942 case "$vendorarch" in
6943 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6944 dflt="$dflt/$archname"
6945 ;;
6946 *) dflt="$vendorarch" ;;
6947 esac
6948 fn=d~+
6949 rp='Pathname for vendor-supplied architecture-dependent files?'
6950 . ./getfile
6951 vendorarch="$ans"
6952 vendorarchexp="$ansexp"
6953 ;;
6954esac
6955: Change installation prefix, if necessary.
6956if $test X"$prefix" != X"$installprefix"; then
6957 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6958else
6959 installvendorarch="$vendorarchexp"
6960fi
6961
6962: Final catch-all directories to search
6963$cat <<EOM
6964
6965Lastly, you can have perl look in other directories for extensions and
6966modules in addition to those already specified.
6967These directories will be searched after
6968 $sitearch
6969 $sitelib
6970EOM
6971test X"$vendorlib" != "X" && echo ' ' $vendorlib
6972test X"$vendorarch" != "X" && echo ' ' $vendorarch
6973echo ' '
6974case "$otherlibdirs" in
6975''|' ') dflt='none' ;;
6976*) dflt="$otherlibdirs" ;;
6977esac
6978$cat <<EOM
6979Enter a colon-separated set of extra paths to include in perl's @INC
6980search path, or enter 'none' for no extra paths.
6981
6982EOM
6983
6984rp='Colon-separated list of additional directories for perl to search?'
6985. ./myread
6986case "$ans" in
6987' '|''|none) otherlibdirs=' ' ;;
6988*) otherlibdirs="$ans" ;;
6989esac
6990case "$otherlibdirs" in
6991' ') val=$undef ;;
6992*) val=$define ;;
6993esac
6994set d_perl_otherlibdirs
6995eval $setvar
6996
6997: Cruising for prototypes
6998echo " "
6999echo "Checking out function prototypes..." >&4
7000$cat >prototype.c <<'EOCP'
7001int main(int argc, char *argv[]) {
7002 exit(0);}
7003EOCP
7004if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7005 echo "Your C compiler appears to support function prototypes."
7006 val="$define"
7007else
7008 echo "Your C compiler doesn't seem to understand function prototypes."
7009 val="$undef"
7010fi
7011set prototype
7012eval $setvar
7013$rm -f prototype*
7014
7015case "$prototype" in
7016"$define") ;;
7017*) ansi2knr='ansi2knr'
7018 echo " "
7019 cat <<EOM >&4
7020
7021$me: FATAL ERROR:
7022This version of $package can only be compiled by a compiler that
7023understands function prototypes. Unfortunately, your C compiler
7024 $cc $ccflags
7025doesn't seem to understand them. Sorry about that.
7026
7027If GNU cc is available for your system, perhaps you could try that instead.
7028
7029Eventually, we hope to support building Perl with pre-ANSI compilers.
7030If you would like to help in that effort, please contact <perlbug@perl.org>.
7031
7032Aborting Configure now.
7033EOM
7034 exit 2
7035 ;;
7036esac
7037
7038: determine where public executables go
7039echo " "
7040set dflt bin bin
7041eval $prefixit
7042fn=d~
7043rp='Pathname where the public executables will reside?'
7044. ./getfile
7045if $test "X$ansexp" != "X$binexp"; then
7046 installbin=''
7047fi
7048bin="$ans"
7049binexp="$ansexp"
7050: Change installation prefix, if necessary.
7051: XXX Bug? -- ignores Configure -Dinstallprefix setting.
7052if $test X"$prefix" != X"$installprefix"; then
7053 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7054else
7055 installbin="$binexp"
7056fi
7057
6fcddf3b 7058echo " "
6fcddf3b 7059case "$extras" in
bf35c3f6
JH
7060'') dflt='n';;
7061*) dflt='y';;
6fcddf3b
JH
7062esac
7063cat <<EOM
7064Perl can be built with extra modules or bundles of modules which
7065will be fetched from the CPAN and installed alongside Perl.
7066
7067Notice that you will need access to the CPAN; either via the Internet,
7068or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
7069be asked later to configure the CPAN.pm module which will in turn do
7070the installation of the rest of the extra modules or bundles.)
7071
7072Notice also that if the modules require any external software such as
dd2de242
JH
7073libraries and headers (the libz library and the zlib.h header for the
7074Compress::Zlib module, for example) you MUST have any such software
7075already installed, this configuration process will NOT install such
7076things for you.
6fcddf3b
JH
7077
7078If this doesn't make any sense to you, just accept the default '$dflt'.
7079EOM
dd2de242 7080rp='Install any extra modules (y or n)?'
6fcddf3b
JH
7081. ./myread
7082case "$ans" in
7083y|Y)
7084 cat <<EOM
7085
7086Please list any extra modules or bundles to be installed from CPAN,
7087with spaces between the names. The names can be in any format the
dd2de242
JH
7088'install' command of CPAN.pm will understand. (Answer 'none',
7089without the quotes, to install no extra modules or bundles.)
6fcddf3b
JH
7090EOM
7091 rp='Extras?'
7092 dflt="$extras"
7093 . ./myread
7094 extras="$ans"
7095esac
7096case "$extras" in
7097''|'none')
7098 val=''
7099 $rm -f ../extras.lst
7100 ;;
7101*) echo "(Saving the list of extras for later...)"
dd2de242
JH
7102 echo "$extras" > ../extras.lst
7103 val="'$extras'"
6fcddf3b
JH
7104 ;;
7105esac
7106set extras
7107eval $setvar
7108echo " "
7109
b4eb6b3d
JH
7110: Find perl5.005 or later.
7111echo "Looking for a previously installed perl5.005 or later... "
7112case "$perl5" in
a938a3bb 7113'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
b4eb6b3d 7114 : Check if this perl is recent and can load a simple module
a938a3bb 7115 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
b4eb6b3d
JH
7116 perl5=$tdir/perl
7117 break;
a938a3bb
IZ
7118 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7119 perl5=$tdir/perl5
b4eb6b3d
JH
7120 break;
7121 fi
7122 done
7123 ;;
7124*) perl5="$perl5"
7125 ;;
7126esac
7127case "$perl5" in
7128'') echo "None found. That's ok.";;
7129*) echo "Using $perl5." ;;
7130esac
7131
7132: Determine list of previous versions to include in @INC
7133$cat > getverlist <<EOPL
7134#!$perl5 -w
7135use File::Basename;
7136\$api_versionstring = "$api_versionstring";
7137\$version = "$version";
7138\$stem = "$sitelib_stem";
7139\$archname = "$archname";
7140EOPL
7141 $cat >> getverlist <<'EOPL'
7142# Can't have leading @ because metaconfig interprets it as a command!
7143;@inc_version_list=();
7144# XXX Redo to do opendir/readdir?
7145if (-d $stem) {
7146 chdir($stem);
7147 ;@candidates = glob("5.*");
7148}
7149else {
7150 ;@candidates = ();
7151}
7152
7153# XXX ToDo: These comparisons must be reworked when two-digit
7154# subversions come along, so that 5.7.10 compares as greater than
7155# 5.7.3! By that time, hope that 5.6.x is sufficiently
7156# widespread that we can use the built-in version vectors rather
7157# than reinventing them here. For 5.6.0, however, we must
7158# assume this script will likely be run by 5.005_0x. --AD 1/2000.
7159foreach $d (@candidates) {
7160 if ($d lt $version) {
7161 if ($d ge $api_versionstring) {
7162 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7163 }
7164 elsif ($d ge "5.005") {
7165 unshift(@inc_version_list, grep { -d } $d);
7166 }
7167 }
7168 else {
7169 # Skip newer version. I.e. don't look in
7170 # 5.7.0 if we're installing 5.6.1.
7171 }
7172}
7173
7174if (@inc_version_list) {
7175 print join(' ', @inc_version_list);
7176}
7177else {
7178 # Blank space to preserve value for next Configure run.
7179 print " ";
7180}
7181EOPL
7182chmod +x getverlist
7183case "$inc_version_list" in
a938a3bb 7184'') if test -x "$perl5$exe_ext"; then
b4eb6b3d
JH
7185 dflt=`$perl5 getverlist`
7186 else
7187 dflt='none'
7188 fi
7189 ;;
7190$undef) dflt='none' ;;
6d1a7737 7191*) eval dflt=\"$inc_version_list\" ;;
b4eb6b3d
JH
7192esac
7193case "$dflt" in
7194''|' ') dflt=none ;;
7195esac
7196case "$dflt" in
71975.005) case "$bincompat5005" in
7198 $define|true|[yY]*) ;;
7199 *) dflt=none ;;
7200 esac
7201 ;;
7202esac
7203$cat <<'EOM'
7204
7205In order to ease the process of upgrading, this version of perl
7206can be configured to use modules built and installed with earlier
7207versions of perl that were installed under $prefix. Specify here
7208the list of earlier versions that this version of perl should check.
7209If Configure detected no earlier versions of perl installed under
7210$prefix, then the list will be empty. Answer 'none' to tell perl
7211to not search earlier versions.
7212
7213The default should almost always be sensible, so if you're not sure,
7214just accept the default.
7215EOM
7216
7217rp='List of earlier versions to include in @INC?'
7218. ./myread
7219case "$ans" in
7220[Nn]one|''|' ') inc_version_list=' ' ;;
7221*) inc_version_list="$ans" ;;
7222esac
7223case "$inc_version_list" in
7224''|' ')
7225 inc_version_list_init='0';;
7226*) inc_version_list_init=`echo $inc_version_list |
7227 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7228 ;;
7229esac
7230$rm -f getverlist
7231
7232: determine whether to install perl also as /usr/bin/perl
7233
7234echo " "
7235if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7236 $cat <<EOM
7237Many scripts expect perl to be installed as /usr/bin/perl.
7238I can install the perl you are about to compile also as /usr/bin/perl
7239(in addition to $installbin/perl).
7240EOM
7241 case "$installusrbinperl" in
7242 "$undef"|[nN]*) dflt='n';;
7243 *) dflt='y';;
7244 esac
7245 rp="Do you want to install perl as /usr/bin/perl?"
7246 . ./myread
7247 case "$ans" in
7248 [yY]*) val="$define";;
7249 *) val="$undef" ;;
7250 esac
7251else
7252 val="$undef"
7253fi
7254set installusrbinperl
7255eval $setvar
7256
7257: see if dld is available
7258set dld.h i_dld
7259eval $inhdr
7260
7261: see if dlopen exists
7262xxx_runnm="$runnm"
7263runnm=false
7264set dlopen d_dlopen
7265eval $inlibc
7266runnm="$xxx_runnm"
7267
7268: determine which dynamic loading, if any, to compile in
7269echo " "
7270dldir="ext/DynaLoader"
7271case "$usedl" in
7272$define|y|true)
7273 dflt='y'
7274 usedl="$define"
7275 ;;
7276$undef|n|false)
7277 dflt='n'
7278 usedl="$undef"
7279 ;;
7280*)
7281 dflt='n'
7282 case "$d_dlopen" in
7283 $define) dflt='y' ;;
7284 esac
7285 case "$i_dld" in
7286 $define) dflt='y' ;;
7287 esac
7288 : Does a dl_xxx.xs file exist for this operating system
7289 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7290 ;;
7291esac
7292rp="Do you wish to use dynamic loading?"
7293. ./myread
7294usedl="$ans"
7295case "$ans" in
7296y*) usedl="$define"
7297 case "$dlsrc" in
7298 '')
7299 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7300 dflt="$dldir/dl_${osname}.xs"
7301 elif $test "$d_dlopen" = "$define" ; then
7302 dflt="$dldir/dl_dlopen.xs"
7303 elif $test "$i_dld" = "$define" ; then
7304 dflt="$dldir/dl_dld.xs"
7305 else
7306 dflt=''
7307 fi
7308 ;;
7309 *) dflt="$dldir/$dlsrc"
7310 ;;
7311 esac
7312 echo "The following dynamic loading files are available:"
7313 : Can not go over to $dldir because getfile has path hard-coded in.
6904989c 7314 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
b4eb6b3d
JH
7315 rp="Source file to use for dynamic loading"
7316 fn="fne"
7317 gfpth="$src"
7318 . ./getfile
7319 usedl="$define"
7320 : emulate basename
7321 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7322
7323 $cat << EOM
7324
7325Some systems may require passing special flags to $cc -c to
7326compile modules that will be used to create a shared library.
7327To use no flags, say "none".
7328
7329EOM
7330 case "$cccdlflags" in
7331 '') case "$gccversion" in
7332 '') case "$osname" in
7333 hpux) dflt='+z' ;;
7334 next) dflt='none' ;;
7335 irix*) dflt='-KPIC' ;;
48bcfe03 7336 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
7337 sunos) dflt='-pic' ;;
7338 *) dflt='none' ;;
7339 esac
7340 ;;
7341 *) case "$osname" in
b6cc0f4c 7342 darwin) dflt='none' ;;
48bcfe03 7343 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
7344 *) dflt='-fpic' ;;
7345 esac ;;
7346 esac ;;
7347 ' ') dflt='none' ;;
7348 *) dflt="$cccdlflags" ;;
7349 esac
7350 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7351 . ./myread
7352 case "$ans" in
7353 none) cccdlflags=' ' ;;
7354 *) cccdlflags="$ans" ;;
7355 esac
7356
7357 cat << EOM
7358
7359Some systems use ld to create libraries that can be dynamically loaded,
7360while other systems (such as those using ELF) use $cc.
7361
7362EOM
7363 case "$ld" in
7364 '') $cat >try.c <<'EOM'
7365/* Test for whether ELF binaries are produced */
7366#include <fcntl.h>
7367#include <stdlib.h>
7368int main() {
7369 char b[4];
7370 int i = open("a.out",O_RDONLY);
7371 if(i == -1)
7372 exit(1); /* fail */
7373 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7374 exit(0); /* succeed (yes, it's ELF) */
7375 else
7376 exit(1); /* fail */
7377}
7378EOM
5440bc8e 7379 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
b4eb6b3d
JH
7380 cat <<EOM
7381You appear to have ELF support. I'll use $cc to build dynamic libraries.
7382EOM
7383 dflt="$cc"
7384 else
7385 echo "I'll use ld to build dynamic libraries."
7386 dflt='ld'
7387 fi
7388 rm -f try.c a.out
7389 ;;
7390 *) dflt="$ld"
7391 ;;
7392 esac
7393
7394 rp="What command should be used to create dynamic libraries?"
7395 . ./myread
7396 ld="$ans"
7397
7398 cat << EOM
7399
7400Some systems may require passing special flags to $ld to create a
7401library that can be dynamically loaded. If your ld flags include
7402-L/other/path options to locate libraries outside your loader's normal
7403search path, you may need to specify those -L options here as well. To
7404use no flags, say "none".
7405
7406EOM
7407 case "$lddlflags" in
7408 '') case "$osname" in
7409 beos) dflt='-nostart' ;;
7410 hpux) dflt='-b';
7411 case "$gccversion" in
7412 '') dflt="$dflt +vnocompatwarnings" ;;
7413 esac
7414 ;;
7415 linux|irix*) dflt='-shared' ;;
7416 next) dflt='none' ;;
7417 solaris) dflt='-G' ;;
7418 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 7419 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
7420 *) dflt='none' ;;
7421 esac
7422 ;;
7423 *) dflt="$lddlflags" ;;
7424 esac
7425
7426 : Try to guess additional flags to pick up local libraries.
7427 : Be careful not to append to a plain 'none'
7428 case "$dflt" in
7429 none) dflt='' ;;
7430 esac
7431 for thisflag in $ldflags; do
7432 case "$thisflag" in
b5b9f165 7433 -L*|-R*|-Wl,-R*)
b4eb6b3d
JH
7434 case " $dflt " in
7435 *" $thisflag "*) ;;
7436 *) dflt="$dflt $thisflag" ;;
7437 esac
7438 ;;
7439 esac
7440 done
7441
7442 case "$dflt" in
7443 ''|' ') dflt='none' ;;
7444 esac
7445
7446 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7447 . ./myread
7448 case "$ans" in
7449 none) lddlflags=' ' ;;
7450 *) lddlflags="$ans" ;;
7451 esac
7452
7453 cat <<EOM
7454
7455Some systems may require passing special flags to $cc to indicate that
7456the resulting executable will use dynamic linking. To use no flags,
7457say "none".
7458
7459EOM
7460 case "$ccdlflags" in
7461 '') case "$osname" in
7462 hpux) dflt='-Wl,-E' ;;
7463 linux) dflt='-rdynamic' ;;
7464 next) dflt='none' ;;
7465 sunos) dflt='none' ;;
7466 *) dflt='none' ;;
7467 esac ;;
7468 ' ') dflt='none' ;;
7469 *) dflt="$ccdlflags" ;;
7470 esac
7471 rp="Any special flags to pass to $cc to use dynamic linking?"
7472 . ./myread
7473 case "$ans" in
7474 none) ccdlflags=' ' ;;
7475 *) ccdlflags="$ans" ;;
7476 esac
7477 ;;
7478*) usedl="$undef"
7479 ld='ld'
7480 dlsrc='dl_none.xs'
7481 lddlflags=''
7482 ccdlflags=''
7483 ;;
7484esac
7485
7486also=''
7487case "$usedl" in
7488$undef)
7489 # No dynamic loading being used, so don't bother even to prompt.
7490 useshrplib='false'
7491 ;;
7492*) case "$useshrplib" in
7493 '') case "$osname" in
48bcfe03 7494 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
7495 dflt=y
7496 also='Building a shared libperl is required for dynamic loading to work on your system.'
7497 ;;
7498 next*)
7499 case "$osvers" in
7500 4*) dflt=y
7501 also='Building a shared libperl is needed for MAB support.'
7502 ;;
7503 *) dflt=n
7504 ;;
7505 esac
7506 ;;
7507 *) dflt=n
7508 ;;
7509 esac
7510 ;;
7511 $define|true|[Yy]*)
7512 dflt=y
7513 ;;
7514 *) dflt=n
7515 ;;
7516 esac
7517 $cat << EOM
7518
7519The perl executable is normally obtained by linking perlmain.c with
7520libperl${_a}, any static extensions (usually just DynaLoader), and
7521any other libraries needed on this system (such as -lm, etc.). Since
7522your system supports dynamic loading, it is probably possible to build
7523a shared libperl.$so. If you will have more than one executable linked
7524to libperl.$so, this will significantly reduce the size of each
7525executable, but it may have a noticeable affect on performance. The
7526default is probably sensible for your system.
7527$also
7528
7529EOM
7530 rp="Build a shared libperl.$so (y/n)"
7531 . ./myread
7532 case "$ans" in
7533 true|$define|[Yy]*)
7534 useshrplib='true' ;;
7535 *) useshrplib='false' ;;
7536 esac
7537 ;;
7538esac
7539
7540case "$useshrplib" in
7541true)
7542 case "$libperl" in
7543 '')
7544 # Figure out a good name for libperl.so. Since it gets stored in
7545 # a version-specific architecture-dependent library, the version
7546 # number isn't really that important, except for making cc/ld happy.
7547 #
7548 # A name such as libperl.so.3.1
7549 majmin="libperl.$so.$patchlevel.$subversion"
7550 # A name such as libperl.so.301
7551 majonly=`echo $patchlevel $subversion |
7552 $awk '{printf "%d%02d", $1, $2}'`
7553 majonly=libperl.$so.$majonly
7554 # I'd prefer to keep the os-specific stuff here to a minimum, and
7555 # rely on figuring it out from the naming of libc.
7556 case "${osname}${osvers}" in
7557 next4*)
7558 dflt=libperl.5.$so
7559 # XXX How handle the --version stuff for MAB?
7560 ;;
7561 linux*) # ld won't link with a bare -lperl otherwise.
7562 dflt=libperl.$so
7563 ;;
b53432e4
GH
7564 cygwin*) # ld links against an importlib
7565 dflt=libperl$lib_ext
b4eb6b3d
JH
7566 ;;
7567 *) # Try to guess based on whether libc has major.minor.
7568 case "$libc" in
7569 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7570 *libc.$so.[0-9]*) dflt=$majonly ;;
7571 *) dflt=libperl.$so ;;
7572 esac
7573 ;;
7574 esac
7575 ;;
7576 *) dflt=$libperl
7577 ;;
7578 esac
7579 cat << EOM
7580
7581I need to select a good name for the shared libperl. If your system uses
7582library names with major and minor numbers, then you might want something
7583like $majmin. Alternatively, if your system uses a single version
7584number for shared libraries, then you might want to use $majonly.
7585Or, your system might be quite happy with a simple libperl.$so.
7586
7587Since the shared libperl will get installed into a version-specific
7588architecture-dependent directory, the version number of the shared perl
7589library probably isn't important, so the default should be o.k.
7590
7591EOM
7592 rp='What name do you want to give to the shared libperl?'
7593 . ./myread
7594 libperl=$ans
7595 echo "Ok, I'll use $libperl"
7596 ;;
7597*)
7598 libperl="libperl${_a}"
7599 ;;
7600esac
7601
7602# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7603case "$shrpdir" in
7604'') ;;
7605*) $cat >&4 <<EOM
7606WARNING: Use of the shrpdir variable for the installation location of
7607the shared $libperl is not supported. It was never documented and
7608will not work in this version. Let me (perlbug@perl.org)
7609know of any problems this may cause.
7610
7611EOM
7612 case "$shrpdir" in
7613 "$archlibexp/CORE")
7614 $cat >&4 <<EOM
7615But your current setting of $shrpdir is
7616the default anyway, so it's harmless.
7617EOM
7618 ;;
7619 *)
7620 $cat >&4 <<EOM
7621Further, your current attempted setting of $shrpdir
7622conflicts with the value of $archlibexp/CORE
7623that installperl will use.
7624EOM
7625 ;;
7626 esac
7627 ;;
7628esac
7629
7630# How will the perl executable find the installed shared $libperl?
7631# Add $xxx to ccdlflags.
7632# If we can't figure out a command-line option, use $shrpenv to
7633# set env LD_RUN_PATH. The main perl makefile uses this.
7634shrpdir=$archlibexp/CORE
7635xxx=''
7636tmp_shrpenv=''
7637if "$useshrplib"; then
7638 case "$osname" in
7639 aix)
7640 # We'll set it in Makefile.SH...
7641 ;;
b5b9f165 7642 solaris)
b4eb6b3d
JH
7643 xxx="-R $shrpdir"
7644 ;;
b5b9f165 7645 freebsd|netbsd)
b4eb6b3d
JH
7646 xxx="-Wl,-R$shrpdir"
7647 ;;
7648 linux|irix*|dec_osf)
7649 xxx="-Wl,-rpath,$shrpdir"
7650 ;;
7651 next)
7652 # next doesn't like the default...
7653 ;;
7654 beos)
7655 # beos doesn't like the default, either.
7656 ;;
7657 hpux*)
7658 # hpux doesn't like the default, either.
7659 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7660 ;;
7661 *)
7662 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7663 ;;
7664 esac
7665 case "$xxx" in
7666 '') ;;
7667 *)
7668 # Only add $xxx if it isn't already in ccdlflags.
7669 case " $ccdlflags " in
7670 *" $xxx "*) ;;
7671 *) ccdlflags="$ccdlflags $xxx"
7672 cat <<EOM >&4
7673
7674Adding $xxx to the flags
7675passed to $ld so that the perl executable will find the
7676installed shared $libperl.
7677
7678EOM
7679 ;;
7680 esac
7681 ;;
7682 esac
7683fi
7684# Fix ccdlflags in AIX for building external extensions.
7685# (For building Perl itself bare -bE:perl.exp is needed,
7686# Makefile.SH takes care of this.)
7687case "$osname" in
7688aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7689esac
7690# Respect a hint or command-line value.
7691case "$shrpenv" in
7692'') shrpenv="$tmp_shrpenv" ;;
7693esac
7694case "$ldlibpthname" in
7695'') ldlibpthname=LD_LIBRARY_PATH ;;
7696none) ldlibpthname='' ;;
7697esac
7698
7699: determine where manual pages are on this system
7700echo " "
7701case "$sysman" in
7702'')
4a0a3829
SD
7703 syspath='/usr/share/man/man1 /usr/man/man1'
7704 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7705 syspath="$syspath /usr/man/u_man/man1"
b4eb6b3d
JH
7706 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7707 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7708 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7709 sysman=`./loc . /usr/man/man1 $syspath`
7710 ;;
7711esac
7712if $test -d "$sysman"; then
7713 echo "System manual is in $sysman." >&4
7714else
7715 echo "Could not find manual pages in source form." >&4
7716fi
7717
7718: determine where manual pages go
7719set man1dir man1dir none
7720eval $prefixit
7721$cat <<EOM
7722
7723$spackage has manual pages available in source form.
7724EOM
7725case "$nroff" in
7726nroff)
7727 echo "However, you don't have nroff, so they're probably useless to you."
7728 case "$man1dir" in
7729 '') man1dir="none";;
7730 esac;;
7731esac
7732echo "If you don't want the manual sources installed, answer 'none'."
7733case "$man1dir" in
7734' ') dflt=none
7735 ;;
7736'')
4a0a3829
SD
7737 lookpath="$prefixexp/share/man/man1"
7738 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
b4eb6b3d
JH
7739 lookpath="$lookpath $prefixexp/man/p_man/man1"
7740 lookpath="$lookpath $prefixexp/man/u_man/man1"
7741 lookpath="$lookpath $prefixexp/man/man.1"
7742 case "$sysman" in
7743 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7744 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7745 esac
7746 set dflt
7747 eval $prefixup
7748 ;;
7749*) dflt="$man1dir"
7750 ;;
7751esac
7752echo " "
7753fn=dn+~
7754rp="Where do the main $spackage manual pages (source) go?"
7755. ./getfile
7756if $test "X$man1direxp" != "X$ansexp"; then
7757 installman1dir=''
7758fi
7759man1dir="$ans"
7760man1direxp="$ansexp"
7761case "$man1dir" in
7762'') man1dir=' '
7763 installman1dir='';;
7764esac
7765
7766: Change installation prefix, if necessary.
7767if $test X"$prefix" != X"$installprefix"; then
7768 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7769else
7770 installman1dir="$man1direxp"
7771fi
7772
7773: What suffix to use on installed man pages
7774
7775case "$man1dir" in
7776' ')
7777 man1ext='0'
7778 ;;
7779*)
7780 rp="What suffix should be used for the main $spackage man pages?"
7781 case "$man1ext" in
7782 '') case "$man1dir" in
7783 *1) dflt=1 ;;
7784 *1p) dflt=1p ;;
7785 *1pm) dflt=1pm ;;
7786 *l) dflt=l;;
7787 *n) dflt=n;;
7788 *o) dflt=o;;
7789 *p) dflt=p;;
7790 *C) dflt=C;;
7791 *L) dflt=L;;
7792 *L1) dflt=L1;;
7793 *) dflt=1;;
7794 esac
7795 ;;
7796 *) dflt="$man1ext";;
7797 esac
7798 . ./myread
7799 man1ext="$ans"
7800 ;;
7801esac
7802
7803: see if we can have long filenames
7804echo " "
7805first=123456789abcdef
7806$rm -f $first
7807if (echo hi >$first) 2>/dev/null; then
7808 if $test -f 123456789abcde; then
7809 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7810 val="$undef"
7811 else
7812 echo 'You can have filenames longer than 14 characters.'>&4
7813 val="$define"
7814 fi
7815else
7816 $cat <<'EOM'
7817You can't have filenames longer than 14 chars.
7818You can't even think about them!
7819EOM
7820 val="$undef"
7821fi
7822set d_flexfnam
7823eval $setvar
7824$rm -rf 123456789abcde*
7825
7826: determine where library module manual pages go
7827set man3dir man3dir none
7828eval $prefixit
7829$cat <<EOM
7830
7831$spackage has manual pages for many of the library modules.
7832EOM
7833
7834case "$nroff" in
7835nroff)
7836 $cat <<'EOM'
7837However, you don't have nroff, so they're probably useless to you.
7838EOM
7839 case "$man3dir" in
7840 '') man3dir="none";;
7841 esac;;
7842esac
7843
7844case "$d_flexfnam" in
7845undef)
7846 $cat <<'EOM'
7847However, your system can't handle the long file names like File::Basename.3.
7848EOM
7849 case "$man3dir" in
7850 '') man3dir="none";;
7851 esac;;
7852esac
7853
7854echo "If you don't want the manual sources installed, answer 'none'."
7855prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7856case "$man3dir" in
7857'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7858 if $test -d "$privlib/man/man3"; then
7859 cat <<EOM >&4
7860
7861WARNING: Previous versions of perl installed man3 pages into
7862$privlib/man/man3. This version will suggest a
7863new default of $dflt.
7864EOM
7865 tdflt=$dflt
7866 dflt='n'
7867 rp='Do you wish to preserve the old behavior?(y/n)'
7868 . ./myread
7869 case "$ans" in
7870 y*) dflt="$privlib/man/man3" ;;
7871 *) dflt=$tdflt ;;
7872 esac
7873 fi
7874 ;;
7875*) dflt="$man3dir" ;;
7876esac
7877case "$dflt" in
7878' ') dflt=none ;;
7879esac
7880echo " "
7881fn=dn+~
7882rp="Where do the $package library man pages (source) go?"
7883. ./getfile
7884man3dir="$ans"
7885man3direxp="$ansexp"
7886case "$man3dir" in
7887'') man3dir=' '
7888 installman3dir='';;
7889esac
7890
7891: Change installation prefix, if necessary.
7892if $test X"$prefix" != X"$installprefix"; then
7893 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7894else
7895 installman3dir="$man3direxp"
7896fi
7897
7898: What suffix to use on installed man pages
7899case "$man3dir" in
7900' ')
7901 man3ext='0'
7902 ;;
7903*)
7904 rp="What suffix should be used for the $package library man pages?"
7905 case "$man3ext" in
7906 '') case "$man3dir" in
7907 *3) dflt=3 ;;
7908 *3p) dflt=3p ;;
7909 *3pm) dflt=3pm ;;
7910 *l) dflt=l;;
7911 *n) dflt=n;;
7912 *o) dflt=o;;
7913 *p) dflt=p;;
7914 *C) dflt=C;;
7915 *L) dflt=L;;
7916 *L3) dflt=L3;;
7917 *) dflt=3;;
7918 esac
7919 ;;
7920 *) dflt="$man3ext";;
7921 esac
7922 . ./myread
7923 man3ext="$ans"
7924 ;;
7925esac
7926
7927: see if we have to deal with yellow pages, now NIS.
0384a54a 7928if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
b4eb6b3d
JH
7929 if $test -f /usr/etc/nibindd; then
7930 echo " "
7931 echo "I'm fairly confident you're on a NeXT."
7932 echo " "
7933 rp='Do you get the hosts file via NetInfo?'
7934 dflt=y
7935 case "$hostcat" in
7936 nidump*) ;;
7937 '') ;;
7938 *) dflt=n;;
7939 esac
7940 . ./myread
7941 case "$ans" in
7942 y*) hostcat='nidump hosts .';;
7943 *) case "$hostcat" in
7944 nidump*) hostcat='';;
7945 esac
7946 ;;
7947 esac
7948 fi
7949 case "$hostcat" in
7950 nidump*) ;;
7951 *)
7952 case "$hostcat" in
7953 *ypcat*) dflt=y;;
7954 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7955 dflt=y
7956 else
7957 dflt=n
7958 fi;;
7959 *) dflt=n;;
7960 esac
7961 echo " "
7962 rp='Are you getting the hosts file via yellow pages?'
7963 . ./myread
7964 case "$ans" in
7965 y*) hostcat='ypcat hosts';;
7966 *) hostcat='cat /etc/hosts';;
7967 esac
7968 ;;
7969 esac
7970fi
7971case "$hostcat" in
7972'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7973esac
7974case "$groupcat" in
7975'') test -f /etc/group && groupcat='cat /etc/group';;
7976esac
7977case "$passcat" in
7978'') test -f /etc/passwd && passcat='cat /etc/passwd';;
7979esac
7980
7981: now get the host name
7982echo " "
7983echo "Figuring out host name..." >&4
7984case "$myhostname" in
7985'') cont=true
7986 echo 'Maybe "hostname" will work...'
73614538 7987 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
7988 myhostname=$tans
7989 phostname=hostname
7990 cont=''
7991 fi
7992 ;;
7993*) cont='';;
7994esac
7995if $test "$cont"; then
7996 if ./xenix; then
7997 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7998 if tans=`cat /etc/systemid 2>&1` ; then
7999 myhostname=$tans
8000 phostname='cat /etc/systemid'
8001 echo "Whadyaknow. Xenix always was a bit strange..."
8002 cont=''
8003 fi
8004 elif $test -r /etc/systemid; then
8005 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8006 fi
8007fi
8008if $test "$cont"; then
8009 echo 'No, maybe "uuname -l" will work...'
73614538 8010 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
8011 myhostname=$tans
8012 phostname='uuname -l'
8013 else
8014 echo 'Strange. Maybe "uname -n" will work...'
73614538 8015 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
8016 myhostname=$tans
8017 phostname='uname -n'
8018 else
8019 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 8020 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
8021 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8022 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8023 else
8024 case "$myhostname" in
8025 '') echo "Does this machine have an identity crisis or something?"
8026 phostname='';;
8027 *)
8028 echo "Well, you said $myhostname before..."
8029 phostname='echo $myhostname';;
8030 esac
8031 fi
8032 fi
8033 fi
8034fi
52a549d0
JH
8035case "$myhostname" in
8036'') myhostname=noname ;;
8037esac
b4eb6b3d
JH
8038: you do not want to know about this
8039set $myhostname
8040myhostname=$1
8041
8042: verify guess
8043if $test "$myhostname" ; then
8044 dflt=y
8045 rp='Your host name appears to be "'$myhostname'".'" Right?"
8046 . ./myread
8047 case "$ans" in
8048 y*) ;;
8049 *) myhostname='';;
8050 esac
8051fi
8052
8053: bad guess or no guess
8054while $test "X$myhostname" = X ; do
8055 dflt=''
8056 rp="Please type the (one word) name of your host:"
8057 . ./myread
8058 myhostname="$ans"
8059done
8060
8061: translate upper to lower if necessary
8062case "$myhostname" in
8063*[A-Z]*)
8064 echo "(Normalizing case in your host name)"
8065 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8066 ;;
8067esac
8068
8069case "$myhostname" in
8070*.*)
8071 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8072 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8073 echo "(Trimming domain name from host name--host name is now $myhostname)"
8074 ;;
8075*) case "$mydomain" in
8076 '')
8077 {
8078 test "X$hostcat" = "Xypcat hosts" &&
8079 ypmatch "$myhostname" hosts 2>/dev/null |\
8080 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8081 $test -s hosts
8082 } || {
8083 test "X$hostcat" != "X" &&
8084 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8085 /[ ]$myhostname[ . ]/p" > hosts
8086 }
8087 tmp_re="[ . ]"
f08cbdd1
PP
8088 if $test -f hosts; then
8089 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 8090 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
8091 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8092 hosts | $sort | $uniq | \
8093 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8094 case `$echo X$dflt` in
8095 X*\ *) echo "(Several hosts in the database matched hostname)"
8096 dflt=.
8097 ;;
8098 X.) echo "(You do not have fully-qualified names in the hosts database)"
8099 ;;
8100 esac
8101 else
8102 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 8103 dflt=.
f08cbdd1 8104 fi
b4eb6b3d
JH
8105 case "$dflt" in
8106 .)
8107 tans=`./loc resolv.conf X /etc /usr/etc`
8108 if $test -f "$tans"; then
8109 echo "(Attempting domain name extraction from $tans)"
8110 dflt=.`$sed -n -e 's/ / /g' \
8111 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8112 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8113 case "$dflt" in
8114 .) dflt=.`$sed -n -e 's/ / /g' \
8115 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8116 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8117 ;;
8118 esac
8119 fi
8120 ;;
8121 esac
8122 case "$dflt" in
8123 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 8124 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
8125 case "$dflt" in
8126 '') dflt='.';;
8127 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8128 esac
8129 ;;
8130 esac
59c9e5d6
PP
8131 case "$dflt$osname" in
8132 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
caf85fe8 8133 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
59c9e5d6
PP
8134 ;;
8135 esac
b4eb6b3d
JH
8136 case "$dflt" in
8137 .) echo "(Lost all hope -- silly guess then)"
52a549d0 8138 dflt='.nonet'
b4eb6b3d
JH
8139 ;;
8140 esac
8141 $rm -f hosts
8142 ;;
8143 *) dflt="$mydomain";;
8144 esac;;
8145esac
8146echo " "
8147rp="What is your domain name?"
8148. ./myread
8149tans="$ans"
8150case "$ans" in
8151'') ;;
8152.*) ;;
8153*) tans=".$tans";;
8154esac
8155mydomain="$tans"
8156
8157: translate upper to lower if necessary
8158case "$mydomain" in
8159*[A-Z]*)
8160 echo "(Normalizing case in your domain name)"
8161 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8162 ;;
8163esac
8164
8165: a little sanity check here
8166case "$phostname" in
8167'') ;;
8168*)
8169 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8170 $myhostname$mydomain|$myhostname) ;;
8171 *)
8172 case "$phostname" in
8173 sed*)
8174 echo "(That doesn't agree with your whoami.h file, by the way.)"
8175 ;;
8176 *)
8177 echo "(That doesn't agree with your $phostname command, by the way.)"
8178 ;;
8179 esac
8180 ;;
8181 esac
8182 ;;
8183esac
8184
8185$cat <<EOM
8186
8187I need to get your e-mail address in Internet format if possible, i.e.
8188something like user@host.domain. Please answer accurately since I have
8189no easy means to double check it. The default value provided below
8190is most probably close to reality but may not be valid from outside
8191your organization...
8192
8193EOM
8194cont=x
8195while test "$cont"; do
8196 case "$cf_email" in
8197 '') dflt="$cf_by@$myhostname$mydomain";;
8198 *) dflt="$cf_email";;
8199 esac
8200 rp='What is your e-mail address?'
8201 . ./myread
8202 cf_email="$ans"
8203 case "$cf_email" in
8204 *@*.*) cont='' ;;
8205 *)
8206 rp='Address does not look like an Internet one. Use it anyway?'
8207 case "$fastread" in
8208 yes) dflt=y ;;
8209 *) dflt=n ;;
8210 esac
8211 . ./myread
8212 case "$ans" in
8213 y*) cont='' ;;
8214 *) echo " " ;;
8215 esac
8216 ;;
8217 esac
8218done
8219
8220$cat <<EOM
8221
8222If you or somebody else will be maintaining perl at your site, please
8223fill in the correct e-mail address here so that they may be contacted
8224if necessary. Currently, the "perlbug" program included with perl
8225will send mail to this address in addition to perlbug@perl.org. You may
8226enter "none" for no administrator.
8227
8228EOM
8229case "$perladmin" in
8230'') dflt="$cf_email";;
8231*) dflt="$perladmin";;
8232esac
8233rp='Perl administrator e-mail address'
8234. ./myread
8235perladmin="$ans"
8236
674912d7
RB
8237: determine whether to only install version-specific parts.
8238echo " "
8239$cat <<EOM
8240Do you want to install only the version-specific parts of the perl
8241distribution? Usually you do *not* want to do this.
8242EOM
8243case "$versiononly" in
8244"$define"|[Yy]*|true) dflt='y' ;;
8245*) dflt='n';
8246esac
8247rp="Do you want to install only the version-specific parts of perl?"
8248. ./myread
8249case "$ans" in
8250[yY]*) val="$define";;
8251*) val="$undef" ;;
8252esac
8253set versiononly
8254eval $setvar
8255
b4eb6b3d
JH
8256: figure out how to guarantee perl startup
8257case "$startperl" in
8258'')
8259 case "$sharpbang" in
8260 *!)
8261 $cat <<EOH
8262
8263I can use the #! construct to start perl on your system. This will
8264make startup of perl scripts faster, but may cause problems if you
8265want to share those scripts and perl is not in a standard place
8266($binexp/perl) on all your platforms. The alternative is to force
8267a shell by starting the script with a single ':' character.
8268
8269EOH
674912d7
RB
8270 case "$versiononly" in
8271 "$define") dflt="$binexp/perl$version";;
8272 *) dflt="$binexp/perl";;
8273 esac
b4eb6b3d
JH
8274 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8275 . ./myread
8276 case "$ans" in
8277 none) startperl=": # use perl";;
8278 *) startperl="#!$ans"
8279 if $test 30 -lt `echo "$ans" | wc -c`; then
8280 $cat >&4 <<EOM
8281
8282WARNING: Some systems limit the #! command to 32 characters.
8283If you experience difficulty running Perl scripts with #!, try
8284installing Perl in a directory with a shorter pathname.
8285
8286EOM
8287 fi ;;
8288 esac
8289 ;;
8290 *) startperl=": # use perl"
8291 ;;
8292 esac
8293 ;;
8294esac
8295echo "I'll use $startperl to start perl scripts."
8296
8297: figure best path for perl in scripts
8298case "$perlpath" in
8299'')
5e20a8ca
RGS
8300 case "$versiononly" in
8301 "$define") perlpath="$binexp/perl$version";;
8302 *) perlpath="$binexp/perl";;
8303 esac
b4eb6b3d
JH
8304 case "$startperl" in
8305 *!*) ;;
8306 *)
8307 $cat <<EOH
8308
8309I will use the "eval 'exec'" idiom to start Perl on your system.
8310I can use the full path of your Perl binary for this purpose, but
8311doing so may cause problems if you want to share those scripts and
8312Perl is not always in a standard place ($binexp/perl).
8313
8314EOH
8315 dflt="$binexp/perl"
8316 rp="What path shall I use in \"eval 'exec'\"?"
8317 . ./myread
8318 perlpath="$ans"
8319 ;;
8320 esac
8321 ;;
8322esac
8323case "$startperl" in
8324*!*) ;;
8325*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8326esac
8327
8328: determine where public executable scripts go
8329set scriptdir scriptdir
8330eval $prefixit
8331case "$scriptdir" in
8332'')
8333 dflt="$bin"
8334 : guess some guesses
8335 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8336 $test -d /usr/share/bin && dflt=/usr/share/bin
8337 $test -d /usr/local/script && dflt=/usr/local/script
8338 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8339 $test -d $prefixexp/script && dflt=$prefixexp/script
8340 set dflt
8341 eval $prefixup
8342 ;;
8343*) dflt="$scriptdir"
8344 ;;
8345esac
8346$cat <<EOM
8347
8348Some installations have a separate directory just for executable scripts so
8349that they can mount it across multiple architectures but keep the scripts in
8350one spot. You might, for example, have a subdirectory of /usr/share for this.
8351Or you might just lump your scripts in with all your other executables.
8352
8353EOM
8354fn=d~
8355rp='Where do you keep publicly executable scripts?'
8356. ./getfile
8357if $test "X$ansexp" != "X$scriptdirexp"; then
8358 installscript=''
8359fi
8360scriptdir="$ans"
8361scriptdirexp="$ansexp"
8362: Change installation prefix, if necessary.
8363if $test X"$prefix" != X"$installprefix"; then
8364 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8365else
8366 installscript="$scriptdirexp"
8367fi
8368
8369: determine where add-on public executables go
8370case "$sitebin" in
8371'') dflt=$siteprefix/bin ;;
8372*) dflt=$sitebin ;;
8373esac
8374fn=d~
8375rp='Pathname where the add-on public executables should be installed?'
8376. ./getfile
8377sitebin="$ans"
8378sitebinexp="$ansexp"
8379: Change installation prefix, if necessary.
8380if $test X"$prefix" != X"$installprefix"; then
8381 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8382else
8383 installsitebin="$sitebinexp"
8384fi
8385
96056487
JH
8386: define an is-a-typedef? function
8387typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8388case "$inclist" in
8389"") inclist="sys/types.h";;
8390esac;
8391eval "varval=\$$var";
8392case "$varval" in
8393"")
8394 $rm -f temp.c;
8395 for inc in $inclist; do
8396 echo "#include <$inc>" >>temp.c;
8397 done;
8398 echo "#ifdef $type" >> temp.c;
8399 echo "printf(\"We have $type\");" >> temp.c;
8400 echo "#endif" >> temp.c;
8401 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8402 if $contains $type temp.E >/dev/null 2>&1; then
8403 eval "$var=\$type";
8404 else
8405 eval "$var=\$def";
8406 fi;
8407 $rm -f temp.?;;
8408*) eval "$var=\$varval";;
8409esac'
8410
8411: define an is-a-typedef? function that prompts if the type is not available.
8412typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8413case "$inclist" in
8414"") inclist="sys/types.h";;
8415esac;
8416eval "varval=\$$var";
8417case "$varval" in
8418"")
8419 $rm -f temp.c;
8420 for inc in $inclist; do
8421 echo "#include <$inc>" >>temp.c;
8422 done;
8423 echo "#ifdef $type" >> temp.c;
8424 echo "printf(\"We have $type\");" >> temp.c;
8425 echo "#endif" >> temp.c;
8426 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8427 echo " " ;
8428 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8429 if $contains $type temp.E >/dev/null 2>&1; then
8430 echo "$type found." >&4;
8431 eval "$var=\$type";
8432 else
8433 echo "$type NOT found." >&4;
8434 dflt="$def";
8435 . ./myread ;
8436 eval "$var=\$ans";
8437 fi;
8438 $rm -f temp.?;;
8439*) eval "$var=\$varval";;
8440esac'
8441
8442: see what type lseek is declared as in the kernel
8443rp="What is the type used for lseek's offset on this system?"
8444set off_t lseektype long stdio.h sys/types.h
8445eval $typedef_ask
8446
8447echo " "
8448echo "Checking to see how big your file offsets are..." >&4
8449$cat >try.c <<EOCP
8450#include <sys/types.h>
8451#include <stdio.h>
8452int main()
8453{
8454 printf("%d\n", (int)sizeof($lseektype));
8455 return(0);
8456}
8457EOCP
8458set try
8459if eval $compile_ok; then
8460 lseeksize=`$run ./try`
8461 echo "Your file offsets are $lseeksize bytes long."
8462else
8463 dflt=$longsize
8464 echo " "
8465 echo "(I can't seem to compile the test program. Guessing...)"
8466 rp="What is the size of your file offsets (in bytes)?"
8467 . ./myread
8468 lseeksize="$ans"
8469fi
8470$rm -f try.c try
8471
8472: see what type file positions are declared as in the library
8473rp="What is the type for file position used by fsetpos()?"
8474set fpos_t fpostype long stdio.h sys/types.h
8475eval $typedef_ask
8476
8477echo " "
8478case "$fpostype" in
8479*_t) zzz="$fpostype" ;;
8480*) zzz="fpos_t" ;;
8481esac
8482echo "Checking the size of $zzz..." >&4
8483cat > try.c <<EOCP
8484#include <sys/types.h>
8485#include <stdio.h>
8486int main() {
8487 printf("%d\n", (int)sizeof($fpostype));
8488 exit(0);
8489}
8490EOCP
8491set try
8492if eval $compile_ok; then
8493 yyy=`$run ./try`
8494 case "$yyy" in
8495 '') fpossize=4
8496 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8497 ;;
8498 *) fpossize=$yyy
8499 echo "Your $zzz is $fpossize bytes long."
8500 ;;
8501 esac
8502else
8503 dflt="$longsize"
8504 echo " " >&4
8505 echo "(I can't compile the test program. Guessing...)" >&4
8506 rp="What is the size of your file positions (in bytes)?"
8507 . ./myread
8508 fpossize="$ans"
8509fi
8510
8511
8512
8513# Backward compatibility (uselfs is deprecated).
8514case "$uselfs" in
8515"$define"|true|[yY]*)
8516 cat <<EOM >&4
8517
8518*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8519EOM
8520 uselargefiles="$define"
8521 ;;
8522esac
8523
8524case "$lseeksize:$fpossize" in
85258:8) cat <<EOM
8526
8527You can have files larger than 2 gigabytes.
8528EOM
8529 val="$define" ;;
8530*) case "$uselargefiles" in
8531 "$undef"|false|[nN]*) dflt='n' ;;
8532 *) dflt='y' ;;
8533 esac
8534 cat <<EOM
8535
8536Perl can be built to understand large files (files larger than 2 gigabytes)
8537on some systems. To do so, Configure can be run with -Duselargefiles.
8538
8539If this doesn't make any sense to you, just accept the default '$dflt'.
8540EOM
8541 rp='Try to understand large files, if available?'
8542 . ./myread
8543 case "$ans" in
8544 y|Y) val="$define" ;;
8545 *) val="$undef" ;;
8546 esac
8547 ;;
8548esac
8549set uselargefiles
8550eval $setvar
8551case "$uselargefiles" in
8552"$define")
8553: Look for a hint-file generated 'call-back-unit'. If the
8554: user has specified that a large files perl is to be built,
8555: we may need to set or change some other defaults.
8556 if $test -f uselargefiles.cbu; then
8557 echo "Your platform has some specific hints for large file builds, using them..."
8558 . ./uselargefiles.cbu
8559 echo " "
8560 echo "Rechecking to see how big your file offsets are..." >&4
8561 $cat >try.c <<EOCP
8562#include <sys/types.h>
8563#include <stdio.h>
8564int main()
8565{
8566 printf("%d\n", (int)sizeof($lseektype));
8567 return(0);
8568}
8569EOCP
8570 set try
8571 if eval $compile_ok; then
8572 lseeksize=`$run ./try`
8573 $echo "Your file offsets are now $lseeksize bytes long."
8574 else
8575 dflt="$lseeksize"
8576 echo " "
8577 echo "(I can't seem to compile the test program. Guessing...)"
8578 rp="What is the size of your file offsets (in bytes)?"
8579 . ./myread
8580 lseeksize="$ans"
8581 fi
8582 case "$fpostype" in
8583 *_t) zzz="$fpostype" ;;
8584 *) zzz="fpos_t" ;;
8585 esac
8586 $echo $n "Rechecking the size of $zzz...$c" >&4
8587 $cat > try.c <<EOCP
8588#include <sys/types.h>
8589#include <stdio.h>
8590int main() {
8591 printf("%d\n", (int)sizeof($fpostype));
8592 exit(0);
8593}
8594EOCP
8595 set try
8596 if eval $compile_ok; then
8597 yyy=`$run ./try`
8598 dflt="$lseeksize"
8599 case "$yyy" in
8600 '') echo " "
8601 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8602 ;;
8603 *) fpossize=$yyy
8604 echo " $fpossize bytes." >&4
8605 ;;
8606 esac
8607 else
8608 dflt="$fpossize"
8609 echo " "
8610 echo "(I can't compile the test program. Guessing...)" >&4
8611 rp="What is the size of your file positions (in bytes)?"
8612 . ./myread
8613 fpossize="$ans"
8614 fi
8615 $rm -f try.c try
8616 fi
8617 ;;
8618esac
8619
b4eb6b3d
JH
8620case "$vendorprefix" in
8621'') d_vendorbin="$undef"
8622 vendorbin=''
8623 vendorbinexp=''
8624 ;;
8625*) d_vendorbin="$define"
8626 : determine where vendor-supplied executables go.
8627 case "$vendorbin" in
8628 '') dflt=$vendorprefix/bin ;;
8629 *) dflt="$vendorbin" ;;
8630 esac
8631 fn=d~+
8632 rp='Pathname for the vendor-supplied executables directory?'
8633 . ./getfile
8634 vendorbin="$ans"
8635 vendorbinexp="$ansexp"
8636 ;;
8637esac
8638: Change installation prefix, if necessary.
8639if $test X"$prefix" != X"$installprefix"; then
8640 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8641else
8642 installvendorbin="$vendorbinexp"
8643fi
8644
8645: see if qgcvt exists
8646set qgcvt d_qgcvt
8647eval $inlibc
8648
b4eb6b3d
JH
8649: Check how to convert floats to strings.
8650echo " "
8651echo "Checking for an efficient way to convert floats to strings."
8652echo " " > try.c
8653case "$uselongdouble" in
8654"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8655esac
8656case "$d_longdbl" in
8657"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8658esac
8659case "$d_PRIgldbl" in
8660"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8661esac
8662$cat >>try.c <<EOP
8663#ifdef TRY_gconvert
8664#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8665char *myname = "gconvert";
8666#endif
8667#ifdef TRY_gcvt
8668#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8669char *myname = "gcvt";
8670#endif
8671#ifdef TRY_qgcvt
8672#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8673char *myname = "qgcvt";
8674#define DOUBLETYPE long double
8675#endif
8676#ifdef TRY_sprintf
8677#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8678#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8679#else
8680#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8681#endif
8682char *myname = "sprintf";
8683#endif
8684
8685#ifndef DOUBLETYPE
8686#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8687#define DOUBLETYPE long double
8688#else
8689#define DOUBLETYPE double
8690#endif
8691#endif
8692
8693#include <stdio.h>
8694
8695#define I_STDLIB $i_stdlib
8696#ifdef I_STDLIB
8697#include <stdlib.h>
8698#endif
8699
8700int
8701checkit(expect, got)
8702char *expect;
8703char *got;
8704{
8705 if (strcmp(expect, got)) {
8706 printf("%s oddity: Expected %s, got %s\n",
8707 myname, expect, got);
8708 exit(1);
8709 }
8710}
8711
8712int main()
8713{
8714 char buf[64];
8715 buf[63] = '\0';
8716
8717 /* This must be 1st test on (which?) platform */
8718 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8719 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8720 checkit("0.1", buf);
8721
8722 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8723 checkit("1", buf);
8724
8725 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8726 checkit("1.1", buf);
8727
8728 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8729 checkit("1.01", buf);
8730
8731 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8732 checkit("1.001", buf);
8733
8734 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8735 checkit("1.0001", buf);
8736
8737 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8738 checkit("1.00001", buf);
8739
8740 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8741 checkit("1.000001", buf);
8742
8743 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8744 checkit("0", buf);
8745
8746 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8747 checkit("-1", buf);
8748
8749 /* Some Linux gcvt's give 1.e+5 here. */
8750 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8751 checkit("100000", buf);
8752
8753 /* Some Linux gcvt's give -1.e+5 here. */
8754 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8755 checkit("-100000", buf);
8756
8757 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8758 checkit("123.456", buf);
8759
8e2a5ede
SB
8760 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8761 Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8762 if (strlen(buf) > 5)
8763 checkit("1e+030", buf); /* for Microsoft */
8764 else
8765 checkit("1e+30", buf);
8766
b4eb6b3d
JH
8767 exit(0);
8768}
8769EOP
8770case "$d_Gconvert" in
8771gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8772gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8773sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8774*) xxx_list='gconvert gcvt sprintf' ;;
8775esac
8776
8777case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8778"$define$define$define")
8779 # for long doubles prefer first qgcvt, then sprintf
8780 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8781 xxx_list="sprintf $xxx_list"
8782 case "$d_qgcvt" in
8783 "$define") xxx_list="qgcvt $xxx_list" ;;
8784 esac
8785 ;;
8786esac
8787
8788for xxx_convert in $xxx_list; do
8789 echo "Trying $xxx_convert..."
8790 $rm -f try try$_o
8791 set try -DTRY_$xxx_convert
8792 if eval $compile; then
8793 echo "$xxx_convert() found." >&4
5440bc8e 8794 if $run ./try; then
b4eb6b3d
JH
8795 echo "I'll use $xxx_convert to convert floats into a string." >&4
8796 break;
8797 else
8798 echo "...But $xxx_convert didn't work as I expected."
8799 fi
8800 else
8801 echo "$xxx_convert NOT found." >&4
8802 fi
8803done
8804
8805case "$xxx_convert" in
8806gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8807gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8808qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8809*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8810 "$define$define$define")
8811 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8812 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8813 esac
8814 ;;
8815esac
8816
74cac757
JH
8817: see if _fwalk exists
8818set fwalk d__fwalk
8819eval $inlibc
8820
b4eb6b3d
JH
8821: Initialize h_fcntl
8822h_fcntl=false
8823
8824: Initialize h_sysfile
8825h_sysfile=false
8826
8827: access call always available on UNIX
8828set access d_access
8829eval $inlibc
8830
8831: locate the flags for 'access()'
8832case "$d_access" in
8833"$define")
8834 echo " "
8835 $cat >access.c <<'EOCP'
8836#include <sys/types.h>
8837#ifdef I_FCNTL
8838#include <fcntl.h>
8839#endif
8840#ifdef I_SYS_FILE
8841#include <sys/file.h>
8842#endif
8843#ifdef I_UNISTD
8844#include <unistd.h>
8845#endif
8846int main() {
8847 exit(R_OK);
8848}
8849EOCP
8850 : check sys/file.h first, no particular reason here
8851 if $test `./findhdr sys/file.h` && \
7a282f6d 8852 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8853 h_sysfile=true;
8854 echo "<sys/file.h> defines the *_OK access constants." >&4
8855 elif $test `./findhdr fcntl.h` && \
7a282f6d 8856 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8857 h_fcntl=true;
8858 echo "<fcntl.h> defines the *_OK access constants." >&4
8859 elif $test `./findhdr unistd.h` && \
7a282f6d 8860 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8861 echo "<unistd.h> defines the *_OK access constants." >&4
8862 else
8863 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8864 fi
8865 ;;
8866esac
8867$rm -f access*
8868
8869: see if accessx exists
8870set accessx d_accessx
8871eval $inlibc
8872
8873: see if alarm exists
8874set alarm d_alarm
8875eval $inlibc
8876
8877: see if atolf exists
8878set atolf d_atolf
8879eval $inlibc
8880
8881: see if atoll exists
8882set atoll d_atoll
8883eval $inlibc
8884
8885: Look for GNU-cc style attribute checking
8886echo " "
8887echo "Checking whether your compiler can handle __attribute__ ..." >&4
8888$cat >attrib.c <<'EOCP'
8889#include <stdio.h>
8890void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8891EOCP
8892if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8893 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8894 echo "Your C compiler doesn't fully support __attribute__."
8895 val="$undef"
8896 else
8897 echo "Your C compiler supports __attribute__."
8898 val="$define"
8899 fi
8900else
8901 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8902 val="$undef"
8903fi
8904set d_attribut
8905eval $setvar
8906$rm -f attrib*
8907
8908: see if bcmp exists
8909set bcmp d_bcmp
8910eval $inlibc
8911
8912: see if bcopy exists
8913set bcopy d_bcopy
8914eval $inlibc
8915
8916: see if this is a unistd.h system
8917set unistd.h i_unistd
8918eval $inhdr
8919
8920: see if getpgrp exists
8921set getpgrp d_getpgrp
8922eval $inlibc
8923
8924case "$d_getpgrp" in
8925"$define")
8926 echo " "
8927 echo "Checking to see which flavor of getpgrp is in use..."
5440bc8e 8928 $cat >try.c <<EOP
b4eb6b3d
JH
8929#$i_unistd I_UNISTD
8930#include <sys/types.h>
8931#ifdef I_UNISTD
8932# include <unistd.h>
8933#endif
8934int main()
8935{
8936 if (getuid() == 0) {
8937 printf("(I see you are running Configure as super-user...)\n");
8938 setuid(1);
8939 }
8940#ifdef TRY_BSD_PGRP
8941 if (getpgrp(1) == 0)
8942 exit(0);
8943#else
8944 if (getpgrp() > 0)
8945 exit(0);
8946#endif
8947 exit(1);
8948}
8949EOP
5440bc8e 8950 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8951 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8952 val="$define"
5440bc8e 8953 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8954 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8955 val="$undef"
8956 else
8957 echo "I can't seem to compile and run the test program."
8958 if ./usg; then
8959 xxx="a USG one, i.e. you use getpgrp()."
8960 else
8961 # SVR4 systems can appear rather BSD-ish.
8962 case "$i_unistd" in
8963 $undef)
8964 xxx="a BSD one, i.e. you use getpgrp(pid)."
8965 val="$define"
8966 ;;
8967 $define)
8968 xxx="probably a USG one, i.e. you use getpgrp()."
8969 val="$undef"
8970 ;;
8971 esac
8972 fi
8973 echo "Assuming your getpgrp is $xxx" >&4
8974 fi
8975 ;;
8976*) val="$undef";;
8977esac
8978set d_bsdgetpgrp
8979eval $setvar
5440bc8e 8980$rm -f try try.*
b4eb6b3d
JH
8981
8982: see if setpgrp exists
8983set setpgrp d_setpgrp
8984eval $inlibc
8985
8986case "$d_setpgrp" in
8987"$define")
8988 echo " "
8989 echo "Checking to see which flavor of setpgrp is in use..."
5440bc8e 8990 $cat >try.c <<EOP
b4eb6b3d
JH
8991#$i_unistd I_UNISTD
8992#include <sys/types.h>
8993#ifdef I_UNISTD
8994# include <unistd.h>
8995#endif
8996int main()
8997{
8998 if (getuid() == 0) {
8999 printf("(I see you are running Configure as super-user...)\n");
9000 setuid(1);
9001 }
9002#ifdef TRY_BSD_PGRP
9003 if (-1 == setpgrp(1, 1))
9004 exit(0);
9005#else
9006 if (setpgrp() != -1)
9007 exit(0);
9008#endif
9009 exit(1);
9010}
9011EOP
5440bc8e 9012 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9013 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9014 val="$define"
5440bc8e 9015 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9016 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9017 val="$undef"
9018 else
9019 echo "(I can't seem to compile and run the test program.)"
9020 if ./usg; then
9021 xxx="a USG one, i.e. you use setpgrp()."
9022 else
9023 # SVR4 systems can appear rather BSD-ish.
9024 case "$i_unistd" in
9025 $undef)
9026 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9027 val="$define"
9028 ;;
9029 $define)
9030 xxx="probably a USG one, i.e. you use setpgrp()."
9031 val="$undef"
9032 ;;
9033 esac
9034 fi
9035 echo "Assuming your setpgrp is $xxx" >&4
9036 fi
9037 ;;
9038*) val="$undef";;
9039esac
9040set d_bsdsetpgrp
9041eval $setvar
5440bc8e 9042$rm -f try try.*
b4eb6b3d
JH
9043: see if bzero exists
9044set bzero d_bzero
9045eval $inlibc
9046
9047: see if signal is declared as pointer to function returning int or void
9048echo " "
9049xxx=`./findhdr signal.h`
9050$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9051if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9052 echo "You have int (*signal())() instead of void." >&4
9053 val="$undef"
9054elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9055 echo "You have void (*signal())()." >&4
9056 val="$define"
9057elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9058 echo "You have int (*signal())() instead of void." >&4
9059 val="$undef"
9060elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9061 echo "You have void (*signal())()." >&4
9062 val="$define"
9063else
9064 case "$d_voidsig" in
9065 '')
9066 echo "I can't determine whether signal handler returns void or int..." >&4
9067 dflt=void
9068 rp="What type does your signal handler return?"
9069 . ./myread
9070 case "$ans" in
9071 v*) val="$define";;
9072 *) val="$undef";;
9073 esac;;
9074 "$define")
9075 echo "As you already told me, signal handler returns void." >&4
9076 val="$define"
9077 ;;
9078 *) echo "As you already told me, signal handler returns int." >&4
9079 val="$undef"
9080 ;;
9081 esac
9082fi
9083set d_voidsig
9084eval $setvar
9085case "$d_voidsig" in
9086"$define") signal_t="void";;
9087*) signal_t="int";;
9088esac
9089$rm -f $$.tmp
9090
9091: check for ability to cast large floats to 32-bit ints.
9092echo " "
9093echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9094if $test "$intsize" -ge 4; then
9095 xxx=int
9096else
9097 xxx=long
9098fi
9099$cat >try.c <<EOCP
9100#include <stdio.h>
9101#include <sys/types.h>
9102#include <signal.h>
9103$signal_t blech(s) int s; { exit(3); }
9104int main()
9105{
9106 $xxx i32;
9107 double f, g;
9108 int result = 0;
9109 char str[16];
9110 signal(SIGFPE, blech);
9111
9112 /* Don't let compiler optimize the test away. Store the number
9113 in a writable string for gcc to pass to sscanf under HP/UX.
9114 */
9115 sprintf(str, "2147483647");
9116 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9117 g = 10 * f;
9118 i32 = ($xxx) g;
9119
9120 /* x86 processors will probably give 0x8000 0000, which is a
9121 sign change. We don't want that. We want to mimic SPARC
9122 behavior here, which is to preserve the sign and give
9123 back 0x7fff ffff.
9124 */
9125 if (i32 != ($xxx) f)
9126 result |= 1;
9127 exit(result);
9128}
9129EOCP
9130set try
9131if eval $compile_ok; then
5440bc8e 9132 $run ./try
b4eb6b3d
JH
9133 yyy=$?
9134else
9135 echo "(I can't seem to compile the test program--assuming it can't)"
9136 yyy=1
9137fi
9138case "$yyy" in
91390) val="$define"
9140 echo "Yup, it can."
9141 ;;
9142*) val="$undef"
9143 echo "Nope, it can't."
9144 ;;
9145esac
9146set d_casti32
9147eval $setvar
9148$rm -f try try.*
9149
9150: check for ability to cast negative floats to unsigned
9151echo " "
9152echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9153$cat >try.c <<EOCP
9154#include <stdio.h>
9155#include <sys/types.h>
9156#include <signal.h>
9157$signal_t blech(s) int s; { exit(7); }
9158$signal_t blech_in_list(s) int s; { exit(4); }
9159unsigned long dummy_long(p) unsigned long p; { return p; }
9160unsigned int dummy_int(p) unsigned int p; { return p; }
9161unsigned short dummy_short(p) unsigned short p; { return p; }
9162int main()
9163{
9164 double f;
9165 unsigned long along;
9166 unsigned int aint;
9167 unsigned short ashort;
9168 int result = 0;
9169 char str[16];
9170
9171 /* Frustrate gcc-2.7.2's optimizer which failed this test with
9172 a direct f = -123. assignment. gcc-2.8.0 reportedly
9173 optimized the whole file away
9174 */
9175 /* Store the number in a writable string for gcc to pass to
9176 sscanf under HP/UX.
9177 */
9178 sprintf(str, "-123");
9179 sscanf(str, "%lf", &f); /* f = -123.; */
9180
9181 signal(SIGFPE, blech);
9182 along = (unsigned long)f;
9183 aint = (unsigned int)f;
9184 ashort = (unsigned short)f;
9185 if (along != (unsigned long)-123)
9186 result |= 1;
9187 if (aint != (unsigned int)-123)
9188 result |= 1;
9189 if (ashort != (unsigned short)-123)
9190 result |= 1;
9191 sprintf(str, "1073741824.");
9192 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9193 f = f + f;
9194 along = 0;
9195 along = (unsigned long)f;
9196 if (along != 0x80000000)
9197 result |= 2;
9198 f -= 1.;
9199 along = 0;
9200 along = (unsigned long)f;
9201 if (along != 0x7fffffff)
9202 result |= 1;
9203 f += 2.;
9204 along = 0;
9205 along = (unsigned long)f;
9206 if (along != 0x80000001)
9207 result |= 2;
9208 if (result)
9209 exit(result);
9210 signal(SIGFPE, blech_in_list);
9211 sprintf(str, "123.");
9212 sscanf(str, "%lf", &f); /* f = 123.; */
9213 along = dummy_long((unsigned long)f);
9214 aint = dummy_int((unsigned int)f);
9215 ashort = dummy_short((unsigned short)f);
9216 if (along != (unsigned long)123)
9217 result |= 4;
9218 if (aint != (unsigned int)123)
9219 result |= 4;
9220 if (ashort != (unsigned short)123)
9221 result |= 4;
9222 exit(result);
9223
9224}
9225EOCP
9226set try
9227if eval $compile_ok; then
5440bc8e 9228 $run ./try
b4eb6b3d
JH
9229 castflags=$?
9230else
9231 echo "(I can't seem to compile the test program--assuming it can't)"
9232 castflags=7
9233fi
9234case "$castflags" in
92350) val="$define"
9236 echo "Yup, it can."
9237 ;;
9238*) val="$undef"
9239 echo "Nope, it can't."
9240 ;;
9241esac
9242set d_castneg
9243eval $setvar
9244$rm -f try.*
9245
9246: see if vprintf exists
9247echo " "
9248if set vprintf val -f d_vprintf; eval $csym; $val; then
9249 echo 'vprintf() found.' >&4
9250 val="$define"
5440bc8e 9251 $cat >try.c <<'EOF'
b4eb6b3d
JH
9252#include <varargs.h>
9253
9254int main() { xxx("foo"); }
9255
9256xxx(va_alist)
9257va_dcl
9258{
9259 va_list args;
9260 char buf[10];
9261
9262 va_start(args);
9263 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9264}
9265EOF
5440bc8e
JH
9266 set try
9267 if eval $compile && $run ./try; then
b4eb6b3d
JH
9268 echo "Your vsprintf() returns (int)." >&4
9269 val2="$undef"
9270 else
9271 echo "Your vsprintf() returns (char*)." >&4
9272 val2="$define"
9273 fi
9274else
9275 echo 'vprintf() NOT found.' >&4
9276 val="$undef"
9277 val2="$undef"
9278fi
5440bc8e 9279$rm -f try try.*
b4eb6b3d
JH
9280set d_vprintf
9281eval $setvar
9282val=$val2
9283set d_charvspr
9284eval $setvar
9285
9286: see if chown exists
9287set chown d_chown
9288eval $inlibc
9289
9290: see if chroot exists
9291set chroot d_chroot
9292eval $inlibc
9293
9294: see if chsize exists
9295set chsize d_chsize
9296eval $inlibc
9297
758a5d79
JH
9298: see if class exists
9299set class d_class
9300eval $inlibc
9301
4e0554ec
JH
9302hasstruct='varname=$1; struct=$2; shift; shift;
9303while $test $# -ge 2; do
9304 case "$1" in
9305 $define) echo "#include <$2>";;
9306 esac ;
9307 shift 2;
9308done > try.c;
9309echo "int main () { struct $struct foo; }" >> try.c;
9310set try;
9311if eval $compile; then
9312 val="$define";
9313else
9314 val="$undef";
9315fi;
9316set $varname;
9317eval $setvar;
9318$rm -f try.c try.o'
9319
9320: see if sys/types.h has to be included
9321set sys/types.h i_systypes
9322eval $inhdr
9323
9324hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9325while $test $# -ge 2; do
9326 case "$1" in
9327 $define) echo "#include <$2>";;
9328 esac ;
9329 shift 2;
9330done > try.c;
9331echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9332set try;
9333if eval $compile; then
9334 val="$define";
9335else
9336 val="$undef";
9337fi;
9338set $varname;
9339eval $setvar;
9340$rm -f try.c try.o'
9341
9342socketlib=''
9343sockethdr=''
9344: see whether socket exists
9345echo " "
9346$echo $n "Hmm... $c" >&4
9347if set socket val -f d_socket; eval $csym; $val; then
9348 echo "Looks like you have Berkeley networking support." >&4
9349 d_socket="$define"
9350 if set setsockopt val -f; eval $csym; $val; then
9351 d_oldsock="$undef"
9352 else
9353 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9354 d_oldsock="$define"
9355 fi
9356else
9357 if $contains socklib libc.list >/dev/null 2>&1; then
9358 echo "Looks like you have Berkeley networking support." >&4
9359 d_socket="$define"
9360 : we will have to assume that it supports the 4.2 BSD interface
9361 d_oldsock="$undef"
9362 else
9363 echo "You don't have Berkeley networking in libc$_a..." >&4
9364 if test "X$d_socket" = "X$define"; then
9365 echo "...but you seem to believe that you have sockets." >&4
9366 else
9367 for net in net socket
9368 do
9369 if test -f /usr/lib/lib$net$_a; then
9370 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9371 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9372 if $contains socket libc.list >/dev/null 2>&1; then
9373 d_socket="$define"
9374 socketlib="-l$net"
9375 case "$net" in
9376 net)
9377 echo "...but the Wollongong group seems to have hacked it in." >&4
9378 sockethdr="-I/usr/netinclude"
9379 ;;
9380 esac
3c728e00 9381 echo "Found Berkeley sockets interface in lib$net." >&4
4e0554ec
JH
9382 if $contains setsockopt libc.list >/dev/null 2>&1; then
9383 d_oldsock="$undef"
9384 else
9385 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9386 d_oldsock="$define"
9387 fi
9388 break
9389 fi
9390 fi
9391 done
9392 if test "X$d_socket" != "X$define"; then
9393 echo "or anywhere else I see." >&4
9394 d_socket="$undef"
9395 d_oldsock="$undef"
9396 fi
9397 fi
9398 fi
9399fi
9400
9401: see if socketpair exists
9402set socketpair d_sockpair
9403eval $inlibc
9404
9405
9406echo " "
3c728e00 9407echo "Checking the availability of certain socket constants..." >&4
4e0554ec
JH
9408for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9409 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9410 $cat >try.c <<EOF
9411#include <sys/types.h>
9412#include <sys/socket.h>
9413int main() {
9414 int i = $ENUM;
9415}
9416EOF
9417 val="$undef"
9418 set try; if eval $compile; then
9419 val="$define"
9420 fi
9421 set d_${enum}; eval $setvar
9422 $rm -f try.c try
9423done
9424
9425: see if this is a sys/uio.h system
9426set sys/uio.h i_sysuio
9427eval $inhdr
9428
9429
9430echo " "
9431echo "Checking to see if your system supports struct cmsghdr..." >&4
9432set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9433eval $hasstruct
9434case "$d_cmsghdr_s" in
9435"$define") echo "Yes, it does." ;;
9436*) echo "No, it doesn't." ;;
9437esac
9438
9439
b4eb6b3d
JH
9440: check for const keyword
9441echo " "
9442echo 'Checking to see if your C compiler knows about "const"...' >&4
9443$cat >const.c <<'EOCP'
9444typedef struct spug { int drokk; } spug;
9445int main()
9446{
9447 const char *foo;
9448 const spug y;
9449}
9450EOCP
9451if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9452 val="$define"
9453 echo "Yup, it does."
9454else
9455 val="$undef"
9456 echo "Nope, it doesn't."
9457fi
9458set d_const
9459eval $setvar
9460
9461: see if crypt exists
9462echo " "
a5a94ea5
JH
9463set crypt d_crypt
9464eval $inlibc
9465case "$d_crypt" in
9466$define) cryptlib='' ;;
9467*) if set crypt val -f d_crypt; eval $csym; $val; then
9468 echo 'crypt() found.' >&4
b4eb6b3d 9469 val="$define"
a5a94ea5
JH
9470 cryptlib=''
9471 else
9472 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9473 if $test -z "$cryptlib"; then
9474 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9475 else
9476 cryptlib=-lcrypt
9477 fi
9478 if $test -z "$cryptlib"; then
9479 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9480 else
9481 cryptlib=-lcrypt
9482 fi
9483 if $test -z "$cryptlib"; then
9484 cryptlib=`./loc libcrypt$_a "" $libpth`
9485 else
9486 cryptlib=-lcrypt
9487 fi
9488 if $test -z "$cryptlib"; then
9489 echo 'crypt() NOT found.' >&4
9490 val="$undef"
9491 else
9492 val="$define"
9493 fi
b4eb6b3d 9494 fi
a5a94ea5
JH
9495 set d_crypt
9496 eval $setvar
9497 ;;
9498esac
b4eb6b3d
JH
9499
9500: get csh whereabouts
9501case "$csh" in
9502'csh') val="$undef" ;;
9503*) val="$define" ;;
9504esac
9505set d_csh
9506eval $setvar
9507: Respect a hint or command line value for full_csh.
9508case "$full_csh" in
9509'') full_csh=$csh ;;
9510esac
9511
9512: see if cuserid exists
9513set cuserid d_cuserid
9514eval $inlibc
9515
9516: see if this is a limits.h system
9517set limits.h i_limits
9518eval $inhdr
9519
9520: see if this is a float.h system
9521set float.h i_float
9522eval $inhdr
9523
9524: See if number of significant digits in a double precision number is known
9525echo " "
9526$cat >dbl_dig.c <<EOM
9527#$i_limits I_LIMITS
9528#$i_float I_FLOAT
9529#ifdef I_LIMITS
9530#include <limits.h>
9531#endif
9532#ifdef I_FLOAT
9533#include <float.h>
9534#endif
9535#ifdef DBL_DIG
9536printf("Contains DBL_DIG");
9537#endif
9538EOM
9539$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9540if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9541 echo "DBL_DIG found." >&4
9542 val="$define"
9543else
9544 echo "DBL_DIG NOT found." >&4
9545 val="$undef"
9546fi
9547$rm -f dbl_dig.?
9548set d_dbl_dig
9549eval $setvar
9550
2ef53570
JH
9551hasproto='varname=$1; func=$2; shift; shift;
9552while $test $# -ge 2; do
9553 case "$1" in
9554 $define) echo "#include <$2>";;
9555 esac ;
9556 shift 2;
9557done > try.c;
9558$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9559if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9560 echo "$func() prototype found.";
9561 val="$define";
9562else
9563 echo "$func() prototype NOT found.";
9564 val="$undef";
9565fi;
9566set $varname;
9567eval $setvar;
9568$rm -f try.c tryout.c'
9569
9570: see if dbm.h is available
9571: see if dbmclose exists
9572set dbmclose d_dbmclose
9573eval $inlibc
9574
9575case "$d_dbmclose" in
9576$define)
9577 set dbm.h i_dbm
9578 eval $inhdr
9579 case "$i_dbm" in
9580 $define)
9581 val="$undef"
9582 set i_rpcsvcdbm
9583 eval $setvar
9584 ;;
9585 *) set rpcsvc/dbm.h i_rpcsvcdbm
9586 eval $inhdr
9587 ;;
9588 esac
9589 ;;
9590*) echo "We won't be including <dbm.h>"
9591 val="$undef"
9592 set i_dbm
9593 eval $setvar
9594 val="$undef"
9595 set i_rpcsvcdbm
9596 eval $setvar
9597 ;;
9598esac
9599
9600: see if prototype for dbminit is available
9601echo " "
9602set d_dbminitproto dbminit $i_dbm dbm.h
9603eval $hasproto
9604
b4eb6b3d
JH
9605: see if difftime exists
9606set difftime d_difftime
9607eval $inlibc
9608
9609: see if this is a dirent system
9610echo " "
9611if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9612 val="$define"
9613 echo "<dirent.h> found." >&4
9614else
9615 val="$undef"
9616 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9617 echo "<sys/dir.h> found." >&4
9618 echo " "
9619 else
9620 xinc=`./findhdr sys/ndir.h`
9621 fi
9622 echo "<dirent.h> NOT found." >&4
9623fi
9624set i_dirent
9625eval $setvar
9626
9627: Look for type of directory structure.
9628echo " "
9629$cppstdin $cppflags $cppminus < "$xinc" > try.c
9630
9631case "$direntrytype" in
9632''|' ')
9633 case "$i_dirent" in
9634 $define) guess1='struct dirent' ;;
9635 *) guess1='struct direct' ;;
9636 esac
9637 ;;
9638*) guess1="$direntrytype"
9639 ;;
9640esac
9641
9642case "$guess1" in
9643'struct dirent') guess2='struct direct' ;;
9644*) guess2='struct dirent' ;;
9645esac
9646
9647if $contains "$guess1" try.c >/dev/null 2>&1; then
9648 direntrytype="$guess1"
9649 echo "Your directory entries are $direntrytype." >&4
9650elif $contains "$guess2" try.c >/dev/null 2>&1; then
9651 direntrytype="$guess2"
9652 echo "Your directory entries seem to be $direntrytype." >&4
9653else
9654 echo "I don't recognize your system's directory entries." >&4
9655 rp="What type is used for directory entries on this system?"
9656 dflt="$guess1"
9657 . ./myread
9658 direntrytype="$ans"
9659fi
9660$rm -f try.c
9661
9662
9663: see if the directory entry stores field length
9664echo " "
9665$cppstdin $cppflags $cppminus < "$xinc" > try.c
9666if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9667 echo "Good, your directory entry keeps length information in d_namlen." >&4
9668 val="$define"
9669else
9670 echo "Your directory entry does not know about the d_namlen field." >&4
9671 val="$undef"
9672fi
9673set d_dirnamlen
9674eval $setvar
9675$rm -f try.c
9676
ae0e3d3b
JH
9677: see if this is an sysdir system
9678set sys/dir.h i_sysdir
9679eval $inhdr
9680
9681: see if this is an sysndir system
9682set sys/ndir.h i_sysndir
9683eval $inhdr
9684
9685: Look for dirfd
9686echo " "
9687$cat >dirfd.c <<EOM
9688#include <stdio.h>
9689#$i_dirent I_DIRENT /**/
9690#$i_sysdir I_SYS_DIR /**/
9691#$i_sysndir I_SYS_NDIR /**/
9692#$i_systypes I_SYS_TYPES /**/
9693#if defined(I_SYS_TYPES)
9694#include <sys/types.h>
9695#endif
9696#if defined(I_DIRENT)
9697#include <dirent.h>
9698#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
9699#include <sys/dir.h>
9700#endif
9701#else
9702#ifdef I_SYS_NDIR
9703#include <sys/ndir.h>
9704#else
9705#ifdef I_SYS_DIR
9706#ifdef hp9000s500
9707#include <ndir.h> /* may be wrong in the future */
9708#else
9709#include <sys/dir.h>
9710#endif
9711#endif
9712#endif
9713#endif
9714int main() {
9715 DIR *dirp = opendir(".");
9716 if (dirfd(dirp) >= 0)
9717 exit(0);
9718 else
9719 exit(1);
9720}
9721EOM
9722set dirfd
9723if eval $compile; then
9724 val="$define"
9725fi
9726case "$val" in
9727$define) echo "dirfd() found." >&4 ;;
9728*) echo "dirfd() NOT found." >&4 ;;
9729esac
9730set d_dirfd
9731eval $setvar
9732$rm -f dirfd*
9733
b4eb6b3d
JH
9734: see if dlerror exists
9735xxx_runnm="$runnm"
9736runnm=false
9737set dlerror d_dlerror
9738eval $inlibc
9739runnm="$xxx_runnm"
9740
9741: see if dlfcn is available
9742set dlfcn.h i_dlfcn
9743eval $inhdr
9744
9745case "$usedl" in
9746$define|y|true)
9747 $cat << EOM
9748
9749On a few systems, the dynamically loaded modules that perl generates and uses
9750will need a different extension than shared libs. The default will probably
9751be appropriate.
9752
9753EOM
9754 case "$dlext" in
9755 '') dflt="$so" ;;
9756 *) dflt="$dlext" ;;
9757 esac
9758 rp='What is the extension of dynamically loaded modules'
9759 . ./myread
9760 dlext="$ans"
9761 ;;
9762*)
9763 dlext="none"
9764 ;;
9765esac
9766
9767: Check if dlsym need a leading underscore
9768echo " "
9769val="$undef"
9770
9771case "$dlsrc" in
9772dl_dlopen.xs)
9773 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9774 $cat >dyna.c <<'EOM'
9775fred () { }
9776EOM
9777
9778$cat >fred.c<<EOM
9779
9780#include <stdio.h>
9781#$i_dlfcn I_DLFCN
9782#ifdef I_DLFCN
5440bc8e 9783#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
b4eb6b3d
JH
9784#else
9785#include <sys/types.h>
9786#include <nlist.h>
9787#include <link.h>
9788#endif
9789
9790extern int fred() ;
9791
9792int main()
9793{
9794 void * handle ;
9795 void * symbol ;
9796#ifndef RTLD_LAZY
9797 int mode = 1 ;
9798#else
9799 int mode = RTLD_LAZY ;
9800#endif
9801 handle = dlopen("./dyna.$dlext", mode) ;
9802 if (handle == NULL) {
9803 printf ("1\n") ;
9804 fflush (stdout) ;
9805 exit(0);
9806 }
9807 symbol = dlsym(handle, "fred") ;
9808 if (symbol == NULL) {
9809 /* try putting a leading underscore */
9810 symbol = dlsym(handle, "_fred") ;
9811 if (symbol == NULL) {
9812 printf ("2\n") ;
9813 fflush (stdout) ;
9814 exit(0);
9815 }
9816 printf ("3\n") ;
9817 }
9818 else
9819 printf ("4\n") ;
9820 fflush (stdout) ;
9821 exit(0);
9822}
9823EOM
9824 : Call the object file tmp-dyna.o in case dlext=o.
9825 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9826 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
e4778687 9827 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
5440bc8e
JH
9828 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9829 xxx=`$run ./fred`
b4eb6b3d
JH
9830 case $xxx in
9831 1) echo "Test program failed using dlopen." >&4
9832 echo "Perhaps you should not use dynamic loading." >&4;;
9833 2) echo "Test program failed using dlsym." >&4
9834 echo "Perhaps you should not use dynamic loading." >&4;;
9835 3) echo "dlsym needs a leading underscore" >&4
9836 val="$define" ;;
9837 4) echo "dlsym doesn't need a leading underscore." >&4;;
9838 esac
9839 else
9840 echo "I can't compile and run the test program." >&4
9841 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9842 fi
9843 ;;
9844esac
9845
3c728e00 9846$rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
b4eb6b3d
JH
9847
9848set d_dlsymun
9849eval $setvar
9850
b4eb6b3d
JH
9851: see if prototype for drand48 is available
9852echo " "
9853set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9854eval $hasproto
9855
9856: see if dup2 exists
9857set dup2 d_dup2
9858eval $inlibc
9859
9860: see if eaccess exists
9861set eaccess d_eaccess
9862eval $inlibc
9863
9864: see if endgrent exists
9865set endgrent d_endgrent
9866eval $inlibc
9867
9868: see if endhostent exists
9869set endhostent d_endhent
9870eval $inlibc
9871
9872: see if endnetent exists
9873set endnetent d_endnent
9874eval $inlibc
9875
9876: see if endprotoent exists
9877set endprotoent d_endpent
9878eval $inlibc
9879
9880: see if endpwent exists
9881set endpwent d_endpwent
9882eval $inlibc
9883
9884: see if endservent exists
9885set endservent d_endsent
9886eval $inlibc
9887
9888: Locate the flags for 'open()'
9889echo " "
5440bc8e 9890$cat >try.c <<'EOCP'
b4eb6b3d
JH
9891#include <sys/types.h>
9892#ifdef I_FCNTL
9893#include <fcntl.h>
9894#endif
9895#ifdef I_SYS_FILE
9896#include <sys/file.h>
9897#endif
9898int main() {
9899 if(O_RDONLY);
9900#ifdef O_TRUNC
9901 exit(0);
9902#else
9903 exit(1);
9904#endif
9905}
9906EOCP
9907: check sys/file.h first to get FREAD on Sun
9908if $test `./findhdr sys/file.h` && \
5440bc8e 9909 set try -DI_SYS_FILE && eval $compile; then
b4eb6b3d
JH
9910 h_sysfile=true;
9911 echo "<sys/file.h> defines the O_* constants..." >&4
5440bc8e 9912 if $run ./try; then
b4eb6b3d
JH
9913 echo "and you have the 3 argument form of open()." >&4
9914 val="$define"
9915 else
9916 echo "but not the 3 argument form of open(). Oh, well." >&4
9917 val="$undef"
9918 fi
9919elif $test `./findhdr fcntl.h` && \
5440bc8e 9920 set try -DI_FCNTL && eval $compile; then
b4eb6b3d
JH
9921 h_fcntl=true;
9922 echo "<fcntl.h> defines the O_* constants..." >&4
5440bc8e 9923 if $run ./try; then
b4eb6b3d
JH
9924 echo "and you have the 3 argument form of open()." >&4
9925 val="$define"
9926 else
9927 echo "but not the 3 argument form of open(). Oh, well." >&4
9928 val="$undef"
9929 fi
9930else
9931 val="$undef"
9932 echo "I can't find the O_* constant definitions! You got problems." >&4
9933fi
9934set d_open3
9935eval $setvar
5440bc8e 9936$rm -f try try.*
b4eb6b3d
JH
9937
9938: see which of string.h or strings.h is needed
9939echo " "
9940strings=`./findhdr string.h`
9941if $test "$strings" && $test -r "$strings"; then
9942 echo "Using <string.h> instead of <strings.h>." >&4
9943 val="$define"
9944else
9945 val="$undef"
9946 strings=`./findhdr strings.h`
9947 if $test "$strings" && $test -r "$strings"; then
9948 echo "Using <strings.h> instead of <string.h>." >&4
9949 else
9950 echo "No string header found -- You'll surely have problems." >&4
9951 fi
9952fi
9953set i_string
9954eval $setvar
9955case "$i_string" in
9956"$undef") strings=`./findhdr strings.h`;;
9957*) strings=`./findhdr string.h`;;
9958esac
9959
3c728e00
JH
9960: see if this is a sys/file.h system
9961val=''
9962set sys/file.h val
9963eval $inhdr
9964
9965: do we need to include sys/file.h ?
9966case "$val" in
9967"$define")
9968 echo " "
9969 if $h_sysfile; then
9970 val="$define"
9971 echo "We'll be including <sys/file.h>." >&4
9972 else
9973 val="$undef"
9974 echo "We won't be including <sys/file.h>." >&4
9975 fi
9976 ;;
9977*)
9978 h_sysfile=false
9979 ;;
9980esac
9981set i_sysfile
9982eval $setvar
9983
9984: see if fcntl.h is there
9985val=''
9986set fcntl.h val
9987eval $inhdr
9988
9989: see if we can include fcntl.h
9990case "$val" in
9991"$define")
9992 echo " "
9993 if $h_fcntl; then
9994 val="$define"
9995 echo "We'll be including <fcntl.h>." >&4
9996 else
9997 val="$undef"
9998 if $h_sysfile; then
9999 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
10000 else
10001 echo "We won't be including <fcntl.h>." >&4
10002 fi
10003 fi
10004 ;;
10005*)
10006 h_fcntl=false
10007 val="$undef"
10008 ;;
10009esac
10010set i_fcntl
10011eval $setvar
10012
b4eb6b3d
JH
10013: check for non-blocking I/O stuff
10014case "$h_sysfile" in
a0acbdc3
JH
10015true) echo "#include <sys/file.h>" > head.c;;
10016*)
10017 case "$h_fcntl" in
10018 true) echo "#include <fcntl.h>" > head.c;;
10019 *) echo "#include <sys/fcntl.h>" > head.c;;
10020 esac
10021 ;;
b4eb6b3d
JH
10022esac
10023echo " "
10024echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
10025case "$o_nonblock" in
10026'')
10027 $cat head.c > try.c
3c728e00 10028 $cat >>try.c <<EOCP
b4eb6b3d 10029#include <stdio.h>
80b3ef99 10030#include <stdlib.h>
3c728e00
JH
10031#$i_fcntl I_FCNTL
10032#ifdef I_FCNTL
10033#include <fcntl.h>
10034#endif
b4eb6b3d
JH
10035int main() {
10036#ifdef O_NONBLOCK
10037 printf("O_NONBLOCK\n");
10038 exit(0);
10039#endif
10040#ifdef O_NDELAY
10041 printf("O_NDELAY\n");
10042 exit(0);
10043#endif
10044#ifdef FNDELAY
10045 printf("FNDELAY\n");
10046 exit(0);
10047#endif
10048 exit(0);
10049}
10050EOCP
10051 set try
10052 if eval $compile_ok; then
5440bc8e 10053 o_nonblock=`$run ./try`
b4eb6b3d
JH
10054 case "$o_nonblock" in
10055 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
10056 *) echo "Seems like we can use $o_nonblock.";;
10057 esac
10058 else
10059 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
10060 fi
10061 ;;
10062*) echo "Using $hint value $o_nonblock.";;
10063esac
10064$rm -f try try.* .out core
10065
10066echo " "
10067echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
10068case "$eagain" in
10069'')
10070 $cat head.c > try.c
10071 $cat >>try.c <<EOCP
10072#include <errno.h>
10073#include <sys/types.h>
10074#include <signal.h>
10075#include <stdio.h>
80b3ef99 10076#include <stdlib.h>
1deb0a86
JH
10077#$i_fcntl I_FCNTL
10078#ifdef I_FCNTL
10079#include <fcntl.h>
10080#endif
b4eb6b3d
JH
10081#define MY_O_NONBLOCK $o_nonblock
10082#ifndef errno /* XXX need better Configure test */
10083extern int errno;
10084#endif
10085#$i_unistd I_UNISTD
10086#ifdef I_UNISTD
10087#include <unistd.h>
10088#endif
10089#$i_string I_STRING
10090#ifdef I_STRING
10091#include <string.h>
10092#else
10093#include <strings.h>
10094#endif
10095$signal_t blech(x) int x; { exit(3); }
10096EOCP
10097 $cat >> try.c <<'EOCP'
10098int main()
10099{
10100 int pd[2];
10101 int pu[2];
10102 char buf[1];
10103 char string[100];
10104
10105 pipe(pd); /* Down: child -> parent */
10106 pipe(pu); /* Up: parent -> child */
10107 if (0 != fork()) {
10108 int ret;
10109 close(pd[1]); /* Parent reads from pd[0] */
10110 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 10111#ifdef F_SETFL
b4eb6b3d
JH
10112 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
10113 exit(1);
a0acbdc3
JH
10114#else
10115 exit(4);
10116#endif
b4eb6b3d
JH
10117 signal(SIGALRM, blech);
10118 alarm(5);
10119 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
10120 exit(2);
10121 sprintf(string, "%d\n", ret);
10122 write(2, string, strlen(string));
10123 alarm(0);
10124#ifdef EAGAIN
10125 if (errno == EAGAIN) {
10126 printf("EAGAIN\n");
10127 goto ok;
10128 }
10129#endif
10130#ifdef EWOULDBLOCK
10131 if (errno == EWOULDBLOCK)
10132 printf("EWOULDBLOCK\n");
10133#endif
10134 ok:
10135 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
10136 sleep(2); /* Give it time to close our pipe */
10137 alarm(5);
10138 ret = read(pd[0], buf, 1); /* Should read EOF */
10139 alarm(0);
10140 sprintf(string, "%d\n", ret);
868439a2 10141 write(4, string, strlen(string));
b4eb6b3d
JH
10142 exit(0);
10143 }
10144
10145 close(pd[0]); /* We write to pd[1] */
10146 close(pu[1]); /* We read from pu[0] */
10147 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
10148 close(pd[1]); /* Pipe pd is now fully closed! */
10149 exit(0); /* Bye bye, thank you for playing! */
10150}
10151EOCP
10152 set try
10153 if eval $compile_ok; then
10154 echo "$startsh" >mtry
868439a2 10155 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
b4eb6b3d
JH
10156 chmod +x mtry
10157 ./mtry >/dev/null 2>&1
10158 case $? in
10159 0) eagain=`$cat try.out`;;
10160 1) echo "Could not perform non-blocking setting!";;
10161 2) echo "I did a successful read() for something that was not there!";;
10162 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 10163 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
10164 *) echo "Something terribly wrong happened during testing.";;
10165 esac
10166 rd_nodata=`$cat try.ret`
10167 echo "A read() system call with no data present returns $rd_nodata."
10168 case "$rd_nodata" in
10169 0|-1) ;;
10170 *)
10171 echo "(That's peculiar, fixing that to be -1.)"
10172 rd_nodata=-1
10173 ;;
10174 esac
10175 case "$eagain" in
10176 '')
10177 echo "Forcing errno EAGAIN on read() with no data available."
10178 eagain=EAGAIN
10179 ;;
10180 *)
10181 echo "Your read() sets errno to $eagain when no data is available."
10182 ;;
10183 esac
10184 status=`$cat try.err`
10185 case "$status" in
10186 0) echo "And it correctly returns 0 to signal EOF.";;
10187 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
10188 *) echo "However, your read() returns '$status' on EOF??";;
10189 esac
10190 val="$define"
10191 if test "$status" = "$rd_nodata"; then
10192 echo "WARNING: you can't distinguish between EOF and no data!"
10193 val="$undef"
10194 fi
10195 else
10196 echo "I can't compile the test program--assuming errno EAGAIN will do."
10197 eagain=EAGAIN
10198 fi
10199 set d_eofnblk
10200 eval $setvar
10201 ;;
10202*)
10203 echo "Using $hint value $eagain."
10204 echo "Your read() returns $rd_nodata when no data is present."
10205 case "$d_eofnblk" in
10206 "$define") echo "And you can see EOF because read() returns 0.";;
10207 "$undef") echo "But you can't see EOF status from read() returned value.";;
10208 *)
10209 echo "(Assuming you can't see EOF status from read anyway.)"
10210 d_eofnblk=$undef
10211 ;;
10212 esac
10213 ;;
10214esac
10215$rm -f try try.* .out core head.c mtry
10216
b363b713
JH
10217: see if fchdir exists
10218set fchdir d_fchdir
10219eval $inlibc
10220
b4eb6b3d
JH
10221: see if fchmod exists
10222set fchmod d_fchmod
10223eval $inlibc
10224
10225: see if fchown exists
10226set fchown d_fchown
10227eval $inlibc
10228
10229: see if this is an fcntl system
10230set fcntl d_fcntl
10231eval $inlibc
10232
9d9004a9
AD
10233echo " "
10234: See if fcntl-based locking works.
832492ee 10235$cat >try.c <<EOCP
9d9004a9
AD
10236#include <stdlib.h>
10237#include <unistd.h>
10238#include <fcntl.h>
832492ee 10239#include <signal.h>
832492ee 10240$signal_t blech(x) int x; { exit(3); }
9d9004a9
AD
10241int main() {
10242#if defined(F_SETLK) && defined(F_SETLKW)
10243 struct flock flock;
10244 int retval, fd;
10245 fd = open("try.c", O_RDONLY);
10246 flock.l_type = F_RDLCK;
10247 flock.l_whence = SEEK_SET;
10248 flock.l_start = flock.l_len = 0;
832492ee
JH
10249 signal(SIGALRM, blech);
10250 alarm(10);
9d9004a9
AD
10251 retval = fcntl(fd, F_SETLK, &flock);
10252 close(fd);
10253 (retval < 0 ? exit(2) : exit(0));
10254#else
10255 exit(2);
10256#endif
10257}
10258EOCP
10259echo "Checking if fcntl-based file locking works... "
10260case "$d_fcntl" in
10261"$define")
10262 set try
10263 if eval $compile_ok; then
5440bc8e 10264 if $run ./try; then
9d9004a9
AD
10265 echo "Yes, it seems to work."
10266 val="$define"
10267 else
10268 echo "Nope, it didn't work."
10269 val="$undef"
832492ee
JH
10270 case "$?" in
10271 3) $cat >&4 <<EOM
10272***
10273*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
10274*** This is (almost) impossible.
10275*** If your NFS lock daemons are not feeling well, something like
10276*** this may happen, please investigate. Cannot continue, aborting.
10277***
10278EOM
10279 exit 1
10280 ;;
10281 esac
9d9004a9
AD
10282 fi
10283 else
10284 echo "I'm unable to compile the test program, so I'll assume not."
10285 val="$undef"
10286 fi
10287 ;;
10288*) val="$undef";
10289 echo "Nope, since you don't even have fcntl()."
10290 ;;
10291esac
10292set d_fcntl_can_lock
10293eval $setvar
10294$rm -f try*
10295
10296
b4eb6b3d
JH
10297: see if sys/select.h has to be included
10298set sys/select.h i_sysselct
10299eval $inhdr
10300
10301: see if we should include time.h, sys/time.h, or both
10302echo " "
10303if test "X$timeincl" = X; then
10304 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10305 $echo $n "I'm now running the test program...$c"
10306 $cat >try.c <<'EOCP'
10307#include <sys/types.h>
10308#ifdef I_TIME
10309#include <time.h>
10310#endif
10311#ifdef I_SYSTIME
10312#ifdef SYSTIMEKERNEL
10313#define KERNEL
10314#endif
10315#include <sys/time.h>
10316#endif
10317#ifdef I_SYSSELECT
10318#include <sys/select.h>
10319#endif
10320int main()
10321{
10322 struct tm foo;
10323#ifdef S_TIMEVAL
10324 struct timeval bar;
10325#endif
10326#ifdef S_TIMEZONE
10327 struct timezone tzp;
10328#endif
10329 if (foo.tm_sec == foo.tm_sec)
10330 exit(0);
10331#ifdef S_TIMEVAL
10332 if (bar.tv_sec == bar.tv_sec)
10333 exit(0);
10334#endif
10335 exit(1);
10336}
10337EOCP
10338 flags=''
10339 for s_timezone in '-DS_TIMEZONE' ''; do
10340 sysselect=''
10341 for s_timeval in '-DS_TIMEVAL' ''; do
10342 for i_systimek in '' '-DSYSTIMEKERNEL'; do
10343 for i_time in '' '-DI_TIME'; do
10344 for i_systime in '-DI_SYSTIME' ''; do
10345 case "$flags" in
10346 '') $echo $n ".$c"
10347 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10348 if eval $compile; then
10349 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10350 shift
10351 flags="$*"
10352 echo " "
10353 $echo $n "Succeeded with $flags$c"
10354 fi
10355 ;;
10356 esac
10357 done
10358 done
10359 done
10360 done
10361 done
10362 timeincl=''
10363 echo " "
10364 case "$flags" in
10365 *SYSTIMEKERNEL*) i_systimek="$define"
10366 timeincl=`./findhdr sys/time.h`
10367 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10368 *) i_systimek="$undef";;
10369 esac
10370 case "$flags" in
10371 *I_TIME*) i_time="$define"
10372 timeincl=`./findhdr time.h`" $timeincl"
10373 echo "We'll include <time.h>." >&4;;
10374 *) i_time="$undef";;
10375 esac
10376 case "$flags" in
10377 *I_SYSTIME*) i_systime="$define"
10378 timeincl=`./findhdr sys/time.h`" $timeincl"
10379 echo "We'll include <sys/time.h>." >&4;;
10380 *) i_systime="$undef";;
10381 esac
10382 $rm -f try.c try
10383fi
10384
10385: check for fd_set items
10386$cat <<EOM
10387
10388Checking to see how well your C compiler handles fd_set and friends ...
10389EOM
5440bc8e 10390$cat >try.c <<EOCP
b4eb6b3d
JH
10391#$i_systime I_SYS_TIME
10392#$i_sysselct I_SYS_SELECT
10393#$d_socket HAS_SOCKET
10394#include <sys/types.h>
10395#ifdef HAS_SOCKET
10396#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10397#endif
10398#ifdef I_SYS_TIME
10399#include <sys/time.h>
10400#endif
10401#ifdef I_SYS_SELECT
10402#include <sys/select.h>
10403#endif
10404int main() {
10405 fd_set fds;
10406
10407#ifdef TRYBITS
10408 if(fds.fds_bits);
10409#endif
10410
10411#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10412 exit(0);
10413#else
10414 exit(1);
10415#endif
10416}
10417EOCP
5440bc8e 10418set try -DTRYBITS
b4eb6b3d
JH
10419if eval $compile; then
10420 d_fds_bits="$define"
10421 d_fd_set="$define"
10422 echo "Well, your system knows about the normal fd_set typedef..." >&4
5440bc8e 10423 if $run ./try; then
b4eb6b3d
JH
10424 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10425 d_fd_macros="$define"
10426 else
10427 $cat >&4 <<'EOM'
10428but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10429EOM
10430 d_fd_macros="$undef"
10431 fi
10432else
10433 $cat <<'EOM'
10434Hmm, your compiler has some difficulty with fd_set. Checking further...
10435EOM
5440bc8e 10436 set try
b4eb6b3d
JH
10437 if eval $compile; then
10438 d_fds_bits="$undef"
10439 d_fd_set="$define"
10440 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 10441 if $run ./try; then
b4eb6b3d
JH
10442 echo "and you have the normal fd_set macros." >&4
10443 d_fd_macros="$define"
10444 else
10445 $cat <<'EOM'
10446but not the normal fd_set macros! Gross! More work for me...
10447EOM
10448 d_fd_macros="$undef"
10449 fi
10450 else
10451 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10452 d_fd_set="$undef"
10453 d_fds_bits="$undef"
10454 d_fd_macros="$undef"
10455 fi
10456fi
5440bc8e 10457$rm -f try try.*
b4eb6b3d
JH
10458
10459: see if fgetpos exists
10460set fgetpos d_fgetpos
10461eval $inlibc
10462
758a5d79
JH
10463: see if finite exists
10464set finite d_finite
10465eval $inlibc
10466
10467: see if finitel exists
10468set finitel d_finitel
10469eval $inlibc
10470
b4eb6b3d
JH
10471: see if flock exists
10472set flock d_flock
10473eval $inlibc
10474
2ef53570
JH
10475: see if prototype for flock is available
10476echo " "
10477set d_flockproto flock $i_sysfile sys/file.h
10478eval $hasproto
10479
b4eb6b3d
JH
10480: see if fork exists
10481set fork d_fork
10482eval $inlibc
10483
758a5d79
JH
10484: see if fp_class exists
10485set fp_class d_fp_class
10486eval $inlibc
10487
b4eb6b3d
JH
10488: see if pathconf exists
10489set pathconf d_pathconf
10490eval $inlibc
10491
10492: see if fpathconf exists
10493set fpathconf d_fpathconf
10494eval $inlibc
10495
758a5d79
JH
10496: see if fpclass exists
10497set fpclass d_fpclass
10498eval $inlibc
10499
10500: see if fpclassify exists
10501set fpclassify d_fpclassify
10502eval $inlibc
10503
10504: see if fpclassl exists
10505set fpclassl d_fpclassl
10506eval $inlibc
10507
b4eb6b3d
JH
10508
10509: check for fpos64_t
10510echo " "
10511echo "Checking to see if you have fpos64_t..." >&4
10512$cat >try.c <<EOCP
10513#include <stdio.h>
10514int main() { fpos64_t x = 7; }
10515EOCP
10516set try
10517if eval $compile; then
10518 val="$define"
10519 echo "You have fpos64_t."
10520else
10521 val="$undef"
10522 echo "You do not have fpos64_t."
10523 case "$fpossize" in
10524 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10525 esac
10526fi
10527$rm -f try.* try
10528set d_fpos64_t
10529eval $setvar
10530
10531: see if frexpl exists
10532set frexpl d_frexpl
10533eval $inlibc
10534
b4eb6b3d
JH
10535: see if this is a sys/param system
10536set sys/param.h i_sysparam
10537eval $inhdr
10538
10539: see if this is a sys/mount.h system
10540set sys/mount.h i_sysmount
10541eval $inhdr
10542
b4eb6b3d
JH
10543
10544echo " "
10545echo "Checking to see if your system supports struct fs_data..." >&4
10546set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10547eval $hasstruct
10548case "$d_fs_data_s" in
10549"$define") echo "Yes, it does." ;;
10550*) echo "No, it doesn't." ;;
10551esac
10552
10553: see if fseeko exists
10554set fseeko d_fseeko
10555eval $inlibc
10556case "$longsize" in
105578) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10558esac
10559
10560: see if fsetpos exists
10561set fsetpos d_fsetpos
10562eval $inlibc
10563
10564
10565: see if fstatfs exists
10566set fstatfs d_fstatfs
10567eval $inlibc
10568
10569
10570: see if statvfs exists
10571set statvfs d_statvfs
10572eval $inlibc
10573
10574: see if fstatvfs exists
10575set fstatvfs d_fstatvfs
10576eval $inlibc
10577
10578
411ab01c
JH
10579: see if fsync exists
10580set fsync d_fsync
10581eval $inlibc
10582
b4eb6b3d
JH
10583: see if ftello exists
10584set ftello d_ftello
10585eval $inlibc
10586case "$longsize" in
105878) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10588esac
10589
10590: see if getcwd exists
10591set getcwd d_getcwd
10592eval $inlibc
10593
10594: see if getespwnam exists
10595set getespwnam d_getespwnam
10596eval $inlibc
10597
10598
10599: see if getfsstat exists
10600set getfsstat d_getfsstat
10601eval $inlibc
10602
10603: see if getgrent exists
10604set getgrent d_getgrent
10605eval $inlibc
10606
10607: see if gethostbyaddr exists
10608set gethostbyaddr d_gethbyaddr
10609eval $inlibc
10610
10611: see if gethostbyname exists
10612set gethostbyname d_gethbyname
10613eval $inlibc
10614
10615: see if gethostent exists
10616set gethostent d_gethent
10617eval $inlibc
10618
10619: see how we will look up host name
10620echo " "
10621call=''
10622if set gethostname val -f d_gethname; eval $csym; $val; then
10623 echo 'gethostname() found.' >&4
10624 d_gethname="$define"
10625 call=gethostname
10626fi
10627if set uname val -f d_uname; eval $csym; $val; then
10628 if ./xenix; then
10629 $cat <<'EOM'
10630uname() was found, but you're running xenix, and older versions of xenix
10631have a broken uname(). If you don't really know whether your xenix is old
10632enough to have a broken system call, use the default answer.
10633
10634EOM
10635 dflt=y
10636 case "$d_uname" in
10637 "$define") dflt=n;;
10638 esac
10639 rp='Is your uname() broken?'
10640 . ./myread
10641 case "$ans" in
10642 n*) d_uname="$define"; call=uname;;
10643 esac
10644 else
10645 echo 'uname() found.' >&4
10646 d_uname="$define"
10647 case "$call" in
10648 '') call=uname ;;
10649 esac
10650 fi
10651fi
10652case "$d_gethname" in
10653'') d_gethname="$undef";;
10654esac
10655case "$d_uname" in
10656'') d_uname="$undef";;
10657esac
10658case "$d_uname$d_gethname" in
10659*define*)
10660 dflt=n
10661 cat <<EOM
10662
10663Every now and then someone has a $call() that lies about the hostname
10664but can't be fixed for political or economic reasons. If you wish, I can
10665pretend $call() isn't there and maybe compute hostname at run-time
10666thanks to the '$phostname' command.
10667
10668EOM
10669 rp="Shall I ignore $call() from now on?"
10670 . ./myread
10671 case "$ans" in
10672 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10673 esac;;
10674esac
10675case "$phostname" in
10676'') aphostname='';;
10677*) case "$aphostname" in
10678 /*) ;;
10679 *) set X $phostname
10680 shift
10681 file=$1
10682 shift
10683 file=`./loc $file $file $pth`
10684 aphostname=`echo $file $*`
10685 ;;
10686 esac
10687 ;;
10688esac
10689case "$d_uname$d_gethname" in
10690*define*) ;;
10691*)
10692 case "$phostname" in
10693 '')
10694 echo "There will be no way for $package to get your hostname." >&4;;
10695 *)
10696 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10697 ;;
10698 esac;;
10699esac
10700case "$d_phostname" in
10701'') d_phostname="$undef";;
10702esac
10703
10704: see if this is a netdb.h system
10705set netdb.h i_netdb
10706eval $inhdr
10707
10708: see if prototypes for various gethostxxx netdb.h functions are available
10709echo " "
10710set d_gethostprotos gethostent $i_netdb netdb.h
10711eval $hasproto
10712
4e0554ec
JH
10713: see if getitimer exists
10714set getitimer d_getitimer
10715eval $inlibc
10716
b4eb6b3d
JH
10717: see if getlogin exists
10718set getlogin d_getlogin
10719eval $inlibc
10720
10721: see if getmnt exists
10722set getmnt d_getmnt
10723eval $inlibc
10724
10725: see if getmntent exists
10726set getmntent d_getmntent
10727eval $inlibc
10728
10729: see if getnetbyaddr exists
10730set getnetbyaddr d_getnbyaddr
10731eval $inlibc
10732
10733: see if getnetbyname exists
10734set getnetbyname d_getnbyname
10735eval $inlibc
10736
10737: see if getnetent exists
10738set getnetent d_getnent
10739eval $inlibc
10740
10741: see if prototypes for various getnetxxx netdb.h functions are available
10742echo " "
10743set d_getnetprotos getnetent $i_netdb netdb.h
10744eval $hasproto
10745
0c0643d0
JH
10746: see if getpagesize exists
10747set getpagesize d_getpagsz
10748eval $inlibc
10749
b4eb6b3d
JH
10750
10751: see if getprotobyname exists
10752set getprotobyname d_getpbyname
10753eval $inlibc
10754
10755: see if getprotobynumber exists
10756set getprotobynumber d_getpbynumber
10757eval $inlibc
10758
10759: see if getprotoent exists
10760set getprotoent d_getpent
10761eval $inlibc
10762
10763: see if getpgid exists
10764set getpgid d_getpgid
10765eval $inlibc
10766
10767: see if getpgrp2 exists
10768set getpgrp2 d_getpgrp2
10769eval $inlibc
10770
10771: see if getppid exists
10772set getppid d_getppid
10773eval $inlibc
10774
10775: see if getpriority exists
10776set getpriority d_getprior
10777eval $inlibc
10778
10779: see if prototypes for various getprotoxxx netdb.h functions are available
10780echo " "
10781set d_getprotoprotos getprotoent $i_netdb netdb.h
10782eval $hasproto
10783
10784: see if getprpwnam exists
10785set getprpwnam d_getprpwnam
10786eval $inlibc
10787
10788: see if getpwent exists
10789set getpwent d_getpwent
10790eval $inlibc
10791
10792
10793: see if getservbyname exists
10794set getservbyname d_getsbyname
10795eval $inlibc
10796
10797: see if getservbyport exists
10798set getservbyport d_getsbyport
10799eval $inlibc
10800
10801: see if getservent exists
10802set getservent d_getsent
10803eval $inlibc
10804
10805: see if prototypes for various getservxxx netdb.h functions are available
10806echo " "
10807set d_getservprotos getservent $i_netdb netdb.h
10808eval $hasproto
10809
10810: see if getspnam exists
10811set getspnam d_getspnam
10812eval $inlibc
10813
10814: see if gettimeofday or ftime exists
10815set gettimeofday d_gettimeod
10816eval $inlibc
10817case "$d_gettimeod" in
10818"$undef")
10819 set ftime d_ftime
10820 eval $inlibc
10821 ;;
10822*)
10823 val="$undef"; set d_ftime; eval $setvar
10824 ;;
10825esac
10826case "$d_gettimeod$d_ftime" in
10827"$undef$undef")
10828 echo " "
10829 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10830 ;;
10831esac
10832
10833: see if this is an grp system
10834set grp.h i_grp
10835eval $inhdr
10836
10837case "$i_grp" in
10838$define)
10839 xxx=`./findhdr grp.h`
10840 $cppstdin $cppflags $cppminus < $xxx >$$.h
10841
10842 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10843 val="$define"
10844 else
10845 val="$undef"
10846 fi
10847 set d_grpasswd
10848 eval $setvar
10849
10850 $rm -f $$.h
10851 ;;
10852*)
10853 val="$undef";
10854 set d_grpasswd; eval $setvar
10855 ;;
10856esac
10857
10858: see if hasmntopt exists
10859set hasmntopt d_hasmntopt
10860eval $inlibc
10861
10862: see if this is a netinet/in.h or sys/in.h system
10863set netinet/in.h i_niin sys/in.h i_sysin
10864eval $inhdr
10865
10866: see if arpa/inet.h has to be included
10867set arpa/inet.h i_arpainet
10868eval $inhdr
10869
10870: see if htonl --and friends-- exists
10871val=''
10872set htonl val
10873eval $inlibc
10874
10875: Maybe they are macros.
10876case "$val" in
10877$undef)
10878 $cat >htonl.c <<EOM
10879#include <stdio.h>
10880#include <sys/types.h>
10881#$i_niin I_NETINET_IN
10882#$i_sysin I_SYS_IN
10883#$i_arpainet I_ARPA_INET
10884#ifdef I_NETINET_IN
10885#include <netinet/in.h>
10886#endif
10887#ifdef I_SYS_IN
10888#include <sys/in.h>
10889#endif
10890#ifdef I_ARPA_INET
10891#include <arpa/inet.h>
10892#endif
10893#ifdef htonl
10894printf("Defined as a macro.");
10895#endif
10896EOM
10897 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10898 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10899 val="$define"
10900 echo "But it seems to be defined as a macro." >&4
10901 fi
10902 $rm -f htonl.?
10903 ;;
10904esac
10905set d_htonl
10906eval $setvar
10907
b4eb6b3d
JH
10908: index or strchr
10909echo " "
10910if set index val -f; eval $csym; $val; then
10911 if set strchr val -f d_strchr; eval $csym; $val; then
10912 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10913 val="$define"
10914 vali="$undef"
10915 echo "strchr() found." >&4
10916 else
10917 val="$undef"
10918 vali="$define"
10919 echo "index() found." >&4
10920 fi
10921 else
10922 val="$undef"
10923 vali="$define"
8dfa8df9
JH
10924 echo "index() found." >&4
10925 fi
b4eb6b3d 10926else
8dfa8df9
JH
10927 if set strchr val -f d_strchr; eval $csym; $val; then
10928 val="$define"
10929 vali="$undef"
10930 echo "strchr() found." >&4
10931 else
10932 echo "No index() or strchr() found!" >&4
10933 val="$undef"
10934 vali="$undef"
10935 fi
b4eb6b3d 10936fi
8dfa8df9
JH
10937set d_strchr; eval $setvar
10938val="$vali"
10939set d_index; eval $setvar
10940
10941: check whether inet_aton exists
10942set inet_aton d_inetaton
10943eval $inlibc
b4eb6b3d
JH
10944
10945: Look for isascii
10946echo " "
10947$cat >isascii.c <<'EOCP'
10948#include <stdio.h>
10949#include <ctype.h>
10950int main() {
10951 int c = 'A';
10952 if (isascii(c))
10953 exit(0);
10954 else
10955 exit(1);
10956}
10957EOCP
10958set isascii
10959if eval $compile; then
10960 echo "isascii() found." >&4
10961 val="$define"
10962else
10963 echo "isascii() NOT found." >&4
10964 val="$undef"
10965fi
10966set d_isascii
10967eval $setvar
10968$rm -f isascii*
10969
758a5d79
JH
10970: see if isfinite exists
10971set isfinite d_isfinite
10972eval $inlibc
10973
10974: see if isinf exists
10975set isinf d_isinf
10976eval $inlibc
10977
b4eb6b3d
JH
10978: see if isnan exists
10979set isnan d_isnan
10980eval $inlibc
10981
10982: see if isnanl exists
10983set isnanl d_isnanl
10984eval $inlibc
10985
10986: see if killpg exists
10987set killpg d_killpg
10988eval $inlibc
10989
10990: see if lchown exists
10991echo " "
10992$cat > try.c <<'EOCP'
10993/* System header to define __stub macros and hopefully few prototypes,
10994 which can conflict with char lchown(); below. */
10995#include <assert.h>
10996/* Override any gcc2 internal prototype to avoid an error. */
10997/* We use char because int might match the return type of a gcc2
10998 builtin and then its argument prototype would still apply. */
10999char lchown();
11000int main() {
11001 /* The GNU C library defines this for functions which it implements
11002 to always fail with ENOSYS. Some functions are actually named
11003 something starting with __ and the normal name is an alias. */
11004#if defined (__stub_lchown) || defined (__stub___lchown)
11005choke me
11006#else
11007lchown();
11008#endif
11009; return 0; }
11010EOCP
11011set try
11012if eval $compile; then
11013 $echo "lchown() found." >&4
11014 val="$define"
11015else
11016 $echo "lchown() NOT found." >&4
11017 val="$undef"
11018fi
11019set d_lchown
11020eval $setvar
11021
11022: See if number of significant digits in a double precision number is known
11023echo " "
11024$cat >ldbl_dig.c <<EOM
11025#$i_limits I_LIMITS
11026#$i_float I_FLOAT
11027#ifdef I_LIMITS
11028#include <limits.h>
11029#endif
11030#ifdef I_FLOAT
11031#include <float.h>
11032#endif
11033#ifdef LDBL_DIG
11034printf("Contains LDBL_DIG");
11035#endif
11036EOM
11037$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
11038if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
11039 echo "LDBL_DIG found." >&4
11040 val="$define"
11041else
11042 echo "LDBL_DIG NOT found." >&4
11043 val="$undef"
11044fi
11045$rm -f ldbl_dig.?
11046set d_ldbl_dig
11047eval $setvar
11048
11049: see if link exists
11050set link d_link
11051eval $inlibc
11052
11053: see if localeconv exists
11054set localeconv d_locconv
11055eval $inlibc
11056
11057: see if lockf exists
11058set lockf d_lockf
11059eval $inlibc
11060
b4eb6b3d
JH
11061: see if prototype for lseek is available
11062echo " "
4786929f 11063set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
b4eb6b3d
JH
11064eval $hasproto
11065
11066: see if lstat exists
11067set lstat d_lstat
11068eval $inlibc
11069
11070: see if madvise exists
11071set madvise d_madvise
11072eval $inlibc
11073
11074: see if mblen exists
11075set mblen d_mblen
11076eval $inlibc
11077
11078: see if mbstowcs exists
11079set mbstowcs d_mbstowcs
11080eval $inlibc
11081
11082: see if mbtowc exists
11083set mbtowc d_mbtowc
11084eval $inlibc
11085
11086: see if memchr exists
11087set memchr d_memchr
11088eval $inlibc
11089
11090: see if memcmp exists
11091set memcmp d_memcmp
11092eval $inlibc
11093
11094: see if memcpy exists
11095set memcpy d_memcpy
11096eval $inlibc
11097
11098: see if memmove exists
11099set memmove d_memmove
11100eval $inlibc
11101
11102: see if memset exists
11103set memset d_memset
11104eval $inlibc
11105
11106: see if mkdir exists
11107set mkdir d_mkdir
11108eval $inlibc
11109
11110: see if mkdtemp exists
11111set mkdtemp d_mkdtemp
11112eval $inlibc
11113
11114: see if mkfifo exists
11115set mkfifo d_mkfifo
11116eval $inlibc
11117
11118: see if mkstemp exists
11119set mkstemp d_mkstemp
11120eval $inlibc
11121
11122: see if mkstemps exists
11123set mkstemps d_mkstemps
11124eval $inlibc
11125
11126: see if mktime exists
11127set mktime d_mktime
11128eval $inlibc
11129
11130: see if this is a sys/mman.h system
11131set sys/mman.h i_sysmman
11132eval $inhdr
11133
11134: see if mmap exists
11135set mmap d_mmap
11136eval $inlibc
11137: see what shmat returns
11138: default to something harmless
11139mmaptype='void *'
11140case "$i_sysmman$d_mmap" in
11141"$define$define")
11142 $cat >mmap.c <<'END'
11143#include <sys/mman.h>
11144void *mmap();
11145END
11146 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
11147 mmaptype='void *'
11148 else
11149 mmaptype='caddr_t'
11150 fi
11151 echo "and it returns ($mmaptype)." >&4
11152 ;;
11153esac
11154
11155
11156
b4eb6b3d
JH
11157: see if mprotect exists
11158set mprotect d_mprotect
11159eval $inlibc
11160
11161: see if msgctl exists
11162set msgctl d_msgctl
11163eval $inlibc
11164
11165: see if msgget exists
11166set msgget d_msgget
11167eval $inlibc
11168
11169: see if msgsnd exists
11170set msgsnd d_msgsnd
11171eval $inlibc
11172
11173: see if msgrcv exists
11174set msgrcv d_msgrcv
11175eval $inlibc
11176
11177: see how much of the 'msg*(2)' library is present.
11178h_msg=true
11179echo " "
11180case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
11181*"$undef"*) h_msg=false;;
11182esac
11183case "$osname" in
11184freebsd)
11185 case "`ipcs 2>&1`" in
11186 "SVID messages"*"not configured"*)
11187 echo "Your $osname does not have the msg*(2) configured." >&4
11188 h_msg=false
11189 val="$undef"
11190 set msgctl d_msgctl
11191 eval $setvar
11192 set msgget d_msgget
11193 eval $setvar
11194 set msgsnd d_msgsnd
11195 eval $setvar
11196 set msgrcv d_msgrcv
11197 eval $setvar
11198 ;;
11199 esac
11200 ;;
11201esac
11202: we could also check for sys/ipc.h ...
11203if $h_msg && $test `./findhdr sys/msg.h`; then
11204 echo "You have the full msg*(2) library." >&4
11205 val="$define"
11206else
11207 echo "You don't have the full msg*(2) library." >&4
11208 val="$undef"
11209fi
11210set d_msg
11211eval $setvar
11212
4e0554ec
JH
11213
11214echo " "
11215echo "Checking to see if your system supports struct msghdr..." >&4
11216set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11217eval $hasstruct
11218case "$d_msghdr_s" in
11219"$define") echo "Yes, it does." ;;
11220*) echo "No, it doesn't." ;;
11221esac
11222
11223
b4eb6b3d
JH
11224: see if msync exists
11225set msync d_msync
11226eval $inlibc
11227
11228: see if munmap exists
11229set munmap d_munmap
11230eval $inlibc
11231
11232: see if nice exists
11233set nice d_nice
11234eval $inlibc
11235
2765b840
JH
11236: see if this is a langinfo.h system
11237set langinfo.h i_langinfo
11238eval $inhdr
11239
11240: see if nl_langinfo exists
11241set nl_langinfo d_nl_langinfo
11242eval $inlibc
11243
b4eb6b3d
JH
11244: check for length of character
11245echo " "
11246case "$charsize" in
11247'')
11248 echo "Checking to see how big your characters are (hey, you never know)..." >&4
11249 $cat >try.c <<'EOCP'
11250#include <stdio.h>
11251int main()
11252{
11253 printf("%d\n", (int)sizeof(char));
11254 exit(0);
11255}
11256EOCP
11257 set try
11258 if eval $compile_ok; then
5440bc8e 11259 dflt=`$run ./try`
b4eb6b3d
JH
11260 else
11261 dflt='1'
11262 echo "(I can't seem to compile the test program. Guessing...)"
11263 fi
11264 ;;
11265*)
11266 dflt="$charsize"
11267 ;;
11268esac
11269rp="What is the size of a character (in bytes)?"
11270. ./myread
11271charsize="$ans"
11272$rm -f try.c try
11273
1d1be0dc
NC
11274: check for volatile keyword
11275echo " "
11276echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11277$cat >try.c <<'EOCP'
11278int main()
11279{
11280 typedef struct _goo_struct goo_struct;
11281 goo_struct * volatile goo = ((goo_struct *)0);
11282 struct _goo_struct {
11283 long long_int;
11284 int reg_int;
11285 char char_var;
11286 };
11287 typedef unsigned short foo_t;
11288 char *volatile foo;
11289 volatile int bar;
11290 volatile foo_t blech;
11291 foo = foo;
11292}
11293EOCP
11294if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11295 val="$define"
11296 echo "Yup, it does."
11297else
11298 val="$undef"
11299 echo "Nope, it doesn't."
11300fi
11301set d_volatile
11302eval $setvar
11303$rm -f try.*
11304
b4eb6b3d
JH
11305
11306echo " "
11307$echo "Choosing the C types to be used for Perl's internal types..." >&4
11308
11309case "$use64bitint:$d_quad:$quadtype" in
11310define:define:?*)
11311 ivtype="$quadtype"
11312 uvtype="$uquadtype"
11313 ivsize=8
11314 uvsize=8
11315 ;;
11316*) ivtype="long"
11317 uvtype="unsigned long"
11318 ivsize=$longsize
11319 uvsize=$longsize
11320 ;;
11321esac
11322
11323case "$uselongdouble:$d_longdbl" in
11324define:define)
11325 nvtype="long double"
11326 nvsize=$longdblsize
11327 ;;
11328*) nvtype=double
11329 nvsize=$doublesize
11330 ;;
11331esac
11332
11333$echo "(IV will be "$ivtype", $ivsize bytes)"
11334$echo "(UV will be "$uvtype", $uvsize bytes)"
11335$echo "(NV will be "$nvtype", $nvsize bytes)"
11336
11337$cat >try.c <<EOCP
11338#$i_inttypes I_INTTYPES
11339#ifdef I_INTTYPES
11340#include <inttypes.h>
11341#endif
11342#include <stdio.h>
11343int main() {
11344#ifdef INT8
11345 int8_t i = INT8_MAX;
11346 uint8_t u = UINT8_MAX;
11347 printf("int8_t\n");
11348#endif
11349#ifdef INT16
11350 int16_t i = INT16_MAX;
11351 uint16_t i = UINT16_MAX;
11352 printf("int16_t\n");
11353#endif
11354#ifdef INT32
11355 int32_t i = INT32_MAX;
11356 uint32_t u = UINT32_MAX;
11357 printf("int32_t\n");
11358#endif
11359}
11360EOCP
11361
11362case "$i8type" in
11363'') case "$charsize" in
11364 1) i8type=char
11365 u8type="unsigned char"
11366 i8size=$charsize
11367 u8size=$charsize
11368 ;;
11369 esac
11370 ;;
11371esac
11372case "$i8type" in
11373'') set try -DINT8
11374 if eval $compile; then
5440bc8e 11375 case "`$run ./try`" in
b4eb6b3d
JH
11376 int8_t) i8type=int8_t
11377 u8type=uint8_t
11378 i8size=1
11379 u8size=1
11380 ;;
11381 esac
11382 fi
11383 ;;
11384esac
11385case "$i8type" in
11386'') if $test $charsize -ge 1; then
11387 i8type=char
11388 u8type="unsigned char"
11389 i8size=$charsize
11390 u8size=$charsize
11391 fi
11392 ;;
11393esac
11394
11395case "$i16type" in
11396'') case "$shortsize" in
11397 2) i16type=short
11398 u16type="unsigned short"
11399 i16size=$shortsize
11400 u16size=$shortsize
11401 ;;
11402 esac
11403 ;;
11404esac
11405case "$i16type" in
11406'') set try -DINT16
11407 if eval $compile; then
5440bc8e 11408 case "`$run ./try`" in
b4eb6b3d
JH
11409 int16_t)
11410 i16type=int16_t
11411 u16type=uint16_t
11412 i16size=2
11413 u16size=2
11414 ;;
11415 esac
11416 fi
11417 ;;
11418esac
11419case "$i16type" in
11420'') if $test $shortsize -ge 2; then
11421 i16type=short
11422 u16type="unsigned short"
11423 i16size=$shortsize
11424 u16size=$shortsize
11425 fi
11426 ;;
11427esac
11428
11429case "$i32type" in
11430'') case "$longsize" in
11431 4) i32type=long
11432 u32type="unsigned long"
11433 i32size=$longsize
11434 u32size=$longsize
11435 ;;
11436 *) case "$intsize" in
11437 4) i32type=int
11438 u32type="unsigned int"
11439 i32size=$intsize
11440 u32size=$intsize
11441 ;;
11442 esac
11443 ;;
11444 esac
11445 ;;
11446esac
11447case "$i32type" in
11448'') set try -DINT32
11449 if eval $compile; then
5440bc8e 11450 case "`$run ./try`" in
b4eb6b3d
JH
11451 int32_t)
11452 i32type=int32_t
11453 u32type=uint32_t
11454 i32size=4
11455 u32size=4
11456 ;;
11457 esac
11458 fi
11459 ;;
11460esac
11461case "$i32type" in
11462'') if $test $intsize -ge 4; then
11463 i32type=int
11464 u32type="unsigned int"
11465 i32size=$intsize
11466 u32size=$intsize
11467 fi
11468 ;;
11469esac
11470
11471case "$i64type" in
11472'') case "$d_quad:$quadtype" in
11473 define:?*)
11474 i64type="$quadtype"
11475 u64type="$uquadtype"
11476 i64size=8
11477 u64size=8
11478 ;;
11479 esac
11480 ;;
11481esac
11482
1d1be0dc
NC
11483$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11484: volatile so that the compiler has to store it out to memory.
11485if test X"$d_volatile" = X"$define"; then
11486 volatile=volatile
11487fi
b4eb6b3d
JH
11488$cat <<EOP >try.c
11489#include <stdio.h>
1d1be0dc
NC
11490#include <sys/types.h>
11491#include <signal.h>
11492#ifdef SIGFPE
11493$volatile int bletched = 0;
11494$signal_t blech(s) int s; { bletched = 1; }
11495#endif
b4eb6b3d
JH
11496int main() {
11497 $uvtype u = 0;
1d1be0dc 11498 $nvtype d;
b4eb6b3d
JH
11499 int n = 8 * $uvsize;
11500 int i;
1d1be0dc
NC
11501#ifdef SIGFPE
11502 signal(SIGFPE, blech);
11503#endif
11504
b4eb6b3d
JH
11505 for (i = 0; i < n; i++) {
11506 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
11507 d = ($nvtype)u;
11508 if (($uvtype)d != u)
b4eb6b3d 11509 break;
1d1be0dc
NC
11510 if (d <= 0)
11511 break;
11512 d = ($nvtype)(u - 1);
11513 if (($uvtype)d != (u - 1))
11514 break;
11515#ifdef SIGFPE
11516 if (bletched) {
11517 break;
11518#endif
11519 }
b4eb6b3d 11520 }
efd1522b 11521 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
11522 exit(0);
11523}
11524EOP
1d1be0dc
NC
11525set try
11526
11527d_nv_preserves_uv="$undef"
11528if eval $compile; then
5440bc8e 11529 d_nv_preserves_uv_bits="`$run ./try`"
1d1be0dc
NC
11530fi
11531case "$d_nv_preserves_uv_bits" in
11532\-[1-9]*)
11533 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11534 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11535 d_nv_preserves_uv="$define"
b4eb6b3d 11536 ;;
1d1be0dc
NC
11537[1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11538 d_nv_preserves_uv="$undef" ;;
11539*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11540 d_nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
11541esac
11542
1d1be0dc
NC
11543$rm -f try.* try
11544
b4eb6b3d
JH
11545
11546: check for off64_t
11547echo " "
11548echo "Checking to see if you have off64_t..." >&4
11549$cat >try.c <<EOCP
11550#include <sys/types.h>
11551#include <unistd.h>
11552int main() { off64_t x = 7; }
11553EOCP
11554set try
11555if eval $compile; then
11556 val="$define"
11557 echo "You have off64_t."
11558else
11559 val="$undef"
11560 echo "You do not have off64_t."
11561 case "$lseeksize" in
11562 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11563 esac
11564fi
11565$rm -f try.* try
11566set d_off64_t
11567eval $setvar
11568
11569: see if POSIX threads are available
11570set pthread.h i_pthread
11571eval $inhdr
11572
11573
11574
11575
11576: how to create joinable pthreads
11577if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11578 echo " "
11579 echo "Checking what constant to use for creating joinable pthreads..." >&4
11580 $cat >try.c <<'EOCP'
11581#include <pthread.h>
11582int main() {
11583 int detachstate = JOINABLE;
11584}
11585EOCP
11586 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11587 if eval $compile; then
11588 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11589 val="$undef" # Yes, undef.
11590 set d_old_pthread_create_joinable
11591 eval $setvar
11592 val=""
11593 set old_pthread_create_joinable
11594 eval $setvar
11595 else
11596 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11597 if eval $compile; then
11598 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11599 val="$define"
11600 set d_old_pthread_create_joinable
11601 eval $setvar
11602 val=PTHREAD_CREATE_UNDETACHED
11603 set old_pthread_create_joinable
11604 eval $setvar
11605 else
11606 set try -DJOINABLE=__UNDETACHED
11607 if eval $compile; then
11608 echo "You seem to use __UNDETACHED." >&4
11609 val="$define"
11610 set d_old_pthread_create_joinable
11611 eval $setvar
11612 val=__UNDETACHED
11613 set old_pthread_create_joinable
11614 eval $setvar
11615 else
11616 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11617 val="$define"
11618 set d_old_pthread_create_joinable
11619 eval $setvar
11620 val=0
11621 set old_pthread_create_joinable
11622 eval $setvar
11623 fi
11624 fi
11625 fi
11626 $rm -f try try.*
11627else
11628 d_old_pthread_create_joinable="$undef"
11629 old_pthread_create_joinable=""
11630fi
11631
11632: see if pause exists
11633set pause d_pause
11634eval $inlibc
11635
11636: see if pipe exists
11637set pipe d_pipe
11638eval $inlibc
11639
11640: see if poll exists
11641set poll d_poll
11642eval $inlibc
11643
c7aff470
NIS
11644: see if readlink exists
11645set readlink d_readlink
11646eval $inlibc
11647
11648echo " "
f24dbf84 11649procselfexe=''
c7aff470 11650val="$undef"
a33c94aa
JH
11651case "$d_readlink" in
11652"$define")
c7aff470
NIS
11653 if $issymlink /proc/self/exe ; then
11654 $ls -l /proc/self/exe > reflect
51660ed5 11655 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
a33c94aa 11656 echo "You have Linux-like /proc/self/exe."
92236451 11657 procselfexe='"/proc/self/exe"'
f24dbf84 11658 val="$define"
f24dbf84
JH
11659 fi
11660 fi
11661 if $issymlink /proc/curproc/file ; then
11662 $ls -l /proc/curproc/file > reflect
11663 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
11664 echo "You have BSD-like /proc/curproc/file."
92236451 11665 procselfexe='"/proc/curproc/file"'
f24dbf84 11666 val="$define"
c7aff470 11667 fi
c7aff470 11668 fi
a33c94aa
JH
11669 ;;
11670esac
428dc699 11671$rm -f reflect
c7aff470
NIS
11672set d_procselfexe
11673eval $setvar
11674
d6483fcc
JH
11675: see if pthread_atfork exists
11676set pthread_atfork d_pthread_atfork
11677eval $inlibc
11678
b4eb6b3d
JH
11679
11680: see whether the various POSIXish _yields exist
11681$cat >try.c <<EOP
11682#include <pthread.h>
11683#include <stdio.h>
11684int main() {
11685#ifdef SCHED_YIELD
11686 sched_yield();
11687#else
11688#ifdef PTHREAD_YIELD
11689 pthread_yield();
11690#else
11691#ifdef PTHREAD_YIELD_NULL
11692 pthread_yield(NULL);
11693#endif
11694#endif
11695#endif
11696}
11697EOP
11698: see if sched_yield exists
11699set try -DSCHED_YIELD
11700if eval $compile; then
11701 val="$define"
11702 sched_yield='sched_yield()'
11703else
11704 val="$undef"
11705fi
11706case "$usethreads" in
11707$define)
11708 case "$val" in
11709 $define) echo 'sched_yield() found.' >&4 ;;
11710 *) echo 'sched_yield() NOT found.' >&4 ;;
11711 esac
11712esac
11713set d_sched_yield
11714eval $setvar
11715
11716: see if pthread_yield exists
11717set try -DPTHREAD_YIELD
11718if eval $compile; then
11719 val="$define"
11720 case "$sched_yield" in
11721 '') sched_yield='pthread_yield()' ;;
11722 esac
11723else
11724 set try -DPTHREAD_YIELD_NULL
11725 if eval $compile; then
11726 val="$define"
11727 case "$sched_yield" in
11728 '') sched_yield='pthread_yield(NULL)' ;;
11729 esac
11730 else
11731 val="$undef"
11732 fi
11733fi
11734case "$usethreads" in
11735$define)
11736 case "$val" in
11737 $define) echo 'pthread_yield() found.' >&4 ;;
11738 *) echo 'pthread_yield() NOT found.' >&4 ;;
11739 esac
11740 ;;
11741esac
11742set d_pthread_yield
11743eval $setvar
11744
11745case "$sched_yield" in
11746'') sched_yield=undef ;;
11747esac
11748
11749$rm -f try try.*
11750
11751: see if this is a pwd.h system
11752set pwd.h i_pwd
11753eval $inhdr
11754
11755case "$i_pwd" in
11756$define)
11757 xxx=`./findhdr pwd.h`
11758 $cppstdin $cppflags $cppminus < $xxx >$$.h
11759
11760 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11761 val="$define"
11762 else
11763 val="$undef"
11764 fi
11765 set d_pwquota
11766 eval $setvar
11767
11768 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11769 val="$define"
11770 else
11771 val="$undef"
11772 fi
11773 set d_pwage
11774 eval $setvar
11775
11776 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11777 val="$define"
11778 else
11779 val="$undef"
11780 fi
11781 set d_pwchange
11782 eval $setvar
11783
11784 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11785 val="$define"
11786 else
11787 val="$undef"
11788 fi
11789 set d_pwclass
11790 eval $setvar
11791
11792 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11793 val="$define"
11794 else
11795 val="$undef"
11796 fi
11797 set d_pwexpire
11798 eval $setvar
11799
11800 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11801 val="$define"
11802 else
11803 val="$undef"
11804 fi
11805 set d_pwcomment
11806 eval $setvar
11807
11808 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11809 val="$define"
11810 else
11811 val="$undef"
11812 fi
11813 set d_pwgecos
11814 eval $setvar
11815
11816 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11817 val="$define"
11818 else
11819 val="$undef"
11820 fi
11821 set d_pwpasswd
11822 eval $setvar
11823
11824 $rm -f $$.h
11825 ;;
11826*)
11827 val="$undef";
11828 set d_pwquota; eval $setvar
11829 set d_pwage; eval $setvar
11830 set d_pwchange; eval $setvar
11831 set d_pwclass; eval $setvar
11832 set d_pwexpire; eval $setvar
11833 set d_pwcomment; eval $setvar
11834 set d_pwgecos; eval $setvar
11835 set d_pwpasswd; eval $setvar
11836 ;;
11837esac
11838
11839: see if readdir and friends exist
11840set readdir d_readdir
11841eval $inlibc
11842set seekdir d_seekdir
11843eval $inlibc
11844set telldir d_telldir
11845eval $inlibc
11846set rewinddir d_rewinddir
11847eval $inlibc
11848
4e0554ec
JH
11849: see if readv exists
11850set readv d_readv
11851eval $inlibc
11852
11853: see if recvmsg exists
11854set recvmsg d_recvmsg
11855eval $inlibc
11856
b4eb6b3d
JH
11857: see if rename exists
11858set rename d_rename
11859eval $inlibc
11860
11861: see if rmdir exists
11862set rmdir d_rmdir
11863eval $inlibc
11864
11865: see if memory.h is available.
11866val=''
11867set memory.h val
11868eval $inhdr
11869
11870: See if it conflicts with string.h
11871case "$val" in
11872$define)
11873 case "$strings" in
11874 '') ;;
11875 *)
11876 $cppstdin $cppflags $cppminus < $strings > mem.h
11877 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11878 echo " "
11879 echo "We won't be including <memory.h>."
11880 val="$undef"
11881 fi
11882 $rm -f mem.h
11883 ;;
11884 esac
11885esac
11886set i_memory
11887eval $setvar
11888
11889: can bcopy handle overlapping blocks?
b6cc3bc4 11890echo " "
b4eb6b3d 11891val="$undef"
b6cc3bc4
AD
11892case "$d_memmove" in
11893"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11894*) case "$d_bcopy" in
11895 "$define")
11896 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11897 $cat >try.c <<EOCP
b4eb6b3d
JH
11898#$i_memory I_MEMORY
11899#$i_stdlib I_STDLIB
11900#$i_string I_STRING
11901#$i_unistd I_UNISTD
11902EOCP
11903 $cat >>try.c <<'EOCP'
11904#include <stdio.h>
11905#ifdef I_MEMORY
11906# include <memory.h>
11907#endif
11908#ifdef I_STDLIB
11909# include <stdlib.h>
11910#endif
11911#ifdef I_STRING
11912# include <string.h>
11913#else
11914# include <strings.h>
11915#endif
11916#ifdef I_UNISTD
11917# include <unistd.h> /* Needed for NetBSD */
11918#endif
11919int main()
11920{
11921char buf[128], abc[128];
11922char *b;
11923int len;
11924int off;
11925int align;
11926
b6cc3bc4
AD
11927/* Copy "abcde..." string to char abc[] so that gcc doesn't
11928 try to store the string in read-only memory. */
b4eb6b3d
JH
11929bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11930
11931for (align = 7; align >= 0; align--) {
11932 for (len = 36; len; len--) {
11933 b = buf+align;
11934 bcopy(abc, b, len);
11935 for (off = 1; off <= len; off++) {
11936 bcopy(b, b+off, len);
11937 bcopy(b+off, b, len);
11938 if (bcmp(b, abc, len))
11939 exit(1);
11940 }
11941 }
11942}
11943exit(0);
11944}
11945EOCP
b6cc3bc4
AD
11946 set try
11947 if eval $compile_ok; then
11948 if ./try 2>/dev/null; then
11949 echo "Yes, it can."
11950 val="$define"
11951 else
11952 echo "It can't, sorry."
11953 fi
b4eb6b3d 11954 else
b6cc3bc4 11955 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 11956 fi
b6cc3bc4
AD
11957 ;;
11958 esac
11959 $rm -f try.* try core
b4eb6b3d
JH
11960 ;;
11961esac
b4eb6b3d
JH
11962set d_safebcpy
11963eval $setvar
11964
11965: can memcpy handle overlapping blocks?
b6cc3bc4 11966echo " "
b4eb6b3d 11967val="$undef"
b6cc3bc4
AD
11968case "$d_memmove" in
11969"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11970*) case "$d_memcpy" in
11971 "$define")
11972 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11973 $cat >try.c <<EOCP
b4eb6b3d
JH
11974#$i_memory I_MEMORY
11975#$i_stdlib I_STDLIB
11976#$i_string I_STRING
11977#$i_unistd I_UNISTD
11978EOCP
11979 $cat >>try.c <<'EOCP'
11980#include <stdio.h>
11981#ifdef I_MEMORY
11982# include <memory.h>
11983#endif
11984#ifdef I_STDLIB
11985# include <stdlib.h>
11986#endif
11987#ifdef I_STRING
11988# include <string.h>
11989#else
11990# include <strings.h>
11991#endif
11992#ifdef I_UNISTD
11993# include <unistd.h> /* Needed for NetBSD */
11994#endif
11995int main()
11996{
11997char buf[128], abc[128];
11998char *b;
11999int len;
12000int off;
12001int align;
12002
12003/* Copy "abcde..." string to char abc[] so that gcc doesn't
12004 try to store the string in read-only memory. */
12005memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
12006
12007for (align = 7; align >= 0; align--) {
12008 for (len = 36; len; len--) {
12009 b = buf+align;
12010 memcpy(b, abc, len);
12011 for (off = 1; off <= len; off++) {
12012 memcpy(b+off, b, len);
12013 memcpy(b, b+off, len);
12014 if (memcmp(b, abc, len))
12015 exit(1);
12016 }
12017 }
12018}
12019exit(0);
12020}
12021EOCP
b6cc3bc4
AD
12022 set try
12023 if eval $compile_ok; then
12024 if ./try 2>/dev/null; then
12025 echo "Yes, it can."
12026 val="$define"
12027 else
12028 echo "It can't, sorry."
12029 fi
b4eb6b3d 12030 else
b6cc3bc4 12031 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 12032 fi
b6cc3bc4
AD
12033 ;;
12034 esac
12035 $rm -f try.* try core
b4eb6b3d
JH
12036 ;;
12037esac
b4eb6b3d
JH
12038set d_safemcpy
12039eval $setvar
12040
12041: can memcmp be trusted to compare relative magnitude?
12042val="$undef"
12043case "$d_memcmp" in
12044"$define")
12045 echo " "
12046 echo "Checking if your memcmp() can compare relative magnitude..." >&4
12047 $cat >try.c <<EOCP
12048#$i_memory I_MEMORY
12049#$i_stdlib I_STDLIB
12050#$i_string I_STRING
12051#$i_unistd I_UNISTD
12052EOCP
12053 $cat >>try.c <<'EOCP'
12054#include <stdio.h>
12055#ifdef I_MEMORY
12056# include <memory.h>
12057#endif
12058#ifdef I_STDLIB
12059# include <stdlib.h>
12060#endif
12061#ifdef I_STRING
12062# include <string.h>
12063#else
12064# include <strings.h>
12065#endif
12066#ifdef I_UNISTD
12067# include <unistd.h> /* Needed for NetBSD */
12068#endif
12069int main()
12070{
12071char a = -1;
12072char b = 0;
12073if ((a < b) && memcmp(&a, &b, 1) < 0)
12074 exit(1);
12075exit(0);
12076}
12077EOCP
12078 set try
12079 if eval $compile_ok; then
5440bc8e 12080 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
12081 echo "Yes, it can."
12082 val="$define"
12083 else
12084 echo "No, it can't (it uses signed chars)."
12085 fi
12086 else
12087 echo "(I can't compile the test program, so we'll assume not...)"
12088 fi
12089 ;;
12090esac
12091$rm -f try.* try core
12092set d_sanemcmp
12093eval $setvar
12094
ef9f17be
JH
12095: see if prototype for sbrk is available
12096echo " "
12097set d_sbrkproto sbrk $i_unistd unistd.h
12098eval $hasproto
12099
b4eb6b3d
JH
12100: see if select exists
12101set select d_select
12102eval $inlibc
12103
12104: see if semctl exists
12105set semctl d_semctl
12106eval $inlibc
12107
12108: see if semget exists
12109set semget d_semget
12110eval $inlibc
12111
12112: see if semop exists
12113set semop d_semop
12114eval $inlibc
12115
12116: see how much of the 'sem*(2)' library is present.
12117h_sem=true
12118echo " "
12119case "$d_semctl$d_semget$d_semop" in
12120*"$undef"*) h_sem=false;;
12121esac
12122case "$osname" in
12123freebsd)
12124 case "`ipcs 2>&1`" in
12125 "SVID messages"*"not configured"*)
12126 echo "Your $osname does not have the sem*(2) configured." >&4
12127 h_sem=false
12128 val="$undef"
12129 set semctl d_semctl
12130 eval $setvar
12131 set semget d_semget
12132 eval $setvar
12133 set semop d_semop
12134 eval $setvar
12135 ;;
12136 esac
12137 ;;
12138esac
12139: we could also check for sys/ipc.h ...
12140if $h_sem && $test `./findhdr sys/sem.h`; then
12141 echo "You have the full sem*(2) library." >&4
12142 val="$define"
12143else
12144 echo "You don't have the full sem*(2) library." >&4
12145 val="$undef"
12146fi
12147set d_sem
12148eval $setvar
12149
12150: see whether sys/sem.h defines union semun
12151echo " "
12152$cat > try.c <<'END'
12153#include <sys/types.h>
12154#include <sys/ipc.h>
12155#include <sys/sem.h>
12156int main () { union semun semun; semun.buf = 0; }
12157END
12158set try
12159if eval $compile; then
12160 echo "You have union semun in <sys/sem.h>." >&4
12161 val="$define"
12162else
12163 echo "You do not have union semun in <sys/sem.h>." >&4
12164 val="$undef"
12165fi
12166$rm -f try try.c try.h
12167set d_union_semun
12168eval $setvar
12169
12170: see how to do semctl IPC_STAT
12171case "$d_sem" in
12172$define)
12173 : see whether semctl IPC_STAT can use union semun
12174 echo " "
12175 $cat > try.h <<END
12176#ifndef S_IRUSR
12177# ifdef S_IREAD
12178# define S_IRUSR S_IREAD
12179# define S_IWUSR S_IWRITE
12180# define S_IXUSR S_IEXEC
12181# else
12182# define S_IRUSR 0400
12183# define S_IWUSR 0200
12184# define S_IXUSR 0100
12185# endif
12186# define S_IRGRP (S_IRUSR>>3)
12187# define S_IWGRP (S_IWUSR>>3)
12188# define S_IXGRP (S_IXUSR>>3)
12189# define S_IROTH (S_IRUSR>>6)
12190# define S_IWOTH (S_IWUSR>>6)
12191# define S_IXOTH (S_IXUSR>>6)
12192#endif
12193#ifndef S_IRWXU
12194# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
12195# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
12196# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
12197#endif
12198END
12199
12200 $cat > try.c <<END
12201#include <sys/types.h>
12202#include <sys/ipc.h>
12203#include <sys/sem.h>
12204#include <sys/stat.h>
12205#include <stdio.h>
12206#include <errno.h>
12207#include "try.h"
12208#ifndef errno
12209extern int errno;
12210#endif
12211#$d_union_semun HAS_UNION_SEMUN
12212int main() {
12213 union semun
12214#ifndef HAS_UNION_SEMUN
12215 {
12216 int val;
12217 struct semid_ds *buf;
12218 unsigned short *array;
12219 }
12220#endif
12221 arg;
12222 int sem, st;
12223
12224#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12225 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12226 if (sem > -1) {
12227 struct semid_ds argbuf;
12228 arg.buf = &argbuf;
12229# ifdef IPC_STAT
12230 st = semctl(sem, 0, IPC_STAT, arg);
12231 if (st == 0)
12232 printf("semun\n");
12233 else
12234# endif /* IPC_STAT */
12235 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12236# ifdef IPC_RMID
12237 if (semctl(sem, 0, IPC_RMID, arg) != 0)
12238# endif /* IPC_RMID */
12239 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12240 } else
12241#endif /* IPC_PRIVATE && ... */
12242 printf("semget failed: errno = %d\n", errno);
12243 return 0;
12244}
12245END
12246 val="$undef"
12247 set try
12248 if eval $compile; then
5440bc8e 12249 xxx=`$run ./try`
b4eb6b3d
JH
12250 case "$xxx" in
12251 semun) val="$define" ;;
12252 esac
12253 fi
12254 $rm -f try try.c
12255 set d_semctl_semun
12256 eval $setvar
12257 case "$d_semctl_semun" in
12258 $define)
12259 echo "You can use union semun for semctl IPC_STAT." >&4
12260 also='also'
12261 ;;
12262 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
12263 also=''
12264 ;;
12265 esac
12266
12267 : see whether semctl IPC_STAT can use struct semid_ds pointer
12268 $cat > try.c <<'END'
12269#include <sys/types.h>
12270#include <sys/ipc.h>
12271#include <sys/sem.h>
12272#include <sys/stat.h>
12273#include "try.h"
12274#include <stdio.h>
12275#include <errno.h>
12276#ifndef errno
12277extern int errno;
12278#endif
12279int main() {
12280 struct semid_ds arg;
12281 int sem, st;
12282
12283#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12284 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12285 if (sem > -1) {
12286# ifdef IPC_STAT
12287 st = semctl(sem, 0, IPC_STAT, &arg);
12288 if (st == 0)
12289 printf("semid_ds\n");
12290 else
12291# endif /* IPC_STAT */
12292 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12293# ifdef IPC_RMID
12294 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12295# endif /* IPC_RMID */
12296 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12297 } else
12298#endif /* IPC_PRIVATE && ... */
12299 printf("semget failed: errno = %d\n", errno);
12300
12301 return 0;
12302}
12303END
12304 val="$undef"
12305 set try
12306 if eval $compile; then
5440bc8e 12307 xxx=`$run ./try`
b4eb6b3d
JH
12308 case "$xxx" in
12309 semid_ds) val="$define" ;;
12310 esac
12311 fi
12312 $rm -f try try.c
12313 set d_semctl_semid_ds
12314 eval $setvar
12315 case "$d_semctl_semid_ds" in
12316 $define)
12317 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12318 ;;
12319 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12320 ;;
12321 esac
12322 $rm -f try.h
12323 ;;
12324*) val="$undef"
12325
12326 # We do not have the full sem*(2) library, so assume we can not
12327 # use either.
12328
12329 set d_semctl_semun
12330 eval $setvar
12331
12332 set d_semctl_semid_ds
12333 eval $setvar
12334 ;;
12335esac
12336
4e0554ec
JH
12337: see if sendmsg exists
12338set sendmsg d_sendmsg
12339eval $inlibc
12340
b4eb6b3d
JH
12341: see if setegid exists
12342set setegid d_setegid
12343eval $inlibc
12344
12345: see if seteuid exists
12346set seteuid d_seteuid
12347eval $inlibc
12348
12349: see if setgrent exists
12350set setgrent d_setgrent
12351eval $inlibc
12352
12353: see if sethostent exists
12354set sethostent d_sethent
12355eval $inlibc
12356
4e0554ec
JH
12357: see if setitimer exists
12358set setitimer d_setitimer
12359eval $inlibc
12360
b4eb6b3d
JH
12361: see if setlinebuf exists
12362set setlinebuf d_setlinebuf
12363eval $inlibc
12364
12365: see if setlocale exists
12366set setlocale d_setlocale
12367eval $inlibc
12368
12369: see if setnetent exists
12370set setnetent d_setnent
12371eval $inlibc
12372
12373: see if setprotoent exists
12374set setprotoent d_setpent
12375eval $inlibc
12376
12377: see if setpgid exists
12378set setpgid d_setpgid
12379eval $inlibc
12380
12381: see if setpgrp2 exists
12382set setpgrp2 d_setpgrp2
12383eval $inlibc
12384
12385: see if setpriority exists
12386set setpriority d_setprior
12387eval $inlibc
12388
12389: see if setproctitle exists
12390set setproctitle d_setproctitle
12391eval $inlibc
12392
12393: see if setpwent exists
12394set setpwent d_setpwent
12395eval $inlibc
12396
12397: see if setregid exists
12398set setregid d_setregid
12399eval $inlibc
12400set setresgid d_setresgid
12401eval $inlibc
12402
12403: see if setreuid exists
12404set setreuid d_setreuid
12405eval $inlibc
12406set setresuid d_setresuid
12407eval $inlibc
12408
12409: see if setrgid exists
12410set setrgid d_setrgid
12411eval $inlibc
12412
12413: see if setruid exists
12414set setruid d_setruid
12415eval $inlibc
12416
12417: see if setservent exists
12418set setservent d_setsent
12419eval $inlibc
12420
12421: see if setsid exists
12422set setsid d_setsid
12423eval $inlibc
12424
12425: see if setvbuf exists
12426set setvbuf d_setvbuf
12427eval $inlibc
12428
12429: see if sfio.h is available
12430set sfio.h i_sfio
12431eval $inhdr
12432
12433
12434: see if sfio library is available
12435case "$i_sfio" in
12436$define)
12437 val=''
12438 set sfreserve val
12439 eval $inlibc
12440 ;;
12441*)
12442 val="$undef"
12443 ;;
12444esac
12445: Ok, but do we want to use it.
12446case "$val" in
12447$define)
12448 case "$usesfio" in
12449 true|$define|[yY]*) dflt='y';;
12450 *) dflt='n';;
12451 esac
12452 echo "$package can use the sfio library, but it is experimental."
12453 case "$useperlio" in
12454 "$undef")
12455 echo "For sfio also the PerlIO abstraction layer is needed."
12456 echo "Earlier you said you wouldn't want that."
12457 ;;
12458 esac
12459 rp="You seem to have sfio available, do you want to try using it?"
12460 . ./myread
12461 case "$ans" in
12462 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12463 useperlio="$define"
12464 val="$define"
12465 ;;
12466 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12467 val="$undef"
b4eb6b3d
JH
12468 ;;
12469 esac
12470 ;;
12471*) case "$usesfio" in
12472 true|$define|[yY]*)
12473 echo "Sorry, cannot find sfio on this machine." >&4
12474 echo "Ignoring your setting of usesfio=$usesfio." >&4
12475 val="$undef"
12476 ;;
12477 esac
12478 ;;
12479esac
12480set d_sfio
12481eval $setvar
12482case "$d_sfio" in
12483$define) usesfio='true';;
12484*) usesfio='false';;
12485esac
3659ebf1
JH
12486case "$d_sfio" in
12487$define) ;;
12488*) : Remove sfio from list of libraries to use
7483f793
JH
12489 case "$libs" in
12490 *-lsfio*)
12491 echo "Removing unneeded -lsfio from library list" >&4
12492 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12493 shift
12494 libs="$*"
12495 echo "libs = $libs" >&4
12496 ;;
12497 esac
3659ebf1
JH
12498;;
12499esac
12500
b4eb6b3d
JH
12501
12502: see if shmctl exists
12503set shmctl d_shmctl
12504eval $inlibc
12505
12506: see if shmget exists
12507set shmget d_shmget
12508eval $inlibc
12509
12510: see if shmat exists
12511set shmat d_shmat
12512eval $inlibc
12513: see what shmat returns
12514case "$d_shmat" in
12515"$define")
12516 $cat >shmat.c <<'END'
12517#include <sys/shm.h>
12518void *shmat();
12519END
12520 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12521 shmattype='void *'
12522 else
12523 shmattype='char *'
12524 fi
12525 echo "and it returns ($shmattype)." >&4
12526 : see if a prototype for shmat is available
12527 xxx=`./findhdr sys/shm.h`
12528 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12529 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12530 val="$define"
12531 else
12532 val="$undef"
12533 fi
12534 $rm -f shmat.[co]
12535 ;;
12536*)
12537 val="$undef"
12538 ;;
12539esac
12540set d_shmatprototype
12541eval $setvar
12542
12543: see if shmdt exists
12544set shmdt d_shmdt
12545eval $inlibc
12546
12547: see how much of the 'shm*(2)' library is present.
12548h_shm=true
12549echo " "
12550case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12551*"$undef"*) h_shm=false;;
12552esac
12553case "$osname" in
12554freebsd)
12555 case "`ipcs 2>&1`" in
12556 "SVID shared memory"*"not configured"*)
12557 echo "Your $osname does not have the shm*(2) configured." >&4
12558 h_shm=false
12559 val="$undef"
12560 set shmctl d_shmctl
12561 evat $setvar
12562 set shmget d_shmget
12563 evat $setvar
12564 set shmat d_shmat
12565 evat $setvar
12566 set shmdt d_shmdt
12567 evat $setvar
12568 ;;
12569 esac
12570 ;;
12571esac
12572: we could also check for sys/ipc.h ...
12573if $h_shm && $test `./findhdr sys/shm.h`; then
12574 echo "You have the full shm*(2) library." >&4
12575 val="$define"
12576else
12577 echo "You don't have the full shm*(2) library." >&4
12578 val="$undef"
12579fi
12580set d_shm
12581eval $setvar
12582
12583echo " "
12584: see if we have sigaction
12585if set sigaction val -f d_sigaction; eval $csym; $val; then
12586 echo 'sigaction() found.' >&4
12587 $cat > try.c <<'EOP'
12588#include <stdio.h>
12589#include <sys/types.h>
12590#include <signal.h>
12591int main()
12592{
12593 struct sigaction act, oact;
12594 act.sa_flags = 0;
12595 oact.sa_handler = 0;
12596 /* so that act and oact are used */
12597 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12598}
12599EOP
12600 set try
12601 if eval $compile_ok; then
12602 val="$define"
12603 else
12604 echo "But you don't seem to have a useable struct sigaction." >&4
12605 val="$undef"
12606 fi
12607else
12608 echo 'sigaction NOT found.' >&4
12609 val="$undef"
12610fi
12611set d_sigaction; eval $setvar
12612$rm -f try try$_o try.c
12613
983dbef6
JH
12614: see if sigprocmask exists
12615set sigprocmask d_sigprocmask
12616eval $inlibc
12617
b4eb6b3d
JH
12618: see if sigsetjmp exists
12619echo " "
12620case "$d_sigsetjmp" in
12621'')
12622 $cat >try.c <<'EOP'
12623#include <setjmp.h>
12624sigjmp_buf env;
12625int set = 1;
12626int main()
12627{
12628 if (sigsetjmp(env,1))
12629 exit(set);
12630 set = 0;
12631 siglongjmp(env, 1);
12632 exit(1);
12633}
12634EOP
12635 set try
12636 if eval $compile; then
5440bc8e 12637 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
12638 echo "POSIX sigsetjmp found." >&4
12639 val="$define"
12640 else
12641 $cat >&4 <<EOM
12642Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12643I'll ignore them.
12644EOM
12645 val="$undef"
12646 fi
12647 else
12648 echo "sigsetjmp not found." >&4
12649 val="$undef"
12650 fi
12651 ;;
12652*) val="$d_sigsetjmp"
12653 case "$d_sigsetjmp" in
12654 $define) echo "POSIX sigsetjmp found." >&4;;
12655 $undef) echo "sigsetjmp not found." >&4;;
12656 esac
12657 ;;
12658esac
12659set d_sigsetjmp
12660eval $setvar
12661$rm -f try.c try
12662
49a78c82
JH
12663: see if sockatmark exists
12664set sockatmark d_sockatmark
12665eval $inlibc
12666
2ef53570
JH
12667: see if prototype for sockatmark is available
12668echo " "
12669set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12670eval $hasproto
12671
b4eb6b3d
JH
12672: see if socks5_init exists
12673set socks5_init d_socks5_init
12674eval $inlibc
12675
eef837ea
JH
12676: see if prototype for setresgid is available
12677echo " "
12678set d_sresgproto setresgid $i_unistd unistd.h
12679eval $hasproto
12680
640374d0
JH
12681: see if prototype for setresuid is available
12682echo " "
12683set d_sresuproto setresuid $i_unistd unistd.h
12684eval $hasproto
12685
b4eb6b3d
JH
12686: see if sys/stat.h is available
12687set sys/stat.h i_sysstat
12688eval $inhdr
12689
12690
12691: see if stat knows about block sizes
12692echo " "
12693echo "Checking to see if your struct stat has st_blocks field..." >&4
12694set d_statblks stat st_blocks $i_sysstat sys/stat.h
12695eval $hasfield
12696
12697
12698: see if this is a sys/vfs.h system
12699set sys/vfs.h i_sysvfs
12700eval $inhdr
12701
12702
12703: see if this is a sys/statfs.h system
12704set sys/statfs.h i_sysstatfs
12705eval $inhdr
12706
12707
12708echo " "
12709echo "Checking to see if your system supports struct statfs..." >&4
12710set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
12711eval $hasstruct
12712case "$d_statfs_s" in
12713"$define") echo "Yes, it does." ;;
12714*) echo "No, it doesn't." ;;
12715esac
12716
12717
12718
12719: see if struct statfs knows about f_flags
12720case "$d_statfs_s" in
12721define)
12722 echo " "
12723 echo "Checking to see if your struct statfs has f_flags field..." >&4
12724 set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
12725 eval $hasfield
12726 ;;
12727*) val="$undef"
12728 set d_statfs_f_flags
12729 eval $setvar
12730 ;;
12731esac
12732case "$d_statfs_f_flags" in
12733"$define") echo "Yes, it does." ;;
12734*) echo "No, it doesn't." ;;
12735esac
12736
12737: see if _ptr and _cnt from stdio act std
12738echo " "
80f36755
NC
12739
12740if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12741 echo "(Looks like you have stdio.h from BSD.)"
12742 case "$stdio_ptr" in
12743 '') stdio_ptr='((fp)->_p)'
12744 ptr_lval=$define
12745 ;;
12746 *) ptr_lval=$d_stdio_ptr_lval;;
12747 esac
12748 case "$stdio_cnt" in
12749 '') stdio_cnt='((fp)->_r)'
12750 cnt_lval=$define
12751 ;;
12752 *) cnt_lval=$d_stdio_cnt_lval;;
12753 esac
12754 case "$stdio_base" in
12755 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12756 esac
12757 case "$stdio_bufsiz" in
12758 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12759 esac
12760elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
b4eb6b3d
JH
12761 echo "(Looks like you have stdio.h from Linux.)"
12762 case "$stdio_ptr" in
12763 '') stdio_ptr='((fp)->_IO_read_ptr)'
12764 ptr_lval=$define
12765 ;;
12766 *) ptr_lval=$d_stdio_ptr_lval;;
12767 esac
12768 case "$stdio_cnt" in
12769 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12770 cnt_lval=$undef
12771 ;;
12772 *) cnt_lval=$d_stdio_cnt_lval;;
12773 esac
12774 case "$stdio_base" in
12775 '') stdio_base='((fp)->_IO_read_base)';;
12776 esac
12777 case "$stdio_bufsiz" in
12778 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12779 esac
12780else
12781 case "$stdio_ptr" in
12782 '') stdio_ptr='((fp)->_ptr)'
12783 ptr_lval=$define
12784 ;;
12785 *) ptr_lval=$d_stdio_ptr_lval;;
12786 esac
12787 case "$stdio_cnt" in
12788 '') stdio_cnt='((fp)->_cnt)'
12789 cnt_lval=$define
12790 ;;
12791 *) cnt_lval=$d_stdio_cnt_lval;;
12792 esac
12793 case "$stdio_base" in
12794 '') stdio_base='((fp)->_base)';;
12795 esac
12796 case "$stdio_bufsiz" in
12797 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12798 esac
12799fi
80f36755 12800
b4eb6b3d
JH
12801: test whether _ptr and _cnt really work
12802echo "Checking how std your stdio is..." >&4
12803$cat >try.c <<EOP
12804#include <stdio.h>
12805#define FILE_ptr(fp) $stdio_ptr
12806#define FILE_cnt(fp) $stdio_cnt
12807int main() {
12808 FILE *fp = fopen("try.c", "r");
12809 char c = getc(fp);
12810 if (
12811 18 <= FILE_cnt(fp) &&
12812 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12813 )
12814 exit(0);
12815 exit(1);
12816}
12817EOP
12818val="$undef"
12819set try
5440bc8e
JH
12820if eval $compile && $to try.c; then
12821 if $run ./try; then
b4eb6b3d
JH
12822 echo "Your stdio acts pretty std."
12823 val="$define"
12824 else
12825 echo "Your stdio isn't very std."
12826 fi
12827else
12828 echo "Your stdio doesn't appear very std."
12829fi
12830$rm -f try.c try
12831set d_stdstdio
12832eval $setvar
12833
12834: Can _ptr be used as an lvalue?
12835case "$d_stdstdio$ptr_lval" in
12836$define$define) val=$define ;;
12837*) val=$undef ;;
12838esac
12839set d_stdio_ptr_lval
12840eval $setvar
12841
12842: Can _cnt be used as an lvalue?
12843case "$d_stdstdio$cnt_lval" in
12844$define$define) val=$define ;;
12845*) val=$undef ;;
12846esac
12847set d_stdio_cnt_lval
12848eval $setvar
12849
a7ffa9b9
NC
12850
12851: test whether setting _ptr sets _cnt as a side effect
12852d_stdio_ptr_lval_sets_cnt="$undef"
12853d_stdio_ptr_lval_nochange_cnt="$undef"
12854case "$d_stdio_ptr_lval$d_stdstdio" in
12855$define$define)
12856 echo "Checking to see what happens if we set the stdio ptr..." >&4
12857$cat >try.c <<EOP
12858#include <stdio.h>
12859/* Can we scream? */
12860/* Eat dust sed :-) */
c1d9e6fa 12861/* In the buffer space, no one can hear you scream. */
0bbfc344
JH
12862#define FILE_ptr(fp) $stdio_ptr
12863#define FILE_cnt(fp) $stdio_cnt
c1d9e6fa 12864#include <sys/types.h>
a7ffa9b9
NC
12865int main() {
12866 FILE *fp = fopen("try.c", "r");
c1d9e6fa 12867 int c;
a7ffa9b9
NC
12868 char *ptr;
12869 size_t cnt;
c1d9e6fa
JH
12870 if (!fp) {
12871 puts("Fail even to read");
12872 exit(1);
12873 }
12874 c = getc(fp); /* Read away the first # */
12875 if (c == EOF) {
12876 puts("Fail even to read");
12877 exit(1);
12878 }
a7ffa9b9
NC
12879 if (!(
12880 18 <= FILE_cnt(fp) &&
12881 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12882 )) {
12883 puts("Fail even to read");
12884 exit (1);
12885 }
c1d9e6fa
JH
12886 ptr = (char*) FILE_ptr(fp);
12887 cnt = (size_t)FILE_cnt(fp);
a7ffa9b9 12888
c1d9e6fa 12889 FILE_ptr(fp) += 42;
a7ffa9b9 12890
c1d9e6fa 12891 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
a7ffa9b9
NC
12892 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12893 exit (1);
12894 }
12895 if (FILE_cnt(fp) <= 20) {
12896 printf ("Fail (<20 chars to test)");
12897 exit (1);
12898 }
12899 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12900 puts("Fail compare");
12901 exit (1);
12902 }
12903 if (cnt == FILE_cnt(fp)) {
12904 puts("Pass_unchanged");
12905 exit (0);
12906 }
12907 if (FILE_cnt(fp) == (cnt - 42)) {
12908 puts("Pass_changed");
12909 exit (0);
12910 }
12911 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12912 return 1;
12913
12914}
12915EOP
12916 set try
5440bc8e
JH
12917 if eval $compile && $to try.c; then
12918 case `$run ./try` in
a7ffa9b9 12919 Pass_changed)
2e32dcfe 12920 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
a7ffa9b9
NC
12921 d_stdio_ptr_lval_sets_cnt="$define" ;;
12922 Pass_unchanged)
12923 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12924 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12925 Fail*)
12926 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12927 *)
12928 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12929 esac
12930 else
12931 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12932 fi
12933 $rm -f try.c try
12934 ;;
12935esac
12936
b4eb6b3d
JH
12937: see if _base is also standard
12938val="$undef"
12939case "$d_stdstdio" in
12940$define)
12941 $cat >try.c <<EOP
12942#include <stdio.h>
12943#define FILE_base(fp) $stdio_base
12944#define FILE_bufsiz(fp) $stdio_bufsiz
12945int main() {
12946 FILE *fp = fopen("try.c", "r");
12947 char c = getc(fp);
12948 if (
12949 19 <= FILE_bufsiz(fp) &&
12950 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12951 )
12952 exit(0);
12953 exit(1);
12954}
12955EOP
12956 set try
5440bc8e
JH
12957 if eval $compile && $to try.c; then
12958 if $run ./try; then
b4eb6b3d
JH
12959 echo "And its _base field acts std."
12960 val="$define"
12961 else
12962 echo "But its _base field isn't std."
12963 fi
12964 else
12965 echo "However, it seems to be lacking the _base field."
12966 fi
12967 $rm -f try.c try
12968 ;;
12969esac
12970set d_stdiobase
12971eval $setvar
12972
12973$cat >&4 <<EOM
12974Checking how to access stdio streams by file descriptor number...
12975EOM
12976case "$stdio_stream_array" in
12977'') $cat >try.c <<EOCP
12978#include <stdio.h>
12979int main() {
12980 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12981 printf("yes\n");
12982}
12983EOCP
12984 for s in _iob __iob __sF
12985 do
12986 set try -DSTDIO_STREAM_ARRAY=$s
12987 if eval $compile; then
5440bc8e 12988 case "`$run ./try`" in
b4eb6b3d
JH
12989 yes) stdio_stream_array=$s; break ;;
12990 esac
12991 fi
12992 done
12993 $rm -f try.* try$exe_ext
12994esac
12995case "$stdio_stream_array" in
12996'') $cat >&4 <<EOM
12997I can't figure out how to access stdio streams by file descriptor number.
12998EOM
12999 d_stdio_stream_array="$undef"
13000 ;;
13001*) $cat >&4 <<EOM
13002You can access stdio streams by file descriptor number by the $stdio_stream_array array.
13003EOM
13004 d_stdio_stream_array="$define"
13005 ;;
13006esac
13007
13008: see if strcoll exists
13009set strcoll d_strcoll
13010eval $inlibc
13011
13012: check for structure copying
13013echo " "
13014echo "Checking to see if your C compiler can copy structs..." >&4
13015$cat >try.c <<'EOCP'
13016int main()
13017{
13018 struct blurfl {
13019 int dyick;
13020 } foo, bar;
13021
13022 foo = bar;
13023}
13024EOCP
13025if $cc -c try.c >/dev/null 2>&1 ; then
13026 val="$define"
13027 echo "Yup, it can."
13028else
13029 val="$undef"
13030 echo "Nope, it can't."
13031fi
13032set d_strctcpy
13033eval $setvar
13034$rm -f try.*
13035
13036: see if strerror and/or sys_errlist[] exist
13037echo " "
13038if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
13039 if set strerror val -f d_strerror; eval $csym; $val; then
13040 echo 'strerror() found.' >&4
13041 d_strerror="$define"
13042 d_strerrm='strerror(e)'
13043 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
13044 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
13045 d_syserrlst="$define"
13046 else
13047 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
13048 d_syserrlst="$undef"
13049 fi
13050 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
13051 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
13052 echo 'strerror() found in string header.' >&4
13053 d_strerror="$define"
13054 d_strerrm='strerror(e)'
13055 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
13056 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
13057 d_syserrlst="$define"
13058 else
13059 echo "(You don't appear to have any sys_errlist[], how can this be?)"
13060 d_syserrlst="$undef"
13061 fi
13062 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
13063 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
13064 d_strerror="$undef"
13065 d_syserrlst="$define"
13066 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
13067 else
13068 echo 'strerror() and sys_errlist[] NOT found.' >&4
13069 d_strerror="$undef"
13070 d_syserrlst="$undef"
13071 d_strerrm='"unknown"'
13072 fi
13073fi
13074
b3c85772
JH
13075: see if strftime exists
13076set strftime d_strftime
13077eval $inlibc
13078
b4eb6b3d
JH
13079: see if strtod exists
13080set strtod d_strtod
13081eval $inlibc
13082
13083: see if strtol exists
13084set strtol d_strtol
13085eval $inlibc
13086
13087: see if strtold exists
13088set strtold d_strtold
13089eval $inlibc
13090
13091: see if strtoll exists
13092set strtoll d_strtoll
13093eval $inlibc
13094
13095case "$d_longlong-$d_strtoll" in
13096"$define-$define")
13097 $cat <<EOM
13098Checking whether your strtoll() works okay...
13099EOM
13100 $cat >try.c <<'EOCP'
13101#include <errno.h>
13102#ifdef __hpux
13103#define strtoll __strtoll
13104#endif
e75931a7
YST
13105#ifdef __EMX__
13106#define strtoll _strtoll
13107#endif
b4eb6b3d
JH
13108#include <stdio.h>
13109extern long long int strtoll(char *s, char **, int);
13110static int bad = 0;
13111int check(char *s, long long ell, int een) {
13112 long long gll;
13113 errno = 0;
13114 gll = strtoll(s, 0, 10);
13115 if (!((gll == ell) && (errno == een)))
13116 bad++;
13117}
13118int main() {
13119 check(" 1", 1LL, 0);
13120 check(" 0", 0LL, 0);
13121 check("-1", -1LL, 0);
13122 check("-9223372036854775808", -9223372036854775808LL, 0);
13123 check("-9223372036854775808", -9223372036854775808LL, 0);
13124 check(" 9223372036854775807", 9223372036854775807LL, 0);
13125 check("-9223372036854775808", -9223372036854775808LL, 0);
13126 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
13127 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
13128 if (!bad)
13129 printf("ok\n");
13130}
13131EOCP
13132 set try
13133 if eval $compile; then
5440bc8e 13134 yyy=`$run ./try`
e75931a7 13135 case "$yyy" in
b4eb6b3d
JH
13136 ok) echo "Your strtoll() seems to be working okay." ;;
13137 *) cat <<EOM >&4
13138Your strtoll() doesn't seem to be working okay.
13139EOM
13140 d_strtoll="$undef"
13141 ;;
69eadf66 13142 esac
e75931a7
YST
13143 else
13144 echo "(I can't seem to compile the test program--assuming it doesn't)"
13145 d_strtoll="$undef"
b4eb6b3d
JH
13146 fi
13147 ;;
13148esac
13149
28e5dec8
JH
13150: see if strtoq exists
13151set strtoq d_strtoq
13152eval $inlibc
13153
b4eb6b3d
JH
13154: see if strtoul exists
13155set strtoul d_strtoul
13156eval $inlibc
13157
d0e6d399
NC
13158case "$d_strtoul" in
13159"$define")
13160 $cat <<EOM
13161Checking whether your strtoul() works okay...
13162EOM
13163 $cat >try.c <<'EOCP'
13164#include <errno.h>
13165#include <stdio.h>
13166extern unsigned long int strtoul(char *s, char **, int);
13167static int bad = 0;
13168void check(char *s, unsigned long eul, int een) {
13169 unsigned long gul;
13170 errno = 0;
13171 gul = strtoul(s, 0, 10);
13172 if (!((gul == eul) && (errno == een)))
13173 bad++;
13174}
13175int main() {
13176 check(" 1", 1L, 0);
13177 check(" 0", 0L, 0);
13178EOCP
13179 case "$longsize" in
13180 8)
13181 $cat >>try.c <<'EOCP'
09c0d2c4
JH
13182 check("18446744073709551615", 18446744073709551615UL, 0);
13183 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 13184#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 13185 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
13186 check("-18446744073709551614", 2, 0);
13187 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
13188 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
13189 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 13190#endif
d0e6d399
NC
13191EOCP
13192 ;;
13193 4)
13194 $cat >>try.c <<'EOCP'
13195 check("4294967295", 4294967295UL, 0);
13196 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 13197#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
13198 check("-1", 4294967295UL, 0);
13199 check("-4294967294", 2, 0);
13200 check("-4294967295", 1, 0);
13201 check("-4294967296", 4294967295UL, ERANGE);
13202 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 13203#endif
d0e6d399
NC
13204EOCP
13205 ;;
13206 *)
13207: Should we write these tests to be more portable by sprintf-ing
13208: ~0 and then manipulating that char string as input for strtol?
13209 ;;
13210 esac
13211 $cat >>try.c <<'EOCP'
13212 if (!bad)
13213 printf("ok\n");
13214 return 0;
13215}
13216EOCP
13217 set try
13218 if eval $compile; then
5440bc8e 13219 case "`$run ./try`" in
d0e6d399
NC
13220 ok) echo "Your strtoul() seems to be working okay." ;;
13221 *) cat <<EOM >&4
13222Your strtoul() doesn't seem to be working okay.
13223EOM
13224 d_strtoul="$undef"
13225 ;;
13226 esac
13227 fi
13228 ;;
13229esac
13230
b4eb6b3d
JH
13231: see if strtoull exists
13232set strtoull d_strtoull
13233eval $inlibc
13234
13235case "$d_longlong-$d_strtoull" in
13236"$define-$define")
13237 $cat <<EOM
13238Checking whether your strtoull() works okay...
13239EOM
13240 $cat >try.c <<'EOCP'
13241#include <errno.h>
13242#ifdef __hpux
13243#define strtoull __strtoull
13244#endif
13245#include <stdio.h>
13246extern unsigned long long int strtoull(char *s, char **, int);
13247static int bad = 0;
13248int check(char *s, long long eull, int een) {
13249 long long gull;
13250 errno = 0;
13251 gull = strtoull(s, 0, 10);
13252 if (!((gull == eull) && (errno == een)))
13253 bad++;
13254}
13255int main() {
d0e6d399
NC
13256 check(" 1", 1LL, 0);
13257 check(" 0", 0LL, 0);
13258 check("18446744073709551615", 18446744073709551615ULL, 0);
13259 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 13260#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
13261 check("-1", 18446744073709551615ULL, 0);
13262 check("-18446744073709551614", 2LL, 0);
13263 check("-18446744073709551615", 1LL, 0);
13264 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13265 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 13266#endif
b4eb6b3d
JH
13267 if (!bad)
13268 printf("ok\n");
13269}
13270EOCP
13271 set try
13272 if eval $compile; then
5440bc8e 13273 case "`$run ./try`" in
b4eb6b3d
JH
13274 ok) echo "Your strtoull() seems to be working okay." ;;
13275 *) cat <<EOM >&4
13276Your strtoull() doesn't seem to be working okay.
13277EOM
13278 d_strtoull="$undef"
13279 ;;
13280 esac
13281 fi
13282 ;;
13283esac
13284
13285: see if strtouq exists
13286set strtouq d_strtouq
13287eval $inlibc
13288
d0e6d399
NC
13289case "$d_strtouq" in
13290"$define")
13291 $cat <<EOM
13292Checking whether your strtouq() works okay...
13293EOM
13294 $cat >try.c <<'EOCP'
13295#include <errno.h>
13296#include <stdio.h>
13297extern unsigned long long int strtouq(char *s, char **, int);
13298static int bad = 0;
13299void check(char *s, unsigned long long eull, int een) {
13300 unsigned long long gull;
13301 errno = 0;
13302 gull = strtouq(s, 0, 10);
13303 if (!((gull == eull) && (errno == een)))
13304 bad++;
13305}
13306int main() {
13307 check(" 1", 1LL, 0);
13308 check(" 0", 0LL, 0);
13309 check("18446744073709551615", 18446744073709551615ULL, 0);
13310 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 13311#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
13312 check("-1", 18446744073709551615ULL, 0);
13313 check("-18446744073709551614", 2LL, 0);
13314 check("-18446744073709551615", 1LL, 0);
13315 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13316 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 13317#endif
d0e6d399
NC
13318 if (!bad)
13319 printf("ok\n");
13320 return 0;
13321}
13322EOCP
13323 set try
13324 if eval $compile; then
5440bc8e 13325 case "`$run ./try`" in
d0e6d399
NC
13326 ok) echo "Your strtouq() seems to be working okay." ;;
13327 *) cat <<EOM >&4
13328Your strtouq() doesn't seem to be working okay.
13329EOM
13330 d_strtouq="$undef"
13331 ;;
13332 esac
13333 fi
13334 ;;
13335esac
13336
b4eb6b3d
JH
13337: see if strxfrm exists
13338set strxfrm d_strxfrm
13339eval $inlibc
13340
13341: see if symlink exists
13342set symlink d_symlink
13343eval $inlibc
13344
13345: see if syscall exists
13346set syscall d_syscall
13347eval $inlibc
13348
2ef53570
JH
13349: see if prototype for syscall is available
13350echo " "
13351set d_syscallproto syscall $i_unistd unistd.h
13352eval $hasproto
13353
b4eb6b3d
JH
13354: see if sysconf exists
13355set sysconf d_sysconf
13356eval $inlibc
13357
13358: see if system exists
13359set system d_system
13360eval $inlibc
13361
13362: see if tcgetpgrp exists
13363set tcgetpgrp d_tcgetpgrp
13364eval $inlibc
13365
13366: see if tcsetpgrp exists
13367set tcsetpgrp d_tcsetpgrp
13368eval $inlibc
13369
13370: see if prototype for telldir is available
13371echo " "
13372set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13373eval $hasproto
13374
13375: see if this is a sys/times.h system
13376set sys/times.h i_systimes
13377eval $inhdr
13378
13379: see if times exists
13380echo " "
13381if set times val -f d_times; eval $csym; $val; then
13382 echo 'times() found.' >&4
13383 d_times="$define"
13384 inc=''
13385 case "$i_systimes" in
13386 "$define") inc='sys/times.h';;
13387 esac
13388 rp="What is the type returned by times() on this system?"
13389 set clock_t clocktype long stdio.h sys/types.h $inc
13390 eval $typedef_ask
13391else
13392 echo 'times() NOT found, hope that will do.' >&4
13393 d_times="$undef"
13394 clocktype='int'
13395fi
13396
13397: see if truncate exists
13398set truncate d_truncate
13399eval $inlibc
13400
13401: see if tzname[] exists
13402echo " "
13403if set tzname val -a d_tzname; eval $csym; $val; then
13404 val="$define"
13405 echo 'tzname[] found.' >&4
13406else
13407 val="$undef"
13408 echo 'tzname[] NOT found.' >&4
13409fi
13410set d_tzname
13411eval $setvar
13412
4e0554ec
JH
13413case "$osname" in
13414next|rhapsody|darwin) multiarch="$define" ;;
13415esac
13416case "$multiarch" in
13417''|[nN]*) multiarch="$undef" ;;
13418esac
13419
13420: check for ordering of bytes in a long
13421echo " "
5440bc8e 13422case "$usecrosscompile$multiarch" in
4e0554ec
JH
13423*$define*)
13424 $cat <<EOM
13425You seem to be either cross-compiling or doing a multiarchitecture build,
13426skipping the byteorder check.
13427
13428EOM
5440bc8e 13429 byteorder='ffff'
4e0554ec
JH
13430 ;;
13431*)
13432 case "$byteorder" in
13433 '')
13434 $cat <<'EOM'
13435In the following, larger digits indicate more significance. A big-endian
13436machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13437little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13438machines may have weird orders like 3412. A Cray will report 87654321,
13439an Alpha will report 12345678. If the test program works the default is
13440probably right.
13441I'm now running the test program...
13442EOM
13443 $cat >try.c <<'EOCP'
13444#include <stdio.h>
13445int main()
13446{
13447 int i;
13448 union {
13449 unsigned long l;
13450 char c[sizeof(long)];
13451 } u;
13452
13453 if (sizeof(long) > 4)
13454 u.l = (0x08070605L << 32) | 0x04030201L;
13455 else
13456 u.l = 0x04030201L;
13457 for (i = 0; i < sizeof(long); i++)
13458 printf("%c", u.c[i]+'0');
13459 printf("\n");
13460 exit(0);
13461}
13462EOCP
13463 xxx_prompt=y
13464 set try
13465 if eval $compile && ./try > /dev/null; then
5440bc8e 13466 dflt=`$run ./try`
4e0554ec
JH
13467 case "$dflt" in
13468 [1-4][1-4][1-4][1-4]|12345678|87654321)
13469 echo "(The test program ran ok.)"
13470 echo "byteorder=$dflt"
13471 xxx_prompt=n
13472 ;;
13473 ????|????????) echo "(The test program ran ok.)" ;;
13474 *) echo "(The test program didn't run right for some reason.)" ;;
13475 esac
13476 else
13477 dflt='4321'
13478 cat <<'EOM'
13479(I can't seem to compile the test program. Guessing big-endian...)
13480EOM
13481 fi
13482 case "$xxx_prompt" in
13483 y)
13484 rp="What is the order of bytes in a long?"
13485 . ./myread
13486 byteorder="$ans"
13487 ;;
13488 *) byteorder=$dflt
13489 ;;
13490 esac
13491 ;;
13492 esac
13493 $rm -f try.c try
13494 ;;
13495esac
13496
13497
13498$cat <<EOM
13499
13500Checking to see whether you can access character data unalignedly...
13501EOM
dc7b0a4f
JH
13502case "$d_u32align" in
13503'') $cat >try.c <<EOCP
4e0554ec
JH
13504#include <stdio.h>
13505#define U32 $u32type
d308175a
JH
13506#define BYTEORDER 0x$byteorder
13507#define U8 $u8type
9958dc3c
JH
13508#include <signal.h>
13509#ifdef SIGBUS
13510$signal_t bletch(s) int s; { exit(4); }
13511#endif
4e0554ec
JH
13512int main() {
13513#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
879fa96f 13514 U8 *buf = (U8*)"\0\0\0\1\0\0\0\0";
4e0554ec
JH
13515 U32 *up;
13516 int i;
13517
13518 if (sizeof(U32) != 4) {
13519 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13520 exit(1);
13521 }
13522
13523 fflush(stdout);
13524
9958dc3c
JH
13525#ifdef SIGBUS
13526 signal(SIGBUS, bletch);
13527#endif
13528
4e0554ec
JH
13529 for (i = 0; i < 4; i++) {
13530 up = (U32*)(buf + i);
13531 if (! ((*up == 1 << (8*i)) || /* big-endian */
13532 (*up == 1 << (8*(3-i))) /* little-endian */
13533 )
13534 )
13535 {
13536 printf("read failed (%x)\n", *up);
13537 exit(2);
13538 }
13539 }
13540
13541 /* write test */
13542 for (i = 0; i < 4; i++) {
13543 up = (U32*)(buf + i);
13544 *up = 0xBeef;
13545 if (*up != 0xBeef) {
13546 printf("write failed (%x)\n", *up);
13547 exit(3);
13548 }
13549 }
13550
13551 exit(0);
13552#else
13553 printf("1\n");
13554 exit(1);
13555#endif
13556 return 0;
13557}
13558EOCP
13559set try
13560if eval $compile_ok; then
d308175a 13561 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
5440bc8e 13562 $run ./try 2>&1 >/dev/null
4e0554ec
JH
13563 case "$?" in
13564 0) cat >&4 <<EOM
13565You can access character data pretty unalignedly.
13566EOM
13567 d_u32align="$undef"
13568 ;;
13569 *) cat >&4 <<EOM
13570It seems that you must access character data in an aligned manner.
13571EOM
13572 d_u32align="$define"
13573 ;;
13574 esac
4e0554ec
JH
13575else
13576 rp='Can you access character data at unaligned addresses?'
13577 dflt='n'
13578 . ./myread
13579 case "$ans" in
13580 [yY]*) d_u32align="$undef" ;;
13581 *) d_u32align="$define" ;;
13582 esac
13583fi
e36b5403 13584$rm -f core core.try.* try.core
dc7b0a4f
JH
13585;;
13586esac
4e0554ec
JH
13587
13588: see if ualarm exists
13589set ualarm d_ualarm
13590eval $inlibc
13591
b4eb6b3d
JH
13592: see if umask exists
13593set umask d_umask
13594eval $inlibc
13595
758a5d79
JH
13596: see if unordered exists
13597set unordered d_unordered
13598eval $inlibc
13599
4e0554ec
JH
13600: see if usleep exists
13601set usleep d_usleep
13602eval $inlibc
13603
2ef53570
JH
13604: see if prototype for usleep is available
13605echo " "
13606set d_usleepproto usleep $i_unistd unistd.h
13607eval $hasproto
13608
b4eb6b3d
JH
13609: see if ustat exists
13610set ustat d_ustat
13611eval $inlibc
13612
13613: backward compatibility for d_hvfork
13614if test X$d_hvfork != X; then
13615 d_vfork="$d_hvfork"
13616 d_hvfork=''
13617fi
13618: see if there is a vfork
13619val=''
13620set vfork val
13621eval $inlibc
13622
13623: Ok, but do we want to use it. vfork is reportedly unreliable in
13624: perl on Solaris 2.x, and probably elsewhere.
13625case "$val" in
13626$define)
13627 echo " "
13628 case "$usevfork" in
13629 false) dflt='n';;
13630 *) dflt='y';;
13631 esac
13632 cat <<'EOM'
13633
13634Perl can only use a vfork() that doesn't suffer from strict
13635restrictions on calling functions or modifying global data in
13636the child. For example, glibc-2.1 contains such a vfork()
13637that is unsuitable. If your system provides a proper fork()
13638call, chances are that you do NOT want perl to use vfork().
13639
13640EOM
13641 rp="Do you still want to use vfork()?"
13642 . ./myread
13643 case "$ans" in
13644 y|Y) ;;
13645 *)
13646 echo "Ok, we won't use vfork()."
13647 val="$undef"
13648 ;;
13649 esac
13650 ;;
13651esac
13652set d_vfork
13653eval $setvar
13654case "$d_vfork" in
13655$define) usevfork='true';;
13656*) usevfork='false';;
13657esac
13658
b4eb6b3d
JH
13659: see if closedir exists
13660set closedir d_closedir
13661eval $inlibc
13662
13663case "$d_closedir" in
13664"$define")
13665 echo " "
13666 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 13667 cat > try.c <<EOM
b4eb6b3d
JH
13668#$i_dirent I_DIRENT /**/
13669#$i_sysdir I_SYS_DIR /**/
13670#$i_sysndir I_SYS_NDIR /**/
13671#$i_systypes I_SYS_TYPES /**/
13672
13673#if defined(I_SYS_TYPES)
13674#include <sys/types.h>
13675#endif
13676#if defined(I_DIRENT)
13677#include <dirent.h>
13678#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13679#include <sys/dir.h>
13680#endif
13681#else
13682#ifdef I_SYS_NDIR
13683#include <sys/ndir.h>
13684#else
13685#ifdef I_SYS_DIR
13686#ifdef hp9000s500
13687#include <ndir.h> /* may be wrong in the future */
13688#else
13689#include <sys/dir.h>
13690#endif
13691#endif
13692#endif
13693#endif
13694int main() { return closedir(opendir(".")); }
13695EOM
5440bc8e 13696 set try
b4eb6b3d 13697 if eval $compile_ok; then
5440bc8e 13698 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
13699 echo "Yes, it does."
13700 val="$undef"
13701 else
13702 echo "No, it doesn't."
13703 val="$define"
13704 fi
13705 else
13706 echo "(I can't seem to compile the test program--assuming it doesn't)"
13707 val="$define"
13708 fi
13709 ;;
13710*)
13711 val="$undef";
13712 ;;
13713esac
13714set d_void_closedir
13715eval $setvar
5440bc8e 13716$rm -f try try.*
b4eb6b3d
JH
13717: see if there is a wait4
13718set wait4 d_wait4
13719eval $inlibc
13720
13721: see if waitpid exists
13722set waitpid d_waitpid
13723eval $inlibc
13724
13725: see if wcstombs exists
13726set wcstombs d_wcstombs
13727eval $inlibc
13728
13729: see if wctomb exists
13730set wctomb d_wctomb
13731eval $inlibc
13732
4e0554ec
JH
13733: see if writev exists
13734set writev d_writev
13735eval $inlibc
13736
b4eb6b3d
JH
13737: preserve RCS keywords in files with variable substitution, grrr
13738Date='$Date'
13739Id='$Id'
13740Log='$Log'
13741RCSfile='$RCSfile'
13742Revision='$Revision'
13743
b4eb6b3d
JH
13744: check for alignment requirements
13745echo " "
5440bc8e 13746case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
13747*$define*)
13748 $cat <<EOM
13749You seem to be either cross-compiling or doing a multiarchitecture build,
13750skipping the memory alignment check.
13751
13752EOM
13753 case "$alignbytes" in
13754 '') alignbytes=8 ;;
13755 esac
13756 ;;
13757*)
13758 case "$alignbytes" in
13759 '') echo "Checking alignment constraints..." >&4
13760 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13761 $cat >try.c <<'EOCP'
13762typedef long double NV;
13763EOCP
13764 else
13765 $cat >try.c <<'EOCP'
13766typedef double NV;
13767EOCP
13768 fi
13769 $cat >>try.c <<'EOCP'
13770#include <stdio.h>
13771struct foobar {
13772 char foo;
13773 NV bar;
13774} try_algn;
13775int main()
13776{
13777 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13778 return(0);
13779}
13780EOCP
13781 set try
13782 if eval $compile_ok; then
5440bc8e 13783 dflt=`$run ./try`
b4eb6b3d
JH
13784 else
13785 dflt='8'
13786 echo "(I can't seem to compile the test program...)"
13787 fi
13788 ;;
13789 *) dflt="$alignbytes"
13790 ;;
13791 esac
13792 rp="Doubles must be aligned on a how-many-byte boundary?"
13793 . ./myread
13794 alignbytes="$ans"
13795 $rm -f try.c try
13796 ;;
13797esac
13798
13799
13800: set the base revision
13801baserev=5.0
13802
b4eb6b3d
JH
13803: how do we catenate cpp tokens here?
13804echo " "
13805echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13806$cat >cpp_stuff.c <<'EOCP'
13807#define RCAT(a,b)a/**/b
13808#define ACAT(a,b)a ## b
13809RCAT(Rei,ser)
13810ACAT(Cir,cus)
13811EOCP
13812$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13813if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13814 echo "Oh! Smells like ANSI's been here." >&4
13815 echo "We can catify or stringify, separately or together!"
13816 cpp_stuff=42
13817elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13818 echo "Ah, yes! The good old days!" >&4
13819 echo "However, in the good old days we don't know how to stringify and"
13820 echo "catify at the same time."
13821 cpp_stuff=1
13822else
13823 $cat >&4 <<EOM
13824Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13825to have to edit the values of CAT[2-5] in config.h...
13826EOM
13827 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13828fi
13829$rm -f cpp_stuff.*
13830
13831: see if this is a db.h system
13832set db.h i_db
13833eval $inhdr
13834
13835case "$i_db" in
13836$define)
13837 : Check db version.
13838 echo " "
13839 echo "Checking Berkeley DB version ..." >&4
13840 $cat >try.c <<EOCP
13841#$d_const HASCONST
13842#ifndef HASCONST
13843#define const
13844#endif
13845#include <sys/types.h>
13846#include <stdio.h>
13847#include <db.h>
640374d0 13848int main(int argc, char *argv[])
b4eb6b3d
JH
13849{
13850#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13851 int Major, Minor, Patch ;
13852 unsigned long Version ;
13853 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
13854 if (argc == 2) {
13855 printf("%d %d %d %d %d %d\n",
13856 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13857 Major, Minor, Patch);
13858 exit(0);
13859 }
13860 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
13861
13862 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13863 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13864 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13865 Major, Minor, Patch) ;
13866
13867 /* check that db.h & libdb are compatible */
13868 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 13869 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
13870 exit(3);
13871 }
13872
640374d0 13873 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
13874
13875 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13876 + DB_VERSION_PATCH ;
13877
13878 /* needs to be >= 2.3.4 */
13879 if (Version < 2003004) {
13880 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 13881 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
13882 exit(2);
13883 }
13884
13885 exit(0);
13886#else
13887#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
13888 if (argc == 2) {
13889 printf("1 0 0\n");
13890 exit(0);
13891 }
13892 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
13893 exit(0); /* DB version < 2: the coast is clear. */
13894#else
13895 exit(1); /* <db.h> not Berkeley DB? */
13896#endif
13897#endif
13898}
13899EOCP
13900 set try
5440bc8e 13901 if eval $compile_ok && $run ./try; then
b4eb6b3d 13902 echo 'Looks OK.' >&4
5440bc8e 13903 set `$run ./try 1`
640374d0
JH
13904 db_version_major=$1
13905 db_version_minor=$2
13906 db_version_patch=$3
b4eb6b3d
JH
13907 else
13908 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13909 i_db=$undef
13910 case " $libs " in
13911 *"-ldb "*)
13912 : Remove db from list of libraries to use
13913 echo "Removing unusable -ldb from library list" >&4
13914 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13915 shift
13916 libs="$*"
13917 echo "libs = $libs" >&4
13918 ;;
13919 esac
13920 fi
13921 $rm -f try.*
13922 ;;
13923esac
13924
13925case "$i_db" in
13926define)
13927 : Check the return type needed for hash
13928 echo " "
13929 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13930 $cat >try.c <<EOCP
13931#$d_const HASCONST
13932#ifndef HASCONST
13933#define const
13934#endif
13935#include <sys/types.h>
13936#include <db.h>
13937
13938#ifndef DB_VERSION_MAJOR
13939u_int32_t hash_cb (ptr, size)
13940const void *ptr;
13941size_t size;
13942{
13943}
13944HASHINFO info;
13945int main()
13946{
13947 info.hash = hash_cb;
13948}
13949#endif
13950EOCP
13951 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13952 if $contains warning try.out >>/dev/null 2>&1 ; then
13953 db_hashtype='int'
13954 else
13955 db_hashtype='u_int32_t'
13956 fi
13957 else
13958 : XXX Maybe we should just give up here.
13959 db_hashtype=u_int32_t
13960 $cat try.out >&4
13961 echo "Help: I can't seem to compile the db test program." >&4
13962 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13963 fi
13964 $rm -f try.*
13965 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13966 ;;
13967*) db_hashtype=u_int32_t
13968 ;;
13969esac
13970case "$i_db" in
13971define)
13972 : Check the return type needed for prefix
13973 echo " "
13974 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13975 cat >try.c <<EOCP
13976#$d_const HASCONST
13977#ifndef HASCONST
13978#define const
13979#endif
13980#include <sys/types.h>
13981#include <db.h>
13982
13983#ifndef DB_VERSION_MAJOR
13984size_t prefix_cb (key1, key2)
13985const DBT *key1;
13986const DBT *key2;
13987{
13988}
13989BTREEINFO info;
13990int main()
13991{
13992 info.prefix = prefix_cb;
13993}
13994#endif
13995EOCP
13996 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13997 if $contains warning try.out >>/dev/null 2>&1 ; then
13998 db_prefixtype='int'
13999 else
14000 db_prefixtype='size_t'
14001 fi
14002 else
14003 db_prefixtype='size_t'
14004 : XXX Maybe we should just give up here.
14005 $cat try.out >&4
14006 echo "Help: I can't seem to compile the db test program." >&4
14007 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
14008 fi
14009 $rm -f try.*
14010 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
14011 ;;
14012*) db_prefixtype='size_t'
14013 ;;
14014esac
14015
b4eb6b3d
JH
14016
14017: How can we generate normalized random numbers ?
14018echo " "
14019echo "Looking for a random number function..." >&4
14020case "$randfunc" in
14021'')
14022 if set drand48 val -f; eval $csym; $val; then
14023 dflt="drand48"
14024 echo "Good, found drand48()." >&4
14025 elif set random val -f; eval $csym; $val; then
14026 dflt="random"
14027 echo "OK, found random()." >&4
14028 else
14029 dflt="rand"
14030 echo "Yick, looks like I have to use rand()." >&4
14031 fi
14032 echo " "
14033 ;;
14034*)
14035 dflt="$randfunc"
14036 ;;
14037esac
14038cont=true
14039
14040case "$ccflags" in
14041*-Dmy_rand=*|*-Dmy_srand=*)
14042 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
14043 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
14044 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
14045 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
14046 ;;
14047esac
14048
14049while $test "$cont"; do
14050 rp="Use which function to generate random numbers?"
14051 . ./myread
14052 if $test "$ans" = "$dflt"; then
14053 : null
14054 else
14055 randbits=''
14056 fi
14057 randfunc="$ans"
14058 if set $ans val -f; eval $csym; $val; then
14059 cont=''
14060 else
14061 dflt=y
14062 rp="I cannot find function $ans. Use that name anyway?"
14063 . ./myread
14064 dflt=rand
14065 case "$ans" in
14066 [yY]*) cont='';;
14067 esac
14068 fi
14069 case "$cont" in
14070 '')
14071 case "$randfunc" in
14072 drand48)
14073 drand01="drand48()"
14074 seedfunc="srand48"
14075 randbits=48
14076 randseedtype=long
14077 ;;
14078 rand|random)
14079 case "$randbits" in
14080 '')
14081echo "Checking to see how many bits your $randfunc() function produces..." >&4
14082 $cat >try.c <<EOCP
14083#$i_unistd I_UNISTD
14084#$i_stdlib I_STDLIB
14085#include <stdio.h>
14086#ifdef I_UNISTD
14087# include <unistd.h>
14088#endif
14089#ifdef I_STDLIB
14090# include <stdlib.h>
14091#endif
14092int main()
14093{
14094 register int i;
14095 register unsigned long tmp;
14096 register unsigned long max = 0L;
14097
14098 for (i = 1000; i; i--) {
14099 tmp = (unsigned long) $randfunc();
14100 if (tmp > max) max = tmp;
14101 }
14102 for (i = 0; max; i++)
14103 max /= 2;
14104 printf("%d\n",i);
14105}
14106EOCP
14107 set try
14108 if eval $compile_ok; then
14109 dflt=`try`
14110 else
14111 dflt='?'
14112 echo "(I can't seem to compile the test program...)"
14113 fi
14114 ;;
14115 *)
14116 dflt="$randbits"
14117 ;;
14118 esac
14119 rp="How many bits does your $randfunc() function produce?"
14120 . ./myread
14121 randbits="$ans"
14122 $rm -f try.c try
14123 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14124 seedfunc="s$randfunc"
14125 randseedtype=unsigned
14126 ;;
14127 *)
14128 dflt="31"
14129 rp="How many bits does your $randfunc() function produce?"
14130 . ./myread
14131 randbits="$ans"
14132 seedfunc="s$randfunc"
14133 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14134 if set $seedfunc val -f; eval $csym; $val; then
14135 echo "(Using $seedfunc() to seed random generator)"
14136 else
14137 echo "(Warning: no $seedfunc() to seed random generator)"
14138 seedfunc=rand
14139 fi
14140 randseedtype=unsigned
14141 ;;
14142 esac
14143 ;;
14144 esac
14145done
14146
14147echo " "
14148echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 14149$cat >try.c <<'EOM'
b4eb6b3d
JH
14150int main()
14151{
14152 if ('M'==0xd4) return 0;
14153 return 1;
14154}
14155EOM
14156
14157val=$undef
5440bc8e 14158set try
b4eb6b3d 14159if eval $compile_ok; then
5440bc8e 14160 if $run ./try; then
b4eb6b3d
JH
14161 echo "You seem to speak EBCDIC." >&4
14162 val="$define"
14163 else
5440bc8e 14164 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
14165 fi
14166else
14167 echo "I'm unable to compile the test program." >&4
14168 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
14169fi
5440bc8e 14170$rm -f try try.*
b4eb6b3d
JH
14171set ebcdic
14172eval $setvar
14173
14174echo " "
14175$cat >&4 <<EOM
14176Checking how to flush all pending stdio output...
14177EOM
14178# I only know how to find the first 32 possibly open files on SunOS.
14179# See also hints/sunos_4_1.sh and util.c --AD
14180case "$osname" in
14181sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
14182esac
14183$cat >>try.c <<EOCP
14184#include <stdio.h>
14185#$i_unistd I_UNISTD
14186#ifdef I_UNISTD
14187# include <unistd.h>
14188#endif
14189#$d_sysconf HAS_SYSCONF
14190#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
14191#ifdef HAS_STDIO_STREAM_ARRAY
14192# define STDIO_STREAM_ARRAY $stdio_stream_array
14193#endif
14194int main() {
5440bc8e
JH
14195 FILE* p;
14196 unlink("try.out");
14197 p = fopen("try.out", "w");
b4eb6b3d
JH
14198#ifdef TRY_FPUTC
14199 fputc('x', p);
14200#else
14201# ifdef TRY_FPRINTF
14202 fprintf(p, "x");
14203# endif
14204#endif
14205#ifdef TRY_FFLUSH_NULL
14206 fflush(NULL);
14207#endif
14208#ifdef TRY_FFLUSH_ALL
14209 {
14210 long open_max = -1;
14211# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
14212 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
14213# else
14214# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
14215 open_max = sysconf(_SC_OPEN_MAX);
14216# else
14217# ifdef FOPEN_MAX
14218 open_max = FOPEN_MAX;
14219# else
14220# ifdef OPEN_MAX
14221 open_max = OPEN_MAX;
14222# else
14223# ifdef _NFILE
14224 open_max = _NFILE;
14225# endif
14226# endif
14227# endif
14228# endif
14229# endif
14230# ifdef HAS_STDIO_STREAM_ARRAY
14231 if (open_max > 0) {
14232 long i;
14233 for (i = 0; i < open_max; i++)
14234 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14235 STDIO_STREAM_ARRAY[i]._file < open_max &&
14236 STDIO_STREAM_ARRAY[i]._flag)
14237 fflush(&STDIO_STREAM_ARRAY[i]);
14238 }
14239 }
14240# endif
14241#endif
14242 _exit(42);
14243}
14244EOCP
14245: first we have to find out how _not_ to flush
5440bc8e 14246$to try.c
b4eb6b3d
JH
14247if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14248 output=''
14249 set try -DTRY_FPUTC
14250 if eval $compile; then
fbe73d74 14251 $run ./try 2>/dev/null
28f5ac64 14252 code="$?"
5440bc8e 14253 $from try.out
28f5ac64 14254 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14255 output=-DTRY_FPUTC
14256 fi
14257 fi
14258 case "$output" in
14259 '')
14260 set try -DTRY_FPRINTF
b4eb6b3d 14261 if eval $compile; then
fbe73d74 14262 $run ./try 2>/dev/null
28f5ac64 14263 code="$?"
5440bc8e 14264 $from try.out
28f5ac64 14265 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14266 output=-DTRY_FPRINTF
14267 fi
14268 fi
14269 ;;
14270 esac
14271fi
14272: check for fflush NULL behaviour
14273case "$fflushNULL" in
14274'') set try -DTRY_FFLUSH_NULL $output
14275 if eval $compile; then
5440bc8e 14276 $run ./try 2>/dev/null
b4eb6b3d 14277 code="$?"
5440bc8e 14278 $from try.out
b4eb6b3d
JH
14279 if $test -s try.out -a "X$code" = X42; then
14280 fflushNULL="`$cat try.out`"
14281 else
14282 if $test "X$code" != X42; then
14283 $cat >&4 <<EOM
14284(If this test failed, don't worry, we'll try another method shortly.)
14285EOM
14286 fi
14287 fi
14288 fi
14289 $rm -f core try.core core.try.*
14290 case "$fflushNULL" in
14291 x) $cat >&4 <<EOM
14292Your fflush(NULL) works okay for output streams.
14293Let's see if it clobbers input pipes...
14294EOM
14295# As of mid-March 2000 all versions of Solaris appear to have a stdio
14296# bug that improperly flushes the input end of pipes. So we avoid the
14297# autoflush on fork/system/exec support for now. :-(
14298$cat >tryp.c <<EOCP
14299#include <stdio.h>
14300int
14301main(int argc, char **argv)
14302{
14303 char buf[1024];
14304 int i;
14305 char *bp = buf;
14306 while (1) {
14307 while ((i = getc(stdin)) != -1
14308 && (*bp++ = i) != '\n'
14309 && bp < &buf[1024])
14310 /* DO NOTHING */ ;
14311 *bp = '\0';
14312 fprintf(stdout, "%s", buf);
14313 fflush(NULL);
14314 if (i == -1)
14315 return 0;
14316 bp = buf;
14317 }
14318}
14319EOCP
14320 fflushNULL="$define"
14321 set tryp
14322 if eval $compile; then
14323 $rm -f tryp.out
5440bc8e 14324 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
14325 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14326 $cat >&4 <<EOM
14327fflush(NULL) seems to behave okay with input streams.
14328EOM
14329 fflushNULL="$define"
14330 else
14331 $cat >&4 <<EOM
14332Ouch, fflush(NULL) clobbers input pipes! We will not use it.
14333EOM
14334 fflushNULL="$undef"
14335 fi
14336 fi
14337 $rm -f core tryp.c tryp.core core.tryp.*
14338 ;;
14339 '') $cat >&4 <<EOM
14340Your fflush(NULL) isn't working (contrary to ANSI C).
14341EOM
14342 fflushNULL="$undef"
14343 ;;
14344 *) $cat >&4 <<EOM
14345Cannot figure out whether your fflush(NULL) works or not.
14346I'm assuming it doesn't (contrary to ANSI C).
14347EOM
14348 fflushNULL="$undef"
14349 ;;
14350 esac
14351 ;;
14352$define|true|[yY]*)
14353 fflushNULL="$define"
14354 ;;
14355*)
14356 fflushNULL="$undef"
14357 ;;
14358esac
14359: check explicit looping only if NULL did not work, and if the pipe
14360: bug does not show up on an explicit flush too
14361case "$fflushNULL" in
14362"$undef")
14363 $cat >tryp.c <<EOCP
14364#include <stdio.h>
14365int
14366main(int argc, char **argv)
14367{
14368 char buf[1024];
14369 int i;
14370 char *bp = buf;
14371 while (1) {
14372 while ((i = getc(stdin)) != -1
14373 && (*bp++ = i) != '\n'
14374 && bp < &buf[1024])
14375 /* DO NOTHING */ ;
14376 *bp = '\0';
14377 fprintf(stdout, "%s", buf);
14378 fflush(stdin);
14379 if (i == -1)
14380 return 0;
14381 bp = buf;
14382 }
14383}
14384EOCP
14385 set tryp
14386 if eval $compile; then
14387 $rm -f tryp.out
5440bc8e 14388 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
14389 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14390 $cat >&4 <<EOM
14391Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14392EOM
14393 : now check for fflushall behaviour
14394 case "$fflushall" in
14395 '') set try -DTRY_FFLUSH_ALL $output
14396 if eval $compile; then
14397 $cat >&4 <<EOM
14398(Now testing the other method--but note that this also may fail.)
14399EOM
5440bc8e 14400 $run ./try 2>/dev/null
28f5ac64 14401 code=$?
fbe73d74 14402 $from try.out
28f5ac64 14403 if $test -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14404 fflushall="`$cat try.out`"
14405 fi
14406 fi
14407 $rm -f core try.core core.try.*
14408 case "$fflushall" in
14409 x) $cat >&4 <<EOM
14410Whew. Flushing explicitly all the stdio streams works.
14411EOM
14412 fflushall="$define"
14413 ;;
14414 '') $cat >&4 <<EOM
14415Sigh. Flushing explicitly all the stdio streams doesn't work.
14416EOM
14417 fflushall="$undef"
14418 ;;
14419 *) $cat >&4 <<EOM
14420Cannot figure out whether flushing stdio streams explicitly works or not.
14421I'm assuming it doesn't.
14422EOM
14423 fflushall="$undef"
14424 ;;
14425 esac
14426 ;;
14427 "$define"|true|[yY]*)
14428 fflushall="$define"
14429 ;;
14430 *)
14431 fflushall="$undef"
14432 ;;
14433 esac
14434 else
14435 $cat >&4 <<EOM
14436All is futile. Even fflush(stdin) clobbers input pipes!
14437EOM
14438 fflushall="$undef"
14439 fi
14440 else
14441 fflushall="$undef"
14442 fi
14443 $rm -f core tryp.c tryp.core core.tryp.*
14444 ;;
14445*) fflushall="$undef"
14446 ;;
14447esac
14448
14449case "$fflushNULL$fflushall" in
14450undefundef)
14451 $cat <<EOM
14452OK, I give up. I cannot figure out how to flush pending stdio output.
14453We won't be flushing handles at all before fork/exec/popen.
14454EOM
14455 ;;
14456esac
14457$rm -f try.* try$exe_ext
14458
14459: Store the full pathname to the ar program for use in the C program
14460: Respect a hint or command line value for full_ar.
14461case "$full_ar" in
14462'') full_ar=$ar ;;
14463esac
14464
14465: Store the full pathname to the sed program for use in the C program
14466full_sed=$sed
14467
14468: see what type gids are declared as in the kernel
14469echo " "
14470echo "Looking for the type for group ids returned by getgid()."
14471set gid_t gidtype xxx stdio.h sys/types.h
14472eval $typedef
14473case "$gidtype" in
14474xxx)
14475 xxx=`./findhdr sys/user.h`
14476 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14477 case $1 in
14478 unsigned) dflt="$1 $2" ;;
14479 *) dflt="$1" ;;
14480 esac
14481 ;;
14482*) dflt="$gidtype";;
14483esac
14484case "$gidtype" in
14485gid_t) echo "gid_t found." ;;
14486*) rp="What is the type for group ids returned by getgid()?"
14487 . ./myread
14488 gidtype="$ans"
14489 ;;
14490esac
14491
14492echo " "
14493case "$gidtype" in
14494*_t) zzz="$gidtype" ;;
14495*) zzz="gid" ;;
14496esac
14497echo "Checking the size of $zzz..." >&4
14498cat > try.c <<EOCP
14499#include <sys/types.h>
14500#include <stdio.h>
14501int main() {
14502 printf("%d\n", (int)sizeof($gidtype));
14503 exit(0);
14504}
14505EOCP
14506set try
14507if eval $compile_ok; then
5440bc8e 14508 yyy=`$run ./try`
b4eb6b3d
JH
14509 case "$yyy" in
14510 '') gidsize=4
14511 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14512 ;;
14513 *) gidsize=$yyy
14514 echo "Your $zzz is $gidsize bytes long."
14515 ;;
14516 esac
14517else
14518 gidsize=4
14519 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14520fi
14521
14522
14523echo " "
14524case "$gidtype" in
14525*_t) zzz="$gidtype" ;;
14526*) zzz="gid" ;;
14527esac
14528echo "Checking the sign of $zzz..." >&4
14529cat > try.c <<EOCP
14530#include <sys/types.h>
14531#include <stdio.h>
14532int main() {
14533 $gidtype foo = -1;
14534 if (foo < 0)
14535 printf("-1\n");
14536 else
14537 printf("1\n");
14538}
14539EOCP
14540set try
14541if eval $compile; then
5440bc8e 14542 yyy=`$run ./try`
b4eb6b3d
JH
14543 case "$yyy" in
14544 '') gidsign=1
14545 echo "(I can't execute the test program--guessing unsigned.)" >&4
14546 ;;
14547 *) gidsign=$yyy
14548 case "$gidsign" in
14549 1) echo "Your $zzz is unsigned." ;;
14550 -1) echo "Your $zzz is signed." ;;
14551 esac
14552 ;;
14553 esac
14554else
14555 gidsign=1
14556 echo "(I can't compile the test program--guessing unsigned.)" >&4
14557fi
14558
14559
14560echo " "
14561
14562if $test X"$quadtype" != X; then
14563
14564echo "Checking how to print 64-bit integers..." >&4
14565
14566if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14567 $cat >try.c <<'EOCP'
14568#include <sys/types.h>
14569#include <stdio.h>
14570int main() {
14571 int q = 12345678901;
14572 printf("%ld\n", q);
14573}
14574EOCP
14575 set try
14576 if eval $compile; then
5440bc8e 14577 yyy=`$run ./try`
b4eb6b3d
JH
14578 case "$yyy" in
14579 12345678901)
14580 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14581 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14582 echo "We will use %d."
14583 ;;
14584 esac
14585 fi
14586fi
14587
14588if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14589 $cat >try.c <<'EOCP'
14590#include <sys/types.h>
14591#include <stdio.h>
14592int main() {
14593 long q = 12345678901;
14594 printf("%ld\n", q);
14595}
14596EOCP
14597 set try
14598 if eval $compile; then
5440bc8e 14599 yyy=`$run ./try`
b4eb6b3d
JH
14600 case "$yyy" in
14601 12345678901)
14602 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14603 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14604 echo "We will use %ld."
14605 ;;
14606 esac
14607 fi
14608fi
14609
14610if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14611 $cat >try.c <<'EOCP'
14612#include <sys/types.h>
14613#include <inttypes.h>
14614#include <stdio.h>
14615int main() {
14616 int64_t q = 12345678901;
14617 printf("%" PRId64 "\n", q);
14618}
14619EOCP
14620 set try
14621 if eval $compile; then
5440bc8e 14622 yyy=`$run ./try`
b4eb6b3d
JH
14623 case "$yyy" in
14624 12345678901)
14625 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14626 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14627 echo "We will use the C9X style."
14628 ;;
14629 esac
14630 fi
14631fi
14632
2ef53570
JH
14633if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14634 $cat >try.c <<EOCP
b4eb6b3d
JH
14635#include <sys/types.h>
14636#include <stdio.h>
14637int main() {
2ef53570
JH
14638 $quadtype q = 12345678901;
14639 printf("%Ld\n", q);
b4eb6b3d
JH
14640}
14641EOCP
14642 set try
14643 if eval $compile; then
5440bc8e 14644 yyy=`$run ./try`
b4eb6b3d
JH
14645 case "$yyy" in
14646 12345678901)
2ef53570
JH
14647 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14648 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14649 echo "We will use %Ld."
b4eb6b3d
JH
14650 ;;
14651 esac
14652 fi
14653fi
14654
2ef53570
JH
14655if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14656 $cat >try.c <<'EOCP'
b4eb6b3d
JH
14657#include <sys/types.h>
14658#include <stdio.h>
14659int main() {
2ef53570
JH
14660 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14661 printf("%lld\n", q);
b4eb6b3d
JH
14662}
14663EOCP
14664 set try
14665 if eval $compile; then
5440bc8e 14666 yyy=`$run ./try`
b4eb6b3d
JH
14667 case "$yyy" in
14668 12345678901)
2ef53570
JH
14669 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14670 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14671 echo "We will use the %lld style."
b4eb6b3d
JH
14672 ;;
14673 esac
14674 fi
14675fi
14676
14677if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14678 $cat >try.c <<EOCP
14679#include <sys/types.h>
14680#include <stdio.h>
14681int main() {
14682 $quadtype q = 12345678901;
14683 printf("%qd\n", q);
14684}
14685EOCP
14686 set try
14687 if eval $compile; then
5440bc8e 14688 yyy=`$run ./try`
b4eb6b3d
JH
14689 case "$yyy" in
14690 12345678901)
14691 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14692 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14693 echo "We will use %qd."
14694 ;;
14695 esac
14696 fi
14697fi
14698
14699if $test X"$sPRId64" = X; then
14700 echo "Cannot figure out how to print 64-bit integers." >&4
14701fi
14702
14703$rm -f try try.*
14704
14705fi
14706
14707case "$sPRId64" in
14708'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14709 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14710 ;;
14711*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14712 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14713 ;;
14714esac
14715
14716
14717echo " "
14718$echo "Checking the format strings to be used for Perl's internal types..." >&4
14719
14720if $test X"$ivsize" = X8; then
14721 ivdformat="$sPRId64"
14722 uvuformat="$sPRIu64"
14723 uvoformat="$sPRIo64"
14724 uvxformat="$sPRIx64"
14725 uvXUformat="$sPRIXU64"
14726else
14727 if $test X"$ivsize" = X"$longsize"; then
14728 ivdformat='"ld"'
14729 uvuformat='"lu"'
14730 uvoformat='"lo"'
14731 uvxformat='"lx"'
14732 uvXUformat='"lX"'
14733 else
14734 if $test X"$ivsize" = X"$intsize"; then
14735 ivdformat='"d"'
14736 uvuformat='"u"'
14737 uvoformat='"o"'
14738 uvxformat='"x"'
14739 uvXUformat='"X"'
14740 else
14741 : far out
14742 if $test X"$ivsize" = X"$shortsize"; then
14743 ivdformat='"hd"'
14744 uvuformat='"hu"'
14745 uvoformat='"ho"'
14746 uvxformat='"hx"'
14747 uvXUformat='"hX"'
14748 fi
14749 fi
14750 fi
14751fi
14752
14753if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14754 nveformat="$sPRIeldbl"
14755 nvfformat="$sPRIfldbl"
14756 nvgformat="$sPRIgldbl"
14757 nvEUformat="$sPRIEUldbl"
14758 nvFUformat="$sPRIFUldbl"
14759 nvGUformat="$sPRIGUldbl"
14760else
14761 nveformat='"e"'
14762 nvfformat='"f"'
14763 nvgformat='"g"'
14764 nvEUformat='"E"'
14765 nvFUformat='"F"'
14766 nvGUformat='"G"'
14767fi
14768
14769case "$ivdformat" in
3c728e00 14770'') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
b4eb6b3d
JH
14771 exit 1
14772 ;;
14773esac
14774
14775
14776echo " "
14777$echo "Checking the format string to be used for gids..." >&4
14778
14779case "$gidsign" in
14780-1) if $test X"$gidsize" = X"$ivsize"; then
14781 gidformat="$ivdformat"
14782 else
14783 if $test X"$gidsize" = X"$longsize"; then
14784 gidformat='"ld"'
14785 else
14786 if $test X"$gidsize" = X"$intsize"; then
14787 gidformat='"d"'
14788 else
14789 if $test X"$gidsize" = X"$shortsize"; then
14790 gidformat='"hd"'
14791 fi
14792 fi
14793 fi
14794 fi
14795 ;;
14796*) if $test X"$gidsize" = X"$uvsize"; then
14797 gidformat="$uvuformat"
14798 else
14799 if $test X"$gidsize" = X"$longsize"; then
14800 gidformat='"lu"'
14801 else
14802 if $test X"$gidsize" = X"$intsize"; then
14803 gidformat='"u"'
14804 else
14805 if $test X"$gidsize" = X"$shortsize"; then
14806 gidformat='"hu"'
14807 fi
14808 fi
14809 fi
14810 fi
14811 ;;
14812esac
14813
14814: see if getgroups exists
14815set getgroups d_getgrps
14816eval $inlibc
14817
14818: see if setgroups exists
14819set setgroups d_setgrps
14820eval $inlibc
14821
14822
14823: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14824echo " "
14825case "$d_getgrps$d_setgrps" in
14826*define*)
14827 case "$groupstype" in
14828 '') dflt="$gidtype" ;;
14829 *) dflt="$groupstype" ;;
14830 esac
14831 $cat <<EOM
14832What type of pointer is the second argument to getgroups() and setgroups()?
14833Usually this is the same as group ids, $gidtype, but not always.
14834
14835EOM
14836 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14837 . ./myread
14838 groupstype="$ans"
14839 ;;
14840*) groupstype="$gidtype";;
14841esac
14842
14843echo " "
14844echo "Checking if your $make program sets \$(MAKE)..." >&4
14845case "$make_set_make" in
14846'')
14847 $sed 's/^X //' > testmake.mak << 'EOF'
14848Xall:
14849X @echo 'maketemp="$(MAKE)"'
14850EOF
14851 case "`$make -f testmake.mak 2>/dev/null`" in
14852 *maketemp=*) make_set_make='#' ;;
14853 *) make_set_make="MAKE=$make" ;;
14854 esac
14855 $rm -f testmake.mak
14856 ;;
14857esac
14858case "$make_set_make" in
14859'#') echo "Yup, it does.";;
14860*) echo "Nope, it doesn't.";;
14861esac
14862
14863: see what type is used for mode_t
14864rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14865set mode_t modetype int stdio.h sys/types.h
14866eval $typedef_ask
14867
2cc61e15
DD
14868: see if stdarg is available
14869echo " "
14870if $test `./findhdr stdarg.h`; then
14871 echo "<stdarg.h> found." >&4
14872 valstd="$define"
14873else
14874 echo "<stdarg.h> NOT found." >&4
14875 valstd="$undef"
14876fi
14877
14878: see if varags is available
14879echo " "
14880if $test `./findhdr varargs.h`; then
14881 echo "<varargs.h> found." >&4
14882else
14883 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14884fi
14885
14886: set up the varargs testing programs
14887$cat > varargs.c <<EOP
14888#ifdef I_STDARG
14889#include <stdarg.h>
14890#endif
14891#ifdef I_VARARGS
14892#include <varargs.h>
14893#endif
14894
14895#ifdef I_STDARG
14896int f(char *p, ...)
14897#else
14898int f(va_alist)
14899va_dcl
14900#endif
14901{
14902 va_list ap;
14903#ifndef I_STDARG
14904 char *p;
14905#endif
14906#ifdef I_STDARG
14907 va_start(ap,p);
14908#else
14909 va_start(ap);
14910 p = va_arg(ap, char *);
14911#endif
14912 va_end(ap);
14913}
14914EOP
14915$cat > varargs <<EOP
14916$startsh
14917if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14918 echo "true"
14919else
14920 echo "false"
14921fi
14922$rm -f varargs$_o
14923EOP
14924chmod +x varargs
14925
14926: now check which varargs header should be included
14927echo " "
14928i_varhdr=''
14929case "$valstd" in
14930"$define")
14931 if `./varargs I_STDARG`; then
14932 val='stdarg.h'
14933 elif `./varargs I_VARARGS`; then
14934 val='varargs.h'
14935 fi
14936 ;;
14937*)
14938 if `./varargs I_VARARGS`; then
14939 val='varargs.h'
14940 fi
14941 ;;
14942esac
14943case "$val" in
14944'')
14945echo "I could not find the definition for va_dcl... You have problems..." >&4
14946 val="$undef"; set i_stdarg; eval $setvar
14947 val="$undef"; set i_varargs; eval $setvar
14948 ;;
14949*)
14950 set i_varhdr
14951 eval $setvar
14952 case "$i_varhdr" in
14953 stdarg.h)
14954 val="$define"; set i_stdarg; eval $setvar
14955 val="$undef"; set i_varargs; eval $setvar
14956 ;;
14957 varargs.h)
14958 val="$undef"; set i_stdarg; eval $setvar
14959 val="$define"; set i_varargs; eval $setvar
14960 ;;
14961 esac
14962 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14963esac
14964$rm -f varargs*
14965
14966: see if we need va_copy
14967echo " "
14968case "$i_stdarg" in
14969"$define")
14970 $cat >try.c <<EOCP
14971#include <stdarg.h>
14972#include <stdio.h>
85c8a686
DD
14973#$i_stdlib I_STDLIB
14974#ifdef I_STDLIB
14975#include <stdlib.h>
14976#endif
14977#include <signal.h>
2cc61e15
DD
14978
14979int
14980ivfprintf(FILE *f, const char *fmt, va_list *valp)
14981{
14982 return vfprintf(f, fmt, *valp);
14983}
14984
14985int
14986myvfprintf(FILE *f, const char *fmt, va_list val)
14987{
14988 return ivfprintf(f, fmt, &val);
14989}
14990
14991int
14992myprintf(char *fmt, ...)
14993{
14994 va_list val;
14995 va_start(val, fmt);
14996 return myvfprintf(stdout, fmt, val);
14997}
14998
14999int
15000main(int ac, char **av)
15001{
85c8a686
DD
15002 signal(SIGSEGV, exit);
15003
2cc61e15
DD
15004 myprintf("%s%cs all right, then\n", "that", '\'');
15005 exit(0);
15006}
15007EOCP
15008 set try
5440bc8e
JH
15009 if eval $compile && $run ./try 2>&1 >/dev/null; then
15010 case "`$run ./try`" in
2cc61e15
DD
15011 "that's all right, then")
15012 okay=yes
15013 ;;
15014 esac
15015 fi
15016 case "$okay" in
15017 yes) echo "It seems that you don't need va_copy()." >&4
15018 need_va_copy="$undef"
15019 ;;
15020 *) echo "It seems that va_copy() or similar will be needed." >&4
15021 need_va_copy="$define"
15022 ;;
15023 esac
15024 $rm -f try.* core core.* *.core *.core.*
15025 ;;
15026*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
15027 ;;
15028esac
15029
b4eb6b3d
JH
15030: define a fucntion to check prototypes
15031$cat > protochk <<EOSH
15032$startsh
15033cc="$cc"
15034optimize="$optimize"
15035ccflags="$ccflags"
15036prototype="$prototype"
15037define="$define"
15038rm=$rm
15039EOSH
15040
15041$cat >> protochk <<'EOSH'
15042
15043$rm -f try.c
15044foo="$1"
15045shift
15046while test $# -ge 2; do
15047 case "$1" in
15048 $define) echo "#include <$2>" >> try.c ;;
15049 literal) echo "$2" >> try.c ;;
15050 esac
15051 shift 2
15052done
15053test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
15054cat >> try.c <<'EOCP'
15055#ifdef CAN_PROTOTYPE
15056#define _(args) args
15057#else
15058#define _(args) ()
15059#endif
15060EOCP
15061echo "$foo" >> try.c
15062echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
15063$cc $optimize $ccflags -c try.c > /dev/null 2>&1
15064status=$?
15065$rm -f try.[co]
15066exit $status
15067EOSH
15068chmod +x protochk
15069$eunicefix protochk
15070
15071: see what type is used for size_t
15072rp="What is the type used for the length parameter for string functions?"
15073set size_t sizetype 'unsigned int' stdio.h sys/types.h
15074eval $typedef_ask
15075
15076: check for type of arguments to gethostbyaddr.
15077if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
15078 case "$d_gethbyaddr" in
15079 $define)
15080 $cat <<EOM
15081
15082Checking to see what type of arguments are accepted by gethostbyaddr().
15083EOM
15084 hdrs="$define sys/types.h
15085 $d_socket sys/socket.h
15086 $i_niin netinet/in.h
15087 $i_netdb netdb.h
15088 $i_unistd unistd.h"
15089 : The first arg can 'char *' or 'void *'
15090 : The second arg is some of integral type
15091 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
15092 for yyy in size_t long int; do
15093 case "$netdb_host_type" in
15094 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
15095 if ./protochk "$try" $hdrs; then
15096 echo "Your system accepts $xxx for the first arg."
15097 echo "...and $yyy for the second arg."
15098 netdb_host_type="$xxx"
15099 netdb_hlen_type="$yyy"
15100 fi
15101 ;;
15102 esac
15103 done
15104 done
15105 : In case none of those worked, prompt the user.
15106 case "$netdb_host_type" in
15107 '') rp='What is the type for the 1st argument to gethostbyaddr?'
15108 dflt='char *'
15109 . ./myread
15110 netdb_host_type=$ans
15111 rp='What is the type for the 2nd argument to gethostbyaddr?'
15112 dflt="$sizetype"
15113 . ./myread
15114 netdb_hlen_type=$ans
15115 ;;
15116 esac
15117 ;;
15118 *) : no gethostbyaddr, so pick harmless defaults
15119 netdb_host_type='char *'
15120 netdb_hlen_type="$sizetype"
15121 ;;
15122 esac
15123 # Remove the "const" if needed. -- but then we'll have a
15124 # prototype clash!
15125 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
15126fi
15127
15128: check for type of argument to gethostbyname.
15129if test "X$netdb_name_type" = X ; then
15130 case "$d_gethbyname" in
15131 $define)
15132 $cat <<EOM
15133
15134Checking to see what type of argument is accepted by gethostbyname().
15135EOM
15136 hdrs="$define sys/types.h
15137 $d_socket sys/socket.h
15138 $i_niin netinet/in.h
15139 $i_netdb netdb.h
15140 $i_unistd unistd.h"
15141 for xxx in "const char *" "char *"; do
15142 case "$netdb_name_type" in
15143 '') try="extern struct hostent *gethostbyname($xxx);"
15144 if ./protochk "$try" $hdrs; then
15145 echo "Your system accepts $xxx."
15146 netdb_name_type="$xxx"
15147 fi
15148 ;;
15149 esac
15150 done
15151 : In case none of those worked, prompt the user.
15152 case "$netdb_name_type" in
15153 '') rp='What is the type for the 1st argument to gethostbyname?'
15154 dflt='char *'
15155 . ./myread
15156 netdb_name_type=$ans
15157 ;;
15158 esac
15159 ;;
15160 *) : no gethostbyname, so pick harmless default
15161 netdb_name_type='char *'
15162 ;;
15163 esac
15164fi
15165
15166: check for type of 1st argument to getnetbyaddr.
15167if test "X$netdb_net_type" = X ; then
15168 case "$d_getnbyaddr" in
15169 $define)
15170 $cat <<EOM
15171
15172Checking to see what type of 1st argument is accepted by getnetbyaddr().
15173EOM
15174 hdrs="$define sys/types.h
15175 $d_socket sys/socket.h
15176 $i_niin netinet/in.h
15177 $i_netdb netdb.h
15178 $i_unistd unistd.h"
15179 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
15180 case "$netdb_net_type" in
15181 '') try="extern struct netent *getnetbyaddr($xxx, int);"
15182 if ./protochk "$try" $hdrs; then
15183 echo "Your system accepts $xxx."
15184 netdb_net_type="$xxx"
15185 fi
15186 ;;
15187 esac
15188 done
15189 : In case none of those worked, prompt the user.
15190 case "$netdb_net_type" in
15191 '') rp='What is the type for the 1st argument to getnetbyaddr?'
15192 dflt='long'
15193 . ./myread
15194 netdb_net_type=$ans
15195 ;;
15196 esac
15197 ;;
15198 *) : no getnetbyaddr, so pick harmless default
15199 netdb_net_type='long'
15200 ;;
15201 esac
15202fi
15203: locate the preferred pager for this system
15204case "$pager" in
15205'')
15206 dflt=''
15207 case "$pg" in
15208 /*) dflt=$pg;;
15209 [a-zA-Z]:/*) dflt=$pg;;
15210 esac
15211 case "$more" in
15212 /*) dflt=$more;;
15213 [a-zA-Z]:/*) dflt=$more;;
15214 esac
15215 case "$less" in
15216 /*) dflt=$less;;
15217 [a-zA-Z]:/*) dflt=$less;;
15218 esac
15219 case "$dflt" in
15220 '') dflt=/usr/ucb/more;;
15221 esac
15222 ;;
15223*) dflt="$pager";;
15224esac
15225echo " "
15226fn=f/
15227rp='What pager is used on your system?'
15228. ./getfile
15229pager="$ans"
15230
15231: see what type pids are declared as in the kernel
15232rp="What is the type of process ids on this system?"
15233set pid_t pidtype int stdio.h sys/types.h
15234eval $typedef_ask
15235
15236: Find earliest binary compatible site_perl subdirectory perl can use.
15237case "$bincompat5005" in
15238"$define") xs_apiversion='5.005' ;;
15239*) xs_apiversion=$version ;; # The current site_perl version.
15240esac
15241: Find earliest pure perl site_perl subdirectory perl can use.
15242: The versioned directories started at 5.005.
15243pm_apiversion='5.005'
15244
b4eb6b3d
JH
15245: see if ar generates random libraries by itself
15246echo " "
15247echo "Checking how to generate random libraries on your machine..." >&4
15248echo 'int bar1() { return bar2(); }' > bar1.c
15249echo 'int bar2() { return 2; }' > bar2.c
15250$cat > foo.c <<'EOP'
15251int main() { printf("%d\n", bar1()); exit(0); }
15252EOP
15253$cc $ccflags -c bar1.c >/dev/null 2>&1
15254$cc $ccflags -c bar2.c >/dev/null 2>&1
15255$cc $ccflags -c foo.c >/dev/null 2>&1
15256$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 15257if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 15258 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
15259 echo "$ar appears to generate random libraries itself."
15260 orderlib=false
15261 ranlib=":"
15262elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 15263 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 15264 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
15265 echo "a table of contents needs to be added with '$ar ts'."
15266 orderlib=false
15267 ranlib="$ar ts"
15268else
15269 case "$ranlib" in
15270 :) ranlib='';;
15271 '')
15272 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15273 $test -f $ranlib || ranlib=''
15274 ;;
15275 esac
15276 if $test -n "$ranlib"; then
15277 echo "your system has '$ranlib'; we'll use that."
15278 orderlib=false
15279 else
15280 echo "your system doesn't seem to support random libraries"
15281 echo "so we'll use lorder and tsort to order the libraries."
15282 orderlib=true
15283 ranlib=":"
15284 fi
15285fi
15286$rm -f foo* bar*
15287
15288: check for type of arguments to select.
15289case "$selecttype" in
15290'') case "$d_select" in
15291 $define)
15292 echo " "
15293 $cat <<EOM
15294Checking to see what type of arguments are accepted by select().
15295EOM
15296 hdrs="$define sys/types.h
15297 $i_systime sys/time.h
15298 $i_sysselct sys/select.h
15299 $d_socket sys/socket.h"
15300 : The first arg can be int, unsigned, or size_t
15301 : The last arg may or may not be 'const'
15302 val=''
15303 : void pointer has been seen but using that
15304 : breaks the selectminbits test
15305 for xxx in 'fd_set *' 'int *'; do
15306 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15307 for tmo in 'struct timeval *' 'const struct timeval *'; do
15308 case "$val" in
15309 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15310 if ./protochk "$try" $hdrs; then
15311 echo "Your system accepts $xxx."
15312 val="$xxx"
15313 fi
15314 ;;
15315 esac
15316 done
15317 done
15318 done
15319 case "$val" in
15320 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15321 case "$d_fd_set" in
15322 $define) dflt="fd_set *" ;;
15323 *) dflt="int *" ;;
15324 esac
15325 . ./myread
15326 val=$ans
15327 ;;
15328 esac
15329 selecttype="$val"
15330 ;;
15331 *) : no select, so pick a harmless default
15332 selecttype='int *'
15333 ;;
15334 esac
15335 ;;
15336esac
15337
15338: check for the select 'width'
15339case "$selectminbits" in
15340'') case "$d_select" in
15341 $define)
15342 $cat <<EOM
15343
15344Checking to see on how many bits at a time your select() operates...
15345EOM
15346 $cat >try.c <<EOCP
15347#include <sys/types.h>
15348#$i_time I_TIME
15349#$i_systime I_SYS_TIME
15350#$i_systimek I_SYS_TIME_KERNEL
15351#ifdef I_TIME
15352# include <time.h>
15353#endif
15354#ifdef I_SYS_TIME
15355# ifdef I_SYS_TIME_KERNEL
15356# define KERNEL
15357# endif
15358# include <sys/time.h>
15359# ifdef I_SYS_TIME_KERNEL
15360# undef KERNEL
15361# endif
15362#endif
15363#$i_sysselct I_SYS_SELECT
15364#ifdef I_SYS_SELECT
15365#include <sys/select.h>
15366#endif
15367#$d_socket HAS_SOCKET
15368#ifdef HAS_SOCKET
15369# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15370#endif
15371#include <stdio.h>
15372$selecttype b;
15373#define S sizeof(*(b))
15374#define MINBITS 64
15375#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15376#define NBITS (NBYTES * 8)
15377int main() {
15378 char s[NBYTES];
15379 struct timeval t;
15380 int i;
15381 FILE* fp;
15382 int fd;
15383
15384 fclose(stdin);
15385 fp = fopen("try.c", "r");
15386 if (fp == 0)
15387 exit(1);
15388 fd = fileno(fp);
15389 if (fd < 0)
15390 exit(2);
15391 b = ($selecttype)s;
15392 for (i = 0; i < NBITS; i++)
15393 FD_SET(i, b);
15394 t.tv_sec = 0;
15395 t.tv_usec = 0;
15396 select(fd + 1, b, 0, 0, &t);
15397 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15398 printf("%d\n", i + 1);
15399 return 0;
15400}
15401EOCP
15402 set try
15403 if eval $compile_ok; then
5440bc8e 15404 selectminbits=`$run ./try`
b4eb6b3d
JH
15405 case "$selectminbits" in
15406 '') cat >&4 <<EOM
15407Cannot figure out on how many bits at a time your select() operates.
15408I'll play safe and guess it is 32 bits.
15409EOM
15410 selectminbits=32
15411 bits="32 bits"
15412 ;;
15413 1) bits="1 bit" ;;
15414 *) bits="$selectminbits bits" ;;
15415 esac
15416 echo "Your select() operates on $bits at a time." >&4
15417 else
15418 rp='What is the minimum number of bits your select() operates on?'
15419 case "$byteorder" in
15420 1234|12345678) dflt=32 ;;
15421 *) dflt=1 ;;
15422 esac
15423 . ./myread
15424 val=$ans
15425 selectminbits="$val"
15426 fi
15427 $rm -f try.* try
15428 ;;
15429 *) : no select, so pick a harmless default
15430 selectminbits='32'
15431 ;;
15432 esac
15433 ;;
15434esac
15435
15436: Trace out the files included by signal.h, then look for SIGxxx names.
15437: Remove SIGARRAYSIZE used by HPUX.
15438: Remove SIGSTKSIZE used by Linux.
15439: Remove SIGSTKSZ used by Posix.
15440: Remove SIGTYP void lines used by OS2.
15441: Some cpps, like os390, dont give the file name anywhere
15442if [ "X$fieldn" = X ]; then
15443 : Just make some guesses. We check them later.
15444 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15445else
15446 xxx=`echo '#include <signal.h>' |
15447 $cppstdin $cppminus $cppflags 2>/dev/null |
15448 $grep '^[ ]*#.*include' |
a938a3bb 15449 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
15450fi
15451: Check this list of files to be sure we have parsed the cpp output ok.
15452: This will also avoid potentially non-existent files, such
15453: as ../foo/bar.h
15454xxxfiles=''
15455for xx in $xxx /dev/null ; do
15456 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15457done
15458: If we have found no files, at least try signal.h
15459case "$xxxfiles" in
15460'') xxxfiles=`./findhdr signal.h` ;;
15461esac
15462xxx=`awk '
15463$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15464 print substr($2, 4, 20)
15465}
15466$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15467 print substr($3, 4, 20)
15468}' $xxxfiles`
15469: Append some common names just in case the awk scan failed.
15470xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15471xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15472xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15473xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15474xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15475
15476: generate a few handy files for later
15477$cat > signal.c <<'EOCP'
15478#include <sys/types.h>
15479#include <signal.h>
15480#include <stdio.h>
15481int main() {
15482
15483/* Strange style to avoid deeply-nested #if/#else/#endif */
15484#ifndef NSIG
15485# ifdef _NSIG
15486# define NSIG (_NSIG)
15487# endif
15488#endif
15489
15490#ifndef NSIG
15491# ifdef SIGMAX
15492# define NSIG (SIGMAX+1)
15493# endif
15494#endif
15495
15496#ifndef NSIG
15497# ifdef SIG_MAX
15498# define NSIG (SIG_MAX+1)
15499# endif
15500#endif
15501
15502#ifndef NSIG
15503# ifdef MAXSIG
15504# define NSIG (MAXSIG+1)
15505# endif
15506#endif
15507
15508#ifndef NSIG
15509# ifdef MAX_SIG
15510# define NSIG (MAX_SIG+1)
15511# endif
15512#endif
15513
15514#ifndef NSIG
15515# ifdef SIGARRAYSIZE
15516# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15517# endif
15518#endif
15519
15520#ifndef NSIG
15521# ifdef _sys_nsig
15522# define NSIG (_sys_nsig) /* Solaris 2.5 */
15523# endif
15524#endif
15525
15526/* Default to some arbitrary number that's big enough to get most
15527 of the common signals.
15528*/
15529#ifndef NSIG
15530# define NSIG 50
15531#endif
15532
15533printf("NSIG %d\n", NSIG);
15534
15535#ifndef JUST_NSIG
15536
15537EOCP
15538
15539echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15540{
15541 printf "#ifdef SIG"; printf $1; printf "\n"
15542 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15543 printf $1; printf ");\n"
15544 printf "#endif\n"
15545}
15546END {
15547 printf "#endif /* JUST_NSIG */\n";
15548 printf "exit(0);\n}\n";
15549}
15550' >>signal.c
15551$cat >signal.awk <<'EOP'
15552BEGIN { ndups = 0 }
15553$1 ~ /^NSIG$/ { nsig = $2 }
15554($1 !~ /^NSIG$/) && (NF == 2) {
15555 if ($2 > maxsig) { maxsig = $2 }
15556 if (sig_name[$2]) {
15557 dup_name[ndups] = $1
15558 dup_num[ndups] = $2
15559 ndups++
15560 }
15561 else {
15562 sig_name[$2] = $1
15563 sig_num[$2] = $2
15564 }
15565}
15566END {
15567 if (nsig == 0) {
15568 nsig = maxsig + 1
15569 }
15570 printf("NSIG %d\n", nsig);
15571 for (n = 1; n < nsig; n++) {
15572 if (sig_name[n]) {
15573 printf("%s %d\n", sig_name[n], sig_num[n])
15574 }
15575 else {
15576 printf("NUM%d %d\n", n, n)
15577 }
15578 }
15579 for (n = 0; n < ndups; n++) {
15580 printf("%s %d\n", dup_name[n], dup_num[n])
15581 }
15582}
15583EOP
15584$cat >signal_cmd <<EOS
15585$startsh
15586if $test -s signal.lst; then
15587 echo "Using your existing signal.lst file"
15588 exit 0
15589fi
15590xxx="$xxx"
15591EOS
15592$cat >>signal_cmd <<'EOS'
15593
15594set signal
15595if eval $compile_ok; then
5440bc8e 15596 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
15597else
15598 echo "(I can't seem be able to compile the whole test program)" >&4
15599 echo "(I'll try it in little pieces.)" >&4
15600 set signal -DJUST_NSIG
15601 if eval $compile_ok; then
5440bc8e 15602 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
15603 $cat signal.nsg
15604 else
15605 echo "I can't seem to figure out how many signals you have." >&4
15606 echo "Guessing 50." >&4
15607 echo 'NSIG 50' > signal.nsg
15608 fi
15609 : Now look at all the signal names, one at a time.
15610 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15611 $cat > signal.c <<EOCP
15612#include <sys/types.h>
15613#include <signal.h>
15614#include <stdio.h>
15615int main() {
15616printf("$xx %d\n", SIG${xx});
15617return 0;
15618}
15619EOCP
15620 set signal
15621 if eval $compile; then
15622 echo "SIG${xx} found."
5440bc8e 15623 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
15624 else
15625 echo "SIG${xx} NOT found."
15626 fi
15627 done
15628 if $test -s signal.ls1; then
15629 $cat signal.nsg signal.ls1 |
15630 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15631 fi
15632
15633fi
15634if $test -s signal.lst; then
15635 :
15636else
15637 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15638 echo 'kill -l' >signal
15639 set X `csh -f <signal`
15640 $rm -f signal
15641 shift
15642 case $# in
15643 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15644 esac
15645 echo $@ | $tr ' ' $trnl | \
15646 $awk '{ printf "%s %d\n", $1, ++s; }
15647 END { printf "NSIG %d\n", ++s }' >signal.lst
15648fi
15649$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15650EOS
15651chmod a+x signal_cmd
15652$eunicefix signal_cmd
15653
15654: generate list of signal names
15655echo " "
15656case "$sig_name_init" in
15657'') doinit=yes ;;
15658*) case "$sig_num_init" in
15659 ''|*,*) doinit=yes ;;
15660 esac ;;
15661esac
15662case "$doinit" in
15663yes)
15664 echo "Generating a list of signal names and numbers..." >&4
15665 . ./signal_cmd
15666 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15667 sig_name=`$awk 'BEGIN { printf "ZERO " }
15668 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15669 sig_num=`$awk 'BEGIN { printf "0 " }
15670 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15671 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15672 !/^NSIG/ { printf "\"%s\", ", $1 }
15673 END { printf "0\n" }' signal.lst`
15674 sig_num_init=`$awk 'BEGIN { printf "0, " }
15675 !/^NSIG/ { printf "%d, ", $2}
15676 END { printf "0\n"}' signal.lst`
15677 ;;
15678esac
15679echo "The following $sig_count signals are available:"
15680echo " "
15681echo $sig_name | $awk \
15682'BEGIN { linelen = 0 }
15683{
15684 for (i = 1; i <= NF; i++) {
15685 name = "SIG" $i " "
15686 linelen = linelen + length(name)
15687 if (linelen > 70) {
15688 printf "\n"
15689 linelen = length(name)
15690 }
15691 printf "%s", name
15692 }
15693 printf "\n"
15694}'
76d3c696 15695sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
15696$rm -f signal signal.c signal.awk signal.lst signal_cmd
15697
15698echo " "
15699case "$sizetype" in
15700*_t) zzz="$sizetype" ;;
15701*) zzz="filesize" ;;
15702esac
15703echo "Checking the size of $zzz..." >&4
15704cat > try.c <<EOCP
15705#include <sys/types.h>
15706#include <stdio.h>
15707int main() {
15708 printf("%d\n", (int)sizeof($sizetype));
15709 exit(0);
15710}
15711EOCP
15712set try
15713if eval $compile_ok; then
5440bc8e 15714 yyy=`$run ./try`
b4eb6b3d
JH
15715 case "$yyy" in
15716 '') sizesize=4
15717 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15718 ;;
15719 *) sizesize=$yyy
15720 echo "Your $zzz size is $sizesize bytes."
15721 ;;
15722 esac
15723else
15724 sizesize=4
15725 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15726fi
15727
15728
15729: check for socklen_t
15730echo " "
15731echo "Checking to see if you have socklen_t..." >&4
15732$cat >try.c <<EOCP
15733#include <sys/types.h>
15734#$d_socket HAS_SOCKET
15735#ifdef HAS_SOCKET
15736#include <sys/socket.h>
15737#endif
15738int main() { socklen_t x = 16; }
15739EOCP
15740set try
15741if eval $compile; then
15742 val="$define"
15743 echo "You have socklen_t."
15744else
15745 val="$undef"
15746 echo "You do not have socklen_t."
15747 case "$sizetype" in
15748 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15749 esac
15750fi
15751$rm -f try try.*
15752set d_socklen_t
15753eval $setvar
15754
a7710f8d
JH
15755: see if this is a socks.h system
15756set socks.h i_socks
15757eval $inhdr
15758
b4eb6b3d
JH
15759: check for type of the size argument to socket calls
15760case "$d_socket" in
15761"$define")
15762 $cat <<EOM
15763
15764Checking to see what type is the last argument of accept().
15765EOM
b4eb6b3d
JH
15766 yyy=''
15767 case "$d_socklen_t" in
15768 "$define") yyy="$yyy socklen_t"
15769 esac
15770 yyy="$yyy $sizetype int long unsigned"
15771 for xxx in $yyy; do
15772 case "$socksizetype" in
15773 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
15774 case "$usesocks" in
15775 "$define")
15776 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15777 echo "Your system accepts '$xxx *' for the last argument of accept()."
15778 socksizetype="$xxx"
15779 fi
15780 ;;
15781 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15782 echo "Your system accepts '$xxx *' for the last argument of accept()."
15783 socksizetype="$xxx"
15784 fi
15785 ;;
15786 esac
b4eb6b3d
JH
15787 ;;
15788 esac
15789 done
15790: In case none of those worked, prompt the user.
15791 case "$socksizetype" in
15792 '') rp='What is the type for socket address structure sizes?'
15793 dflt='int'
15794 . ./myread
15795 socksizetype=$ans
15796 ;;
15797 esac
15798 ;;
15799*) : no sockets, so pick relatively harmless default
15800 socksizetype='int'
15801 ;;
15802esac
15803
15804: see what type is used for signed size_t
15805set ssize_t ssizetype int stdio.h sys/types.h
15806eval $typedef
15807dflt="$ssizetype"
5440bc8e 15808$cat > try.c <<EOM
b4eb6b3d
JH
15809#include <stdio.h>
15810#include <sys/types.h>
15811#define Size_t $sizetype
15812#define SSize_t $dflt
15813int main()
15814{
15815 if (sizeof(Size_t) == sizeof(SSize_t))
15816 printf("$dflt\n");
15817 else if (sizeof(Size_t) == sizeof(int))
15818 printf("int\n");
15819 else
15820 printf("long\n");
15821 exit(0);
15822}
15823EOM
15824echo " "
5440bc8e
JH
15825set try
15826if eval $compile_ok && $run ./try > /dev/null; then
15827 ssizetype=`$run ./try`
b4eb6b3d
JH
15828 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15829else
15830 $cat >&4 <<EOM
15831Help! I can't compile and run the ssize_t test program: please enlighten me!
15832(This is probably a misconfiguration in your system or libraries, and
15833you really ought to fix it. Still, I'll try anyway.)
15834
15835I need a type that is the same size as $sizetype, but is guaranteed to
15836be signed. Common values are ssize_t, int and long.
15837
15838EOM
15839 rp="What signed type is the same size as $sizetype?"
15840 . ./myread
15841 ssizetype="$ans"
15842fi
5440bc8e 15843$rm -f try try.*
b4eb6b3d
JH
15844
15845: see what type of char stdio uses.
15846echo " "
aa517f50
JH
15847echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15848if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
15849 echo "Your stdio uses unsigned chars." >&4
15850 stdchar="unsigned char"
15851else
aa517f50
JH
15852 echo "Your stdio uses signed chars." >&4
15853 stdchar="char"
b4eb6b3d 15854fi
aa517f50
JH
15855$rm -f stdioh
15856
15857
b4eb6b3d
JH
15858
15859: see if time exists
15860echo " "
15861if test "X$d_time" = X -o X"$timetype" = X; then
15862 if set time val -f d_time; eval $csym; $val; then
15863 echo 'time() found.' >&4
15864 val="$define"
15865 rp="What is the type returned by time() on this system?"
15866 set time_t timetype long stdio.h sys/types.h
15867 eval $typedef_ask
15868 else
15869 echo 'time() not found, hope that will do.' >&4
15870 val="$undef"
15871 timetype='int';
15872 fi
15873 set d_time
15874 eval $setvar
15875fi
15876
15877: see what type uids are declared as in the kernel
15878echo " "
15879echo "Looking for the type for user ids returned by getuid()."
15880set uid_t uidtype xxx stdio.h sys/types.h
15881eval $typedef
15882case "$uidtype" in
15883xxx)
15884 xxx=`./findhdr sys/user.h`
15885 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15886 case $1 in
15887 unsigned) dflt="$1 $2" ;;
15888 *) dflt="$1" ;;
15889 esac
15890 ;;
15891*) dflt="$uidtype";;
15892esac
15893case "$uidtype" in
15894uid_t) echo "uid_t found." ;;
15895*) rp="What is the type for user ids returned by getuid()?"
15896 . ./myread
15897 uidtype="$ans"
15898 ;;
15899esac
15900
15901echo " "
15902case "$uidtype" in
15903*_t) zzz="$uidtype" ;;
15904*) zzz="uid" ;;
15905esac
15906echo "Checking the size of $zzz..." >&4
15907cat > try.c <<EOCP
15908#include <sys/types.h>
15909#include <stdio.h>
15910int main() {
15911 printf("%d\n", (int)sizeof($uidtype));
15912 exit(0);
15913}
15914EOCP
15915set try
15916if eval $compile_ok; then
5440bc8e 15917 yyy=`$run ./try`
b4eb6b3d
JH
15918 case "$yyy" in
15919 '') uidsize=4
15920 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15921 ;;
15922 *) uidsize=$yyy
15923 echo "Your $zzz is $uidsize bytes long."
15924 ;;
15925 esac
15926else
15927 uidsize=4
15928 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15929fi
15930
15931echo " "
15932case "$uidtype" in
15933*_t) zzz="$uidtype" ;;
15934*) zzz="uid" ;;
15935esac
15936echo "Checking the sign of $zzz..." >&4
15937cat > try.c <<EOCP
15938#include <sys/types.h>
15939#include <stdio.h>
15940int main() {
15941 $uidtype foo = -1;
15942 if (foo < 0)
15943 printf("-1\n");
15944 else
15945 printf("1\n");
15946}
15947EOCP
15948set try
15949if eval $compile; then
5440bc8e 15950 yyy=`$run ./try`
b4eb6b3d
JH
15951 case "$yyy" in
15952 '') uidsign=1
15953 echo "(I can't execute the test program--guessing unsigned.)" >&4
15954 ;;
15955 *) uidsign=$yyy
15956 case "$uidsign" in
15957 1) echo "Your $zzz is unsigned." ;;
15958 -1) echo "Your $zzz is signed." ;;
15959 esac
15960 ;;
15961 esac
15962else
15963 uidsign=1
15964 echo "(I can't compile the test program--guessing unsigned.)" >&4
15965fi
15966
15967
15968
15969echo " "
15970$echo "Checking the format string to be used for uids..." >&4
15971
15972case "$uidsign" in
15973-1) if $test X"$uidsize" = X"$ivsize"; then
15974 uidformat="$ivdformat"
15975 else
15976 if $test X"$uidsize" = X"$longsize"; then
15977 uidformat='"ld"'
15978 else
15979 if $test X"$uidsize" = X"$intsize"; then
15980 uidformat='"d"'
15981 else
15982 if $test X"$uidsize" = X"$shortsize"; then
15983 uidformat='"hd"'
15984 fi
15985 fi
15986 fi
15987 fi
15988 ;;
15989*) if $test X"$uidsize" = X"$uvsize"; then
15990 uidformat="$uvuformat"
15991 else
15992 if $test X"$uidsize" = X"$longsize"; then
15993 uidformat='"lu"'
15994 else
15995 if $test X"$uidsize" = X"$intsize"; then
15996 uidformat='"u"'
15997 else
15998 if $test X"$uidsize" = X"$shortsize"; then
15999 uidformat='"hu"'
16000 fi
16001 fi
16002 fi
16003 fi
16004 ;;
16005esac
16006
3659ebf1
JH
16007: determine compiler compiler
16008case "$yacc" in
16009'')
16010 dflt=yacc;;
16011*)
16012 dflt="$yacc";;
16013esac
16014echo " "
16015comp='yacc'
3c728e00 16016if $test -f "$byacc$_exe"; then
3659ebf1
JH
16017 dflt="$byacc"
16018 comp="byacc or $comp"
16019fi
3c728e00 16020if $test -f "$bison$_exe"; then
3659ebf1
JH
16021 comp="$comp or bison -y"
16022fi
16023rp="Which compiler compiler ($comp) shall I use?"
16024. ./myread
16025yacc="$ans"
16026case "$yacc" in
16027*bis*)
16028 case "$yacc" in
16029 *-y*) ;;
16030 *)
16031 yacc="$yacc -y"
16032 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
16033 ;;
16034 esac
16035 ;;
16036esac
16037
758a5d79
JH
16038: see if this is a fp.h system
16039set fp.h i_fp
16040eval $inhdr
16041
16042: see if this is a fp_class.h system
16043set fp_class.h i_fp_class
16044eval $inhdr
16045
b4eb6b3d 16046: see if this is a ieeefp.h system
b5b9f165
JH
16047case "$i_ieeefp" in
16048'' ) set ieeefp.h i_ieeefp
16049 eval $inhdr
16050 ;;
16051esac
b4eb6b3d
JH
16052
16053: see if this is a libutil.h system
16054set libutil.h i_libutil
16055eval $inhdr
16056
16057: see if locale.h is available
16058set locale.h i_locale
16059eval $inhdr
16060
16061: see if mach cthreads are available
16062if test "X$usethreads" = "X$define"; then
16063 set mach/cthreads.h i_machcthr
16064 eval $inhdr
16065else
16066 i_machcthr="$undef"
16067fi
16068
16069
16070
16071: see if this is a math.h system
16072set math.h i_math
16073eval $inhdr
16074
16075: see if this is a mntent.h system
16076set mntent.h i_mntent
16077eval $inhdr
16078
16079: see if ndbm.h is available
16080set ndbm.h t_ndbm
16081eval $inhdr
1c6861ad
JS
16082
16083case "$t_ndbm" in
16084$undef)
16085 # Some Linux distributions such as RedHat 7.1 put the
16086 # ndbm.h header in /usr/include/gdbm/ndbm.h.
16087 if $test -f /usr/include/gdbm/ndbm.h; then
d11b91bf 16088 echo '<gdbm/ndbm.h> found.'
1c6861ad
JS
16089 ccflags="$ccflags -I/usr/include/gdbm"
16090 cppflags="$cppflags -I/usr/include/gdbm"
16091 t_ndbm=$define
16092 fi
16093 ;;
16094esac
16095
b4eb6b3d
JH
16096case "$t_ndbm" in
16097$define)
16098 : see if dbm_open exists
16099 set dbm_open d_dbm_open
16100 eval $inlibc
16101 case "$d_dbm_open" in
16102 $undef)
16103 t_ndbm="$undef"
16104 echo "We won't be including <ndbm.h>"
16105 ;;
16106 esac
16107 ;;
16108esac
16109val="$t_ndbm"
16110set i_ndbm
16111eval $setvar
16112
16113: see if net/errno.h is available
16114val=''
16115set net/errno.h val
16116eval $inhdr
16117
16118: Unfortunately, it causes problems on some systems. Arrgh.
16119case "$val" in
16120$define)
16121 cat > try.c <<'EOM'
16122#include <stdio.h>
16123#include <errno.h>
16124#include <net/errno.h>
16125int func()
16126{
16127 return ENOTSOCK;
16128}
16129EOM
16130 if $cc $ccflags -c try.c >/dev/null 2>&1; then
16131 echo "We'll be including <net/errno.h>." >&4
16132 else
16133 echo "We won't be including <net/errno.h>." >&4
16134 val="$undef"
16135 fi
16136 $rm -f try.* try
16137 ;;
16138esac
16139set i_neterrno
16140eval $setvar
16141
16142: see if netinet/tcp.h is available
16143set netinet/tcp.h i_netinettcp
16144eval $inhdr
16145
16146: see if this is a poll.h system
16147set poll.h i_poll
16148eval $inhdr
16149
16150: see if this is a prot.h system
16151set prot.h i_prot
16152eval $inhdr
16153
16154echo " "
16155$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
16156$cat <<'EOSH' > Cppsym.know
16157a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
16158AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
16159alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
16160ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
16161BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
16162BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
16163bull c cadmus clipper CMU COFF COMPILER_VERSION
16164concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
16165CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
4f17444b
JH
16166Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
16167FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
16168GLIBC GLIBC_MINOR
16169GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
b4eb6b3d
JH
16170H3050R H3050RX hbullx20 hcx host_mips
16171hp200 hp300 hp700 HP700 hp800 hp9000
16172hp9000s200 hp9000s300 hp9000s400 hp9000s500
16173hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
16174i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 16175IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
16176INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
16177LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
16178LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
16179Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
16180LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
16181M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
16182M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
16183M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
16184MATH_HAS_NO_SIDE_EFFECTS
16185mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
16186mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
16187mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
16188MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
16189mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
16190NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 16191news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
16192ns32016 ns32332 ns32k nsc32000
16193OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
16194pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
16195pc532 pdp11 PGC PIC plexus PORTAR posix
16196POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
16197POSIX_C_SOURCE POSIX_SOURCE POWER
16198PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 16199riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
16200SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
16201sony sony_news sonyrisc sparc sparclite spectrum
16202stardent stdc STDC_EXT stratos sun sun3 sun386
16203Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
16204SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
16205SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
16206sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 16207TM3200 TM5400 TM5600
b4eb6b3d
JH
16208tower tower32 tower32_200 tower32_600 tower32_700
16209tower32_800 tower32_850 tss
16210u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
16211ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
4f17444b
JH
16212unix UNIX95 UNIX99 unixpc unos
16213USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
16214USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
16215USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
16216USGr4 USGr4_2
b4eb6b3d
JH
16217Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16218XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16219XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16220z8000
16221EOSH
16222# Maybe put other stuff here too.
16223cat <<EOSH >>Cppsym.know
16224$osname
16225EOSH
16226./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16227./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16228$cat Cppsym.know > Cppsym.c
381aa1ff 16229$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
16230$rm -f Cppsym.a Cppsym.b Cppsym.c
16231cat <<EOSH > Cppsym
16232$startsh
16233if $test \$# -gt 0; then
16234 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16235 if $test -s Cppsym.got; then
16236 $rm -f Cppsym.got
16237 exit 0
16238 fi
16239 $rm -f Cppsym.got
16240 exit 1
16241else
16242 $tr " " "$trnl" | ./Cppsym.try
16243 exit 0
16244fi
16245EOSH
16246chmod +x Cppsym
16247$eunicefix Cppsym
16248cat <<EOSH > Cppsym.try
16249$startsh
16250cat <<'EOCP' > try.c
16251#include <stdio.h>
16252int main() {
16253EOCP
16254$awk \\
16255EOSH
16256cat <<'EOSH' >> Cppsym.try
16257'length($1) > 0 {
2ef53570
JH
16258 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16259 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16260 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16261 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
b4eb6b3d 16262}' >> try.c
2ef53570 16263echo 'return 0;}' >> try.c
b4eb6b3d
JH
16264EOSH
16265cat <<EOSH >> Cppsym.try
16266ccflags="$ccflags"
16267case "$osname-$gccversion" in
16268irix-) ccflags="\$ccflags -woff 1178" ;;
16269os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16270esac
5440bc8e 16271$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
16272EOSH
16273chmod +x Cppsym.try
16274$eunicefix Cppsym.try
16275./Cppsym < Cppsym.know > Cppsym.true
16276: now check the C compiler for additional symbols
16277postprocess_cc_v=''
16278case "$osname" in
16279aix) postprocess_cc_v="|$tr , ' '" ;;
16280esac
16281$cat >ccsym <<EOS
16282$startsh
16283$cat >tmp.c <<EOF
16284extern int foo;
16285EOF
16286for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16287do
16288 case "\$i" in
16289 -D*) echo "\$i" | $sed 's/^-D//';;
16290 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16291 esac
16292done
16293$rm -f try.c
16294EOS
16295postprocess_cc_v=''
16296chmod +x ccsym
16297$eunicefix ccsym
16298./ccsym > ccsym1.raw
16299if $test -s ccsym1.raw; then
16300 $sort ccsym1.raw | $uniq >ccsym.raw
16301else
16302 mv ccsym1.raw ccsym.raw
16303fi
16304
16305$awk '/\=/ { print $0; next }
16306 { print $0"=1" }' ccsym.raw >ccsym.list
16307$awk '/\=/ { print $0; next }
16308 { print $0"=1" }' Cppsym.true >ccsym.true
16309$comm -13 ccsym.true ccsym.list >ccsym.own
16310$comm -12 ccsym.true ccsym.list >ccsym.com
16311$comm -23 ccsym.true ccsym.list >ccsym.cpp
16312also=''
16313if $test -z ccsym.raw; then
16314 echo "Your C compiler doesn't seem to define any symbols!" >&4
16315 echo " "
16316 echo "However, your C preprocessor defines the following symbols:"
16317 $cat Cppsym.true
16318 ccsymbols=''
16319 cppsymbols=`$cat Cppsym.true`
16320 cppsymbols=`echo $cppsymbols`
16321 cppccsymbols="$cppsymbols"
16322else
16323 if $test -s ccsym.com; then
16324 echo "Your C compiler and pre-processor define these symbols:"
16325 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16326 also='also '
16327 symbols='ones'
16328 cppccsymbols=`$cat ccsym.com`
16329 cppccsymbols=`echo $cppccsymbols`
16330 $test "$silent" || sleep 1
16331 fi
16332 if $test -s ccsym.cpp; then
16333 $test "$also" && echo " "
16334 echo "Your C pre-processor ${also}defines the following symbols:"
16335 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16336 also='further '
16337 cppsymbols=`$cat ccsym.cpp`
16338 cppsymbols=`echo $cppsymbols`
16339 $test "$silent" || sleep 1
16340 fi
16341 if $test -s ccsym.own; then
16342 $test "$also" && echo " "
16343 echo "Your C compiler ${also}defines the following cpp symbols:"
16344 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16345 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16346 ccsymbols=`$cat ccsym.own`
16347 ccsymbols=`echo $ccsymbols`
16348 $test "$silent" || sleep 1
16349 fi
16350fi
b4eb6b3d
JH
16351
16352: see if this is a termio system
16353val="$undef"
16354val2="$undef"
16355val3="$undef"
16356if $test `./findhdr termios.h`; then
16357 set tcsetattr i_termios
16358 eval $inlibc
16359 val3="$i_termios"
16360fi
16361echo " "
16362case "$val3" in
16363"$define") echo "You have POSIX termios.h... good!" >&4;;
16364*) if ./Cppsym pyr; then
16365 case "`/bin/universe`" in
16366 ucb) if $test `./findhdr sgtty.h`; then
16367 val2="$define"
16368 echo "<sgtty.h> found." >&4
16369 else
16370 echo "System is pyramid with BSD universe."
16371 echo "<sgtty.h> not found--you could have problems." >&4
16372 fi;;
16373 *) if $test `./findhdr termio.h`; then
16374 val="$define"
16375 echo "<termio.h> found." >&4
16376 else
16377 echo "System is pyramid with USG universe."
16378 echo "<termio.h> not found--you could have problems." >&4
16379 fi;;
16380 esac
16381 elif ./usg; then
16382 if $test `./findhdr termio.h`; then
16383 echo "<termio.h> found." >&4
16384 val="$define"
16385 elif $test `./findhdr sgtty.h`; then
16386 echo "<sgtty.h> found." >&4
16387 val2="$define"
16388 else
16389echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16390 fi
16391 else
16392 if $test `./findhdr sgtty.h`; then
16393 echo "<sgtty.h> found." >&4
16394 val2="$define"
16395 elif $test `./findhdr termio.h`; then
16396 echo "<termio.h> found." >&4
16397 val="$define"
16398 else
16399echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16400 fi
16401 fi;;
16402esac
16403set i_termio; eval $setvar
16404val=$val2; set i_sgtty; eval $setvar
16405val=$val3; set i_termios; eval $setvar
16406
16407: see if this is a shadow.h system
16408set shadow.h i_shadow
16409eval $inhdr
16410
b4eb6b3d
JH
16411: see if stddef is available
16412set stddef.h i_stddef
16413eval $inhdr
923fc586 16414
b4eb6b3d
JH
16415: see if this is a sunmath.h system
16416set sunmath.h i_sunmath
16417eval $inhdr
5f80c64f 16418
b4eb6b3d
JH
16419: see if sys/access.h is available
16420set sys/access.h i_sysaccess
16421eval $inhdr
16422
16423: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16424set sys/filio.h i_sysfilio
16425eval $inhdr
16426echo " "
16427if $test `./findhdr sys/ioctl.h`; then
16428 val="$define"
16429 echo '<sys/ioctl.h> found.' >&4
16430else
16431 val="$undef"
16432 if $test $i_sysfilio = "$define"; then
16433 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 16434 else
b4eb6b3d
JH
16435 $test $i_sgtty = "$define" && xxx="sgtty.h"
16436 $test $i_termio = "$define" && xxx="termio.h"
16437 $test $i_termios = "$define" && xxx="termios.h"
16438echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16439 fi
16440fi
16441set i_sysioctl
16442eval $setvar
16443
49a78c82
JH
16444: see if socket ioctl defs are in sys/sockio.h
16445echo " "
16446xxx=`./findhdr sys/sockio.h`
16447if $test "$xxx"; then
16448 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16449 val="$define"
16450 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16451 else
16452 val="$undef"
16453 echo "No socket ioctls found in <sys/sockio.h>." >&4
16454 fi
16455else
16456 val="$undef"
16457 $cat <<EOM
16458<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16459EOM
16460fi
16461set i_syssockio
16462eval $setvar
16463
b4eb6b3d
JH
16464
16465: see if this is a syslog.h system
16466set syslog.h i_syslog
16467eval $inhdr
16468
16469
16470: see if this is a sys/mode.h system
16471set sys/mode.h i_sysmode
16472eval $inhdr
16473
16474: see if sys/resource.h has to be included
16475set sys/resource.h i_sysresrc
16476eval $inhdr
16477
16478: see if sys/security.h is available
16479set sys/security.h i_syssecrt
16480eval $inhdr
16481
16482: see if this is a sys/statvfs.h system
16483set sys/statvfs.h i_sysstatvfs
16484eval $inhdr
16485
b4eb6b3d
JH
16486: see if this is a sys/un.h system
16487set sys/un.h i_sysun
16488eval $inhdr
16489
16490
16491: see if this is a sys/utsname.h system
16492set sys/utsname.h i_sysutsname
16493eval $inhdr
16494
16495: see if this is a syswait system
16496set sys/wait.h i_syswait
16497eval $inhdr
16498
16499: see if this is a ustat.h system
16500set ustat.h i_ustat
16501eval $inhdr
16502
16503: see if this is an utime system
16504set utime.h i_utime
16505eval $inhdr
16506
16507: see if this is a values.h system
16508set values.h i_values
16509eval $inhdr
16510
16511: see if this is a vfork system
16512case "$d_vfork" in
16513"$define")
16514 set vfork.h i_vfork
16515 eval $inhdr
16516 ;;
16517*)
16518 i_vfork="$undef"
16519 ;;
16520esac
16521
16522: see if gdbm.h is available
16523set gdbm.h t_gdbm
16524eval $inhdr
16525case "$t_gdbm" in
16526$define)
16527 : see if gdbm_open exists
16528 set gdbm_open d_gdbm_open
16529 eval $inlibc
16530 case "$d_gdbm_open" in
16531 $undef)
16532 t_gdbm="$undef"
16533 echo "We won't be including <gdbm.h>"
5f80c64f 16534 ;;
b4eb6b3d
JH
16535 esac
16536 ;;
16537esac
16538val="$t_gdbm"
16539set i_gdbm
16540eval $setvar
16541
16542echo " "
16543echo "Looking for extensions..." >&4
16544: If we are using the old config.sh, known_extensions may contain
16545: old or inaccurate or duplicate values.
16546known_extensions=''
16547nonxs_extensions=''
16548: We do not use find because it might not be available.
16549: We do not just use MANIFEST because the user may have dropped
16550: some additional extensions into the source tree and expect them
16551: to be built.
16552
16553: Function to recursively find available extensions, ignoring DynaLoader
16554: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16555find_extensions='
16556 for xxx in *; do
16557 case "$xxx" in
16558 DynaLoader|dynaload) ;;
16559 *)
16560 if $test -f $xxx/$xxx.xs; then
16561 known_extensions="$known_extensions $1$xxx";
16562 elif $test -f $xxx/Makefile.PL; then
16563 nonxs_extensions="$nonxs_extensions $1$xxx";
16564 else
16565 if $test -d $xxx -a $# -lt 10; then
16566 set $1$xxx/ $*;
6904989c 16567 cd "$xxx";
b4eb6b3d
JH
16568 eval $find_extensions;
16569 cd ..;
16570 shift;
16571 fi;
16572 fi
16573 ;;
16574 esac;
16575 done'
16576tdir=`pwd`
6904989c 16577cd "$rsrc/ext"
b4eb6b3d
JH
16578set X
16579shift
16580eval $find_extensions
4e1a6d26
AD
16581# Special case: Add in threads/shared since it is not picked up by the
16582# recursive find above (and adding in general recursive finding breaks
16583# SDBM_File/sdbm). A.D. 10/25/2001.
16584known_extensions="$known_extensions threads/shared"
b4eb6b3d
JH
16585set X $nonxs_extensions
16586shift
16587nonxs_extensions="$*"
16588set X $known_extensions
16589shift
16590known_extensions="$*"
6904989c 16591cd "$tdir"
b4eb6b3d
JH
16592
16593: Now see which are supported on this system.
16594avail_ext=''
16595for xxx in $known_extensions ; do
16596 case "$xxx" in
16597 DB_File|db_file)
16598 case "$i_db" in
16599 $define) avail_ext="$avail_ext $xxx" ;;
16600 esac
16601 ;;
16602 GDBM_File|gdbm_fil)
16603 case "$i_gdbm" in
16604 $define) avail_ext="$avail_ext $xxx" ;;
16605 esac
16606 ;;
1d59c593 16607 I18N/Langinfo|i18n_lan)
4bbcc6e8
JH
16608 case "$i_langinfo$d_nl_langinfo" in
16609 $define$define) avail_ext="$avail_ext $xxx" ;;
16610 esac
16611 ;;
b4eb6b3d
JH
16612 NDBM_File|ndbm_fil)
16613 case "$i_ndbm" in
16614 $define)
16615 case "$osname-$use64bitint" in
252f4fb1 16616 cygwin-*|hpux-define)
b4eb6b3d
JH
16617 case "$libs" in
16618 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16619 esac
16620 ;;
16621 *) avail_ext="$avail_ext $xxx" ;;
16622 esac
16623 ;;
16624 esac
16625 ;;
16626 ODBM_File|odbm_fil)
16627 case "${i_dbm}${i_rpcsvcdbm}" in
16628 *"${define}"*)
16629 case "$osname-$use64bitint" in
252f4fb1 16630 cygwin-*|hpux-define)
b4eb6b3d
JH
16631 case "$libs" in
16632 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16633 esac
16634 ;;
16635 *) avail_ext="$avail_ext $xxx" ;;
16636 esac
16637 ;;
16638 esac
16639 ;;
16640 POSIX|posix)
16641 case "$useposix" in
16642 true|define|y) avail_ext="$avail_ext $xxx" ;;
16643 esac
16644 ;;
16645 Opcode|opcode)
16646 case "$useopcode" in
16647 true|define|y) avail_ext="$avail_ext $xxx" ;;
16648 esac
16649 ;;
16650 Socket|socket)
16651 case "$d_socket" in
4a9f028c
JH
16652 true|$define|y)
16653 case "$osname" in
16654 beos) ;; # not unless BONE
16655 *) avail_ext="$avail_ext $xxx" ;;
16656 esac
16657 ;;
b4eb6b3d
JH
16658 esac
16659 ;;
16660 Sys/Syslog|sys/syslog)
16661 : XXX syslog requires socket
16662 case "$d_socket" in
16663 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16664 esac
16665 ;;
16666 Thread|thread)
b00ec89b
AB
16667 case "$usethreads" in
16668 true|$define|y)
16669 case "$useithreads" in
16670 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16671 esac
b4eb6b3d
JH
16672 esac
16673 ;;
7deadc5f 16674 threads|threads/shared)
1dca008a
JH
16675 case "$usethreads" in
16676 true|$define|y)
16677 case "$useithreads" in
16678 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16679 esac
16680 esac
16681 ;;
b4eb6b3d
JH
16682 IPC/SysV|ipc/sysv)
16683 : XXX Do we need a useipcsysv variable here
16684 case "${d_msg}${d_sem}${d_shm}" in
16685 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16686 esac
16687 ;;
16688 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
16689 ;;
16690 esac
b4eb6b3d 16691done
5f80c64f 16692
b4eb6b3d
JH
16693set X $avail_ext
16694shift
16695avail_ext="$*"
5f80c64f 16696
b4eb6b3d
JH
16697: Now see which nonxs extensions are supported on this system.
16698: For now assume all are.
16699nonxs_ext=''
16700for xxx in $nonxs_extensions ; do
16701 case "$xxx" in
16702 *) nonxs_ext="$nonxs_ext $xxx"
16703 ;;
16704 esac
16705done
5f80c64f 16706
b4eb6b3d
JH
16707set X $nonxs_ext
16708shift
16709nonxs_ext="$*"
16710
16711case $usedl in
16712$define)
16713 $cat <<EOM
16714A number of extensions are supplied with $package. You may choose to
16715compile these extensions for dynamic loading (the default), compile
16716them into the $package executable (static loading), or not include
16717them at all. Answer "none" to include no extensions.
16718Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
16719
16720EOM
b4eb6b3d
JH
16721 case "$dynamic_ext" in
16722 '') dflt="$avail_ext" ;;
16723 *) dflt="$dynamic_ext"
16724 # Perhaps we are reusing an old out-of-date config.sh.
16725 case "$hint" in
16726 previous)
16727 if test X"$dynamic_ext" != X"$avail_ext"; then
16728 $cat <<EOM
16729NOTICE: Your previous config.sh list may be incorrect.
16730The extensions now available to you are
16731 ${avail_ext}
16732but the default list from your previous config.sh is
16733 ${dynamic_ext}
9c839522 16734
b4eb6b3d
JH
16735EOM
16736 fi
9c839522
PM
16737 ;;
16738 esac
b4eb6b3d
JH
16739 ;;
16740 esac
5f80c64f 16741 case "$dflt" in
b4eb6b3d
JH
16742 '') dflt=none;;
16743 esac
16744 rp="What extensions do you wish to load dynamically?"
16745 . ./myread
16746 case "$ans" in
16747 none) dynamic_ext=' ' ;;
16748 *) dynamic_ext="$ans" ;;
5f80c64f 16749 esac
5f80c64f 16750
b4eb6b3d
JH
16751 case "$static_ext" in
16752 '')
16753 : Exclude those already listed in dynamic linking
16754 dflt=''
16755 for xxx in $avail_ext; do
16756 case " $dynamic_ext " in
16757 *" $xxx "*) ;;
16758 *) dflt="$dflt $xxx" ;;
16759 esac
16760 done
16761 set X $dflt
16762 shift
16763 dflt="$*"
16764 ;;
16765 *) dflt="$static_ext"
16766 ;;
16767 esac
9c839522 16768
b4eb6b3d
JH
16769 case "$dflt" in
16770 '') dflt=none;;
16771 esac
16772 rp="What extensions do you wish to load statically?"
16773 . ./myread
16774 case "$ans" in
16775 none) static_ext=' ' ;;
16776 *) static_ext="$ans" ;;
16777 esac
16778 ;;
16779*)
16780 $cat <<EOM
16781A number of extensions are supplied with $package. Answer "none"
16782to include no extensions.
16783Note that DynaLoader is always built and need not be mentioned here.
9c839522 16784
b4eb6b3d
JH
16785EOM
16786 case "$static_ext" in
16787 '') dflt="$avail_ext" ;;
16788 *) dflt="$static_ext"
16789 # Perhaps we are reusing an old out-of-date config.sh.
16790 case "$hint" in
16791 previous)
16792 if test X"$static_ext" != X"$avail_ext"; then
16793 $cat <<EOM
16794NOTICE: Your previous config.sh list may be incorrect.
16795The extensions now available to you are
16796 ${avail_ext}
16797but the default list from your previous config.sh is
16798 ${static_ext}
5f80c64f
JH
16799
16800EOM
b4eb6b3d
JH
16801 fi
16802 ;;
16803 esac
16804 ;;
16805 esac
16806 : Exclude those that are not xs extensions
16807 case "$dflt" in
16808 '') dflt=none;;
16809 esac
16810 rp="What extensions do you wish to include?"
16811 . ./myread
16812 case "$ans" in
16813 none) static_ext=' ' ;;
16814 *) static_ext="$ans" ;;
16815 esac
16816 ;;
5f80c64f
JH
16817esac
16818
b4eb6b3d
JH
16819set X $dynamic_ext $static_ext $nonxs_ext
16820shift
16821extensions="$*"
16822
9c839522
PM
16823: Remove libraries needed only for extensions
16824: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
16825: The exception is SunOS 4.x, which needs them.
16826case "${osname}X${osvers}" in
16827sunos*X4*)
16828 perllibs="$libs"
16829 ;;
16830*) case "$usedl" in
16831 $define|true|[yY]*)
16832 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16833 shift
16834 perllibs="$*"
16835 ;;
16836 *) perllibs="$libs"
16837 ;;
16838 esac
16839 ;;
9c839522 16840esac
5f80c64f
JH
16841
16842: Remove build directory name from cppstdin so it can be used from
16843: either the present location or the final installed location.
16844echo " "
16845: Get out of the UU directory to get correct path name.
16846cd ..
16847case "$cppstdin" in
16848`pwd`/cppstdin)
16849 echo "Stripping down cppstdin path name"
16850 cppstdin=cppstdin
16851 ;;
16852esac
16853cd UU
16854
16855: end of configuration questions
16856echo " "
16857echo "End of configuration questions."
16858echo " "
16859
16860: back to where it started
16861if test -d ../UU; then
16862 cd ..
16863fi
16864
48370efc
JH
16865: configuration may be patched via a 'config.arch' file
16866if $test -f config.arch; then
16867 echo "I see a config.arch file, loading it."
16868 . ./config.arch
16869fi
16870
5f80c64f
JH
16871: configuration may be patched via a 'config.over' file
16872if $test -f config.over; then
16873 echo " "
16874 dflt=y
16875 rp='I see a config.over file. Do you wish to load it?'
16876 . UU/myread
16877 case "$ans" in
16878 n*) echo "OK, I'll ignore it.";;
16879 *) . ./config.over
16880 echo "Configuration override changes have been loaded."
16881 ;;
16882 esac
16883fi
16884
16885: in case they want portability, strip down executable paths
16886case "$d_portable" in
16887"$define")
16888 echo " "
16889 echo "Stripping down executable paths..." >&4
16890 for file in $loclist $trylist; do
534ac15a
JH
16891 eval temp=\$$file
16892 eval $file=`basename $temp`
5f80c64f
JH
16893 done
16894 ;;
16895esac
16896
16897: create config.sh file
16898echo " "
16899echo "Creating config.sh..." >&4
16900$spitshell <<EOT >config.sh
16901$startsh
16902#
16903# This file was produced by running the Configure script. It holds all the
16904# definitions figured out by Configure. Should you modify one of these values,
16905# do not forget to propagate your changes by running "Configure -der". You may
16906# instead choose to run each of the .SH files by yourself, or "Configure -S".
16907#
16908
16909# Package name : $package
16910# Source directory : $src
16911# Configuration time: $cf_time
16912# Configured by : $cf_by
16913# Target system : $myuname
16914
16915Author='$Author'
16916Date='$Date'
16917Header='$Header'
16918Id='$Id'
16919Locker='$Locker'
16920Log='$Log'
16921Mcc='$Mcc'
16922RCSfile='$RCSfile'
16923Revision='$Revision'
16924Source='$Source'
16925State='$State'
16926_a='$_a'
16927_exe='$_exe'
16928_o='$_o'
b4eb6b3d 16929afs='$afs'
a6d26a0d 16930afsroot='$afsroot'
b4eb6b3d
JH
16931alignbytes='$alignbytes'
16932ansi2knr='$ansi2knr'
16933aphostname='$aphostname'
16934api_revision='$api_revision'
16935api_subversion='$api_subversion'
16936api_version='$api_version'
16937api_versionstring='$api_versionstring'
5f80c64f 16938ar='$ar'
b4eb6b3d
JH
16939archlib='$archlib'
16940archlibexp='$archlibexp'
16941archname64='$archname64'
16942archname='$archname'
5f80c64f
JH
16943archobjs='$archobjs'
16944awk='$awk'
b4eb6b3d 16945baserev='$baserev'
5f80c64f 16946bash='$bash'
b4eb6b3d
JH
16947bin='$bin'
16948bincompat5005='$bincompat5005'
16949binexp='$binexp'
5f80c64f
JH
16950bison='$bison'
16951byacc='$byacc'
b4eb6b3d 16952byteorder='$byteorder'
5f80c64f 16953c='$c'
b4eb6b3d 16954castflags='$castflags'
5f80c64f
JH
16955cat='$cat'
16956cc='$cc'
16957cccdlflags='$cccdlflags'
16958ccdlflags='$ccdlflags'
16959ccflags='$ccflags'
b4eb6b3d 16960ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 16961ccname='$ccname'
b4eb6b3d 16962ccsymbols='$ccsymbols'
6b356c8e 16963ccversion='$ccversion'
5f80c64f 16964cf_by='$cf_by'
b4eb6b3d 16965cf_email='$cf_email'
5f80c64f 16966cf_time='$cf_time'
b4eb6b3d 16967charsize='$charsize'
5f80c64f
JH
16968chgrp='$chgrp'
16969chmod='$chmod'
16970chown='$chown'
b4eb6b3d 16971clocktype='$clocktype'
5f80c64f
JH
16972comm='$comm'
16973compress='$compress'
16974contains='$contains'
16975cp='$cp'
16976cpio='$cpio'
16977cpp='$cpp'
b4eb6b3d
JH
16978cpp_stuff='$cpp_stuff'
16979cppccsymbols='$cppccsymbols'
5f80c64f
JH
16980cppflags='$cppflags'
16981cpplast='$cpplast'
16982cppminus='$cppminus'
16983cpprun='$cpprun'
16984cppstdin='$cppstdin'
b4eb6b3d 16985cppsymbols='$cppsymbols'
b4eb6b3d 16986cryptlib='$cryptlib'
5f80c64f 16987csh='$csh'
b4eb6b3d
JH
16988d_Gconvert='$d_Gconvert'
16989d_PRIEUldbl='$d_PRIEUldbl'
16990d_PRIFUldbl='$d_PRIFUldbl'
16991d_PRIGUldbl='$d_PRIGUldbl'
16992d_PRIXU64='$d_PRIXU64'
16993d_PRId64='$d_PRId64'
16994d_PRIeldbl='$d_PRIeldbl'
16995d_PRIfldbl='$d_PRIfldbl'
16996d_PRIgldbl='$d_PRIgldbl'
16997d_PRIi64='$d_PRIi64'
16998d_PRIo64='$d_PRIo64'
16999d_PRIu64='$d_PRIu64'
17000d_PRIx64='$d_PRIx64'
17001d_SCNfldbl='$d_SCNfldbl'
74cac757 17002d__fwalk='$d__fwalk'
b4eb6b3d
JH
17003d_access='$d_access'
17004d_accessx='$d_accessx'
17005d_alarm='$d_alarm'
17006d_archlib='$d_archlib'
17007d_atolf='$d_atolf'
17008d_atoll='$d_atoll'
17009d_attribut='$d_attribut'
17010d_bcmp='$d_bcmp'
17011d_bcopy='$d_bcopy'
17012d_bincompat5005='$d_bincompat5005'
5f80c64f 17013d_bsd='$d_bsd'
b4eb6b3d
JH
17014d_bsdgetpgrp='$d_bsdgetpgrp'
17015d_bsdsetpgrp='$d_bsdsetpgrp'
17016d_bzero='$d_bzero'
17017d_casti32='$d_casti32'
17018d_castneg='$d_castneg'
17019d_charvspr='$d_charvspr'
17020d_chown='$d_chown'
17021d_chroot='$d_chroot'
17022d_chsize='$d_chsize'
758a5d79 17023d_class='$d_class'
b4eb6b3d 17024d_closedir='$d_closedir'
4e0554ec 17025d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d
JH
17026d_const='$d_const'
17027d_crypt='$d_crypt'
17028d_csh='$d_csh'
17029d_cuserid='$d_cuserid'
17030d_dbl_dig='$d_dbl_dig'
2ef53570 17031d_dbminitproto='$d_dbminitproto'
b4eb6b3d 17032d_difftime='$d_difftime'
ae0e3d3b 17033d_dirfd='$d_dirfd'
b4eb6b3d
JH
17034d_dirnamlen='$d_dirnamlen'
17035d_dlerror='$d_dlerror'
5f80c64f 17036d_dlopen='$d_dlopen'
b4eb6b3d
JH
17037d_dlsymun='$d_dlsymun'
17038d_dosuid='$d_dosuid'
17039d_drand48proto='$d_drand48proto'
17040d_dup2='$d_dup2'
17041d_eaccess='$d_eaccess'
17042d_endgrent='$d_endgrent'
17043d_endhent='$d_endhent'
17044d_endnent='$d_endnent'
17045d_endpent='$d_endpent'
17046d_endpwent='$d_endpwent'
17047d_endsent='$d_endsent'
17048d_eofnblk='$d_eofnblk'
5f80c64f 17049d_eunice='$d_eunice'
b363b713 17050d_fchdir='$d_fchdir'
b4eb6b3d
JH
17051d_fchmod='$d_fchmod'
17052d_fchown='$d_fchown'
17053d_fcntl='$d_fcntl'
9d9004a9 17054d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
17055d_fd_macros='$d_fd_macros'
17056d_fd_set='$d_fd_set'
17057d_fds_bits='$d_fds_bits'
17058d_fgetpos='$d_fgetpos'
758a5d79
JH
17059d_finite='$d_finite'
17060d_finitel='$d_finitel'
b4eb6b3d
JH
17061d_flexfnam='$d_flexfnam'
17062d_flock='$d_flock'
2ef53570 17063d_flockproto='$d_flockproto'
b4eb6b3d 17064d_fork='$d_fork'
758a5d79 17065d_fp_class='$d_fp_class'
b4eb6b3d 17066d_fpathconf='$d_fpathconf'
758a5d79
JH
17067d_fpclass='$d_fpclass'
17068d_fpclassify='$d_fpclassify'
17069d_fpclassl='$d_fpclassl'
b4eb6b3d
JH
17070d_fpos64_t='$d_fpos64_t'
17071d_frexpl='$d_frexpl'
17072d_fs_data_s='$d_fs_data_s'
17073d_fseeko='$d_fseeko'
17074d_fsetpos='$d_fsetpos'
17075d_fstatfs='$d_fstatfs'
17076d_fstatvfs='$d_fstatvfs'
411ab01c 17077d_fsync='$d_fsync'
b4eb6b3d
JH
17078d_ftello='$d_ftello'
17079d_ftime='$d_ftime'
17080d_getcwd='$d_getcwd'
17081d_getespwnam='$d_getespwnam'
17082d_getfsstat='$d_getfsstat'
17083d_getgrent='$d_getgrent'
17084d_getgrps='$d_getgrps'
17085d_gethbyaddr='$d_gethbyaddr'
17086d_gethbyname='$d_gethbyname'
17087d_gethent='$d_gethent'
17088d_gethname='$d_gethname'
17089d_gethostprotos='$d_gethostprotos'
4e0554ec 17090d_getitimer='$d_getitimer'
b4eb6b3d
JH
17091d_getlogin='$d_getlogin'
17092d_getmnt='$d_getmnt'
17093d_getmntent='$d_getmntent'
17094d_getnbyaddr='$d_getnbyaddr'
17095d_getnbyname='$d_getnbyname'
17096d_getnent='$d_getnent'
17097d_getnetprotos='$d_getnetprotos'
0c0643d0 17098d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
17099d_getpbyname='$d_getpbyname'
17100d_getpbynumber='$d_getpbynumber'
17101d_getpent='$d_getpent'
17102d_getpgid='$d_getpgid'
17103d_getpgrp2='$d_getpgrp2'
17104d_getpgrp='$d_getpgrp'
17105d_getppid='$d_getppid'
17106d_getprior='$d_getprior'
17107d_getprotoprotos='$d_getprotoprotos'
17108d_getprpwnam='$d_getprpwnam'
17109d_getpwent='$d_getpwent'
17110d_getsbyname='$d_getsbyname'
17111d_getsbyport='$d_getsbyport'
17112d_getsent='$d_getsent'
17113d_getservprotos='$d_getservprotos'
17114d_getspnam='$d_getspnam'
17115d_gettimeod='$d_gettimeod'
5f80c64f 17116d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
17117d_grpasswd='$d_grpasswd'
17118d_hasmntopt='$d_hasmntopt'
17119d_htonl='$d_htonl'
b4eb6b3d
JH
17120d_index='$d_index'
17121d_inetaton='$d_inetaton'
17122d_int64_t='$d_int64_t'
17123d_isascii='$d_isascii'
758a5d79
JH
17124d_isfinite='$d_isfinite'
17125d_isinf='$d_isinf'
b4eb6b3d
JH
17126d_isnan='$d_isnan'
17127d_isnanl='$d_isnanl'
17128d_killpg='$d_killpg'
17129d_lchown='$d_lchown'
17130d_ldbl_dig='$d_ldbl_dig'
17131d_link='$d_link'
17132d_locconv='$d_locconv'
17133d_lockf='$d_lockf'
17134d_longdbl='$d_longdbl'
17135d_longlong='$d_longlong'
17136d_lseekproto='$d_lseekproto'
17137d_lstat='$d_lstat'
17138d_madvise='$d_madvise'
17139d_mblen='$d_mblen'
17140d_mbstowcs='$d_mbstowcs'
17141d_mbtowc='$d_mbtowc'
17142d_memchr='$d_memchr'
17143d_memcmp='$d_memcmp'
17144d_memcpy='$d_memcpy'
17145d_memmove='$d_memmove'
17146d_memset='$d_memset'
17147d_mkdir='$d_mkdir'
17148d_mkdtemp='$d_mkdtemp'
17149d_mkfifo='$d_mkfifo'
17150d_mkstemp='$d_mkstemp'
17151d_mkstemps='$d_mkstemps'
17152d_mktime='$d_mktime'
17153d_mmap='$d_mmap'
17154d_modfl='$d_modfl'
e67aeab1 17155d_modfl_pow32_bug='$d_modfl_pow32_bug'
b4eb6b3d
JH
17156d_mprotect='$d_mprotect'
17157d_msg='$d_msg'
17158d_msg_ctrunc='$d_msg_ctrunc'
17159d_msg_dontroute='$d_msg_dontroute'
17160d_msg_oob='$d_msg_oob'
17161d_msg_peek='$d_msg_peek'
17162d_msg_proxy='$d_msg_proxy'
17163d_msgctl='$d_msgctl'
17164d_msgget='$d_msgget'
4e0554ec 17165d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
17166d_msgrcv='$d_msgrcv'
17167d_msgsnd='$d_msgsnd'
17168d_msync='$d_msync'
17169d_munmap='$d_munmap'
17170d_mymalloc='$d_mymalloc'
17171d_nice='$d_nice'
2765b840 17172d_nl_langinfo='$d_nl_langinfo'
b4eb6b3d
JH
17173d_nv_preserves_uv='$d_nv_preserves_uv'
17174d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
17175d_off64_t='$d_off64_t'
17176d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
17177d_oldpthreads='$d_oldpthreads'
17178d_oldsock='$d_oldsock'
17179d_open3='$d_open3'
17180d_pathconf='$d_pathconf'
17181d_pause='$d_pause'
17182d_perl_otherlibdirs='$d_perl_otherlibdirs'
17183d_phostname='$d_phostname'
17184d_pipe='$d_pipe'
17185d_poll='$d_poll'
5f80c64f 17186d_portable='$d_portable'
c7aff470 17187d_procselfexe='$d_procselfexe'
d6483fcc 17188d_pthread_atfork='$d_pthread_atfork'
b4eb6b3d
JH
17189d_pthread_yield='$d_pthread_yield'
17190d_pwage='$d_pwage'
17191d_pwchange='$d_pwchange'
17192d_pwclass='$d_pwclass'
17193d_pwcomment='$d_pwcomment'
17194d_pwexpire='$d_pwexpire'
17195d_pwgecos='$d_pwgecos'
17196d_pwpasswd='$d_pwpasswd'
17197d_pwquota='$d_pwquota'
17198d_qgcvt='$d_qgcvt'
17199d_quad='$d_quad'
17200d_readdir='$d_readdir'
17201d_readlink='$d_readlink'
4e0554ec
JH
17202d_readv='$d_readv'
17203d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
17204d_rename='$d_rename'
17205d_rewinddir='$d_rewinddir'
17206d_rmdir='$d_rmdir'
17207d_safebcpy='$d_safebcpy'
17208d_safemcpy='$d_safemcpy'
17209d_sanemcmp='$d_sanemcmp'
ef9f17be 17210d_sbrkproto='$d_sbrkproto'
b4eb6b3d
JH
17211d_sched_yield='$d_sched_yield'
17212d_scm_rights='$d_scm_rights'
17213d_seekdir='$d_seekdir'
17214d_select='$d_select'
17215d_sem='$d_sem'
17216d_semctl='$d_semctl'
17217d_semctl_semid_ds='$d_semctl_semid_ds'
17218d_semctl_semun='$d_semctl_semun'
17219d_semget='$d_semget'
17220d_semop='$d_semop'
4e0554ec 17221d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
17222d_setegid='$d_setegid'
17223d_seteuid='$d_seteuid'
17224d_setgrent='$d_setgrent'
17225d_setgrps='$d_setgrps'
17226d_sethent='$d_sethent'
4e0554ec 17227d_setitimer='$d_setitimer'
b4eb6b3d
JH
17228d_setlinebuf='$d_setlinebuf'
17229d_setlocale='$d_setlocale'
17230d_setnent='$d_setnent'
17231d_setpent='$d_setpent'
17232d_setpgid='$d_setpgid'
17233d_setpgrp2='$d_setpgrp2'
17234d_setpgrp='$d_setpgrp'
17235d_setprior='$d_setprior'
17236d_setproctitle='$d_setproctitle'
17237d_setpwent='$d_setpwent'
17238d_setregid='$d_setregid'
17239d_setresgid='$d_setresgid'
17240d_setresuid='$d_setresuid'
17241d_setreuid='$d_setreuid'
17242d_setrgid='$d_setrgid'
17243d_setruid='$d_setruid'
17244d_setsent='$d_setsent'
17245d_setsid='$d_setsid'
17246d_setvbuf='$d_setvbuf'
17247d_sfio='$d_sfio'
17248d_shm='$d_shm'
17249d_shmat='$d_shmat'
17250d_shmatprototype='$d_shmatprototype'
17251d_shmctl='$d_shmctl'
17252d_shmdt='$d_shmdt'
17253d_shmget='$d_shmget'
17254d_sigaction='$d_sigaction'
983dbef6 17255d_sigprocmask='$d_sigprocmask'
b4eb6b3d 17256d_sigsetjmp='$d_sigsetjmp'
49a78c82 17257d_sockatmark='$d_sockatmark'
2ef53570 17258d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
17259d_socket='$d_socket'
17260d_socklen_t='$d_socklen_t'
17261d_sockpair='$d_sockpair'
17262d_socks5_init='$d_socks5_init'
17263d_sqrtl='$d_sqrtl'
eef837ea 17264d_sresgproto='$d_sresgproto'
640374d0 17265d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
17266d_statblks='$d_statblks'
17267d_statfs_f_flags='$d_statfs_f_flags'
17268d_statfs_s='$d_statfs_s'
17269d_statvfs='$d_statvfs'
17270d_stdio_cnt_lval='$d_stdio_cnt_lval'
17271d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
17272d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17273d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
17274d_stdio_stream_array='$d_stdio_stream_array'
17275d_stdiobase='$d_stdiobase'
17276d_stdstdio='$d_stdstdio'
17277d_strchr='$d_strchr'
17278d_strcoll='$d_strcoll'
17279d_strctcpy='$d_strctcpy'
17280d_strerrm='$d_strerrm'
17281d_strerror='$d_strerror'
b3c85772 17282d_strftime='$d_strftime'
b4eb6b3d
JH
17283d_strtod='$d_strtod'
17284d_strtol='$d_strtol'
17285d_strtold='$d_strtold'
17286d_strtoll='$d_strtoll'
28e5dec8 17287d_strtoq='$d_strtoq'
b4eb6b3d
JH
17288d_strtoul='$d_strtoul'
17289d_strtoull='$d_strtoull'
17290d_strtouq='$d_strtouq'
17291d_strxfrm='$d_strxfrm'
17292d_suidsafe='$d_suidsafe'
17293d_symlink='$d_symlink'
17294d_syscall='$d_syscall'
2ef53570 17295d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
17296d_sysconf='$d_sysconf'
17297d_sysernlst='$d_sysernlst'
17298d_syserrlst='$d_syserrlst'
17299d_system='$d_system'
17300d_tcgetpgrp='$d_tcgetpgrp'
17301d_tcsetpgrp='$d_tcsetpgrp'
17302d_telldir='$d_telldir'
17303d_telldirproto='$d_telldirproto'
17304d_time='$d_time'
17305d_times='$d_times'
17306d_truncate='$d_truncate'
17307d_tzname='$d_tzname'
4e0554ec
JH
17308d_u32align='$d_u32align'
17309d_ualarm='$d_ualarm'
b4eb6b3d
JH
17310d_umask='$d_umask'
17311d_uname='$d_uname'
17312d_union_semun='$d_union_semun'
758a5d79 17313d_unordered='$d_unordered'
4e0554ec 17314d_usleep='$d_usleep'
2ef53570 17315d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
17316d_ustat='$d_ustat'
17317d_vendorarch='$d_vendorarch'
17318d_vendorbin='$d_vendorbin'
17319d_vendorlib='$d_vendorlib'
17320d_vfork='$d_vfork'
17321d_void_closedir='$d_void_closedir'
17322d_voidsig='$d_voidsig'
17323d_voidtty='$d_voidtty'
17324d_volatile='$d_volatile'
17325d_vprintf='$d_vprintf'
17326d_wait4='$d_wait4'
17327d_waitpid='$d_waitpid'
17328d_wcstombs='$d_wcstombs'
17329d_wctomb='$d_wctomb'
4e0554ec 17330d_writev='$d_writev'
5f80c64f
JH
17331d_xenix='$d_xenix'
17332date='$date'
b4eb6b3d
JH
17333db_hashtype='$db_hashtype'
17334db_prefixtype='$db_prefixtype'
640374d0
JH
17335db_version_major='$db_version_major'
17336db_version_minor='$db_version_minor'
17337db_version_patch='$db_version_patch'
b4eb6b3d
JH
17338defvoidused='$defvoidused'
17339direntrytype='$direntrytype'
17340dlext='$dlext'
5f80c64f 17341dlsrc='$dlsrc'
b4eb6b3d
JH
17342doublesize='$doublesize'
17343drand01='$drand01'
17344dynamic_ext='$dynamic_ext'
17345eagain='$eagain'
17346ebcdic='$ebcdic'
5f80c64f
JH
17347echo='$echo'
17348egrep='$egrep'
17349emacs='$emacs'
17350eunicefix='$eunicefix'
17351exe_ext='$exe_ext'
17352expr='$expr'
b4eb6b3d 17353extensions='$extensions'
6fcddf3b 17354extras='$extras'
b4eb6b3d
JH
17355fflushNULL='$fflushNULL'
17356fflushall='$fflushall'
5f80c64f
JH
17357find='$find'
17358firstmakefile='$firstmakefile'
17359flex='$flex'
b4eb6b3d
JH
17360fpossize='$fpossize'
17361fpostype='$fpostype'
17362freetype='$freetype'
5440bc8e 17363from='$from'
b4eb6b3d
JH
17364full_ar='$full_ar'
17365full_csh='$full_csh'
17366full_sed='$full_sed'
5b463ca7 17367gccosandvers='$gccosandvers'
5f80c64f 17368gccversion='$gccversion'
b4eb6b3d
JH
17369gidformat='$gidformat'
17370gidsign='$gidsign'
17371gidsize='$gidsize'
17372gidtype='$gidtype'
5f80c64f 17373glibpth='$glibpth'
3c728e00 17374gmake='$gmake'
5f80c64f 17375grep='$grep'
b4eb6b3d
JH
17376groupcat='$groupcat'
17377groupstype='$groupstype'
5f80c64f 17378gzip='$gzip'
b4eb6b3d
JH
17379h_fcntl='$h_fcntl'
17380h_sysfile='$h_sysfile'
5f80c64f 17381hint='$hint'
b4eb6b3d
JH
17382hostcat='$hostcat'
17383i16size='$i16size'
17384i16type='$i16type'
17385i32size='$i32size'
17386i32type='$i32type'
17387i64size='$i64size'
17388i64type='$i64type'
17389i8size='$i8size'
17390i8type='$i8type'
17391i_arpainet='$i_arpainet'
17392i_bsdioctl='$i_bsdioctl'
17393i_db='$i_db'
17394i_dbm='$i_dbm'
17395i_dirent='$i_dirent'
5f80c64f 17396i_dld='$i_dld'
b4eb6b3d
JH
17397i_dlfcn='$i_dlfcn'
17398i_fcntl='$i_fcntl'
17399i_float='$i_float'
758a5d79
JH
17400i_fp='$i_fp'
17401i_fp_class='$i_fp_class'
b4eb6b3d
JH
17402i_gdbm='$i_gdbm'
17403i_grp='$i_grp'
b4eb6b3d
JH
17404i_ieeefp='$i_ieeefp'
17405i_inttypes='$i_inttypes'
2765b840 17406i_langinfo='$i_langinfo'
b4eb6b3d
JH
17407i_libutil='$i_libutil'
17408i_limits='$i_limits'
17409i_locale='$i_locale'
17410i_machcthr='$i_machcthr'
17411i_malloc='$i_malloc'
17412i_math='$i_math'
17413i_memory='$i_memory'
17414i_mntent='$i_mntent'
17415i_ndbm='$i_ndbm'
17416i_netdb='$i_netdb'
17417i_neterrno='$i_neterrno'
17418i_netinettcp='$i_netinettcp'
17419i_niin='$i_niin'
17420i_poll='$i_poll'
17421i_prot='$i_prot'
17422i_pthread='$i_pthread'
17423i_pwd='$i_pwd'
17424i_rpcsvcdbm='$i_rpcsvcdbm'
17425i_sfio='$i_sfio'
17426i_sgtty='$i_sgtty'
17427i_shadow='$i_shadow'
17428i_socks='$i_socks'
17429i_stdarg='$i_stdarg'
17430i_stddef='$i_stddef'
17431i_stdlib='$i_stdlib'
17432i_string='$i_string'
17433i_sunmath='$i_sunmath'
17434i_sysaccess='$i_sysaccess'
17435i_sysdir='$i_sysdir'
17436i_sysfile='$i_sysfile'
17437i_sysfilio='$i_sysfilio'
17438i_sysin='$i_sysin'
17439i_sysioctl='$i_sysioctl'
17440i_syslog='$i_syslog'
17441i_sysmman='$i_sysmman'
17442i_sysmode='$i_sysmode'
17443i_sysmount='$i_sysmount'
17444i_sysndir='$i_sysndir'
17445i_sysparam='$i_sysparam'
17446i_sysresrc='$i_sysresrc'
17447i_syssecrt='$i_syssecrt'
17448i_sysselct='$i_sysselct'
17449i_syssockio='$i_syssockio'
17450i_sysstat='$i_sysstat'
17451i_sysstatfs='$i_sysstatfs'
17452i_sysstatvfs='$i_sysstatvfs'
17453i_systime='$i_systime'
17454i_systimek='$i_systimek'
17455i_systimes='$i_systimes'
17456i_systypes='$i_systypes'
17457i_sysuio='$i_sysuio'
17458i_sysun='$i_sysun'
17459i_sysutsname='$i_sysutsname'
17460i_sysvfs='$i_sysvfs'
17461i_syswait='$i_syswait'
17462i_termio='$i_termio'
17463i_termios='$i_termios'
17464i_time='$i_time'
17465i_unistd='$i_unistd'
17466i_ustat='$i_ustat'
17467i_utime='$i_utime'
17468i_values='$i_values'
17469i_varargs='$i_varargs'
17470i_varhdr='$i_varhdr'
17471i_vfork='$i_vfork'
5f80c64f 17472ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
17473inc_version_list='$inc_version_list'
17474inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
17475incpath='$incpath'
17476inews='$inews'
b4eb6b3d
JH
17477installarchlib='$installarchlib'
17478installbin='$installbin'
17479installman1dir='$installman1dir'
17480installman3dir='$installman3dir'
17481installprefix='$installprefix'
17482installprefixexp='$installprefixexp'
17483installprivlib='$installprivlib'
17484installscript='$installscript'
17485installsitearch='$installsitearch'
17486installsitebin='$installsitebin'
17487installsitelib='$installsitelib'
17488installstyle='$installstyle'
17489installusrbinperl='$installusrbinperl'
17490installvendorarch='$installvendorarch'
17491installvendorbin='$installvendorbin'
17492installvendorlib='$installvendorlib'
17493intsize='$intsize'
4b661809 17494issymlink='$issymlink'
b4eb6b3d
JH
17495ivdformat='$ivdformat'
17496ivsize='$ivsize'
17497ivtype='$ivtype'
17498known_extensions='$known_extensions'
5f80c64f 17499ksh='$ksh'
5f80c64f
JH
17500ld='$ld'
17501lddlflags='$lddlflags'
17502ldflags='$ldflags'
b4eb6b3d
JH
17503ldflags_uselargefiles='$ldflags_uselargefiles'
17504ldlibpthname='$ldlibpthname'
5f80c64f
JH
17505less='$less'
17506lib_ext='$lib_ext'
17507libc='$libc'
b4eb6b3d 17508libperl='$libperl'
5f80c64f
JH
17509libpth='$libpth'
17510libs='$libs'
43999f95
JH
17511libsdirs='$libsdirs'
17512libsfiles='$libsfiles'
17513libsfound='$libsfound'
13b3f787 17514libspath='$libspath'
5f80c64f 17515libswanted='$libswanted'
b4eb6b3d 17516libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
17517line='$line'
17518lint='$lint'
17519lkflags='$lkflags'
17520ln='$ln'
17521lns='$lns'
17522locincpth='$locincpth'
17523loclibpth='$loclibpth'
b4eb6b3d
JH
17524longdblsize='$longdblsize'
17525longlongsize='$longlongsize'
17526longsize='$longsize'
5f80c64f
JH
17527lp='$lp'
17528lpr='$lpr'
17529ls='$ls'
b4eb6b3d
JH
17530lseeksize='$lseeksize'
17531lseektype='$lseektype'
5f80c64f
JH
17532mail='$mail'
17533mailx='$mailx'
17534make='$make'
17535make_set_make='$make_set_make'
b4eb6b3d
JH
17536mallocobj='$mallocobj'
17537mallocsrc='$mallocsrc'
17538malloctype='$malloctype'
17539man1dir='$man1dir'
17540man1direxp='$man1direxp'
17541man1ext='$man1ext'
17542man3dir='$man3dir'
17543man3direxp='$man3direxp'
17544man3ext='$man3ext'
5f80c64f
JH
17545mips_type='$mips_type'
17546mkdir='$mkdir'
b4eb6b3d
JH
17547mmaptype='$mmaptype'
17548modetype='$modetype'
5f80c64f 17549more='$more'
b4eb6b3d 17550multiarch='$multiarch'
5f80c64f 17551mv='$mv'
b4eb6b3d
JH
17552myarchname='$myarchname'
17553mydomain='$mydomain'
17554myhostname='$myhostname'
5f80c64f
JH
17555myuname='$myuname'
17556n='$n'
2cc61e15 17557need_va_copy='$need_va_copy'
b4eb6b3d
JH
17558netdb_hlen_type='$netdb_hlen_type'
17559netdb_host_type='$netdb_host_type'
17560netdb_name_type='$netdb_name_type'
17561netdb_net_type='$netdb_net_type'
5f80c64f
JH
17562nm='$nm'
17563nm_opt='$nm_opt'
17564nm_so_opt='$nm_so_opt'
b4eb6b3d 17565nonxs_ext='$nonxs_ext'
5f80c64f 17566nroff='$nroff'
b4eb6b3d
JH
17567nvEUformat='$nvEUformat'
17568nvFUformat='$nvFUformat'
17569nvGUformat='$nvGUformat'
17570nveformat='$nveformat'
17571nvfformat='$nvfformat'
17572nvgformat='$nvgformat'
17573nvsize='$nvsize'
17574nvtype='$nvtype'
17575o_nonblock='$o_nonblock'
5f80c64f 17576obj_ext='$obj_ext'
b4eb6b3d 17577old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 17578optimize='$optimize'
b4eb6b3d 17579orderlib='$orderlib'
5f80c64f
JH
17580osname='$osname'
17581osvers='$osvers'
b4eb6b3d 17582otherlibdirs='$otherlibdirs'
5f80c64f 17583package='$package'
b4eb6b3d
JH
17584pager='$pager'
17585passcat='$passcat'
17586patchlevel='$patchlevel'
5f80c64f 17587path_sep='$path_sep'
b4eb6b3d 17588perl5='$perl5'
5f80c64f 17589perl='$perl'
151e6568 17590perl_patchlevel='$perl_patchlevel'
b4eb6b3d 17591perladmin='$perladmin'
9c839522 17592perllibs='$perllibs'
b4eb6b3d 17593perlpath='$perlpath'
5f80c64f 17594pg='$pg'
b4eb6b3d
JH
17595phostname='$phostname'
17596pidtype='$pidtype'
5f80c64f 17597plibpth='$plibpth'
b4eb6b3d 17598pm_apiversion='$pm_apiversion'
5f80c64f
JH
17599pmake='$pmake'
17600pr='$pr'
b4eb6b3d
JH
17601prefix='$prefix'
17602prefixexp='$prefixexp'
17603privlib='$privlib'
17604privlibexp='$privlibexp'
f24dbf84 17605procselfexe='$procselfexe'
b4eb6b3d
JH
17606prototype='$prototype'
17607ptrsize='$ptrsize'
17608quadkind='$quadkind'
17609quadtype='$quadtype'
17610randbits='$randbits'
17611randfunc='$randfunc'
17612randseedtype='$randseedtype'
17613ranlib='$ranlib'
17614rd_nodata='$rd_nodata'
17615revision='$revision'
5f80c64f
JH
17616rm='$rm'
17617rmail='$rmail'
5440bc8e 17618run='$run'
5f80c64f 17619runnm='$runnm'
b4eb6b3d
JH
17620sPRIEUldbl='$sPRIEUldbl'
17621sPRIFUldbl='$sPRIFUldbl'
17622sPRIGUldbl='$sPRIGUldbl'
17623sPRIXU64='$sPRIXU64'
17624sPRId64='$sPRId64'
17625sPRIeldbl='$sPRIeldbl'
17626sPRIfldbl='$sPRIfldbl'
17627sPRIgldbl='$sPRIgldbl'
17628sPRIi64='$sPRIi64'
17629sPRIo64='$sPRIo64'
17630sPRIu64='$sPRIu64'
17631sPRIx64='$sPRIx64'
17632sSCNfldbl='$sSCNfldbl'
17633sched_yield='$sched_yield'
17634scriptdir='$scriptdir'
17635scriptdirexp='$scriptdirexp'
5f80c64f 17636sed='$sed'
b4eb6b3d
JH
17637seedfunc='$seedfunc'
17638selectminbits='$selectminbits'
17639selecttype='$selecttype'
5f80c64f
JH
17640sendmail='$sendmail'
17641sh='$sh'
17642shar='$shar'
17643sharpbang='$sharpbang'
b4eb6b3d
JH
17644shmattype='$shmattype'
17645shortsize='$shortsize'
17646shrpenv='$shrpenv'
5f80c64f 17647shsharp='$shsharp'
b4eb6b3d
JH
17648sig_count='$sig_count'
17649sig_name='$sig_name'
17650sig_name_init='$sig_name_init'
17651sig_num='$sig_num'
17652sig_num_init='$sig_num_init'
76d3c696 17653sig_size='$sig_size'
b4eb6b3d
JH
17654signal_t='$signal_t'
17655sitearch='$sitearch'
17656sitearchexp='$sitearchexp'
17657sitebin='$sitebin'
17658sitebinexp='$sitebinexp'
17659sitelib='$sitelib'
17660sitelib_stem='$sitelib_stem'
17661sitelibexp='$sitelibexp'
17662siteprefix='$siteprefix'
17663siteprefixexp='$siteprefixexp'
17664sizesize='$sizesize'
17665sizetype='$sizetype'
5f80c64f
JH
17666sleep='$sleep'
17667smail='$smail'
5f80c64f 17668so='$so'
b4eb6b3d
JH
17669sockethdr='$sockethdr'
17670socketlib='$socketlib'
17671socksizetype='$socksizetype'
5f80c64f
JH
17672sort='$sort'
17673spackage='$spackage'
17674spitshell='$spitshell'
5f80c64f 17675src='$src'
b4eb6b3d
JH
17676ssizetype='$ssizetype'
17677startperl='$startperl'
5f80c64f 17678startsh='$startsh'
b4eb6b3d
JH
17679static_ext='$static_ext'
17680stdchar='$stdchar'
17681stdio_base='$stdio_base'
17682stdio_bufsiz='$stdio_bufsiz'
17683stdio_cnt='$stdio_cnt'
17684stdio_filbuf='$stdio_filbuf'
17685stdio_ptr='$stdio_ptr'
17686stdio_stream_array='$stdio_stream_array'
17687strings='$strings'
5f80c64f 17688submit='$submit'
b4eb6b3d
JH
17689subversion='$subversion'
17690sysman='$sysman'
5f80c64f
JH
17691tail='$tail'
17692tar='$tar'
5440bc8e 17693targetarch='$targetarch'
5f80c64f
JH
17694tbl='$tbl'
17695tee='$tee'
17696test='$test'
b4eb6b3d
JH
17697timeincl='$timeincl'
17698timetype='$timetype'
5440bc8e 17699to='$to'
5f80c64f
JH
17700touch='$touch'
17701tr='$tr'
17702trnl='$trnl'
17703troff='$troff'
b4eb6b3d
JH
17704u16size='$u16size'
17705u16type='$u16type'
17706u32size='$u32size'
17707u32type='$u32type'
17708u64size='$u64size'
17709u64type='$u64type'
17710u8size='$u8size'
17711u8type='$u8type'
17712uidformat='$uidformat'
17713uidsign='$uidsign'
17714uidsize='$uidsize'
17715uidtype='$uidtype'
5f80c64f
JH
17716uname='$uname'
17717uniq='$uniq'
b4eb6b3d
JH
17718uquadtype='$uquadtype'
17719use5005threads='$use5005threads'
17720use64bitall='$use64bitall'
17721use64bitint='$use64bitint'
5440bc8e 17722usecrosscompile='$usecrosscompile'
5f80c64f 17723usedl='$usedl'
b4eb6b3d
JH
17724useithreads='$useithreads'
17725uselargefiles='$uselargefiles'
17726uselongdouble='$uselongdouble'
17727usemorebits='$usemorebits'
17728usemultiplicity='$usemultiplicity'
17729usemymalloc='$usemymalloc'
5f80c64f 17730usenm='$usenm'
b4eb6b3d
JH
17731useopcode='$useopcode'
17732useperlio='$useperlio'
17733useposix='$useposix'
9514c62b 17734usereentrant='$usereentrant'
b4eb6b3d
JH
17735usesfio='$usesfio'
17736useshrplib='$useshrplib'
29209bc5 17737usesocks='$usesocks'
b4eb6b3d
JH
17738usethreads='$usethreads'
17739usevendorprefix='$usevendorprefix'
17740usevfork='$usevfork'
5f80c64f
JH
17741usrinc='$usrinc'
17742uuname='$uuname'
b4eb6b3d
JH
17743uvXUformat='$uvXUformat'
17744uvoformat='$uvoformat'
17745uvsize='$uvsize'
17746uvtype='$uvtype'
17747uvuformat='$uvuformat'
17748uvxformat='$uvxformat'
17749vendorarch='$vendorarch'
17750vendorarchexp='$vendorarchexp'
17751vendorbin='$vendorbin'
17752vendorbinexp='$vendorbinexp'
17753vendorlib='$vendorlib'
17754vendorlib_stem='$vendorlib_stem'
17755vendorlibexp='$vendorlibexp'
17756vendorprefix='$vendorprefix'
17757vendorprefixexp='$vendorprefixexp'
17758version='$version'
861eb78d 17759version_patchlevel_string='$version_patchlevel_string'
d56c5707 17760versiononly='$versiononly'
5f80c64f 17761vi='$vi'
b4eb6b3d 17762voidflags='$voidflags'
5f80c64f 17763xlibpth='$xlibpth'
b4eb6b3d 17764xs_apiversion='$xs_apiversion'
3659ebf1
JH
17765yacc='$yacc'
17766yaccflags='$yaccflags'
5f80c64f
JH
17767zcat='$zcat'
17768zip='$zip'
17769EOT
17770
17771: Add in command line options if available
17772$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17773
17774: add special variables
17775$test -f $src/patchlevel.h && \
d00b958f 17776awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 17777echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 17778echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
17779
17780: propagate old symbols
17781if $test -f UU/config.sh; then
381aa1ff 17782 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 17783 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 17784 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
17785 set X `cat UU/oldsyms`
17786 shift
17787 case $# in
17788 0) ;;
17789 *)
17790 cat <<EOM
17791Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17792EOM
17793 echo "# Variables propagated from previous config.sh file." >>config.sh
17794 for sym in `cat UU/oldsyms`; do
17795 echo " Propagating $hint variable "'$'"$sym..."
17796 eval 'tmp="$'"${sym}"'"'
17797 echo "$tmp" | \
17798 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17799 done
17800 ;;
17801 esac
17802fi
17803
17804: Finish up by extracting the .SH files
17805case "$alldone" in
17806exit)
17807 $rm -rf UU
24ccb310 17808 echo "Extraction done."
5f80c64f
JH
17809 exit 0
17810 ;;
17811cont)
17812 ;;
17813'')
17814 dflt=''
17815 nostick=true
17816 $cat <<EOM
17817
17818If you'd like to make any changes to the config.sh file before I begin
17819to configure things, do it as a shell escape now (e.g. !vi config.sh).
17820
17821EOM
17822 rp="Press return or use a shell escape to edit config.sh:"
17823 . UU/myread
17824 nostick=''
17825 case "$ans" in
17826 '') ;;
17827 *) : in case they cannot read
17828 sh 1>&4 -c "$ans";;
17829 esac
17830 ;;
17831esac
17832
17833: if this fails, just run all the .SH files by hand
17834. ./config.sh
17835
17836echo " "
17837exec 1>&4
a43e8593 17838pwd=`pwd`
5f80c64f 17839. ./UU/extract
6904989c 17840cd "$pwd"
5f80c64f
JH
17841
17842if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17843 dflt=y
17844 case "$silent" in
17845 true) ;;
17846 *)
17847 $cat <<EOM
17848
17849Now you need to generate make dependencies by running "$make depend".
17850You might prefer to run it in background: "$make depend > makedepend.out &"
17851It can take a while, so you might not want to run it right now.
17852
17853EOM
17854 ;;
17855 esac
17856 rp="Run $make depend now?"
17857 . UU/myread
17858 case "$ans" in
17859 y*)
3d5d58b1 17860 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
17861 ;;
17862 *)
17863 echo "You must run '$make depend' then '$make'."
17864 ;;
17865 esac
17866elif test -f [Mm]akefile; then
17867 echo " "
17868 echo "Now you must run a $make."
17869else
24ccb310 17870 echo "Configure done."
5f80c64f
JH
17871fi
17872
17873if $test -f Policy.sh; then
17874 $cat <<EOM
17875
17876If you compile $package on a different machine or from a different object
17877directory, copy the Policy.sh file from this object directory to the
17878new one before you run Configure -- this will help you with most of
17879the policy defaults.
17880
17881EOM
17882fi
17883if $test -f config.msg; then
17884 echo "Hmm. I also noted the following information while running:"
17885 echo " "
17886 $cat config.msg >&4
17887 $rm -f config.msg
17888fi
17889$rm -f kit*isdone ark*isdone
17890$rm -rf UU
17891
17892: End of Configure
17893