This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: For 5.7.3, known failure for rel2abs2rel.t on FreeBSD 4.5
[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#
a3c02183 23# Generated on Mon Mar 4 21:46:28 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 1039: Set executable suffix now -- needed before hints available
6153ba32
PG
1040if test -f "/libs/version.library"; then
1041: Amiga OS
1042 _exe=""
1043elif test -f "/system/gnu_library/bin/ar.pm"; then
1044: Stratus VOS
cfb04860 1045 _exe=".pm"
6153ba32
PG
1046elif test -n "$DJGPP"; then
1047: DOS DJGPP
cfb04860 1048 _exe=".exe"
6153ba32 1049elif test -d c:/. ; then
506faf56 1050: OS/2 or cygwin
ba863942
JH
1051 _exe=".exe"
1052fi
868439a2 1053
b4eb6b3d 1054i_whoami=''
a33c94aa
JH
1055ccname=''
1056ccversion=''
1057perllibs=''
1058: set useposix=false in your hint file to disable the POSIX extension.
1059useposix=true
1060: set useopcode=false in your hint file to disable the Opcode extension.
1061useopcode=true
1062: Trailing extension. Override this in a hint file, if needed.
a33c94aa
JH
1063: Extra object files, if any, needed on this platform.
1064archobjs=''
1065archname=''
ff935051
JH
1066: Possible local include directories to search.
1067: Set locincpth to "" in a hint file to defeat local include searches.
1068locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1069locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1070:
1071: no include file wanted by default
1072inclwanted=''
1073
b4eb6b3d 1074groupstype=''
64615a5e 1075libnames=''
732c9516
JH
1076: change the next line if compiling for Xenix/286 on Xenix/386
1077xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1078: Possible local library directories to search.
1079loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1080loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1081
1082: general looking path for locating libraries
5869b1f1 1083glibpth="/lib /usr/lib $xlibpth"
732c9516 1084glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1085test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1086test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1087
1088: Private path used by Configure to find libraries. Its value
1089: is prepended to libpth. This variable takes care of special
1090: machines, like the mips. Usually, it should be empty.
1091plibpth=''
1092
1cfa4ec7
GS
1093: default library list
1094libswanted=''
921b2963 1095: some systems want to use only the non-versioned libso:s
1cfa4ec7 1096ignore_versioned_solibs=''
b4eb6b3d
JH
1097archname64=''
1098ccflags_uselargefiles=''
1099ldflags_uselargefiles=''
1100libswanted_uselargefiles=''
1101: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1102: set usesocks on the Configure command line to enable socks.
b4eb6b3d 1103: set usethreads on the Configure command line to enable threads.
cd040c5e 1104usereentrant='undef'
a33c94aa
JH
1105: full support for void wanted by default
1106defvoidused=15
1107
ecfc5424 1108: List of libraries we want.
693762b4 1109: If anyone needs -lnet, put it in a hint file.
997d70a2 1110libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1111libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1112libswanted="$libswanted ndir dir crypt sec"
e61ecf27 1113libswanted="$libswanted ucb bsd BSD PW x util"
1aef975c 1114: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1115: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1116glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1117glibpth="/usr/shlib $glibpth"
1118: Do not use vfork unless overridden by a hint file.
1119usevfork=false
1120
8ff267be 1121: Find the basic shell for Bourne shell scripts
1122case "$sh" in
1123'')
8ff267be 1124 case "$SYSTYPE" in
1125 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1126 *) xxx='/bin/sh';;
1127 esac
1128 if test -f "$xxx"; then
1129 sh="$xxx"
1130 else
1131 : Build up a list and do a single loop so we can 'break' out.
1132 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1133 for xxx in sh bash ksh pdksh ash; do
1134 for p in $pth; do
1135 try="$try ${p}/${xxx}"
1136 done
1137 done
1138 for xxx in $try; do
1139 if test -f "$xxx"; then
1140 sh="$xxx";
8ff267be 1141 break
a5a94ea5
JH
1142 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1143 sh="$xxx";
1144 break
8ff267be 1145 elif test -f "$xxx.exe"; then
1146 sh="$xxx";
8ff267be 1147 break
1148 fi
1149 done
1150 fi
1151 ;;
1152esac
1153
1154case "$sh" in
a33c94aa 1155'') cat >&2 <<EOM
8ff267be 1156$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1157
8ff267be 1158Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1159Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1160we'll try to straighten this all out.
8ff267be 1161EOM
1162 exit 1
1163 ;;
1164esac
1165
760ac839 1166: see if sh knows # comments
73614538 1167if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1168 shsharp=true
1169 spitshell=cat
760ac839 1170 xcat=/bin/cat
a931254c
JH
1171 test -f $xcat$_exe || xcat=/usr/bin/cat
1172 if test ! -f $xcat$_exe; then
4bdb8fb5 1173 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
a931254c 1174 if test -f $p/cat$_exe; then
1deb0a86 1175 xcat=$p/cat
3c728e00
JH
1176 break
1177 fi
1178 done
1deb0a86
JH
1179 if test ! -f $xcat$_exe; then
1180 echo "Can't find cat anywhere!"
3c728e00
JH
1181 exit 1
1182 fi
1183 fi
5440bc8e
JH
1184 echo "#!$xcat" >sharp
1185 $eunicefix sharp
1186 chmod +x sharp
1187 ./sharp > today
760ac839 1188 if test -s today; then
760ac839
LW
1189 sharpbang='#!'
1190 else
5440bc8e
JH
1191 echo "#! $xcat" > sharp
1192 $eunicefix sharp
1193 chmod +x sharp
1194 ./sharp > today
760ac839 1195 if test -s today; then
760ac839
LW
1196 sharpbang='#! '
1197 else
760ac839
LW
1198 sharpbang=': use '
1199 fi
1200 fi
1201else
dfe9444c 1202 echo " "
8ff267be 1203 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1204 shsharp=false
1205 cd ..
1206 echo "exec grep -v '^[ ]*#'" >spitshell
1207 chmod +x spitshell
1208 $eunicefix spitshell
1209 spitshell=`pwd`/spitshell
1210 cd UU
1211 echo "I presume that if # doesn't work, #! won't work either!"
1212 sharpbang=': use '
1213fi
5440bc8e 1214rm -f sharp today
760ac839
LW
1215
1216: figure out how to guarantee sh startup
8ff267be 1217case "$startsh" in
1218'') startsh=${sharpbang}${sh} ;;
1219*)
760ac839 1220esac
5440bc8e 1221cat >sharp <<EOSS
760ac839
LW
1222$startsh
1223set abc
1224test "$?abc" != 1
1225EOSS
1226
5440bc8e
JH
1227chmod +x sharp
1228$eunicefix sharp
1229if ./sharp; then
8ff267be 1230 : echo "Yup, it does."
760ac839 1231else
dfe9444c
AD
1232 echo "Hmm... '$startsh' does not guarantee sh startup..."
1233 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1234fi
5440bc8e 1235rm -f sharp
760ac839 1236
aebf16e7
AD
1237
1238: Save command line options in file UU/cmdline.opt for later use in
1239: generating config.sh.
1240cat > cmdline.opt <<EOSH
1241# Configure command line arguments.
1242config_arg0='$0'
1243config_args='$*'
1244config_argc=$#
1245EOSH
1246argn=1
ee45ea83
IZ
1247args_exp=''
1248args_sep=''
aebf16e7
AD
1249for arg in "$@"; do
1250 cat >>cmdline.opt <<EOSH
1251config_arg$argn='$arg'
1252EOSH
ee45ea83
IZ
1253 # Extreme backslashitis: replace each ' by '"'"'
1254 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1255$arg
1256EOC
1257 arg_exp=`cat cmdl.opt`
1258 args_exp="$args_exp$args_sep'$arg_exp'"
aebf16e7 1259 argn=`expr $argn + 1`
ee45ea83 1260 args_sep=' '
aebf16e7 1261done
ee45ea83
IZ
1262# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1263# used by ./hints/os2.sh
1264rm -f cmdl.opt
aebf16e7 1265
2304df62
AD
1266: produce awk script to parse command line options
1267cat >options.awk <<'EOF'
1268BEGIN {
02e93a22 1269 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1270
1271 len = length(optstr);
1272 for (i = 1; i <= len; i++) {
1273 c = substr(optstr, i, 1);
1274 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1275 if (a == ":") {
1276 arg[c] = 1;
1277 i++;
1278 }
1279 opt[c] = 1;
1280 }
1281}
1282{
1283 expect = 0;
1284 str = $0;
1285 if (substr(str, 1, 1) != "-") {
1286 printf("'%s'\n", str);
1287 next;
1288 }
1289 len = length($0);
1290 for (i = 2; i <= len; i++) {
1291 c = substr(str, i, 1);
1292 if (!opt[c]) {
1293 printf("-%s\n", substr(str, i));
1294 next;
1295 }
1296 printf("-%s\n", c);
1297 if (arg[c]) {
1298 if (i < len)
1299 printf("'%s'\n", substr(str, i + 1));
1300 else
1301 expect = 1;
1302 next;
1303 }
1304 }
1305}
1306END {
1307 if (expect)
1308 print "?";
1309}
1310EOF
1311
1312: process the command line options
4633a7c4
LW
1313set X `for arg in "$@"; do echo "X$arg"; done |
1314 sed -e s/X// | awk -f options.awk`
2304df62
AD
1315eval "set $*"
1316shift
1317rm -f options.awk
1318
1319: set up default values
1320fastread=''
1321reuseval=false
1322config_sh=''
1323alldone=''
1324error=''
1325silent=''
1326extractsh=''
ecfc5424 1327override=''
16d20bd9 1328knowitall=''
02e93a22 1329rm -f optdef.sh posthint.sh
28757baa 1330cat >optdef.sh <<EOS
1331$startsh
1332EOS
2304df62 1333
dfe9444c 1334
2304df62
AD
1335: option parsing
1336while test $# -gt 0; do
1337 case "$1" in
1338 -d) shift; fastread=yes;;
1339 -e) shift; alldone=cont;;
1340 -f)
1341 shift
1342 cd ..
1343 if test -r "$1"; then
1344 config_sh="$1"
1345 else
a0d0e21e 1346 echo "$me: cannot read config file $1." >&2
2304df62
AD
1347 error=true
1348 fi
1349 cd UU
1350 shift;;
1351 -h) shift; error=true;;
1352 -r) shift; reuseval=true;;
dfe9444c 1353 -s) shift; silent=true; realsilent=true;;
2304df62 1354 -E) shift; alldone=exit;;
16d20bd9 1355 -K) shift; knowitall=true;;
ecfc5424 1356 -O) shift; override=true;;
dfe9444c 1357 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1358 -D)
1359 shift
1360 case "$1" in
1361 *=)
1362 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1363 echo "$me: ignoring -D $1" >&2
1364 ;;
ecfc5424 1365 *=*) echo "$1" | \
1aef975c
AD
1366 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1367 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1368 esac
1369 shift
1370 ;;
1371 -U)
1372 shift
1373 case "$1" in
1aef975c 1374 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1375 *=*)
1376 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1377 echo "$me: ignoring -U $1" >&2
1378 ;;
1aef975c 1379 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1380 esac
1381 shift
1382 ;;
02e93a22
JH
1383 -A)
1384 shift
1385 xxx=''
1386 yyy="$1"
02e93a22 1387 zzz=''
5f83a3e9 1388 uuu=undef
02e93a22 1389 case "$yyy" in
5f83a3e9
JH
1390 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1391 case "$zzz" in
1392 *:*) zzz='' ;;
1393 *) xxx=append
1394 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1395 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1396 esac
1397 ;;
1398 esac
1399 case "$xxx" in
1400 '') case "$yyy" in
1401 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1402 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1403 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1404 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1405 *) xxx=`echo $yyy|sed 's!:.*!!'`
1406 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1407 esac
1408 ;;
1409 esac
02e93a22
JH
1410 case "$xxx" in
1411 append)
5f83a3e9 1412 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1413 clear)
5f83a3e9 1414 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1415 define)
1416 case "$zzz" in
1417 '') zzz=define ;;
1418 esac
5f83a3e9 1419 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1420 eval)
5f83a3e9 1421 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1422 prepend)
5f83a3e9 1423 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1424 undef)
1425 case "$zzz" in
1426 '') zzz="$uuu" ;;
1427 esac
5f83a3e9
JH
1428 echo "$yyy=$zzz" >> posthint.sh ;;
1429 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1430 esac
bde6b06b 1431 shift
02e93a22 1432 ;;
dfe9444c 1433 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1434 exit 0;;
2304df62 1435 --) break;;
a0d0e21e 1436 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1437 *) break;;
1438 esac
1439done
1440
1441case "$error" in
1442true)
1443 cat >&2 <<EOM
2afac517 1444Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1445 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1446 -d : use defaults for all answers.
1447 -e : go on without questioning past the production of config.sh.
1448 -f : specify an alternate default configuration file.
1449 -h : print this help message and exit (with an error status).
1450 -r : reuse C symbols value if possible (skips costly nm extraction).
1451 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1452 -D : define symbol to have some value:
1453 -D symbol symbol gets the value 'define'
1454 -D symbol=value symbol gets the value 'value'
2304df62 1455 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1456 -K : do not use unless you know what you are doing.
ecfc5424 1457 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1458 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1459 -U : undefine symbol:
1460 -U symbol symbol gets the value 'undef'
1461 -U symbol= symbol gets completely empty
02e93a22 1462 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1463 -A symbol=value append " "value to symbol
02e93a22
JH
1464 -A append:symbol=value append value to symbol
1465 -A define:symbol=value define symbol to have value
02e93a22
JH
1466 -A clear:symbol define symbol to be ''
1467 -A define:symbol define symbol to be 'define'
1468 -A eval:symbol=value define symbol to be eval of value
1469 -A prepend:symbol=value prepend value to symbol
1470 -A undef:symbol define symbol to be 'undef'
1471 -A undef:symbol= define symbol to be ''
2304df62
AD
1472 -V : print version number and exit (with a zero status).
1473EOM
1474 exit 1
1475 ;;
1476esac
1477
dfe9444c
AD
1478: Sanity checks
1479case "$fastread$alldone" in
1480yescont|yesexit) ;;
1481*)
aaeb8e51
GS
1482 case "$extractsh" in
1483 true) ;;
1484 *)
1485 if test ! -t 0; then
1486 echo "Say 'sh Configure', not 'sh <Configure'"
1487 exit 1
1488 fi
1489 ;;
1490 esac
dfe9444c
AD
1491 ;;
1492esac
1493
2304df62
AD
1494exec 4>&1
1495case "$silent" in
1496true) exec 1>/dev/null;;
1497esac
1498
ecfc5424 1499: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1500touch optdef.sh
1501. ./optdef.sh
02e93a22
JH
1502: create the posthint manipulation script and leave the file out there...
1503touch posthint.sh
a0d0e21e 1504
2304df62 1505: set package name
85e6fe83 1506package=perl5
b4eb6b3d
JH
1507first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1508last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1509case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1510ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1511*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1512esac
2304df62 1513
2304df62
AD
1514: Some greps do not return status, grrr.
1515echo "grimblepritz" >grimble
1516if grep blurfldyick grimble >/dev/null 2>&1 ; then
1517 contains=contains
1518elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1519 contains=grep
1520else
1521 contains=contains
1522fi
1523rm -f grimble
1524: the following should work in any shell
1525case "$contains" in
1526contains*)
1527 echo " "
1528 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1529 cat >contains <<'EOSS'
1530grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1531EOSS
1532chmod +x contains
1533esac
1534
dfe9444c
AD
1535: Find the path to the source tree
1536case "$src" in
1537'') case "$0" in
b233458b
JH
1538 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1539 case "$src" in
1540 /*) ;;
8504afb7 1541 .) ;;
b233458b
JH
1542 *) src=`cd ../$src && pwd` ;;
1543 esac
1544 ;;
dfe9444c
AD
1545 *) src='.';;
1546 esac;;
1547esac
1548case "$src" in
1549'') src=/
1550 rsrc=/
1551 ;;
1552/*) rsrc="$src";;
1553*) rsrc="../$src";;
1554esac
1555if test -f $rsrc/Configure && \
1556 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1557then
1558 : found it, so we are ok.
1559else
1560 rsrc=''
1561 for src in . .. ../.. ../../.. ../../../..; do
1562 if test -f ../$src/Configure && \
1563 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1564 then
1565 rsrc=../$src
1566 break
1567 fi
1568 done
1569fi
1570case "$rsrc" in
1571'')
1572 cat <<EOM >&4
1573
1574Sorry, I can't seem to locate the source dir for $package. Please start
1575Configure with an explicit path -- i.e. /some/path/Configure.
1576
1577EOM
1578 exit 1
1579 ;;
1580../.) rsrc='..';;
1581*)
1582 echo " "
1583 echo "Sources for $package found in \"$src\"." >&4
1584 ;;
1585esac
1586
1587: script used to extract .SH files with variable substitutions
1588cat >extract <<'EOS'
a02608de 1589PERL_CONFIG_SH=true
dfe9444c 1590echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1591if test -f MANIFEST; then
1592 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1593else
1594 echo "(Looking for .SH files under the source directory.)"
6904989c 1595 set x `(cd "$src"; find . -name "*.SH" -print)`
dfe9444c
AD
1596fi
1597shift
1598case $# in
6904989c 15990) set x `(cd "$src"; echo *.SH)`; shift;;
dfe9444c 1600esac
6904989c 1601if test ! -f "$src/$1"; then
dfe9444c
AD
1602 shift
1603fi
1604mkdir_p='
1605name=$1;
1606create="";
1607while test $name; do
1608 if test ! -d "$name"; then
1609 create="$name $create";
1610 name=`echo $name | sed -e "s|^[^/]*$||"`;
1611 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1612 else
1613 name="";
1614 fi;
1615done;
1616for file in $create; do
1617 mkdir $file;
1618done
1619'
1620for file in $*; do
1621 case "$src" in
1622 ".")
1623 case "$file" in
1624 */*)
1625 dir=`expr X$file : 'X\(.*\)/'`
1626 file=`expr X$file : 'X.*/\(.*\)'`
6904989c 1627 (cd "$dir" && . ./$file)
dfe9444c
AD
1628 ;;
1629 *)
1630 . ./$file
1631 ;;
1632 esac
1633 ;;
1634 *)
1635 case "$file" in
1636 */*)
1637 dir=`expr X$file : 'X\(.*\)/'`
1638 file=`expr X$file : 'X.*/\(.*\)'`
1639 (set x $dir; shift; eval $mkdir_p)
6904989c 1640 sh <"$src/$dir/$file"
dfe9444c
AD
1641 ;;
1642 *)
6904989c 1643 sh <"$src/$file"
dfe9444c
AD
1644 ;;
1645 esac
1646 ;;
1647 esac
1648done
6904989c 1649if test -f "$src/config_h.SH"; then
dfe9444c
AD
1650 if test ! -f config.h; then
1651 : oops, they left it out of MANIFEST, probably, so do it anyway.
6904989c 1652 . "$src/config_h.SH"
dfe9444c
AD
1653 fi
1654fi
1655EOS
1656
1657: extract files and exit if asked to do so
1658case "$extractsh" in
1659true)
1660 case "$realsilent" in
1661 true) ;;
1662 *) exec 1>&4;;
1663 esac
1664 case "$config_sh" in
1665 '') config_sh='config.sh';;
1666 esac
1667 echo " "
1668 echo "Fetching answers from $config_sh..."
1669 cd ..
1670 . $config_sh
1671 test "$override" && . ./optdef.sh
1672 echo " "
1673 . UU/extract
1674 rm -rf UU
24ccb310 1675 echo "Extraction done."
dfe9444c
AD
1676 exit 0
1677 ;;
1678esac
1679
1680: Eunice requires " " instead of "", can you believe it
1681echo " "
1682: Here we go...
1683echo "Beginning of configuration questions for $package."
1684
1685trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1686
2304df62
AD
1687: first determine how to suppress newline on echo command
1688echo " "
1689echo "Checking echo to see how to suppress newlines..."
1690(echo "hi there\c" ; echo " ") >.echotmp
1691if $contains c .echotmp >/dev/null 2>&1 ; then
1692 echo "...using -n."
1693 n='-n'
1694 c=''
1695else
1696 cat <<'EOM'
1697...using \c
1698EOM
1699 n=''
1700 c='\c'
1701fi
1702echo $n "The star should be here-->$c"
1703echo '*'
1704rm -f .echotmp
1705
1706: Now test for existence of everything in MANIFEST
1707echo " "
6904989c 1708if test -f "$rsrc/MANIFEST"; then
2304df62 1709 echo "First let's make sure your kit is complete. Checking..." >&4
4242830c 1710 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
2304df62 1711 rm -f missing
dfe9444c 1712 tmppwd=`pwd`
2304df62 1713 for filelist in x??; do
6904989c 1714 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
2304df62
AD
1715 done
1716 if test -s missing; then
1717 cat missing >&4
1718 cat >&4 <<'EOM'
1719
1720THIS PACKAGE SEEMS TO BE INCOMPLETE.
1721
1722You have the option of continuing the configuration process, despite the
1723distinct possibility that your kit is damaged, by typing 'y'es. If you
1724do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1725and contact the author (perlbug@perl.org).
2304df62
AD
1726
1727EOM
1728 echo $n "Continue? [n] $c" >&4
1729 read ans
1730 case "$ans" in
1731 y*)
1732 echo "Continuing..." >&4
1733 rm -f missing
1734 ;;
1735 *)
1736 echo "ABORTING..." >&4
1737 kill $$
1738 ;;
1739 esac
1740 else
dfe9444c 1741 echo "Looks good..."
2304df62
AD
1742 fi
1743else
1744 echo "There is no MANIFEST file. I hope your kit is complete !"
1745fi
1746rm -f missing x??
1747
5ff3f7a4
GS
1748echo " "
1749: Find the appropriate value for a newline for tr
1750if test -n "$DJGPP"; then
1751 trnl='\012'
1752fi
1753if test X"$trnl" = X; then
1754 case "`echo foo|tr '\n' x 2>/dev/null`" in
1755 foox) trnl='\n' ;;
1756 esac
1757fi
1758if test X"$trnl" = X; then
1759 case "`echo foo|tr '\012' x 2>/dev/null`" in
1760 foox) trnl='\012' ;;
1761 esac
1762fi
1763if test X"$trnl" = X; then
1764 cat <<EOM >&2
1765
1766$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1767
1768EOM
1769 exit 1
1770fi
1771
2304df62
AD
1772: compute the number of columns on the terminal for proper question formatting
1773case "$COLUMNS" in
1774'') COLUMNS='80';;
1775esac
1776
1777: set up the echo used in my read
1778myecho="case \"\$xxxm\" in
1779'') echo $n \"\$rp $c\" >&4;;
1780*) case \"\$rp\" in
1781 '') echo $n \"[\$xxxm] $c\";;
1782 *)
1783 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1784 echo \"\$rp\" >&4
1785 echo $n \"[\$xxxm] $c\" >&4
1786 else
1787 echo $n \"\$rp [\$xxxm] $c\" >&4
1788 fi
1789 ;;
1790 esac;;
1791esac"
1792
1793: now set up to do reads with possible shell escape and default assignment
1794cat <<EOSC >myread
28757baa 1795$startsh
2304df62
AD
1796xxxm=\$dflt
1797$myecho
1798ans='!'
1799case "\$fastread" in
1800yes) case "\$dflt" in
1801 '') ;;
1802 *) ans='';
1803 case "\$silent-\$rp" in
1804 true-) ;;
1805 *) echo " " >&4;;
1806 esac;;
1807 esac;;
1808*) case "\$silent" in
1809 true) case "\$rp" in
1810 '') ans='';;
1811 esac;;
1812 esac;;
1813esac
1814while expr "X\$ans" : "X!" >/dev/null; do
1815 read answ
1816 set x \$xxxm
1817 shift
dfe9444c 1818 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1819 case "\$answ" in
dfe9444c
AD
1820 "!")
1821 sh 1>&4
1822 echo " "
1823 $myecho
1824 ;;
1825 !*)
1826 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1827 shift
1828 sh 1>&4 -c "\$*"
1829 echo " "
1830 $myecho
1831 ;;
2304df62
AD
1832 "\$ans")
1833 case "\$ans" in
ecfc5424
AD
1834 \\&*)
1835 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1836 shift
1837 case "\$1" in
1838 -d)
1839 fastread=yes
40a7a20a 1840 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1841 ;;
1842 -*)
40a7a20a 1843 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1844 ;;
1845 esac
1846 $myecho
1847 ans=!
1848 ;;
2304df62
AD
1849 esac;;
1850 *)
1851 case "\$aok" in
1852 y)
1853 echo "*** Substitution done -- please confirm."
1854 xxxm="\$ans"
c9795ab7 1855 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1856 xxxm="\$ans"
1857 ans=!
1858 ;;
1859 *)
1860 echo "*** Error -- try again."
1861 ans=!
1862 ;;
1863 esac
1864 $myecho
1865 ;;
1866 esac
1867 case "\$ans\$xxxm\$nostick" in
1868 '')
1869 ans=!
1870 $myecho
1871 ;;
1872 esac
1873done
1874case "\$ans" in
1875'') ans="\$xxxm";;
1876esac
1877EOSC
1878
1879: create .config dir to save info across Configure sessions
1880test -d ../.config || mkdir ../.config
1881cat >../.config/README <<EOF
1882This directory created by Configure to save information that should
dfe9444c 1883persist across sessions for $package.
2304df62
AD
1884
1885You may safely delete it if you wish.
1886EOF
1887
9507cadf 1888xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1889case "$usedevel" in
0107c034 1890$define|true|[yY]*) ;;
9507cadf 1891*) case "$xversion" in
0107c034
JH
1892 *[13579])
1893 cat >&4 <<EOH
1894*** WHOA THERE!!! ***
1895
1896 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
1897 The version of this $package distribution is $xversion, that is, odd,
1898 (as opposed to even) and that signifies a development release.
3d5d58b1 1899 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
1900
1901 Do ***NOT*** install this into production use.
1902 Data corruption and crashes are possible.
1903
1904 It is most seriously suggested that you do not continue any further
1905 unless you want to help in developing and debugging Perl.
1906
6adc6a45
JH
1907 If you *still* want to build perl, you can answer 'y' now,
1908 or pass -Dusedevel to Configure.
1909
0107c034
JH
1910EOH
1911 rp='Do you really want to continue?'
1912 dflt='n'
1913 . ./myread
1914 case "$ans" in
8feeef0e
JH
1915 [yY]) echo >&4 "Okay, continuing."
1916 usedevel="$define" ;;
0107c034
JH
1917 *) echo >&4 "Okay, bye."
1918 exit 1
1919 ;;
1920 esac
1921 ;;
1922 esac
1923 ;;
1924esac
8feeef0e
JH
1925case "$usedevel" in
1926$define|true|[yY]*)
1927 case "$versiononly" in
1928 '') versiononly="$define" ;;
1929 esac
1930 case "$installusrbinperl" in
1931 '') installusrbinperl="$undef" ;;
1932 esac
1933 ;;
1934esac
0107c034 1935
2304df62
AD
1936: general instructions
1937needman=true
1938firsttime=true
760ac839 1939user=`(logname) 2>/dev/null`
dfe9444c
AD
1940case "$user" in
1941'') user=`whoami 2>&1`;;
760ac839 1942esac
2304df62
AD
1943if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1944 firsttime=false
1945 echo " "
1946 rp='Would you like to see the instructions?'
1947 dflt=n
1948 . ./myread
1949 case "$ans" in
1950 [yY]*) ;;
1951 *) needman=false;;
1952 esac
1953fi
1954if $needman; then
1955 cat <<EOH
4e2a5f63 1956
2304df62 1957This installation shell script will examine your system and ask you questions
a0d0e21e 1958to determine how the perl5 package should be installed. If you get
2304df62
AD
1959stuck on a question, you may use a ! shell escape to start a subshell or
1960execute a command. Many of the questions will have default answers in square
1961brackets; typing carriage return will give you the default.
1962
1963On some of the questions which ask for file or directory names you are allowed
1964to use the ~name construct to specify the login directory belonging to "name",
1965even if you don't have a shell which knows about that. Questions where this is
1966allowed will be marked "(~name ok)".
1967
1968EOH
1969 rp=''
1970 dflt='Type carriage return to continue'
1971 . ./myread
1972 cat <<'EOH'
1973
1974The prompter used in this script allows you to use shell variables and
1975backticks in your answers. You may use $1, $2, etc... to refer to the words
1976in the default answer, as if the default line was a set of arguments given to a
1977script shell. This means you may also use $* to repeat the whole default line,
1978so you do not have to re-type everything to add something to the default.
1979
1980Everytime there is a substitution, you will have to confirm. If there is an
1981error (e.g. an unmatched backtick), the default answer will remain unchanged
1982and you will be prompted again.
1983
1984If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1985the questions and use the computed defaults (or the previous answers if there
1986was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1987You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1988on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1989
1990EOH
1991 . ./myread
1992 cat <<EOH
1993
1994Much effort has been expended to ensure that this shell script will run on any
1995Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1996Configure and run it again. If you can't run Configure for some reason,
1997you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 1998have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
1999
2000This installation script affects things in two ways:
2001
20021) it may do direct variable substitutions on some of the files included
2003 in this kit.
20042) it builds a config.h file for inclusion in C programs. You may edit
2005 any of these files as the need arises after running this script.
2006
2007If you make a mistake on a question, there is no easy way to back up to it
2008currently. The easiest thing to do is to edit config.sh and rerun all the SH
2009files. Configure will offer to let you do this before it runs the SH files.
2010
2011EOH
2012 dflt='Type carriage return to continue'
2013 . ./myread
2014 case "$firsttime" in
2015 true) echo $user >>../.config/instruct;;
2016 esac
2017fi
2018
2304df62
AD
2019: find out where common programs are
2020echo " "
2021echo "Locating common programs..." >&4
2022cat <<EOSC >loc
2023$startsh
2024case \$# in
20250) exit 1;;
2026esac
2027thing=\$1
2028shift
2029dflt=\$1
2030shift
2031for dir in \$*; do
2032 case "\$thing" in
2033 .)
2034 if test -d \$dir/\$thing; then
2035 echo \$dir
2036 exit 0
2037 fi
2038 ;;
2039 *)
a0d0e21e 2040 for thisthing in \$dir/\$thing; do
ecfc5424 2041 : just loop through to pick last item
a0d0e21e 2042 done
25f94b33 2043 if test -f \$thisthing; then
a0d0e21e 2044 echo \$thisthing
2304df62 2045 exit 0
a5a94ea5
JH
2046 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2047 echo \$thisthing
2048 exit 0
2304df62 2049 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
2050 if test -n "$DJGPP"; then
2051 echo \$dir/\$thing.exe
2052 else
2053 : on Eunice apparently
2054 echo \$dir/\$thing
2055 fi
2304df62
AD
2056 exit 0
2057 fi
2058 ;;
2059 esac
2060done
2061echo \$dflt
2062exit 1
2063EOSC
2064chmod +x loc
2065$eunicefix loc
2066loclist="
2067awk
2068cat
f8006fac 2069chmod
b4eb6b3d
JH
2070comm
2071cp
2304df62
AD
2072echo
2073expr
2074grep
a0d0e21e 2075ls
b4eb6b3d 2076mkdir
2304df62
AD
2077rm
2078sed
b4eb6b3d 2079sort
85e6fe83 2080touch
2304df62 2081tr
b4eb6b3d 2082uniq
2304df62
AD
2083"
2084trylist="
2085Mcc
dfe9444c 2086ar
3659ebf1 2087bison
b4eb6b3d 2088byacc
2304df62 2089cpp
b4eb6b3d 2090csh
2304df62
AD
2091date
2092egrep
1fef16b3 2093gmake
8ff267be 2094gzip
b4eb6b3d 2095less
8ff267be 2096ln
3c728e00 2097make
b4eb6b3d 2098more
693762b4 2099nm
b4eb6b3d
JH
2100nroff
2101pg
2304df62
AD
2102test
2103uname
8ff267be 2104zip
2304df62 2105"
8e07c86e 2106pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2107pth="$pth /lib /usr/lib"
2108for file in $loclist; do
dfe9444c
AD
2109 eval xxx=\$$file
2110 case "$xxx" in
2111 /*|?:[\\/]*)
2112 if test -f "$xxx"; then
2113 : ok
2114 else
2115 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2116 xxx=`./loc $file $file $pth`
2117 fi
2118 ;;
2119 '') xxx=`./loc $file $file $pth`;;
2120 *) xxx=`./loc $xxx $xxx $pth`;;
2121 esac
a5a94ea5 2122 eval $file=$xxx$_exe
2304df62
AD
2123 eval _$file=$xxx
2124 case "$xxx" in
2125 /*)
2126 echo $file is in $xxx.
2127 ;;
8e07c86e
AD
2128 ?:[\\/]*)
2129 echo $file is in $xxx.
2130 ;;
2304df62 2131 *)
25f94b33
AD
2132 echo "I don't know where '$file' is, and my life depends on it." >&4
2133 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2134 exit 1
2304df62
AD
2135 ;;
2136 esac
2137done
2138echo " "
2139echo "Don't worry if any of the following aren't found..."
2140say=offhand
2141for file in $trylist; do
dfe9444c
AD
2142 eval xxx=\$$file
2143 case "$xxx" in
2144 /*|?:[\\/]*)
2145 if test -f "$xxx"; then
2146 : ok
2147 else
2148 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2149 xxx=`./loc $file $file $pth`
2150 fi
2151 ;;
2152 '') xxx=`./loc $file $file $pth`;;
2153 *) xxx=`./loc $xxx $xxx $pth`;;
2154 esac
306a8474 2155 eval $file=$xxx$_exe
2304df62
AD
2156 eval _$file=$xxx
2157 case "$xxx" in
2158 /*)
2159 echo $file is in $xxx.
2160 ;;
8e07c86e
AD
2161 ?:[\\/]*)
2162 echo $file is in $xxx.
2163 ;;
2304df62
AD
2164 *)
2165 echo "I don't see $file out there, $say."
2166 say=either
2167 ;;
2168 esac
2169done
2170case "$egrep" in
1fef16b3 2171egrep)
2304df62
AD
2172 echo "Substituting grep for egrep."
2173 egrep=$grep
868439a2 2174 _egrep=$grep
2304df62
AD
2175 ;;
2176esac
8ff267be 2177case "$ln" in
1fef16b3 2178ln)
8ff267be 2179 echo "Substituting cp for ln."
2180 ln=$cp
868439a2 2181 _ln=$cp
8ff267be 2182 ;;
2183esac
2e26f1d5
JH
2184case "$make" in
2185make)
2186 case "$gmake" in
2187 gmake)
2188 echo "I can't find make or gmake, and my life depends on it." >&4
2189 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2190 exit 1
2191 ;;
2192 esac
2193 ;;
2194esac
2195case "$gmake" in
2196gmake) ;;
2197*) # We can't have osname yet.
1fef16b3
JH
2198 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2199 # Assume that gmake, if found, is definitely GNU make
2200 # and prefer it over the system make.
2201 echo "Substituting gmake for make."
2202 make=$gmake
868439a2 2203 _make=$gmake
1fef16b3
JH
2204 fi
2205 ;;
a5a94ea5 2206esac
2304df62
AD
2207case "$test" in
2208test)
2209 echo "Hopefully test is built into your sh."
2210 ;;
2211*)
73614538 2212 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2213 echo "Using the test built into your sh."
2304df62
AD
2214 test=test
2215 _test=test
2216 fi
2217 ;;
2218esac
2219case "$echo" in
2220echo)
2221 echo "Hopefully echo is built into your sh."
2222 ;;
2223'') ;;
2224*)
2225 echo " "
2226echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2227 $echo $n "hi there$c" >foo1
2228 echo $n "hi there$c" >foo2
2229 if cmp foo1 foo2 >/dev/null 2>&1; then
2230 echo "They are compatible. In fact, they may be identical."
2231 else
2232 case "$n" in
2233 '-n') n='' c='\c';;
2234 *) n='-n' c='';;
2235 esac
2236 cat <<FOO
2237They are not compatible! You are probably running ksh on a non-USG system.
2238I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2239have echo built in and we may have to run some Bourne shell scripts. That
2240means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2241
2242FOO
2243 $echo $n "The star should be here-->$c"
2244 $echo "*"
2245 fi
2246 $rm -f foo1 foo2
2247 ;;
2248esac
2249
6b769f8f 2250cat <<EOS >trygcc
2573c5f9
JH
2251$startsh
2252EOS
6b769f8f 2253cat <<'EOSC' >>trygcc
2573c5f9
JH
2254case "$cc" in
2255'') ;;
2256*) $rm -f try try.*
2257 $cat >try.c <<EOM
2258int main(int argc, char *argv[]) {
2259 return 0;
2260}
2261EOM
e4778687 2262 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2263 :
2264 else
2265 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2266 despair=yes
2267 trygcc=yes
2268 case "$cc" in
2269 *gcc*) trygcc=no ;;
2270 esac
2271 case "`$cc -v -c try.c 2>&1`" in
2272 *gcc*) trygcc=no ;;
2273 esac
2274 if $test X"$trygcc" = Xyes; then
2275 if gcc -o try -c try.c; then
2276 echo " "
2277 echo "You seem to have a working gcc, though." >&4
2278 rp="Would you like to use it?"
2279 dflt=y
2280 if $test -f myread; then
2281 . ./myread
2282 else
2283 if $test -f UU/myread; then
2284 . ./UU/myread
2285 else
2286 echo "Cannot find myread, sorry. Aborting." >&2
2287 exit 1
2288 fi
2289 fi
2290 case "$ans" in
e723fc21 2291 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2573c5f9
JH
2292 esac
2293 fi
2294 fi
6b769f8f
RB
2295 fi
2296 $rm -f try try.*
2297 ;;
2298esac
2299EOSC
2300
2301cat <<EOS >checkcc
2302$startsh
2303EOS
2304cat <<'EOSC' >>checkcc
2305case "$cc" in
2306'') ;;
2307*) $rm -f try try.*
2308 $cat >try.c <<EOM
2309int main(int argc, char *argv[]) {
2310 return 0;
2311}
2312EOM
2313 if $cc -o try $ccflags $ldflags try.c; then
2314 :
2315 else
2573c5f9 2316 if $test X"$despair" = Xyes; then
6b769f8f
RB
2317 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2318 fi
2319 $cat >&4 <<EOM
5dd4fbdf
MB
2320You need to find a working C compiler.
2321Either (purchase and) install the C compiler supplied by your OS vendor,
2322or for a free C compiler try http://gcc.gnu.org/
2323I cannot continue any further, aborting.
2324EOM
6b769f8f 2325 exit 1
2573c5f9
JH
2326 fi
2327 $rm -f try try.*
2328 ;;
2329esac
2330EOSC
2331
a0d0e21e
LW
2332: determine whether symbolic links are supported
2333echo " "
2334$touch blurfl
2335if $ln -s blurfl sym > /dev/null 2>&1 ; then
2336 echo "Symbolic links are supported." >&4
818f00be 2337 lns="$ln -s"
a0d0e21e
LW
2338else
2339 echo "Symbolic links are NOT supported." >&4
2340 lns="$ln"
2341fi
2342$rm -f blurfl sym
2343
dafca956
JH
2344: determine whether symbolic links are supported
2345echo " "
2346case "$lns" in
18ea2752 2347*"ln"*" -s")
dafca956
JH
2348 echo "Checking how to test for symbolic links..." >&4
2349 $lns blurfl sym
4b661809 2350 if $test "X$issymlink" = X; then
2e2a97a6
JH
2351 case "$newsh" in
2352 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2353 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2354 esac
5d644a95
MB
2355 if test $? = 0; then
2356 issymlink="test -h"
2e2a97a6
JH
2357 else
2358 echo "Your builtin 'test -h' may be broken." >&4
2359 case "$test" in
2360 /*) ;;
2361 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2362 for p in $pth
2363 do
2364 if test -f "$p/$test"; then
2365 test="$p/$test"
2366 break
2367 fi
2368 done
2369 ;;
2370 esac
2371 case "$test" in
2372 /*)
2373 echo "Trying external '$test -h'." >&4
2374 issymlink="$test -h"
2375 if $test ! -h sym >/dev/null 2>&1; then
3c728e00 2376 echo "External '$test -h' is broken, too." >&4
2e2a97a6
JH
2377 issymlink=''
2378 fi
2379 ;;
2380 *) issymlink='' ;;
2381 esac
5d644a95
MB
2382 fi
2383 fi
4b661809 2384 if $test "X$issymlink" = X; then
dafca956 2385 if $test -L sym 2>/dev/null; then
5d644a95 2386 issymlink="$test -L"
2e2a97a6 2387 echo "The builtin '$test -L' worked." >&4
dafca956
JH
2388 fi
2389 fi
4b661809 2390 if $test "X$issymlink" != X; then
5d644a95 2391 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2392 else
2393 echo "I do not know how you can test for symbolic links." >&4
2394 fi
2395 $rm -f blurfl sym
2396 ;;
2397*) echo "No symbolic links, so not testing for their testing..." >&4
2398 ;;
2399esac
2400echo " "
2401
2402
2403case "$mksymlinks" in
2404$define|true|[yY]*)
2405 case "$src" in
2406 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2407 exit 1
2408 ;;
4b661809 2409 *) case "$lns:$issymlink" in
f314eb9f 2410 *"ln"*" -s:"*"test -"?)
dafca956
JH
2411 echo "Creating the symbolic links..." >&4
2412 echo "(First creating the subdirectories...)" >&4
2413 cd ..
2414 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2415 read directory
2416 test -z "$directory" && break
2417 mkdir -p $directory
2418 done
2419 # Sanity check 1.
2420 if test ! -d t/base; then
2421 echo "Failed to create the subdirectories. Aborting." >&4
2422 exit 1
2423 fi
2424 echo "(Then creating the symlinks...)" >&4
2425 awk '{print $1}' $src/MANIFEST | while true; do
2426 read filename
2427 test -z "$filename" && break
2428 if test -f $filename; then
5d644a95 2429 if $issymlink $filename; then
dafca956
JH
2430 rm -f $filename
2431 fi
2432 fi
2433 if test -f $filename; then
2434 echo "$filename already exists, not symlinking."
2435 else
2436 ln -s $src/$filename $filename
2437 fi
2438 done
2439 # Sanity check 2.
a0d24b8a
JH
2440 if test ! -f t/base/lex.t; then
2441 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
dafca956
JH
2442 exit 1
2443 fi
2444 cd UU
2445 ;;
2446 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2447 ;;
2448 esac
2449 ;;
2450 esac
2451 ;;
2452esac
2453
5440bc8e
JH
2454
2455case "$usecrosscompile" in
2456$define|true|[yY]*)
93bc48fa 2457 $echo "Cross-compiling..."
5440bc8e
JH
2458 croak=''
2459 case "$cc" in
2460 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2461 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2462 ar=$targetarch-ar
2463 # leave out ld, choosing it is more complex
2464 nm=$targetarch-nm
2465 ranlib=$targetarch-ranlib
93bc48fa 2466 $echo 'extern int foo;' > try.c
f8006fac 2467 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
93bc48fa
JH
2468 shift
2469 if $test $# -gt 0; then
2470 incpth="$incpth $*"
f8006fac
JH
2471 incpth="`$echo $incpth|$sed 's/^ //'`"
2472 echo "Guessing incpth '$incpth'." >&4
93bc48fa 2473 for i in $*; do
f8006fac 2474 j="`$echo $i|$sed 's,/include$,/lib,'`"
93bc48fa
JH
2475 if $test -d $j; then
2476 libpth="$libpth $j"
2477 fi
2478 done
f8006fac
JH
2479 libpth="`$echo $libpth|$sed 's/^ //'`"
2480 echo "Guessing libpth '$libpth'." >&4
93bc48fa
JH
2481 fi
2482 $rm -f try.c
5440bc8e
JH
2483 ;;
2484 esac
2485 case "$targetarch" in
93bc48fa
JH
2486 '') echo "Targetarch not defined." >&4; croak=y ;;
2487 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2488 esac
2489 case "$incpth" in
93bc48fa 2490 '') echo "Incpth not defined." >&4; croak=y ;;
f8006fac 2491 *) echo "Using incpth '$incpth'." >&4 ;;
5440bc8e
JH
2492 esac
2493 case "$libpth" in
93bc48fa 2494 '') echo "Libpth not defined." >&4; croak=y ;;
f8006fac 2495 *) echo "Using libpth '$libpth'." >&4 ;;
5440bc8e 2496 esac
93bc48fa
JH
2497 case "$usrinc" in
2498 '') for i in $incpth; do
2499 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2500 usrinc=$i
2501 echo "Guessing usrinc $usrinc." >&4
2502 break
2503 fi
2504 done
2505 case "$usrinc" in
2506 '') echo "Usrinc not defined." >&4; croak=y ;;
2507 esac
2508 ;;
2509 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2510 esac
93bc48fa
JH
2511 case "$targethost" in
2512 '') echo "Targethost not defined." >&4; croak=y ;;
2513 *) echo "Using targethost $targethost." >&4
5440bc8e 2514 esac
93bc48fa
JH
2515 locincpth=' '
2516 loclibpth=' '
5440bc8e 2517 case "$croak" in
93bc48fa 2518 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2519 esac
2520 case "$src" in
2521 /*) run=$src/Cross/run
93c0359c 2522 targetmkdir=$src/Cross/mkdir
5440bc8e
JH
2523 to=$src/Cross/to
2524 from=$src/Cross/from
2525 ;;
93bc48fa 2526 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e 2527 run=$pwd/Cross/run
f8006fac 2528 targetmkdir=$pwd/Cross/mkdir
5440bc8e
JH
2529 to=$pwd/Cross/to
2530 from=$pwd/Cross/from
2531 ;;
2532 esac
2533 case "$targetrun" in
2534 '') targetrun=ssh ;;
2535 esac
2536 case "$targetto" in
2537 '') targetto=scp ;;
2538 esac
2539 case "$targetfrom" in
2540 '') targetfrom=scp ;;
2541 esac
2542 run=$run-$targetrun
2543 to=$to-$targetto
2544 from=$from-$targetfrom
93bc48fa
JH
2545 case "$targetdir" in
2546 '') targetdir=/tmp
2547 echo "Guessing targetdir $targetdir." >&4
2548 ;;
2549 esac
5440bc8e 2550 case "$targetuser" in
93bc48fa
JH
2551 '') targetuser=root
2552 echo "Guessing targetuser $targetuser." >&4
2553 ;;
5440bc8e
JH
2554 esac
2555 case "$targetfrom" in
2556 scp) q=-q ;;
2557 *) q='' ;;
2558 esac
2559 case "$targetrun" in
2560 ssh|rsh)
2561 cat >$run <<EOF
2562#!/bin/sh
93c0359c
JH
2563case "\$1" in
2564-cwd)
2565 shift
2566 cwd=\$1
2567 shift
2568 ;;
2569esac
2570case "\$cwd" in
2571'') cwd=$targetdir ;;
2572esac
5440bc8e
JH
2573exe=\$1
2574shift
93c0359c
JH
2575if $test ! -f \$exe.xok; then
2576 $to \$exe
2577 $touch \$exe.xok
2578fi
2579$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
5440bc8e
JH
2580EOF
2581 ;;
93bc48fa 2582 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2583 exit 1
2584 ;;
2585 esac
93c0359c
JH
2586 case "$targetmkdir" in
2587 */Cross/mkdir)
2588 cat >$targetmkdir <<EOF
2589#!/bin/sh
2590$targetrun -l $targetuser $targethost "mkdir -p \$@"
2591EOF
f8006fac 2592 $chmod a+rx $targetmkdir
93c0359c
JH
2593 ;;
2594 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2595 exit 1
2596 ;;
2597 esac
5440bc8e
JH
2598 case "$targetto" in
2599 scp|rcp)
2600 cat >$to <<EOF
2601#!/bin/sh
2602for f in \$@
2603do
93c0359c
JH
2604 case "\$f" in
2605 /*)
2606 $targetmkdir \`dirname \$f\`
2607 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2608 ;;
2609 *)
2610 $targetmkdir $targetdir/\`dirname \$f\`
2611 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2612 ;;
2613 esac
5440bc8e
JH
2614done
2615exit 0
2616EOF
2617 ;;
2618 cp) cat >$to <<EOF
2619#!/bin/sh
93c0359c
JH
2620for f in \$@
2621do
2622 case "\$f" in
2623 /*)
2624 $mkdir -p $targetdir/\`dirname \$f\`
2625 $cp \$f $targetdir/\$f || exit 1
2626 ;;
2627 *)
2628 $targetmkdir $targetdir/\`dirname \$f\`
2629 $cp \$f $targetdir/\$f || exit 1
2630 ;;
2631 esac
2632done
2633exit 0
5440bc8e
JH
2634EOF
2635 ;;
93bc48fa 2636 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2637 exit 1
2638 ;;
2639 esac
2640 case "$targetfrom" in
2641 scp|rcp)
2642 cat >$from <<EOF
2643#!/bin/sh
2644for f in \$@
2645do
93c0359c 2646 $rm -f \$f
5440bc8e
JH
2647 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2648done
2649exit 0
2650EOF
2651 ;;
2652 cp) cat >$from <<EOF
2653#!/bin/sh
2654for f in \$@
2655do
93c0359c 2656 $rm -f \$f
5440bc8e
JH
2657 cp $targetdir/\$f . || exit 1
2658done
2659exit 0
2660EOF
2661 ;;
93bc48fa 2662 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2663 exit 1
2664 ;;
2665 esac
93bc48fa
JH
2666 if $test ! -f $run; then
2667 echo "Target 'run' script '$run' not found." >&4
5440bc8e 2668 else
f8006fac 2669 $chmod a+rx $run
5440bc8e 2670 fi
93bc48fa
JH
2671 if $test ! -f $to; then
2672 echo "Target 'to' script '$to' not found." >&4
5440bc8e 2673 else
f8006fac 2674 $chmod a+rx $to
5440bc8e 2675 fi
93bc48fa
JH
2676 if $test ! -f $from; then
2677 echo "Target 'from' script '$from' not found." >&4
5440bc8e 2678 else
f8006fac 2679 $chmod a+rx $from
5440bc8e 2680 fi
93bc48fa 2681 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
2682 exit 1
2683 fi
2684 cat >&4 <<EOF
f8006fac
JH
2685Using '$run' for remote execution,
2686and '$from' and '$to'
93bc48fa 2687for remote file transfer.
5440bc8e
JH
2688EOF
2689 ;;
2690*) run=''
2691 to=:
2692 from=:
2693 usecrosscompile='undef'
2694 targetarch=''
2695 ;;
2696esac
2697
ecfc5424
AD
2698: see whether [:lower:] and [:upper:] are supported character classes
2699echo " "
ecfc5424
AD
2700case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2701ABYZ)
2702 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2703 up='[:upper:]'
2704 low='[:lower:]'
2705 ;;
28e8609d
JH
2706*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2707 # (0xc9 and 0xd1), therefore that is a nice testing point.
2708 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2709 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2710 ij) up='[A-Z]'
2711 low='[a-z]'
2712 ;;
2713 esac
2714 fi
2715 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2716 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2717 ij) up='A-Z'
2718 low='a-z'
2719 ;;
2720 esac
2721 fi
2722 if test "X$up" = X -o "X$low" = X; then
2723 case "`echo IJ | od -x 2>/dev/null`" in
2724 *C9D1*|*c9d1*)
2725 echo "Hey, this might be EBCDIC." >&4
2726 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2727 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2728 ij) up='[A-IJ-RS-Z]'
2729 low='[a-ij-rs-z]'
2730 ;;
2731 esac
2732 fi
2733 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2734 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2735 ij) up='A-IJ-RS-Z'
2736 low='a-ij-rs-z'
2737 ;;
2738 esac
2739 fi
2740 ;;
2741 esac
2742 fi
2743esac
3eaeeeae 2744case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2745ij)
2746 echo "Using $up and $low to convert case." >&4
2747 ;;
ecfc5424 2748*)
28e8609d
JH
2749 echo "I don't know how to translate letters from upper to lower case." >&4
2750 echo "Your tr is not acting any way I know of." >&4
2751 exit 1
2752 ;;
ecfc5424
AD
2753esac
2754: set up the translation script tr, must be called with ./tr of course
2755cat >tr <<EOSC
2756$startsh
2757case "\$1\$2" in
2758'[A-Z][a-z]') exec $tr '$up' '$low';;
2759'[a-z][A-Z]') exec $tr '$low' '$up';;
2760esac
2761exec $tr "\$@"
2762EOSC
2763chmod +x tr
2764$eunicefix tr
2765
2304df62
AD
2766: Try to determine whether config.sh was made on this system
2767case "$config_sh" in
2768'')
43999f95
JH
2769myuname=`$uname -a 2>/dev/null`
2770$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2771# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2772# because the A-Z/a-z are not consecutive.
a0d0e21e 2773myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2774 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2775newmyuname="$myuname"
2304df62 2776dflt=n
16d20bd9
AD
2777case "$knowitall" in
2778'')
2779 if test -f ../config.sh; then
2780 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2781 eval "`grep myuname= ../config.sh`"
2782 fi
2783 if test "X$myuname" = "X$newmyuname"; then
2784 dflt=y
2785 fi
2304df62 2786 fi
16d20bd9
AD
2787 ;;
2788*) dflt=y;;
2789esac
2304df62
AD
2790
2791: Get old answers from old config file if Configure was run on the
2792: same system, otherwise use the hints.
2793hint=default
2794cd ..
2795if test -f config.sh; then
16d20bd9
AD
2796 echo " "
2797 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2798 . UU/myread
2799 case "$ans" in
f83701cd
AD
2800 n*|N*) echo "OK, I'll ignore it."
2801 mv config.sh config.sh.old
2802 myuname="$newmyuname"
2803 ;;
2304df62 2804 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2805 tmp_n="$n"
2806 tmp_c="$c"
85cad39c 2807 tmp_sh="$sh"
2304df62
AD
2808 . ./config.sh
2809 cp config.sh UU
ecfc5424
AD
2810 n="$tmp_n"
2811 c="$tmp_c"
85cad39c 2812 : Older versions did not always set $sh. Catch re-use of such
2813 : an old config.sh.
2814 case "$sh" in
2815 '') sh="$tmp_sh" ;;
2816 esac
2304df62
AD
2817 hint=previous
2818 ;;
2819 esac
2820fi
2573c5f9 2821. ./UU/checkcc
2304df62
AD
2822if test ! -f config.sh; then
2823 $cat <<EOM
2824
4e2a5f63
AD
2825First time through, eh? I have some defaults handy for some systems
2826that need some extra help getting the Configure answers right:
2304df62
AD
2827
2828EOM
dfe9444c 2829 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2830 dflt=''
2831 : Half the following guesses are probably wrong... If you have better
7f2de2d2 2832 : tests or hints, please send them to perlbug@perl.org
2304df62 2833 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2834 $test -f /irix && osname=irix
85e6fe83
LW
2835 $test -f /xenix && osname=sco_xenix
2836 $test -f /dynix && osname=dynix
2837 $test -f /dnix && osname=dnix
5f05dabc 2838 $test -f /lynx.os && osname=lynxos
2839 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2840 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2841 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2842 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2843 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2844 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2845 $test -d /usr/apollo/bin && osname=apollo
2846 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2847 $test -d /usr/include/minix && osname=minix
d54344fc 2848 $test -f /system/gnu_library/bin/ar.pm && osname=vos
e060872b 2849 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2850 osname=machten
4633a7c4 2851 if $test -x /sbin/version; then
dfe9444c 2852 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2853 $sed -e 's/[A-Za-z]$//'`
2854 elif $test -x /usr/etc/version; then
dfe9444c 2855 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2856 $sed -e 's/[A-Za-z]$//'`
2857 else
2858 osvers="$2.$3"
2859 fi
2860 fi
aaacdc8b
GS
2861
2862 $test -f /sys/posix.dll &&
2863 $test -f /usr/bin/what &&
2864 set X `/usr/bin/what /sys/posix.dll` &&
2865 $test "$3" = UWIN &&
2866 osname=uwin &&
2867 osvers="$5"
2868
2304df62
AD
2869 if $test -f $uname; then
2870 set X $myuname
2871 shift
2872
2304df62 2873 case "$5" in
85e6fe83 2874 fps*) osname=fps ;;
2304df62
AD
2875 mips*)
2876 case "$4" in
85e6fe83
LW
2877 umips) osname=umips ;;
2878 *) osname=mips ;;
2304df62 2879 esac;;
85e6fe83
LW
2880 [23]100) osname=mips ;;
2881 next*) osname=next ;;
ecfc5424 2882 i386*)
c6912327
JH
2883 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2884 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2885 osname='sco'
2886 osvers=$tmp
2887 elif $test -f /etc/kconfig; then
ecfc5424 2888 osname=isc
bd628c73 2889 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2890 osvers=4
2891 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2892 osvers=3
2304df62 2893 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2894 osvers=2
ecfc5424
AD
2895 fi
2896 fi
2000072c 2897 tmp=''
ecfc5424 2898 ;;
c4f23d77
AD
2899 pc*)
2900 if test -n "$DJGPP"; then
2901 osname=dos
2902 osvers=djgpp
2903 fi
2904 ;;
2304df62
AD
2905 esac
2906
2907 case "$1" in
a0d0e21e
LW
2908 aix) osname=aix
2909 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2910 case "$tmp" in
1aef975c 2911 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2912 '<3240'|'<>3240') osvers=3.2.0 ;;
2913 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2914 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2915 *) osvers=$tmp;;
a0d0e21e
LW
2916 esac
2917 ;;
aaacdc8b
GS
2918 bsd386) osname=bsd386
2919 osvers=`$uname -r`
2920 ;;
2921 cygwin*) osname=cygwin
2922 osvers="$3"
2923 ;;
23f87696
SZ
2924 *dc.osx) osname=dcosx
2925 osvers="$3"
2926 ;;
a0d0e21e
LW
2927 dnix) osname=dnix
2928 osvers="$3"
2929 ;;
2930 domainos) osname=apollo
2931 osvers="$3"
2932 ;;
2933 dgux) osname=dgux
2934 osvers="$3"
2935 ;;
760ac839 2936 dynixptx*) osname=dynixptx
e58e581d 2937 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2938 ;;
a0d0e21e
LW
2939 freebsd) osname=freebsd
2940 osvers="$3" ;;
2941 genix) osname=genix ;;
2942 hp*) osname=hpux
bfb7748a 2943 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2944 ;;
a78b0d02 2945 irix*) osname=irix
a0d0e21e
LW
2946 case "$3" in
2947 4*) osvers=4 ;;
2948 5*) osvers=5 ;;
ecfc5424 2949 *) osvers="$3" ;;
a0d0e21e
LW
2950 esac
2951 ;;
2952 linux) osname=linux
2953 case "$3" in
a0d0e21e
LW
2954 *) osvers="$3" ;;
2955 esac
2956 ;;
28e8609d
JH
2957 MiNT) osname=mint
2958 ;;
2959 netbsd*) osname=netbsd
ecfc5424
AD
2960 osvers="$3"
2961 ;;
4e81affe
MM
2962 news-os) osvers="$3"
2963 case "$3" in
2964 4*) osname=newsos4 ;;
2965 *) osname=newsos ;;
2966 esac
2967 ;;
aaacdc8b 2968 next*) osname=next ;;
28bb1e2c 2969 nonstop-ux) osname=nonstopux ;;
aaacdc8b
GS
2970 POSIX-BC | posix-bc ) osname=posix-bc
2971 osvers="$3"
a0d0e21e 2972 ;;
ae3afa4e
TH
2973 powerux | power_ux | powermax_os | powermaxos | \
2974 powerunix | power_unix) osname=powerux
2975 osvers="$3"
2976 ;;
aaacdc8b
GS
2977 qnx) osname=qnx
2978 osvers="$4"
2979 ;;
a0d0e21e
LW
2980 solaris) osname=solaris
2981 case "$3" in
2982 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2983 *) osvers="$3" ;;
a0d0e21e
LW
2984 esac
2985 ;;
85e6fe83
LW
2986 sunos) osname=sunos
2987 case "$3" in
85e6fe83
LW
2988 5*) osname=solaris
2989 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2990 *) osvers="$3" ;;
2304df62
AD
2991 esac
2992 ;;
a0d0e21e 2993 titanos) osname=titanos
85e6fe83 2994 case "$3" in
a0d0e21e
LW
2995 1*) osvers=1 ;;
2996 2*) osvers=2 ;;
2997 3*) osvers=3 ;;
2998 4*) osvers=4 ;;
ecfc5424 2999 *) osvers="$3" ;;
2304df62
AD
3000 esac
3001 ;;
85e6fe83 3002 ultrix) osname=ultrix
ecfc5424 3003 osvers="$3"
2304df62 3004 ;;
28757baa 3005 osf1|mls+) case "$5" in
fed7345c
AD
3006 alpha)
3007 osname=dec_osf
2aa76180
JH
3008 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3009 case "$osvers" in
3010 [1-9].[0-9]*) ;;
3011 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3012 esac
ecfc5424
AD
3013 ;;
3014 hp*) osname=hp_osf1 ;;
3015 mips) osname=mips_osf1 ;;
85e6fe83
LW
3016 esac
3017 ;;
0337d152
BG
3018 unixware) osname=svr5
3019 osvers="$4"
3020 ;;
3c728e00 3021 uts) osname=uts
a0d0e21e
LW
3022 osvers="$3"
3023 ;;
3c728e00
JH
3024 vos) osvers="$3"
3025 ;;
85e6fe83 3026 $2) case "$osname" in
2304df62 3027 *isc*) ;;
a0d0e21e 3028 *freebsd*) ;;
5f05dabc 3029 svr*)
a0d0e21e
LW
3030 : svr4.x or possibly later
3031 case "svr$3" in
3032 ${osname}*)
3033 osname=svr$3
3034 osvers=$4
3035 ;;
3036 esac
3037 case "$osname" in
3038 svr4.0)
3039 : Check for ESIX
3040 if test -f /stand/boot ; then
3041 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
3042 if test -n "$INITPROG" -a -f "$INITPROG"; then
3043 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3044 if test -n "$isesix"; then
a0d0e21e
LW
3045 osname=esix4
3046 fi
3047 fi
3048 fi
3049 ;;
3050 esac
3051 ;;
2304df62 3052 *) if test -f /etc/systemid; then
a0d0e21e
LW
3053 osname=sco
3054 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 3055 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 3056 osvers=$1.$2.$3
c4f23d77 3057 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 3058 osvers=$1.$2
c4f23d77 3059 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 3060 osvers=$1
2304df62 3061 fi
a0d0e21e
LW
3062 else
3063 case "$osname" in
3064 '') : Still unknown. Probably a generic Sys V.
3065 osname="sysv"
3066 osvers="$3"
3067 ;;
3068 esac
2304df62
AD
3069 fi
3070 ;;
3071 esac
3072 ;;
a0d0e21e
LW
3073 *) case "$osname" in
3074 '') : Still unknown. Probably a generic BSD.
3075 osname="$1"
3076 osvers="$3"
3077 ;;
3078 esac
3079 ;;
2304df62
AD
3080 esac
3081 else
dfe9444c
AD
3082 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3083 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3084 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3085 osname=news_os
2304df62 3086 fi
dfe9444c 3087 $rm -f UU/kernel.what
8e07c86e
AD
3088 elif test -d c:/.; then
3089 set X $myuname
3090 osname=os2
3091 osvers="$5"
2304df62
AD
3092 fi
3093 fi
85e6fe83 3094
5440bc8e
JH
3095 case "$targetarch" in
3096 '') ;;
3097 *) hostarch=$osname
3098 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3099 osvers=''
3100 ;;
3101 esac
3102
a0d0e21e
LW
3103 : Now look for a hint file osname_osvers, unless one has been
3104 : specified already.
3105 case "$hintfile" in
3106 ''|' ')
1e127011 3107 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 3108 : Also try without trailing minor version numbers.
1e127011
DD
3109 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3110 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3111 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3112 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
3113 case "$file" in
3114 '') dflt=none ;;
3115 *) case "$osvers" in
3116 '') dflt=$file
3117 ;;
dfe9444c 3118 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 3119 dflt=$file
dfe9444c 3120 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 3121 dflt=$xfile
dfe9444c 3122 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 3123 dflt=$xxfile
dfe9444c 3124 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 3125 dflt=$xxxfile
dfe9444c 3126 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 3127 dflt=$xxxxfile
dfe9444c 3128 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
3129 dflt="${osname}"
3130 else
3131 dflt=none
3132 fi
3133 ;;
3134 esac
85e6fe83
LW
3135 ;;
3136 esac
4e2a5f63
AD
3137 if $test -f Policy.sh ; then
3138 case "$dflt" in
3139 *Policy*) ;;
3140 none) dflt="Policy" ;;
3141 *) dflt="Policy $dflt" ;;
3142 esac
3143 fi
85e6fe83 3144 ;;
a0d0e21e 3145 *)
ecfc5424 3146 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 3147 ;;
2304df62 3148 esac
1aef975c 3149
4e2a5f63
AD
3150 if $test -f Policy.sh ; then
3151 $cat <<EOM
3152
3153There's also a Policy hint file available, which should make the
3154site-specific (policy) questions easier to answer.
3155EOM
3156
3157 fi
3158
2304df62
AD
3159 $cat <<EOM
3160
3161You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 3162A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 3163is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
3164
3165EOM
4e2a5f63 3166
2304df62 3167 rp="Which of these apply, if any?"
dfe9444c 3168 . UU/myread
85e6fe83
LW
3169 tans=$ans
3170 for file in $tans; do
4e2a5f63
AD
3171 if $test X$file = XPolicy -a -f Policy.sh; then
3172 . Policy.sh
3173 $cat Policy.sh >> UU/config.sh
3174 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
3175 . $src/hints/$file.sh
3176 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 3177 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
3178 : nothing
3179 else
85e6fe83
LW
3180 : Give one chance to correct a possible typo.
3181 echo "$file.sh does not exist"
3182 dflt=$file
3183 rp="hint to use instead?"
dfe9444c 3184 . UU/myread
85e6fe83 3185 for file in $ans; do
dfe9444c
AD
3186 if $test -f "$src/hints/$file.sh"; then
3187 . $src/hints/$file.sh
3188 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
3189 elif $test X$ans = X -o X$ans = Xnone ; then
3190 : nothing
3191 else
3192 echo "$file.sh does not exist -- ignored."
3193 fi
3194 done
2304df62
AD
3195 fi
3196 done
85e6fe83 3197
2304df62 3198 hint=recommended
85e6fe83 3199 : Remember our hint file for later.
dfe9444c 3200 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3201 hintfile="$file"
85e6fe83 3202 else
a0d0e21e 3203 hintfile=''
85e6fe83 3204 fi
2304df62
AD
3205fi
3206cd UU
3207;;
3208*)
3209 echo " "
3210 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3211 tmp_n="$n"
3212 tmp_c="$c"
2304df62
AD
3213 cd ..
3214 cp $config_sh config.sh 2>/dev/null
a78b0d02 3215 chmod +w config.sh
2304df62
AD
3216 . ./config.sh
3217 cd UU
3218 cp ../config.sh .
ecfc5424
AD
3219 n="$tmp_n"
3220 c="$tmp_c"
2304df62
AD
3221 hint=previous
3222 ;;
3223esac
1aef975c 3224test "$override" && . ./optdef.sh
2304df62
AD
3225
3226: Restore computed paths
3227for file in $loclist $trylist; do
3228 eval $file="\$_$file"
3229done
3230
85e6fe83 3231cat << EOM
a0d0e21e 3232
85e6fe83 3233Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3234The default value is probably right if the name rings a bell. Otherwise,
3235since spelling matters for me, either accept the default or answer "none"
3236to leave it blank.
a0d0e21e 3237
85e6fe83 3238EOM
85e6fe83 3239case "$osname" in
a0d0e21e 3240 ''|' ')
85e6fe83 3241 case "$hintfile" in
a0d0e21e 3242 ''|' '|none) dflt=none ;;
ecfc5424 3243 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3244 esac
3245 ;;
3246 *) dflt="$osname" ;;
3247esac
3248rp="Operating system name?"
3249. ./myread
3250case "$ans" in
ecfc5424
AD
3251none) osname='' ;;
3252*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3253esac
8ff267be 3254echo " "
3255case "$osvers" in
3256 ''|' ')
3257 case "$hintfile" in
3258 ''|' '|none) dflt=none ;;
3259 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3260 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3261 case "$dflt" in
3262 ''|' ') dflt=none ;;
3263 esac
3264 ;;
3265 esac
3266 ;;
3267 *) dflt="$osvers" ;;
3268esac
3269rp="Operating system version?"
3270. ./myread
3271case "$ans" in
3272none) osvers='' ;;
3273*) osvers="$ans" ;;
3274esac
3275
02e93a22
JH
3276
3277. ./posthint.sh
3278
2304df62 3279: who configured the system
59b83a6f 3280cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 3281cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
3282case "$cf_by" in
3283"")
8ff267be 3284 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
3285 case "$cf_by" in
3286 "") cf_by=unknown ;;
8ff267be 3287 esac ;;
3288esac
2304df62 3289
b4eb6b3d
JH
3290: set up the script used to warn in case of inconsistency
3291cat <<EOS >whoa
3292$startsh
3293EOS
3294cat <<'EOSC' >>whoa
3295dflt=y
3296echo " "
3297echo "*** WHOA THERE!!! ***" >&4
3298echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3299rp=" Keep the $hint value?"
3300. ./myread
3301case "$ans" in
3302y) td=$was; tu=$was;;
3303esac
3304EOSC
3305
3306: function used to set $1 to $val
3307setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3308case "$val$was" in
3309$define$undef) . ./whoa; eval "$var=\$td";;
3310$undef$define) . ./whoa; eval "$var=\$tu";;
3311*) eval "$var=$val";;
3312esac'
3313
3314case "$usethreads" in
3315$define|true|[yY]*) dflt='y';;
3316*) dflt='n';;
3317esac
3318cat <<EOM
3319
3320Perl can be built to take advantage of threads on some systems.
3321To do so, Configure can be run with -Dusethreads.
3322
3323Note that threading is a highly experimental feature, and
3324some known race conditions still remain. If you choose to try
3325it, be very sure to not actually deploy it for production
3326purposes. README.threads has more details, and is required
3327reading if you enable threads.
3328
3329If this doesn't make any sense to you, just accept the default '$dflt'.
3330EOM
3331rp='Build a threading Perl?'
3332. ./myread
3333case "$ans" in
3334y|Y) val="$define" ;;
3335*) val="$undef" ;;
3336esac
3337set usethreads
3338eval $setvar
3339
3340case "$usethreads" in
3341$define)
3342 $cat <<EOM
3343
3344As of 5.5.640, Perl has two different internal threading implementations,
3345the 5.005 version (5005threads) and an interpreter-based version
3346(ithreads) that has one interpreter per thread. Both are very
3347experimental. This arrangement exists to help developers work out
3348which one is better.
3349
3350If you're a casual user, you probably don't want interpreter-threads
1a060de3
JH
3351at this time. But if you do, the 'threads' module allows their use,
3352and the 'Thread' module offers an interface to both 5005threads and
3353ithreads (whichever has been configured).
b4eb6b3d
JH
3354EOM
3355 : Default to ithreads unless overridden on command line or with
3356 : old config.sh
3357 dflt='y'
3358 case "$use5005threads" in
3359 $define|true|[yY]*) dflt='n';;
3360 esac
3361 case "$useithreads" in
3362 $undef|false|[nN]*) dflt='n';;
3363 esac
3364 rp='Use interpreter-based ithreads?'
3365 . ./myread
3366 case "$ans" in
3367 y|Y) val="$define" ;;
3368 *) val="$undef" ;;
3369 esac
3370 set useithreads
3371 eval $setvar
3372 : Now set use5005threads to the opposite value.
3373 case "$useithreads" in
3374 $define) val="$undef" ;;
3375 *) val="$define" ;;
3376 esac
3377 set use5005threads
3378 eval $setvar
3379 ;;
3380*)
3381 useithreads="$undef"
3382 use5005threads="$undef"
3383 ;;
3384esac
3385
c915ce7f
JH
3386case "$useithreads$use5005threads" in
3387"$define$define")
3388 $cat >&4 <<EOM
3389
3390You cannot have both the ithreads and the 5.005 threads enabled
3391at the same time. Disabling the 5.005 threads since they are
3392much less stable than the ithreads.
3393
3394EOM
3395 use5005threads="$undef"
3396 ;;
3397esac
3398
b4eb6b3d
JH
3399case "$d_oldpthreads" in
3400'') : Configure tests would be welcome here. For now, assume undef.
3401 val="$undef" ;;
3402*) val="$d_oldpthreads" ;;
3403esac
3404set d_oldpthreads
3405eval $setvar
3406
3407
3408case "$usethreads" in
3409"$define"|true|[yY]*)
3410: Look for a hint-file generated 'call-back-unit'. If the
3411: user has specified that a threading perl is to be built,
3412: we may need to set or change some other defaults.
3413 if $test -f usethreads.cbu; then
3414 echo "Your platform has some specific hints for threaded builds, using them..."
3415 . ./usethreads.cbu
3416 else
3417 $cat <<EOM
3418(Your platform doesn't have any specific hints for threaded builds.
3419 Assuming POSIX threads, then.)
3420EOM
3421 fi
3422 ;;
3423esac
3424
3425cat <<EOM
3426
3427Perl can be built so that multiple Perl interpreters can coexist
3428within the same Perl executable.
3429EOM
3430
3431case "$useithreads" in
3432$define)
3433 cat <<EOM
3434This multiple interpreter support is required for interpreter-based threads.
3435EOM
3436 val="$define"
3437 ;;
3438*) case "$usemultiplicity" in
3439 $define|true|[yY]*) dflt='y';;
3440 *) dflt='n';;
3441 esac
3442 echo " "
3443 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3444 rp='Build Perl for multiplicity?'
3445 . ./myread
3446 case "$ans" in
3447 y|Y) val="$define" ;;
3448 *) val="$undef" ;;
3449 esac
3450 ;;
3451esac
3452set usemultiplicity
3453eval $setvar
3454
96056487
JH
3455
3456case "$usemorebits" in
3457"$define"|true|[yY]*)
3458 use64bitint="$define"
3459 uselongdouble="$define"
3460 usemorebits="$define"
3461 ;;
3462*) usemorebits="$undef"
3463 ;;
3464esac
3465
e5e20432
JH
3466: make some quick guesses about what we are up against
3467echo " "
3468$echo $n "Hmm... $c"
3469echo exit 1 >bsd
3470echo exit 1 >usg
3471echo exit 1 >v7
3472echo exit 1 >osf1
3473echo exit 1 >eunice
3474echo exit 1 >xenix
3475echo exit 1 >venix
3476echo exit 1 >os2
3477d_bsd="$undef"
3478$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3479if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3480then
3481 echo "Looks kind of like an OSF/1 system, but we'll see..."
3482 echo exit 0 >osf1
381aa1ff 3483elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3484 xxx=`./loc addbib blurfl $pth`
3485 if $test -f $xxx; then
3486 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3487 echo exit 0 >bsd
3488 echo exit 0 >usg
3489 else
3490 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3491 echo "Looks kind of like an extended USG system, but we'll see..."
3492 else
3493 echo "Looks kind of like a USG system, but we'll see..."
3494 fi
3495 echo exit 0 >usg
3496 fi
3497elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3498 echo "Looks kind of like a BSD system, but we'll see..."
3499 d_bsd="$define"
3500 echo exit 0 >bsd
3501else
3502 echo "Looks kind of like a Version 7 system, but we'll see..."
3503 echo exit 0 >v7
3504fi
3505case "$eunicefix" in
3506*unixtovms*)
3507 $cat <<'EOI'
3508There is, however, a strange, musty smell in the air that reminds me of
3509something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3510EOI
3511 echo exit 0 >eunice
3512 d_eunice="$define"
3513: it so happens the Eunice I know will not run shell scripts in Unix format
3514 ;;
3515*)
3516 echo " "
3517 echo "Congratulations. You aren't running Eunice."
3518 d_eunice="$undef"
3519 ;;
3520esac
3521: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3522: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3523: semicolon as a patch separator
e5e20432
JH
3524case "$p_" in
3525:) ;;
3526*)
3527 $cat <<'EOI'
3528I have the feeling something is not exactly right, however...don't tell me...
3529lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3530(Or you may be running DOS with DJGPP.)
e5e20432
JH
3531EOI
3532 echo exit 0 >os2
3533 ;;
3534esac
3535if test -f /xenix; then
3536 echo "Actually, this looks more like a XENIX system..."
3537 echo exit 0 >xenix
3538 d_xenix="$define"
3539else
3540 echo " "
3541 echo "It's not Xenix..."
3542 d_xenix="$undef"
3543fi
3544chmod +x xenix
3545$eunicefix xenix
3546if test -f /venix; then
3547 echo "Actually, this looks more like a VENIX system..."
3548 echo exit 0 >venix
3549else
3550 echo " "
3551 if ./xenix; then
3552 : null
3553 else
3554 echo "Nor is it Venix..."
3555 fi
3556fi
3557chmod +x bsd usg v7 osf1 eunice xenix venix os2
3558$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3559$rm -f foo
3560
5869b1f1
JH
3561case "$cc" in
3562'') dflt=cc;;
3563*) dflt="$cc";;
3564esac
3565rp="Use which C compiler?"
3566. ./myread
3567cc="$ans"
6b769f8f
RB
3568
3569: See if they have not cc but they do have gcc
3570. ./trygcc
e5e20432
JH
3571: Look for a hint-file generated 'call-back-unit'. Now that the
3572: user has specified the compiler, we may need to set or change some
3573: other defaults.
3574if $test -f cc.cbu; then
3575 . ./cc.cbu
3576fi
2573c5f9 3577. ./checkcc
8a27cf78 3578
e5e20432
JH
3579echo " "
3580echo "Checking for GNU cc in disguise and/or its version number..." >&4
5440bc8e 3581$cat >try.c <<EOM
e5e20432
JH
3582#include <stdio.h>
3583int main() {
3584#ifdef __GNUC__
3585#ifdef __VERSION__
3586 printf("%s\n", __VERSION__);
3587#else
3588 printf("%s\n", "1");
3589#endif
3590#endif
3591 exit(0);
3592}
3593EOM
5440bc8e
JH
3594if $cc -o try $ccflags $ldflags try.c; then
3595 gccversion=`$run ./try`
e5e20432
JH
3596 case "$gccversion" in
3597 '') echo "You are not using GNU cc." ;;
fc68435e 3598 *) echo "You are using GNU cc $gccversion."
e723fc21 3599 ccname=gcc
fc68435e 3600 ;;
e5e20432
JH
3601 esac
3602else
3603 echo " "
3604 echo "*** WHOA THERE!!! ***" >&4
3605 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3606 case "$knowitall" in
3607 '')
3608 echo " You'd better start hunting for one and let me know about it." >&4
3609 exit 1
3610 ;;
3611 esac
3612fi
5440bc8e 3613$rm -f try try.*
e5e20432
JH
3614case "$gccversion" in
36151*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3616esac
5b463ca7
KS
3617case "$gccversion" in
3618'') gccosandvers='' ;;
10b4ebb5
JH
3619*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3620 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3621 gccshortvers=''
5b463ca7 3622 case "$gccosandvers" in
02903077
JH
3623 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3624 $osname$osvers) ;; # looking good
5b463ca7
KS
3625 $osname*) cat <<EOM >&4
3626
3627*** WHOA THERE!!! ***
3628
3629 Your gcc has not been compiled for the exact release of
3630 your operating system ($gccosandvers versus $osname$osvers).
3631
3632 In general it is a good idea to keep gcc synchronized with
3633 the operating system because otherwise serious problems
3634 may ensue when trying to compile software, like Perl.
3635
3636 I'm trying to be optimistic here, though, and will continue.
3637 If later during the configuration and build icky compilation
02903077
JH
3638 problems appear (headerfile conflicts being the most common
3639 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3640 your operating system release.
3641
3642EOM
3643 ;;
81575342 3644 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3645 esac
3646 ;;
3647esac
e723fc21
JH
3648case "$ccname" in
3649'') ccname="$cc" ;;
3650esac
e5e20432 3651
640374d0 3652
bd9b35c9
JH
3653: decide how portable to be. Allow command line overrides.
3654case "$d_portable" in
3655"$undef") ;;
3656*) d_portable="$define" ;;
104d25b7 3657esac
85ab1d1d 3658
bd9b35c9
JH
3659: set up shell script to do ~ expansion
3660cat >filexp <<EOSS
3661$startsh
3662: expand filename
3663case "\$1" in
3664 ~/*|~)
3665 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3666 ;;
3667 ~*)
3668 if $test -f /bin/csh; then
3669 /bin/csh -f -c "glob \$1"
3670 failed=\$?
3671 echo ""
3672 exit \$failed
e5e20432 3673 else
bd9b35c9
JH
3674 name=\`$expr x\$1 : '..\([^/]*\)'\`
3675 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3676 if $test ! -d "\$dir"; then
3677 me=\`basename \$0\`
3678 echo "\$me: can't locate home directory for: \$name" >&2
3679 exit 1
3680 fi
3681 case "\$1" in
3682 */*)
3683 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3684 ;;
3685 *)
3686 echo \$dir
e5e20432
JH
3687 ;;
3688 esac
3689 fi
b691c02f 3690 ;;
4633a7c4 3691*)
bd9b35c9 3692 echo \$1
2304df62
AD
3693 ;;
3694esac
4633a7c4
LW
3695EOSS
3696chmod +x filexp
3697$eunicefix filexp
2304df62
AD
3698
3699: now set up to get a file name
28757baa 3700cat <<EOS >getfile
3701$startsh
3702EOS
3703cat <<'EOSC' >>getfile
2304df62
AD
3704tilde=''
3705fullpath=''
3706already=''
3707skip=''
3708none_ok=''
3709exp_file=''
a0d0e21e 3710nopath_ok=''
2304df62
AD
3711orig_rp="$rp"
3712orig_dflt="$dflt"
b233458b
JH
3713case "$gfpth" in
3714'') gfpth='.' ;;
3715esac
2304df62
AD
3716
3717case "$fn" in
ecfc5424 3718*\(*)
381aa1ff 3719 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
3720 fn=`echo $fn | sed 's/(.*)//'`
3721 ;;
3722esac
3723
3724case "$fn" in
a0d0e21e
LW
3725*:*)
3726 loc_file=`expr $fn : '.*:\(.*\)'`
3727 fn=`expr $fn : '\(.*\):.*'`
3728 ;;
3729esac
3730
3731case "$fn" in
2304df62
AD
3732*~*) tilde=true;;
3733esac
3734case "$fn" in
3735*/*) fullpath=true;;
3736esac
3737case "$fn" in
3738*+*) skip=true;;
3739esac
3740case "$fn" in
3741*n*) none_ok=true;;
3742esac
3743case "$fn" in
3744*e*) exp_file=true;;
3745esac
a0d0e21e
LW
3746case "$fn" in
3747*p*) nopath_ok=true;;
3748esac
2304df62
AD
3749
3750case "$fn" in
3751*f*) type='File';;
3752*d*) type='Directory';;
a0d0e21e 3753*l*) type='Locate';;
2304df62
AD
3754esac
3755
3756what="$type"
3757case "$what" in
3758Locate) what='File';;
3759esac
3760
3761case "$exp_file" in
3762'')
3763 case "$d_portable" in
3764 "$define") ;;
3765 *) exp_file=true;;
3766 esac
3767 ;;
3768esac
3769
3770cd ..
3771while test "$type"; do
3772 redo=''
3773 rp="$orig_rp"
3774 dflt="$orig_dflt"
3775 case "$tilde" in
3776 true) rp="$rp (~name ok)";;
3777 esac
3778 . UU/myread
ecfc5424
AD
3779 if test -f UU/getfile.ok && \
3780 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3781 then
3782 value="$ans"
3783 ansexp="$ans"
3784 break
3785 fi
2304df62
AD
3786 case "$ans" in
3787 none)
3788 value=''
3789 ansexp=''
3790 case "$none_ok" in
3791 true) type='';;
3792 esac
3793 ;;
3794 *)
3795 case "$tilde" in
3796 '') value="$ans"
3797 ansexp="$ans";;
3798 *)
3799 value=`UU/filexp $ans`
3800 case $? in
3801 0)
3802 if test "$ans" != "$value"; then
ecfc5424 3803 echo "(That expands to $value on this system.)"
2304df62
AD
3804 fi
3805 ;;
3806 *) value="$ans";;
3807 esac
3808 ansexp="$value"
3809 case "$exp_file" in
3810 '') value="$ans";;
3811 esac
3812 ;;
3813 esac
3814 case "$fullpath" in
3815 true)
3816 case "$ansexp" in
3817 /*) value="$ansexp" ;;
23da6c43 3818 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3819 *)
3820 redo=true
3821 case "$already" in
3822 true)
3823 echo "I shall only accept a full path name, as in /bin/ls." >&4
3824 echo "Use a ! shell escape if you wish to check pathnames." >&4
3825 ;;
3826 *)
3827 echo "Please give a full path name, starting with slash." >&4
3828 case "$tilde" in
3829 true)
3830 echo "Note that using ~name is ok provided it expands well." >&4
3831 already=true
3832 ;;
3833 esac
3834 esac
3835 ;;
3836 esac
3837 ;;
3838 esac
3839 case "$redo" in
3840 '')
3841 case "$type" in
3842 File)
b233458b
JH
3843 for fp in $gfpth; do
3844 if test "X$fp" = X.; then
3845 pf="$ansexp"
3846 else
3847 pf="$fp/$ansexp"
3848 fi
3849 if test -f "$pf"; then
3850 type=''
3851 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3852 then
3853 echo "($value is not a plain file, but that's ok.)"
3854 type=''
3855 fi
3856 if test X"$type" = X; then
3857 value="$pf"
3858 break
3859 fi
3860 done
2304df62
AD
3861 ;;
3862 Directory)
b233458b
JH
3863 for fp in $gfpth; do
3864 if test "X$fp" = X.; then
f78bfc9c
JH
3865 dir="$ans"
3866 direxp="$ansexp"
b233458b 3867 else
dd858076 3868 dir="$fp/$ansexp"
f78bfc9c 3869 direxp="$fp/$ansexp"
b233458b 3870 fi
f78bfc9c 3871 if test -d "$direxp"; then
b233458b 3872 type=''
f78bfc9c 3873 value="$dir"
b233458b
JH
3874 break
3875 fi
3876 done
2304df62
AD
3877 ;;
3878 Locate)
40000a8c 3879 if test -d "$ansexp"; then
a0d0e21e
LW
3880 echo "(Looking for $loc_file in directory $value.)"
3881 value="$value/$loc_file"
40000a8c 3882 ansexp="$ansexp/$loc_file"
2304df62 3883 fi
40000a8c 3884 if test -f "$ansexp"; then
2304df62
AD
3885 type=''
3886 fi
a0d0e21e
LW
3887 case "$nopath_ok" in
3888 true) case "$value" in
3889 */*) ;;
3890 *) echo "Assuming $value will be in people's path."
3891 type=''
3892 ;;
3893 esac
3894 ;;
3895 esac
2304df62
AD
3896 ;;
3897 esac
3898
3899 case "$skip" in
3900 true) type='';
3901 esac
3902
3903 case "$type" in
3904 '') ;;
3905 *)
3906 if test "$fastread" = yes; then
3907 dflt=y
3908 else
3909 dflt=n
3910 fi
3911 rp="$what $value doesn't exist. Use that name anyway?"
3912 . UU/myread
3913 dflt=''
3914 case "$ans" in
3915 y*) type='';;
3916 *) echo " ";;
3917 esac
3918 ;;
3919 esac
3920 ;;
3921 esac
3922 ;;
3923 esac
3924done
3925cd UU
3926ans="$value"
3927rp="$orig_rp"
3928dflt="$orig_dflt"
ecfc5424 3929rm -f getfile.ok
b233458b 3930test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3931EOSC
3932
bd9b35c9
JH
3933: What should the include directory be ?
3934echo " "
3935$echo $n "Hmm... $c"
3936dflt='/usr/include'
3937incpath=''
3938mips_type=''
3939if $test -f /bin/mips && /bin/mips; then
3940 echo "Looks like a MIPS system..."
3941 $cat >usr.c <<'EOCP'
3942#ifdef SYSTYPE_BSD43
3943/bsd43
3944#endif
3945EOCP
8a27cf78 3946 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3947 dflt='/bsd43/usr/include'
3948 incpath='/bsd43'
3949 mips_type='BSD 4.3'
3950 else
3951 mips_type='System V'
3952 fi
3953 $rm -f usr.c usr.out
3954 echo "and you're compiling with the $mips_type compiler and libraries."
3955 xxx_prompt=y
3956 echo "exit 0" >mips
3957else
3958 echo "Doesn't look like a MIPS system."
3959 xxx_prompt=n
3960 echo "exit 1" >mips
3961fi
3962chmod +x mips
3963$eunicefix mips
3964case "$usrinc" in
3965'') ;;
3966*) dflt="$usrinc";;
3967esac
3968case "$xxx_prompt" in
3969y) fn=d/
3970 echo " "
3971 rp='Where are the include files you want to use?'
3972 . ./getfile
3973 usrinc="$ans"
8e07c86e 3974 ;;
bd9b35c9 3975*) usrinc="$dflt"
8e07c86e
AD
3976 ;;
3977esac
2304df62 3978
96056487
JH
3979: see how we invoke the C preprocessor
3980echo " "
3981echo "Now, how can we feed standard input to your C preprocessor..." >&4
3982cat <<'EOT' >testcpp.c
3983#define ABC abc
3984#define XYZ xyz
3985ABC.XYZ
3986EOT
3987cd ..
3988if test ! -f cppstdin; then
3989 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3990 # AIX cc -E doesn't show the absolute headerfile
3991 # locations but we'll cheat by using the -M flag.
3992 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
3993 else
3994 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3995 fi
3996else
3997 echo "Keeping your $hint cppstdin wrapper."
3998fi
3999chmod 755 cppstdin
4000wrapper=`pwd`/cppstdin
4001ok='false'
4002cd UU
4003
4004if $test "X$cppstdin" != "X" && \
4005 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4006 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4007then
4008 echo "You used to use $cppstdin $cppminus so we'll use that again."
4009 case "$cpprun" in
4010 '') echo "But let's see if we can live without a wrapper..." ;;
4011 *)
4012 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4013 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4014 then
4015 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4016 ok='true'
4017 else
4018 echo "(However, $cpprun $cpplast does not work, let's see...)"
4019 fi
4020 ;;
4021 esac
4022else
4023 case "$cppstdin" in
4024 '') ;;
4025 *)
4026 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4027 ;;
4028 esac
4029fi
4030
4031if $ok; then
4032 : nothing
4033elif echo 'Maybe "'"$cc"' -E" will work...'; \
4034 $cc -E <testcpp.c >testcpp.out 2>&1; \
4035 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4036 echo "Yup, it does."
4037 x_cpp="$cc -E"
4038 x_minus='';
4039elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4040 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4041 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4042 echo "Yup, it does."
4043 x_cpp="$cc -E"
4044 x_minus='-';
4045elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4046 $cc -P <testcpp.c >testcpp.out 2>&1; \
4047 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4048 echo "Yipee, that works!"
4049 x_cpp="$cc -P"
4050 x_minus='';
4051elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4052 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4053 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4054 echo "At long last!"
4055 x_cpp="$cc -P"
4056 x_minus='-';
4057elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4058 $cpp <testcpp.c >testcpp.out 2>&1; \
4059 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4060 echo "It works!"
4061 x_cpp="$cpp"
4062 x_minus='';
4063elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4064 $cpp - <testcpp.c >testcpp.out 2>&1; \
4065 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4066 echo "Hooray, it works! I was beginning to wonder."
4067 x_cpp="$cpp"
4068 x_minus='-';
4069elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4070 $wrapper <testcpp.c >testcpp.out 2>&1; \
4071 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4072 x_cpp="$wrapper"
4073 x_minus=''
4074 echo "Eureka!"
4075else
4076 dflt=''
4077 rp="No dice. I can't find a C preprocessor. Name one:"
4078 . ./myread
4079 x_cpp="$ans"
4080 x_minus=''
4081 $x_cpp <testcpp.c >testcpp.out 2>&1
4082 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4083 echo "OK, that will do." >&4
4084 else
4085echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4086 exit 1
4087 fi
4088fi
4089
4090case "$ok" in
4091false)
4092 cppstdin="$x_cpp"
4093 cppminus="$x_minus"
4094 cpprun="$x_cpp"
4095 cpplast="$x_minus"
4096 set X $x_cpp
4097 shift
4098 case "$1" in
4099 "$cpp")
4100 echo "Perhaps can we force $cc -E using a wrapper..."
4101 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4102 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4103 then
4104 echo "Yup, we can."
4105 cppstdin="$wrapper"
4106 cppminus='';
4107 else
4108 echo "Nope, we'll have to live without it..."
4109 fi
4110 ;;
4111 esac
4112 case "$cpprun" in
4113 "$wrapper")
4114 cpprun=''
4115 cpplast=''
4116 ;;
4117 esac
4118 ;;
4119esac
4120
4121case "$cppstdin" in
4122"$wrapper"|'cppstdin') ;;
4123*) $rm -f $wrapper;;
4124esac
4125$rm -f testcpp.c testcpp.out
4126
bd9b35c9
JH
4127: Set private lib path
4128case "$plibpth" in
4129'') if ./mips; then
4130 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4131 fi;;
4132esac
4133case "$libpth" in
4134' ') dlist='';;
4135'') dlist="$loclibpth $plibpth $glibpth";;
4136*) dlist="$libpth";;
4137esac
4138
4139: Now check and see which directories actually exist, avoiding duplicates
4140libpth=''
4141for xxx in $dlist
4142do
4143 if $test -d $xxx; then
4144 case " $libpth " in
4145 *" $xxx "*) ;;
4146 *) libpth="$libpth $xxx";;
4147 esac
4148 fi
4149done
4150$cat <<'EOM'
4151
4152Some systems have incompatible or broken versions of libraries. Among
4153the directories listed in the question below, please remove any you
4154know not to be holding relevant libraries, and add any that are needed.
4155Say "none" for none.
8e07c86e
AD
4156
4157EOM
bd9b35c9
JH
4158case "$libpth" in
4159'') dflt='none';;
8e07c86e 4160*)
bd9b35c9
JH
4161 set X $libpth
4162 shift
4163 dflt=${1+"$@"}
8e07c86e 4164 ;;
a0d0e21e 4165esac
bd9b35c9
JH
4166rp="Directories to use for library searches?"
4167. ./myread
4168case "$ans" in
4169none) libpth=' ';;
4170*) libpth="$ans";;
4171esac
a0d0e21e 4172
bd9b35c9
JH
4173: compute shared library extension
4174case "$so" in
4175'')
4176 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4177 dflt='sl'
dd4e71fd 4178 else
bd9b35c9 4179 dflt='so'
dd4e71fd
JH
4180 fi
4181 ;;
bd9b35c9 4182*) dflt="$so";;
dd4e71fd 4183esac
dd4e71fd
JH
4184$cat <<EOM
4185
bd9b35c9 4186On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 4187you want to suppress searching of shared libraries for the remainder
bd9b35c9 4188of this configuration.
dd4e71fd
JH
4189
4190EOM
bd9b35c9
JH
4191rp='What is the file extension used for shared libraries?'
4192. ./myread
4193so="$ans"
dd4e71fd 4194
bd9b35c9
JH
4195: Define several unixisms.
4196: Hints files or command line option can be used to override them.
4197: The convoluted testing is in case hints files set either the old
4198: or the new name.
4199case "$_exe" in
4200'') case "$exe_ext" in
1fef16b3 4201 '') ;;
bd9b35c9 4202 *) _exe="$exe_ext" ;;
dd4e71fd 4203 esac
bd9b35c9 4204 ;;
bfb7748a 4205esac
bd9b35c9
JH
4206case "$_a" in
4207'') case "$lib_ext" in
4208 '') _a='.a';;
4209 *) _a="$lib_ext" ;;
dd4e71fd
JH
4210 esac
4211 ;;
dd4e71fd 4212esac
bd9b35c9
JH
4213case "$_o" in
4214'') case "$obj_ext" in
4215 '') _o='.o';;
4216 *) _o="$obj_ext";;
4217 esac
4218 ;;
4219esac
4220case "$p_" in
4221'') case "$path_sep" in
4222 '') p_=':';;
4223 *) p_="$path_sep";;
4224 esac
4225 ;;
4226esac
4227exe_ext=$_exe
4228lib_ext=$_a
4229obj_ext=$_o
4230path_sep=$p_
dd4e71fd 4231
b4eb6b3d
JH
4232: Which makefile gets called first. This is used by make depend.
4233case "$firstmakefile" in
4234'') firstmakefile='makefile';;
4633a7c4 4235esac
4633a7c4 4236
0f0995ae
JH
4237case "$usesocks" in
4238$define|true|[yY]*) dflt='y';;
4239*) dflt='n';;
4240esac
bd9b35c9 4241cat <<EOM
4633a7c4 4242
bd9b35c9 4243Perl can be built to use the SOCKS proxy protocol library. To do so,
cf829ab0
JH
4244Configure must be run with -Dusesocks. If you use SOCKS you also need
4245to use the PerlIO abstraction layer, this will be implicitly selected.
4633a7c4 4246
0f0995ae 4247If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 4248EOM
bd9b35c9
JH
4249rp='Build Perl for SOCKS?'
4250. ./myread
4251case "$ans" in
4252y|Y) val="$define" ;;
4253*) val="$undef" ;;
4254esac
4255set usesocks
4256eval $setvar
4257
cf829ab0
JH
4258case "$usesocks" in
4259$define|true|[yY]*) useperlio="$define";;
4260esac
4261
bd9b35c9
JH
4262: Looking for optional libraries
4263echo " "
4264echo "Checking for optional libraries..." >&4
4265case "$libs" in
4266' '|'') dflt='';;
4267*) dflt="$libs";;
4268esac
4269case "$libswanted" in
4270'') libswanted='c_s';;
4271esac
4272case "$usesocks" in
923fc586 4273"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 4274esac
68435ea7
JH
4275libsfound=''
4276libsfiles=''
4277libsdirs=''
13b3f787
JH
4278libspath=''
4279for thisdir in $libpth $xlibpth; do
4280 test -d $thisdir && libspath="$libspath $thisdir"
4281done
bd9b35c9 4282for thislib in $libswanted; do
13b3f787 4283 for thisdir in $libspath; do
f7dd4e7f
JH
4284 xxx=''
4285 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
eade9b71 4286 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
f7dd4e7f
JH
4287 $test -f "$xxx" && eval $libscheck
4288 $test -f "$xxx" && libstyle=shared
4289 fi
4290 if test ! -f "$xxx"; then
4291 xxx=$thisdir/lib$thislib.$so
4292 $test -f "$xxx" && eval $libscheck
4293 $test -f "$xxx" && libstyle=shared
4294 fi
4295 if test ! -f "$xxx"; then
4296 xxx=$thisdir/lib$thislib$_a
4297 $test -f "$xxx" && eval $libscheck
4298 $test -f "$xxx" && libstyle=static
4299 fi
4300 if test ! -f "$xxx"; then
4301 xxx=$thisdir/$thislib$_a
4302 $test -f "$xxx" && eval $libscheck
4303 $test -f "$xxx" && libstyle=static
4304 fi
4305 if test ! -f "$xxx"; then
4306 xxx=$thisdir/lib${thislib}_s$_a
4307 $test -f "$xxx" && eval $libscheck
4308 $test -f "$xxx" && libstyle=static
09ea5ba9 4309 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
4310 fi
4311 if test ! -f "$xxx"; then
4312 xxx=$thisdir/Slib$thislib$_a
4313 $test -f "$xxx" && eval $libscheck
4314 $test -f "$xxx" && libstyle=static
4315 fi
4316 if $test -f "$xxx"; then
43999f95 4317 case "$libstyle" in
f7dd4e7f
JH
4318 shared) echo "Found -l$thislib (shared)." ;;
4319 static) echo "Found -l$thislib." ;;
4320 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 4321 esac
bd9b35c9
JH
4322 case " $dflt " in
4323 *"-l$thislib "*);;
f7dd4e7f 4324 *) dflt="$dflt -l$thislib"
43999f95
JH
4325 libsfound="$libsfound $xxx"
4326 yyy=`basename $xxx`
4327 libsfiles="$libsfiles $yyy"
1e127011 4328 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
4329 case " $libsdirs " in
4330 *" $yyy "*) ;;
4331 *) libsdirs="$libsdirs $yyy" ;;
4332 esac
4333 ;;
bd9b35c9 4334 esac
f7dd4e7f
JH
4335 break
4336 fi
4337 done
4338 if $test ! -f "$xxx"; then
4339 echo "No -l$thislib."
bd9b35c9
JH
4340 fi
4341done
4342set X $dflt
4343shift
4344dflt="$*"
4345case "$libs" in
4346'') dflt="$dflt";;
4347*) dflt="$libs";;
4348esac
4349case "$dflt" in
4350' '|'') dflt='none';;
4351esac
4633a7c4 4352
bd9b35c9 4353$cat <<EOM
4633a7c4 4354
bd9b35c9
JH
4355In order to compile $package on your machine, a number of libraries
4356are usually needed. Include any other special libraries here as well.
4357Say "none" for none. The default list is almost always right.
8e07c86e 4358EOM
8e07c86e 4359
bd9b35c9
JH
4360echo " "
4361rp="What libraries to use?"
4362. ./myread
4363case "$ans" in
4364none) libs=' ';;
4365*) libs="$ans";;
4366esac
d71b2b6b 4367
bd9b35c9
JH
4368: determine optimization, if desired, or use for debug flag also
4369case "$optimize" in
4370' '|$undef) dflt='none';;
4371'') dflt='-O';;
4372*) dflt="$optimize";;
4373esac
4374$cat <<EOH
d71b2b6b 4375
bd9b35c9
JH
4376By default, $package compiles with the -O flag to use the optimizer.
4377Alternately, you might want to use the symbolic debugger, which uses
4378the -g flag (on traditional Unix systems). Either flag can be
4379specified here. To use neither flag, specify the word "none".
d71b2b6b 4380
bd9b35c9
JH
4381EOH
4382rp="What optimizer/debugger flag should be used?"
4383. ./myread
4384optimize="$ans"
4385case "$optimize" in
4386'none') optimize=" ";;
4387esac
4388
4389dflt=''
4390: We will not override a previous value, but we might want to
4391: augment a hint file
4392case "$hint" in
4393default|recommended)
4394 case "$gccversion" in
4395 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4396 esac
bd9b35c9
JH
4397 case "$optimize" in
4398 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4399 esac
bd9b35c9
JH
4400 case "$gccversion" in
4401 2*) if test -d /etc/conf/kconfig.d &&
4402 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4403 then
4404 dflt="$dflt -posix"
4405 fi
f0d04425 4406 ;;
bd9b35c9
JH
4407 esac
4408 case "$gccversion" in
4409 1*) ;;
4410 2.[0-8]*) ;;
4411 ?*) echo " "
4412 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4413 echo 'int main(void) { return 0; }' > gcctest.c
4414 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4415 echo "Yes, it does." 2>&1
4416 case "$ccflags" in
4417 *strict-aliasing*)
4418 echo "Leaving current flags $ccflags alone." 2>&1
4419 ;;
4420 *) dflt="$dflt -fno-strict-aliasing" ;;
4421 esac
4422 else
4423 echo "Nope, it doesn't, but that's ok." 2>&1
4424 fi
f0d04425 4425 ;;
e5e20432
JH
4426 esac
4427 ;;
4428esac
4429
bd9b35c9
JH
4430case "$mips_type" in
4431*BSD*|'') inclwanted="$locincpth $usrinc";;
4432*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4433esac
4434for thisincl in $inclwanted; do
4435 if $test -d $thisincl; then
4436 if $test x$thisincl != x$usrinc; then
4437 case "$dflt" in
422af00a
LC
4438 *" -I$thisincl "*);;
4439 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
4440 esac
4441 fi
4442 fi
4443done
40a7a20a 4444
bd9b35c9
JH
4445inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4446 xxx=true;
4447elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4448 xxx=true;
4449else
4450 xxx=false;
4451fi;
4452if $xxx; then
4453 case "$dflt" in
4454 *$2*);;
4455 *) dflt="$dflt -D$2";;
4456 esac;
4457fi'
40a7a20a 4458
bd9b35c9 4459set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4460
bd9b35c9
JH
4461case "$usesocks" in
4462$define)
4463 ccflags="$ccflags -DSOCKS"
4464 ;;
4465esac
40a7a20a 4466
bd9b35c9
JH
4467case "$hint" in
4468default|recommended) dflt="$ccflags $dflt" ;;
4469*) dflt="$ccflags";;
4470esac
40a7a20a 4471
bd9b35c9
JH
4472case "$dflt" in
4473''|' ') dflt=none;;
4474esac
422af00a 4475
bd9b35c9 4476$cat <<EOH
40a7a20a 4477
bd9b35c9
JH
4478Your C compiler may want other flags. For this question you should include
4479-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4480but you should NOT include libraries or ld flags like -lwhatever. If you
4481want $package to honor its debug switch, you should include -DDEBUGGING here.
4482Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4483
bd9b35c9 4484To use no flags, specify the word "none".
40a7a20a 4485
bd9b35c9
JH
4486EOH
4487set X $dflt
4488shift
4489dflt=${1+"$@"}
4490rp="Any additional cc flags?"
4491. ./myread
4492case "$ans" in
4493none) ccflags='';;
4494*) ccflags="$ans";;
4495esac
8e07c86e 4496
bd9b35c9 4497: the following weeds options from ccflags that are of no interest to cpp
58e77565
JH
4498case "$cppflags" in
4499'') cppflags="$ccflags" ;;
4500*) cppflags="$cppflags $ccflags" ;;
4501esac
bd9b35c9
JH
4502case "$gccversion" in
45031*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4504esac
bd9b35c9
JH
4505case "$mips_type" in
4506'');;
4507*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4508esac
4509case "$cppflags" in
4510'');;
4511*)
4512 echo " "
4513 echo "Let me guess what the preprocessor flags are..." >&4
4514 set X $cppflags
4515 shift
4516 cppflags=''
4517 $cat >cpp.c <<'EOM'
4518#define BLURFL foo
8e07c86e 4519
bd9b35c9
JH
4520BLURFL xx LFRULB
4521EOM
4522 previous=''
4523 for flag in $*
4524 do
4525 case "$flag" in
4526 -*) ftry="$flag";;
4527 *) ftry="$previous $flag";;
4528 esac
4529 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4530 >cpp1.out 2>/dev/null && \
4531 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4532 >cpp2.out 2>/dev/null && \
4533 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4534 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4535 then
4536 cppflags="$cppflags $ftry"
4537 previous=''
4538 else
4539 previous="$flag"
4540 fi
4541 done
4542 set X $cppflags
4543 shift
4544 cppflags=${1+"$@"}
4545 case "$cppflags" in
4546 *-*) echo "They appear to be: $cppflags";;
4547 esac
4548 $rm -f cpp.c cpp?.out
2afac517 4549 ;;
4550esac
8e07c86e 4551
bd9b35c9
JH
4552: flags used in final linking phase
4553case "$ldflags" in
4554'') if ./venix; then
4555 dflt='-i -z'
10a23457 4556 else
bd9b35c9 4557 dflt=''
10a23457 4558 fi
bd9b35c9
JH
4559 case "$ccflags" in
4560 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4561 esac
bd9b35c9
JH
4562 ;;
4563*) dflt="$ldflags";;
4564esac
4565
4566: Try to guess additional flags to pick up local libraries.
4567for thislibdir in $libpth; do
4568 case " $loclibpth " in
4569 *" $thislibdir "*)
4570 case "$dflt " in
4571 *"-L$thislibdir "*) ;;
4572 *) dflt="$dflt -L$thislibdir" ;;
4573 esac
c4f23d77
AD
4574 ;;
4575 esac
bd9b35c9 4576done
c4f23d77 4577
bd9b35c9
JH
4578case "$dflt" in
4579'') dflt='none' ;;
4580esac
c4f23d77 4581
bd9b35c9
JH
4582$cat <<EOH
4583
4584Your C linker may need flags. For this question you should
4585include -L/whatever and any other flags used by the C linker, but you
4586should NOT include libraries like -lwhatever.
4587
4588Make sure you include the appropriate -L/path flags if your C linker
4589does not normally search all of the directories you specified above,
4590namely
4591 $libpth
4592To use no flags, specify the word "none".
4593
4594EOH
4595
4596rp="Any additional ld flags (NOT including libraries)?"
4597. ./myread
4598case "$ans" in
4599none) ldflags='';;
4600*) ldflags="$ans";;
4601esac
4602rmlist="$rmlist pdp11"
4603
4604: coherency check
4605echo " "
4606echo "Checking your choice of C compiler and flags for coherency..." >&4
4607$cat > try.c <<'EOF'
4608#include <stdio.h>
4609int main() { printf("Ok\n"); exit(0); }
4610EOF
7a282f6d 4611set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4612shift
4613$cat >try.msg <<'EOM'
4614I've tried to compile and run the following simple program:
4615
4616EOM
4617$cat try.c >> try.msg
4618
4619$cat >> try.msg <<EOM
4620
4621I used the command:
4622
4623 $*
5440bc8e 4624 $run ./try
bd9b35c9
JH
4625
4626and I got the following output:
4627
4628EOM
4629dflt=y
73614538 4630if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5440bc8e
JH
4631 if $sh -c "$run ./try" >>try.msg 2>&1; then
4632 xxx=`$run ./try`
bd9b35c9
JH
4633 case "$xxx" in
4634 "Ok") dflt=n ;;
4635 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4636 case " $libs " in
4637 *" -lsfio "*)
4638 cat >> try.msg <<'EOQS'
4639If $libs contains -lsfio, and sfio is mis-configured, then it
4640sometimes (apparently) runs and exits with a 0 status, but with no
4641output! It may have to do with sfio's use of _exit vs. exit.
4642
4643EOQS
4644 rp="You have a big problem. Shall I abort Configure"
4645 dflt=y
4646 ;;
4647 esac
4648 ;;
4649 esac
4650 else
4651 echo "The program compiled OK, but exited with status $?." >>try.msg
4652 rp="You have a problem. Shall I abort Configure"
4653 dflt=y
4654 fi
4655else
4656 echo "I can't compile the test program." >>try.msg
4657 rp="You have a BIG problem. Shall I abort Configure"
4658 dflt=y
4659fi
4660case "$dflt" in
4661y)
4662 $cat try.msg >&4
4663 case "$knowitall" in
4664 '')
4665 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4666 ;;
bd9b35c9 4667 *) dflt=n;;
c4f23d77 4668 esac
bd9b35c9
JH
4669 echo " "
4670 . ./myread
4671 case "$ans" in
4672 n*|N*) ;;
4673 *) echo "Ok. Stopping Configure." >&4
4674 exit 1
c4f23d77
AD
4675 ;;
4676 esac
4677 ;;
bd9b35c9 4678n) echo "OK, that should do.";;
c4f23d77 4679esac
bd9b35c9 4680$rm -f try try.* core
c4f23d77 4681
bd9b35c9
JH
4682: define a shorthand compile call
4683compile='
4684mc_file=$1;
4685shift;
08413ebc 4686$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4687: define a shorthand compile call for compilations that should be ok.
4688compile_ok='
4689mc_file=$1;
4690shift;
7a282f6d 4691$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4692
b4eb6b3d 4693: check for lengths of integral types
bd9b35c9 4694echo " "
b4eb6b3d
JH
4695case "$intsize" in
4696'')
4697 echo "Checking to see how big your integers are..." >&4
5440bc8e 4698 $cat >try.c <<'EOCP'
bd9b35c9
JH
4699#include <stdio.h>
4700int main()
4701{
b4eb6b3d
JH
4702 printf("intsize=%d;\n", (int)sizeof(int));
4703 printf("longsize=%d;\n", (int)sizeof(long));
4704 printf("shortsize=%d;\n", (int)sizeof(short));
4705 exit(0);
bd9b35c9 4706}
b4eb6b3d 4707EOCP
5440bc8e
JH
4708 set try
4709 if eval $compile_ok && $run ./try > /dev/null; then
4710 eval `$run ./try`
b4eb6b3d
JH
4711 echo "Your integers are $intsize bytes long."
4712 echo "Your long integers are $longsize bytes long."
4713 echo "Your short integers are $shortsize bytes long."
4714 else
4715 $cat >&4 <<EOM
4716!
4717Help! I can't compile and run the intsize test program: please enlighten me!
4718(This is probably a misconfiguration in your system or libraries, and
4719you really ought to fix it. Still, I'll try anyway.)
4720!
bd9b35c9 4721EOM
b4eb6b3d
JH
4722 dflt=4
4723 rp="What is the size of an integer (in bytes)?"
96056487
JH
4724 . ./myread
4725 intsize="$ans"
4726 dflt=$intsize
4727 rp="What is the size of a long integer (in bytes)?"
4728 . ./myread
4729 longsize="$ans"
4730 dflt=2
4731 rp="What is the size of a short integer (in bytes)?"
4732 . ./myread
4733 shortsize="$ans"
b4eb6b3d
JH
4734 fi
4735 ;;
4736esac
96056487 4737$rm -f try try.*
b4eb6b3d 4738
8dfa8df9
JH
4739: check for void type
4740echo " "
4741echo "Checking to see how well your C compiler groks the void type..." >&4
4742case "$voidflags" in
4743'')
4744 $cat >try.c <<'EOCP'
4745#if TRY & 1
4746void sub() {
4747#else
4748sub() {
4749#endif
4750 extern void moo(); /* function returning void */
4751 void (*goo)(); /* ptr to func returning void */
4752#if TRY & 8
4753 void *hue; /* generic ptr */
4754#endif
4755#if TRY & 2
4756 void (*foo[10])();
4757#endif
4758
4759#if TRY & 4
4760 if(goo == moo) {
4761 exit(0);
4762 }
4763#endif
4764 exit(0);
4765}
4766int main() { sub(); }
4767EOCP
4768 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4769 voidflags=$defvoidused
4770 echo "Good. It appears to support void to the level $package wants.">&4
4771 if $contains warning .out >/dev/null 2>&1; then
4772 echo "However, you might get some warnings that look like this:"
4773 $cat .out
4774 fi
4775 else
4776echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4777 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4778 echo "It supports 1..."
4779 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4780 echo "It also supports 2..."
4781 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4782 voidflags=7
4783 echo "And it supports 4 but not 8 definitely."
4784 else
4785 echo "It doesn't support 4..."
4786 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4787 voidflags=11
4788 echo "But it supports 8."
4789 else
4790 voidflags=3
4791 echo "Neither does it support 8."
4792 fi
4793 fi
4794 else
4795 echo "It does not support 2..."
4796 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4797 voidflags=13
4798 echo "But it supports 4 and 8."
4799 else
4800 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4801 voidflags=5
4802 echo "And it supports 4 but has not heard about 8."
4803 else
4804 echo "However it supports 8 but not 4."
4805 fi
4806 fi
4807 fi
4808 else
4809 echo "There is no support at all for void."
4810 voidflags=0
4811 fi
4812 fi
4813esac
4814case "$voidflags" in
4815"$defvoidused") ;;
4816*) $cat >&4 <<'EOM'
4817 Support flag bits are:
4818 1: basic void declarations.
4819 2: arrays of pointers to functions returning void.
4820 4: operations between pointers to and addresses of void functions.
4821 8: generic void pointers.
4822EOM
4823 dflt="$voidflags";
4824 rp="Your void support flags add up to what?"
4825 . ./myread
4826 voidflags="$ans"
4827 ;;
4828esac
4829$rm -f try.* .out
4830
4831: check for length of pointer
4832echo " "
4833case "$ptrsize" in
4834'')
4835 echo "Checking to see how big your pointers are..." >&4
4836 if test "$voidflags" -gt 7; then
4837 echo '#define VOID_PTR char *' > try.c
4838 else
4839 echo '#define VOID_PTR void *' > try.c
4840 fi
4841 $cat >>try.c <<'EOCP'
4842#include <stdio.h>
4843int main()
4844{
4845 printf("%d\n", (int)sizeof(VOID_PTR));
4846 exit(0);
4847}
4848EOCP
4849 set try
4850 if eval $compile_ok; then
5440bc8e 4851 ptrsize=`$run ./try`
8dfa8df9
JH
4852 echo "Your pointers are $ptrsize bytes long."
4853 else
4854 dflt='4'
4855 echo "(I can't seem to compile the test program. Guessing...)" >&4
4856 rp="What is the size of a pointer (in bytes)?"
4857 . ./myread
4858 ptrsize="$ans"
4859 fi
4860 ;;
4861esac
4862$rm -f try.c try
4863
4864: check for long long
4865echo " "
4866echo "Checking to see if you have long long..." >&4
4867echo 'int main() { long long x = 7; return 0; }' > try.c
4868set try
4869if eval $compile; then
4870 val="$define"
4871 echo "You have long long."
4872else
4873 val="$undef"
4874 echo "You do not have long long."
4875fi
4876$rm try.*
4877set d_longlong
4878eval $setvar
4879
4880: check for length of long long
4881case "${d_longlong}${longlongsize}" in
4882$define)
4883 echo " "
4884 echo "Checking to see how big your long longs are..." >&4
4885 $cat >try.c <<'EOCP'
4886#include <stdio.h>
4887int main()
4888{
4889 printf("%d\n", (int)sizeof(long long));
4890 return(0);
4891}
4892EOCP
4893 set try
4894 if eval $compile_ok; then
5440bc8e 4895 longlongsize=`$run ./try`
8dfa8df9
JH
4896 echo "Your long longs are $longlongsize bytes long."
4897 else
4898 dflt='8'
4899 echo " "
4900 echo "(I can't seem to compile the test program. Guessing...)"
4901 rp="What is the size of a long long (in bytes)?"
4902 . ./myread
4903 longlongsize="$ans"
4904 fi
4905 if $test "X$longsize" = "X$longlongsize"; then
4906 echo "(That isn't any different from an ordinary long.)"
4907 fi
4908 ;;
4909esac
4910$rm -f try.* try
4911
4912: determine filename position in cpp output
4913echo " "
4914echo "Computing filename position in cpp output for #include directives..." >&4
a5a94ea5
JH
4915case "$osname" in
4916vos) testaccess=-e ;;
4917*) testaccess=-r ;;
4918esac
8dfa8df9
JH
4919echo '#include <stdio.h>' > foo.c
4920$cat >fieldn <<EOF
4921$startsh
4922$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4923$grep '^[ ]*#.*stdio\.h' | \
4924while read cline; do
4925 pos=1
4926 set \$cline
4927 while $test \$# -gt 0; do
a5a94ea5 4928 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
8dfa8df9
JH
4929 echo "\$pos"
4930 exit 0
4931 fi
4932 shift
4933 pos=\`expr \$pos + 1\`
4934 done
4935done
4936EOF
4937chmod +x fieldn
4938fieldn=`./fieldn`
4939$rm -f foo.c fieldn
4940case $fieldn in
4941'') pos='???';;
49421) pos=first;;
49432) pos=second;;
49443) pos=third;;
4945*) pos="${fieldn}th";;
4946esac
4947echo "Your cpp writes the filename in the $pos field of the line."
4948
3c728e00
JH
4949case "$osname" in
4950vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
4951*) cppfilter='' ;;
4952esac
8dfa8df9
JH
4953: locate header file
4954$cat >findhdr <<EOF
4955$startsh
4956wanted=\$1
4957name=''
4958for usrincdir in $usrinc
4959do
4960 if test -f \$usrincdir/\$wanted; then
4961 echo "\$usrincdir/\$wanted"
4962 exit 0
4963 fi
4964done
4965awkprg='{ print \$$fieldn }'
4966echo "#include <\$wanted>" > foo\$\$.c
4967$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
3c728e00 4968$cppfilter $grep "^[ ]*#.*\$wanted" | \
8dfa8df9
JH
4969while read cline; do
4970 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4971 case "\$name" in
4972 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4973 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4974 *) exit 2;;
4975 esac;
4976done;
4977#
4978# status = 0: grep returned 0 lines, case statement not executed
4979# status = 1: headerfile found
4980# status = 2: while loop executed, no headerfile found
4981#
4982status=\$?
4983$rm -f foo\$\$.c;
4984if test \$status -eq 1; then
4985 exit 0;
4986fi
4987exit 1
4988EOF
4989chmod +x findhdr
4990
4991: define an alternate in-header-list? function
4992inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4993cont=true; xxf="echo \"<\$1> found.\" >&4";
4994case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4995*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4996esac;
4997case $# in 4) instead=instead;; *) instead="at last";; esac;
4998while $test "$cont"; do
4999 xxx=`./findhdr $1`
5000 var=$2; eval "was=\$$2";
5001 if $test "$xxx" && $test -r "$xxx";
5002 then eval $xxf;
5003 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5004 cont="";
5005 else eval $xxnf;
5006 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5007 set $yyy; shift; shift; yyy=$@;
5008 case $# in 0) cont="";;
5009 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5010 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5011 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5012 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5013 esac;
5014done;
5015while $test "$yyy";
5016do set $yyy; var=$2; eval "was=\$$2";
5017 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5018 set $yyy; shift; shift; yyy=$@;
5019done'
5020
5021: see if inttypes.h is available
5022: we want a real compile instead of Inhdr because some systems
5023: have an inttypes.h which includes non-existent headers
5024echo " "
5025$cat >try.c <<EOCP
5026#include <inttypes.h>
5027int main() {
5028 static int32_t foo32 = 0x12345678;
5029}
5030EOCP
5031set try
5032if eval $compile; then
5033 echo "<inttypes.h> found." >&4
5034 val="$define"
5035else
5036 echo "<inttypes.h> NOT found." >&4
5037 val="$undef"
5038fi
5039$rm -f try.c try
5040set i_inttypes
5041eval $setvar
5042
5043: check for int64_t
5044echo " "
5045echo "Checking to see if you have int64_t..." >&4
5046$cat >try.c <<EOCP
5047#include <sys/types.h>
5048#$i_inttypes I_INTTYPES
5049#ifdef I_INTTYPES
5050#include <inttypes.h>
5051#endif
5052int main() { int64_t x = 7; }
5053EOCP
5054set try
5055if eval $compile; then
5056 val="$define"
5057 echo "You have int64_t."
5058else
5059 val="$undef"
5060 echo "You do not have int64_t."
5061fi
5062$rm -f try try.*
5063set d_int64_t
5064eval $setvar
5065
5066
5067echo " "
5068echo "Checking which 64-bit integer type we could use..." >&4
5069
5070case "$intsize" in
50718) val=int
5072 set quadtype
5073 eval $setvar
5074 val='"unsigned int"'
5075 set uquadtype
5076 eval $setvar
5077 quadkind=1
5078 ;;
5079*) case "$longsize" in
5080 8) val=long
5081 set quadtype
5082 eval $setvar
5083 val='"unsigned long"'
5084 set uquadtype
5085 eval $setvar
5086 quadkind=2
5087 ;;
5088 *) case "$d_longlong:$longlongsize" in
5089 define:8)
5090 val='"long long"'
5091 set quadtype
5092 eval $setvar
5093 val='"unsigned long long"'
5094 set uquadtype
5095 eval $setvar
5096 quadkind=3
5097 ;;
5098 *) case "$d_int64_t" in
5099 define)
5100 val=int64_t
5101 set quadtype
5102 eval $setvar
5103 val=uint64_t
5104 set uquadtype
5105 eval $setvar
5106 quadkind=4
5107 ;;
5108 esac
5109 ;;
5110 esac
5111 ;;
5112 esac
5113 ;;
5114esac
5115
5116case "$quadtype" in
5117'') echo "Alas, no 64-bit integer types in sight." >&4
5118 d_quad="$undef"
5119 ;;
5120*) echo "We could use '$quadtype' for 64-bit integers." >&4
5121 d_quad="$define"
5122 ;;
5123esac
5124
b4eb6b3d
JH
5125
5126case "$uselonglong" in
5127"$define"|true|[yY]*)
5128 cat <<EOM >&4
5129
5130*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5131EOM
5132 use64bitint="$define"
5133 ;;
5134esac
5135case "$use64bits" in
5136"$define"|true|[yY]*)
5137 cat <<EOM >&4
5138
5139*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5140EOM
5141 use64bitint="$define"
5142 ;;
5143esac
5144case "$use64bitints" in
5145"$define"|true|[yY]*)
5146 cat <<EOM >&4
5147
5148*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5149EOM
5150 use64bitint="$define"
5151 ;;
5152esac
5153case "$use64bitsint" in
5154"$define"|true|[yY]*)
5155 cat <<EOM >&4
5156
5157*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5158EOM
5159 use64bitint="$define"
5160 ;;
5161esac
5162case "$uselonglongs" in
5163"$define"|true|[yY]*)
5164 cat <<EOM >&4
5165
5166*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5167EOM
5168 use64bitint="$define"
5169 ;;
5170esac
5171case "$use64bitsall" in
5172"$define"|true|[yY]*)
5173 cat <<EOM >&4
5174
5175*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5176EOM
5177 use64bitall="$define"
5178 ;;
5179esac
5180
5181case "$ccflags" in
5182*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5183esac
5184case "$use64bitall" in
5185"$define"|true|[yY]*) use64bitint="$define" ;;
5186esac
5187
5188case "$longsize" in
51898) cat <<EOM
5190
5191You have natively 64-bit long integers.
5192EOM
5193 val="$define"
5194 ;;
5195*) case "$use64bitint" in
5196 "$define"|true|[yY]*) dflt='y';;
5197 *) dflt='n';;
5198 esac
8dfa8df9
JH
5199 case "$d_quad" in
5200 "$define") ;;
5201 *) dflt='n' ;;
5202 esac
b4eb6b3d
JH
5203 cat <<EOM
5204
5205Perl can be built to take advantage of 64-bit integer types
5206on some systems. To do so, Configure can be run with -Duse64bitint.
5207Choosing this option will most probably introduce binary incompatibilities.
5208
5209If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5210(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5211EOM
5212 rp='Try to use 64-bit integers, if available?'
5213 . ./myread
5214 case "$ans" in
5215 [yY]*) val="$define" ;;
5216 *) val="$undef" ;;
5217 esac
5218 ;;
5219esac
5220set use64bitint
5221eval $setvar
5222
5223case "$use64bitall" in
5224"$define"|true|[yY]*) dflt='y' ;;
5225*) case "$longsize" in
5226 8) dflt='y' ;;
5227 *) dflt='n' ;;
5228 esac
5229 ;;
5230esac
5231cat <<EOM
5232
5233You may also choose to try maximal 64-bitness. It means using as much
523464-bitness as possible on the platform. This in turn means even more
5235binary incompatibilities. On the other hand, your platform may not
5236have any more 64-bitness available than what you already have chosen.
5237
5238If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5239(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5240EOM
5241rp='Try to use maximal 64-bit support, if available?'
5242. ./myread
5243case "$ans" in
5244[yY]*) val="$define" ;;
5245*) val="$undef" ;;
5246esac
5247set use64bitall
5248eval $setvar
5249case "$use64bitall" in
5250"$define")
5251 case "$use64bitint" in
5252 "$undef")
5253 cat <<EOM
5254
5255Since you have chosen a maximally 64-bit build, I'm also turning on
5256the use of 64-bit integers.
5257EOM
5258 use64bitint="$define" ;;
5259 esac
5260 ;;
5261esac
5262
8dfa8df9
JH
5263case "$use64bitall" in
5264"$define"|true|[yY]*)
5265 case "$ptrsize" in
5266 4) cat <<EOM >&4
5267
5268*** You have chosen a maximally 64-bit build, but your pointers
5269*** are only 4 bytes wide, disabling maximal 64-bitness.
5270
5271EOM
5272 use64bitall="$undef"
5273 case "$use64bitint" in
5274 "$define"|true|[yY]*) ;;
5275 *) cat <<EOM >&4
5276
5277*** Downgrading from maximal 64-bitness to using 64-bit integers.
5278
5279EOM
5280 use64bitint="$define"
5281 ;;
5282 esac
5283 ;;
5284 esac
5285 ;;
5286esac
5287
b4eb6b3d
JH
5288case "$use64bitint" in
5289"$define"|true|[yY]*)
5290: Look for a hint-file generated 'call-back-unit'. If the
5291: user has specified that a 64-bit perl is to be built,
5292: we may need to set or change some other defaults.
5293 if $test -f use64bitint.cbu; then
5294 echo "Your platform has some specific hints for 64-bit integers, using them..."
5295 . ./use64bitint.cbu
5296 fi
5297 case "$longsize" in
5298 4) case "$archname64" in
5299 '') archname64=64int ;;
5300 esac
5301 ;;
5302 esac
5303 ;;
5304esac
5305
5306case "$use64bitall" in
5307"$define"|true|[yY]*)
5308: Look for a hint-file generated 'call-back-unit'. If the
5309: user has specified that a maximally 64-bit perl is to be built,
5310: we may need to set or change some other defaults.
5311 if $test -f use64bitall.cbu; then
5312 echo "Your platform has some specific hints for 64-bit builds, using them..."
5313 . ./use64bitall.cbu
5314 fi
5315 case "$longsize" in
5316 4) case "$archname64" in
5317 ''|64int) archname64=64all ;;
5318 esac
5319 ;;
5320 esac
5321 ;;
5322esac
5323
5324echo " "
5325echo "Checking for GNU C Library..." >&4
5440bc8e 5326cat >try.c <<EOM
b4eb6b3d
JH
5327#include <stdio.h>
5328int main()
5329{
5330#ifdef __GLIBC__
5331 exit(0);
5332#else
5333 exit(1);
5334#endif
5335}
5336EOM
5440bc8e
JH
5337set try
5338if eval $compile_ok && $run ./try; then
b4eb6b3d
JH
5339 val="$define"
5340 echo "You are using the GNU C Library"
5341else
5342 val="$undef"
5343 echo "You are not using the GNU C Library"
5344fi
5440bc8e 5345$rm -f try try.*
b4eb6b3d
JH
5346set d_gnulibc
5347eval $setvar
5348
5349: see if nm is to be used to determine whether a symbol is defined or not
5350case "$usenm" in
5351'')
5352 dflt=''
c1a7f87b
JH
5353 case "$d_gnulibc" in
5354 "$define")
5355 echo " "
5356 echo "nm probably won't work on the GNU C Library." >&4
5357 dflt=n
bd9b35c9 5358 ;;
c1a7f87b
JH
5359 esac
5360 case "$dflt" in
5361 '')
5362 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5363 echo " "
5364 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5365 echo "'nm' won't be sufficient on this sytem." >&4
5366 dflt=n
5367 fi
5368 ;;
5369 esac
5370 case "$dflt" in
5371 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5372 if $test $dflt -gt 20; then
5373 dflt=y
5374 else
5375 dflt=n
5376 fi
bd9b35c9
JH
5377 ;;
5378 esac
bd9b35c9
JH
5379 ;;
5380*)
c1a7f87b
JH
5381 case "$usenm" in
5382 true|$define) dflt=y;;
5383 *) dflt=n;;
5384 esac
bd9b35c9
JH
5385 ;;
5386esac
5387$cat <<EOM
5388
c1a7f87b
JH
5389I can use $nm to extract the symbols from your C libraries. This
5390is a time consuming task which may generate huge output on the disk (up
5391to 3 megabytes) but that should make the symbols extraction faster. The
5392alternative is to skip the 'nm' extraction part and to compile a small
5393test program instead to determine whether each symbol is present. If
5394you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5395this may be the best solution.
5396
5397You probably shouldn't let me use 'nm' if you are using the GNU C Library.
bd9b35c9
JH
5398
5399EOM
c1a7f87b
JH
5400rp="Shall I use $nm to extract C symbols from the libraries?"
5401. ./myread
5402case "$ans" in
5403[Nn]*) usenm=false;;
5404*) usenm=true;;
bd9b35c9 5405esac
bd9b35c9 5406
c1a7f87b
JH
5407runnm=$usenm
5408case "$reuseval" in
5409true) runnm=false;;
8e07c86e 5410esac
29209bc5 5411
c1a7f87b
JH
5412: nm options which may be necessary
5413case "$nm_opt" in
5414'') if $test -f /mach_boot; then
5415 nm_opt='' # Mach
5416 elif $test -d /usr/ccs/lib; then
5417 nm_opt='-p' # Solaris (and SunOS?)
5418 elif $test -f /dgux; then
5419 nm_opt='-p' # DG-UX
5420 elif $test -f /lib64/rld; then
5421 nm_opt='-p' # 64-bit Irix
5422 else
5423 nm_opt=''
5424 fi;;
5425esac
bd9b35c9 5426
c1a7f87b
JH
5427: nm options which may be necessary for shared libraries but illegal
5428: for archive libraries. Thank you, Linux.
5429case "$nm_so_opt" in
5430'') case "$myuname" in
5431 *linux*)
5432 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5433 nm_so_opt='--dynamic'
5434 fi
5435 ;;
bd9b35c9 5436 esac
c1a7f87b
JH
5437 ;;
5438esac
8e07c86e 5439
c1a7f87b
JH
5440case "$runnm" in
5441true)
5442: get list of predefined functions in a handy place
5443echo " "
5444case "$libc" in
5445'') libc=unknown
5446 case "$libs" in
5447 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
bd9b35c9 5448 esac
ff935051
JH
5449 ;;
5450esac
c1a7f87b
JH
5451case "$libs" in
5452'') ;;
5453*) for thislib in $libs; do
5454 case "$thislib" in
5455 -lc|-lc_s)
5456 : Handle C library specially below.
5457 ;;
5458 -l*)
5459 thislib=`echo $thislib | $sed -e 's/^-l//'`
5460 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5461 :
5462 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5463 :
5464 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5465 :
5466 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5467 :
5468 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5469 :
5470 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5471 :
5472 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5473 :
5474 else
5475 try=''
5476 fi
5477 libnames="$libnames $try"
5478 ;;
5479 *) libnames="$libnames $thislib" ;;
34d1710f 5480 esac
c1a7f87b 5481 done
4633a7c4
LW
5482 ;;
5483esac
c1a7f87b
JH
5484xxx=normal
5485case "$libc" in
5486unknown)
5487 set /lib/libc.$so
5488 for xxx in $libpth; do
5489 $test -r $1 || set $xxx/libc.$so
5490 : The messy sed command sorts on library version numbers.
5491 $test -r $1 || \
5492 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5493 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5494 h
5495 s/[0-9][0-9]*/0000&/g
5496 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5497 G
5498 s/\n/ /' | \
381aa1ff 5499 $sort | $sed -e 's/^.* //'`
c1a7f87b
JH
5500 eval set \$$#
5501 done
5502 $test -r $1 || set /usr/ccs/lib/libc.$so
5503 $test -r $1 || set /lib/libsys_s$_a
5504 ;;
5505*)
5506 set blurfl
5507 ;;
a4f3eea9 5508esac
c1a7f87b
JH
5509if $test -r "$1"; then
5510 echo "Your (shared) C library seems to be in $1."
5511 libc="$1"
5512elif $test -r /lib/libc && $test -r /lib/clib; then
5513 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5514 xxx=apollo
5515 libc='/lib/clib /lib/libc'
5516 if $test -r /lib/syslib; then
5517 echo "(Your math library is in /lib/syslib.)"
5518 libc="$libc /lib/syslib"
5519 fi
5520elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5521 echo "Your C library seems to be in $libc, as you said before."
5522elif $test -r $incpath/usr/lib/libc$_a; then
5523 libc=$incpath/usr/lib/libc$_a;
5524 echo "Your C library seems to be in $libc. That's fine."
5525elif $test -r /lib/libc$_a; then
5526 libc=/lib/libc$_a;
5527 echo "Your C library seems to be in $libc. You're normal."
5528else
5529 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5530 :
5531 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5532 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5533 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5534 :
5535 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5536 :
5537 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5538 :
5539 else
5540 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5541 fi
5542 if $test -r "$tans"; then
5543 echo "Your C library seems to be in $tans, of all places."
5544 libc=$tans
5545 else
5546 libc='blurfl'
5547 fi
5548fi
5549if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5550 dflt="$libc"
5551 cat <<EOM
a4f3eea9 5552
c1a7f87b
JH
5553If the guess above is wrong (which it might be if you're using a strange
5554compiler, or your machine supports multiple models), you can override it here.
bd9b35c9
JH
5555
5556EOM
a4f3eea9 5557else
c1a7f87b 5558 dflt=''
381aa1ff 5559 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
c1a7f87b
JH
5560 cat >&4 <<EOM
5561I can't seem to find your C library. I've looked in the following places:
a4f3eea9 5562
c1a7f87b
JH
5563EOM
5564 $sed 's/^/ /' libpath
5565 cat <<EOM
29209bc5 5566
c1a7f87b 5567None of these seems to contain your C library. I need to get its name...
a4f3eea9 5568
bd9b35c9 5569EOM
bd9b35c9 5570fi
c1a7f87b
JH
5571fn=f
5572rp='Where is your C library?'
5573. ./getfile
5574libc="$ans"
a4f3eea9 5575
c1a7f87b 5576echo " "
381aa1ff 5577echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
c1a7f87b
JH
5578set X `cat libnames`
5579shift
5580xxx=files
5581case $# in 1) xxx=file; esac
5582echo "Extracting names from the following $xxx for later perusal:" >&4
5583echo " "
5584$sed 's/^/ /' libnames >&4
5585echo " "
5586$echo $n "This may take a while...$c" >&4
a4f3eea9 5587
c1a7f87b
JH
5588for file in $*; do
5589 case $file in
5590 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5591 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 5592 esac
c1a7f87b 5593done >libc.tmp
a4f3eea9 5594
c1a7f87b
JH
5595$echo $n ".$c"
5596$grep fprintf libc.tmp > libc.ptf
5597xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5598xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5599xxx='[ADTSIW]'
5600if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5601 eval $xscan;\
5602 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5603 eval $xrun
5604elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5605 eval $xscan;\
5606 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5607 eval $xrun
5608elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5609 eval $xscan;\
5610 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5611 eval $xrun
5612elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5613 eval $xscan;\
5614 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5615 eval $xrun
5616elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5617 eval $xscan;\
5618 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5619 eval $xrun
5620elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5621 eval $xscan;\
5622 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5623 eval $xrun
5624elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5625 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5626 eval $xscan;\
5627 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5628 eval $xrun
5629elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5630 eval $xscan;\
5631 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5632 eval $xrun
5633elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5634 eval $xscan;\
5635 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5636 eval $xrun
5637elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5638 eval $xscan;\
5639 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5640 eval $xrun
5641elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5642 eval $xscan;\
5643 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5644 eval $xrun
5645elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5646 eval $xscan;\
5647 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5648 eval $xrun
5649elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5650 eval $xscan;\
5651 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5652 eval $xrun
5653elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5654 eval $xscan;\
5655 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5656 eval $xrun
5657else
5658 $nm -p $* 2>/dev/null >libc.tmp
5659 $grep fprintf libc.tmp > libc.ptf
5660 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5661 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5662 then
5663 nm_opt='-p'
5664 eval $xrun
bd9b35c9 5665 else
c1a7f87b
JH
5666 echo " "
5667 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5668 com=''
5669 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5670 for thisname in $libnames $libc; do
5671 $ar t $thisname >>libc.tmp
5672 done
5673 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5674 echo "Ok." >&4
5675 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5676 # Repeat libc to extract forwarders to DLL entries too
5677 for thisname in $libnames $libc; do
5678 $ar tv $thisname >>libc.tmp
5679 # Revision 50 of EMX has bug in $ar.
5680 # it will not extract forwarders to DLL entries
5681 # Use emximp which will extract exactly them.
5682 emximp -o tmp.imp $thisname \
5683 2>/dev/null && \
5684 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5685 < tmp.imp >>libc.tmp
5686 $rm tmp.imp
5687 done
5688 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5689 echo "Ok." >&4
5690 else
5691 echo "$ar didn't seem to work right." >&4
5692 echo "Maybe this is a Cray...trying bld instead..." >&4
5693 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5694 then
5695 for thisname in $libnames; do
5696 bld t $libnames | \
5697 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5698 $ar t $thisname >>libc.tmp
5699 done
5700 echo "Ok." >&4
bd9b35c9 5701 else
c1a7f87b
JH
5702 echo "That didn't work either. Giving up." >&4
5703 exit 1
bd9b35c9 5704 fi
c1a7f87b 5705 fi
a4f3eea9 5706 fi
a4f3eea9 5707fi
c1a7f87b
JH
5708nm_extract="$com"
5709if $test -f /lib/syscalls.exp; then
5710 echo " "
5711 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
a8c676c6 5712 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
c1a7f87b
JH
5713fi
5714;;
5715esac
5716$rm -f libnames libpath
bd9b35c9 5717
c1a7f87b
JH
5718: is a C symbol defined?
5719csym='tlook=$1;
5720case "$3" in
5721-v) tf=libc.tmp; tc=""; tdc="";;
5722-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5723*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5724esac;
5725tx=yes;
5726case "$reuseval-$4" in
5727true-) ;;
5728true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5729esac;
5730case "$tx" in
5731yes)
5732 case "$runnm" in
5733 true)
5734 if $contains $tlook $tf >/dev/null 2>&1;
5735 then tval=true;
5736 else tval=false;
5737 fi;;
5738 *)
5739 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7a282f6d 5740 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
c1a7f87b
JH
5741 then tval=true;
5742 else tval=false;
5743 fi;
5744 $rm -f t t.c;;
5745 esac;;
5746*)
5747 case "$tval" in
5748 $define) tval=true;;
5749 *) tval=false;;
5750 esac;;
5751esac;
5752eval "$2=$tval"'
bd9b35c9 5753
c1a7f87b
JH
5754: define an is-in-libc? function
5755inlibc='echo " "; td=$define; tu=$undef;
5756sym=$1; var=$2; eval "was=\$$2";
5757tx=yes;
5758case "$reuseval$was" in
5759true) ;;
5760true*) tx=no;;
5761esac;
5762case "$tx" in
5763yes)
5764 set $sym tres -f;
5765 eval $csym;
5766 case "$tres" in
5767 true)
5768 echo "$sym() found." >&4;
5769 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5770 *)
5771 echo "$sym() NOT found." >&4;
5772 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5773 esac;;
bd9b35c9 5774*)
c1a7f87b
JH
5775 case "$was" in
5776 $define) echo "$sym() found." >&4;;
5777 *) echo "$sym() NOT found." >&4;;
5778 esac;;
5779esac'
5780
b4eb6b3d
JH
5781: see if sqrtl exists
5782set sqrtl d_sqrtl
c1a7f87b
JH
5783eval $inlibc
5784
b4eb6b3d
JH
5785: check for length of double
5786echo " "
5787case "$doublesize" in
5788'')
5789 echo "Checking to see how big your double precision numbers are..." >&4
5790 $cat >try.c <<'EOCP'
5791#include <stdio.h>
5792int main()
5793{
5794 printf("%d\n", (int)sizeof(double));
5795 exit(0);
5796}
5797EOCP
5798 set try
5799 if eval $compile_ok; then
5440bc8e 5800 doublesize=`$run ./try`
b4eb6b3d
JH
5801 echo "Your double is $doublesize bytes long."
5802 else
5803 dflt='8'
5804 echo "(I can't seem to compile the test program. Guessing...)"
5805 rp="What is the size of a double precision number (in bytes)?"
5806 . ./myread
5807 doublesize="$ans"
5808 fi
5809 ;;
5810esac
5811$rm -f try.c try
5812
5813: check for long doubles
5814echo " "
5815echo "Checking to see if you have long double..." >&4
5816echo 'int main() { long double x = 7.0; }' > try.c
5817set try
5818if eval $compile; then
5819 val="$define"
5820 echo "You have long double."
5821else
5822 val="$undef"
5823 echo "You do not have long double."
5824fi
5825$rm try.*
5826set d_longdbl
5827eval $setvar
5828
5829: check for length of long double
5830case "${d_longdbl}${longdblsize}" in
5831$define)
5832 echo " "
5833 echo "Checking to see how big your long doubles are..." >&4
5834 $cat >try.c <<'EOCP'
5835#include <stdio.h>
5836int main()
5837{
5838 printf("%d\n", sizeof(long double));
5839}
5840EOCP
5841 set try
5842 set try
5843 if eval $compile; then
5440bc8e 5844 longdblsize=`$run ./try`
b4eb6b3d
JH
5845 echo "Your long doubles are $longdblsize bytes long."
5846 else
5847 dflt='8'
5848 echo " "
5849 echo "(I can't seem to compile the test program. Guessing...)" >&4
5850 rp="What is the size of a long double (in bytes)?"
5851 . ./myread
5852 longdblsize="$ans"
5853 fi
5854 if $test "X$doublesize" = "X$longdblsize"; then
5855 echo "(That isn't any different from an ordinary double.)"
5856 fi
5857 ;;
5858esac
5859$rm -f try.* try
5860
dc526090
NC
5861echo " "
5862
5863if $test X"$d_longdbl" = X"$define"; then
5864
5865echo "Checking how to print long doubles..." >&4
5866
5867if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5868 $cat >try.c <<'EOCP'
5869#include <sys/types.h>
5870#include <stdio.h>
5871int main() {
5872 double d = 123.456;
5873 printf("%.3f\n", d);
5874}
5875EOCP
5876 set try
5877 if eval $compile; then
5878 yyy=`$run ./try`
5879 case "$yyy" in
5880 123.456)
5881 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5882 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5883 echo "We will use %f."
5884 ;;
5885 esac
5886 fi
5887fi
5888
5889if $test X"$sPRIfldbl" = X; then
5890 $cat >try.c <<'EOCP'
5891#include <sys/types.h>
5892#include <stdio.h>
5893int main() {
5894 long double d = 123.456;
5895 printf("%.3Lf\n", d);
5896}
5897EOCP
5898 set try
5899 if eval $compile; then
5900 yyy=`$run ./try`
5901 case "$yyy" in
5902 123.456)
5903 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
5904 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
5905 echo "We will use %Lf."
5906 ;;
5907 esac
5908 fi
5909fi
5910
5911if $test X"$sPRIfldbl" = X; then
5912 $cat >try.c <<'EOCP'
5913#include <sys/types.h>
5914#include <stdio.h>
5915int main() {
5916 long double d = 123.456;
5917 printf("%.3llf\n", d);
5918}
5919EOCP
5920 set try
5921 if eval $compile; then
5922 yyy=`$run ./try`
5923 case "$yyy" in
5924 123.456)
5925 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
5926 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
5927 echo "We will use %llf."
5928 ;;
5929 esac
5930 fi
5931fi
5932
5933if $test X"$sPRIfldbl" = X; then
5934 $cat >try.c <<'EOCP'
5935#include <sys/types.h>
5936#include <stdio.h>
5937int main() {
5938 long double d = 123.456;
5939 printf("%.3lf\n", d);
5940}
5941EOCP
5942 set try
5943 if eval $compile; then
5944 yyy=`$run ./try`
5945 case "$yyy" in
5946 123.456)
5947 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
5948 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
5949 echo "We will use %lf."
5950 ;;
5951 esac
5952 fi
5953fi
5954
5955if $test X"$sPRIfldbl" = X; then
5956 echo "Cannot figure out how to print long doubles." >&4
5957else
5958 sSCNfldbl=$sPRIfldbl # expect consistency
5959fi
5960
5961$rm -f try try.*
5962
5963fi # d_longdbl
5964
5965case "$sPRIfldbl" in
5966'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
5967 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
5968 d_SCNfldbl="$undef";
5969 ;;
5970*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
5971 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
5972 d_SCNfldbl="$define";
5973 ;;
5974esac
5975
5976: see if modfl exists
5977set modfl d_modfl
5978eval $inlibc
5979
5980d_modfl_pow32_bug="$undef"
5981
5982case "$d_longdbl$d_modfl" in
5983$define$define)
5984 $cat <<EOM
5985Checking to see whether your modfl() is okay for large values...
5986EOM
5987$cat >try.c <<EOCP
5988#include <math.h>
5989#include <stdio.h>
5990int main() {
5991 long double nv = 4294967303.15;
5992 long double v, w;
5993 v = modfl(nv, &w);
5994#ifdef __GLIBC__
5995 printf("glibc");
5996#endif
5997 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
5998 return 0;
5999}
6000EOCP
6001 case "$osname:$gccversion" in
6002 aix:) saveccflags="$ccflags"
6003 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6004 esac
6005 set try
6006 if eval $compile; then
6007 foo=`$run ./try`
6008 case "$foo" in
6009 *" 4294967303.150000 1.150000 4294967302.000000")
6010 echo >&4 "Your modfl() is broken for large values."
6011 d_modfl_pow32_bug="$define"
6012 case "$foo" in
6013 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6014 ;;
6015 esac
6016 ;;
6017 *" 4294967303.150000 0.150000 4294967303.000000")
6018 echo >&4 "Your modfl() seems okay for large values."
6019 ;;
6020 *) echo >&4 "I don't understand your modfl() at all."
6021 d_modfl="$undef"
6022 ;;
6023 esac
6024 $rm -f try.* try core core.try.*
6025 else
6026 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6027 d_modfl="$undef"
6028 fi
6029 case "$osname:$gccversion" in
6030 aix:) ccflags="$saveccflags" ;; # restore
6031 esac
6032 ;;
6033esac
6034
6035case "$ccflags" in
6036*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6037esac
6038
6039case "$uselongdouble" in
6040$define|true|[yY]*) dflt='y';;
6041*) dflt='n';;
6042esac
6043cat <<EOM
6044
6045Perl can be built to take advantage of long doubles which
6046(if available) may give more accuracy and range for floating point numbers.
6047
6048If this doesn't make any sense to you, just accept the default '$dflt'.
6049EOM
6050rp='Try to use long doubles if available?'
6051. ./myread
6052case "$ans" in
6053y|Y) val="$define" ;;
6054*) val="$undef" ;;
6055esac
6056set uselongdouble
6057eval $setvar
6058
6059case "$uselongdouble" in
6060true|[yY]*) uselongdouble="$define" ;;
6061esac
6062
6063case "$uselongdouble" in
6064$define)
6065: Look for a hint-file generated 'call-back-unit'. If the
6066: user has specified that long doubles should be used,
6067: we may need to set or change some other defaults.
6068 if $test -f uselongdouble.cbu; then
6069 echo "Your platform has some specific hints for long doubles, using them..."
6070 . ./uselongdouble.cbu
6071 else
6072 $cat <<EOM
6073(Your platform doesn't have any specific hints for long doubles.)
6074EOM
6075 fi
6076 ;;
6077esac
6078
6079message=X
6080case "$uselongdouble:$d_sqrtl:$d_modfl" in
6081$define:$define:$define)
6082 : You have both
6083 ;;
6084$define:$define:$undef)
6085 message="I could not find modfl"
6086 ;;
6087$define:$undef:$define)
6088 message="I could not find sqrtl"
6089 ;;
6090$define:$undef:$undef)
6091 message="I found neither sqrtl nor modfl"
6092 ;;
6093esac
6094
6095if $test "$message" != X; then
6096 $cat <<EOM >&4
6097
6098*** You requested the use of long doubles but you do not seem to have
6099*** the mathematic functions for long doubles.
6100*** ($message)
6101*** I'm disabling the use of long doubles.
6102
6103EOM
6104
6105 uselongdouble=$undef
6106fi
6107
51de783f 6108case "$useperlio" in
5a3a8a02 6109$define|true|[yY]*|'') dflt='y';;
51de783f
JH
6110*) dflt='n';;
6111esac
6112cat <<EOM
6113
6114Previous version of $package used the standard IO mechanisms as
5a3a8a02 6115defined in <stdio.h>. Versions 5.003_02 and later of $package allow
51de783f 6116alternate IO mechanisms via the PerlIO abstraction layer, but the
5a3a8a02
JH
6117stdio mechanism is still available if needed. The abstraction layer
6118can use AT&T's sfio (if you already have sfio installed) or regular stdio.
51de783f
JH
6119Using PerlIO with sfio may cause problems with some extension modules.
6120
6121If this doesn't make any sense to you, just accept the default '$dflt'.
6122EOM
5a3a8a02 6123rp='Use the PerlIO abstraction layer?'
51de783f
JH
6124. ./myread
6125case "$ans" in
6126y|Y)
6127 val="$define"
5a3a8a02 6128 ;;
51de783f
JH
6129*)
6130 echo "Ok, doing things the stdio way."
6131 val="$undef"
6132 ;;
6133esac
6134set useperlio
6135eval $setvar
6136
6137case "$usesocks" in
6138$define|true|[yY]*)
6139 case "$useperlio" in
6140 $define|true|[yY]*) ;;
6141 *) cat >&4 <<EOM
6142
6143You are using the SOCKS proxy protocol library which means that you
6144should also use the PerlIO layer. You may be headed for trouble.
6145
6146EOM
6147 ;;
6148 esac
6149 ;;
6150esac
6151
6152
b4eb6b3d
JH
6153: determine the architecture name
6154echo " "
6155if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6156 tarch=`arch`"-$osname"
6157elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6158 if uname -m > tmparch 2>&1 ; then
6159 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6160 -e 's/$/'"-$osname/" tmparch`
6161 else
6162 tarch="$osname"
6163 fi
6164 $rm -f tmparch
6165else
6166 tarch="$osname"
6167fi
6168case "$myarchname" in
6169''|"$tarch") ;;
6170*)
6171 echo "(Your architecture name used to be $myarchname.)"
6172 archname=''
6173 ;;
6174esac
5440bc8e
JH
6175case "$targetarch" in
6176'') ;;
6177*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6178esac
b4eb6b3d
JH
6179myarchname="$tarch"
6180case "$archname" in
6181'') dflt="$tarch";;
6182*) dflt="$archname";;
6183esac
6184rp='What is your architecture name'
6185. ./myread
6186archname="$ans"
6187case "$usethreads" in
6188$define)
6189 echo "Threads selected." >&4
6190 case "$archname" in
6191 *-thread*) echo "...and architecture name already has -thread." >&4
6192 ;;
6193 *) archname="$archname-thread"
6194 echo "...setting architecture name to $archname." >&4
6195 ;;
6196 esac
6197 ;;
6198esac
6199case "$usemultiplicity" in
6200$define)
6201 echo "Multiplicity selected." >&4
6202 case "$archname" in
6203 *-multi*) echo "...and architecture name already has -multi." >&4
6204 ;;
6205 *) archname="$archname-multi"
6206 echo "...setting architecture name to $archname." >&4
6207 ;;
6208 esac
6209 ;;
6210esac
6211case "$use64bitint$use64bitall" in
6212*"$define"*)
6213 case "$archname64" in
6214 '')
6215 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6216 ;;
6217 *)
6218 case "$use64bitint" in
6219 "$define") echo "64 bit integers selected." >&4 ;;
6220 esac
6221 case "$use64bitall" in
6222 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6223 esac
6224 case "$archname" in
6225 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6226 ;;
6227 *) archname="$archname-$archname64"
6228 echo "...setting architecture name to $archname." >&4
6229 ;;
6230 esac
6231 ;;
6232 esac
6233esac
6234case "$uselongdouble" in
6235$define)
6236 echo "Long doubles selected." >&4
6237 case "$longdblsize" in
6238 $doublesize)
262495b9 6239 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
b4eb6b3d
JH
6240 ;;
6241 *)
6242 case "$archname" in
6243 *-ld*) echo "...and architecture name already has -ld." >&4
6244 ;;
6245 *) archname="$archname-ld"
6246 echo "...setting architecture name to $archname." >&4
6247 ;;
6248 esac
6249 ;;
6250 esac
6251 ;;
6252esac
51de783f
JH
6253case "$useperlio" in
6254$define)
6255 echo "Perlio selected." >&4
d46c9a2d
JH
6256 ;;
6257*)
6258 echo "Perlio not selected, using stdio." >&4
51de783f 6259 case "$archname" in
d46c9a2d 6260 *-stdio*) echo "...and architecture name already has -stdio." >&4
51de783f 6261 ;;
d46c9a2d 6262 *) archname="$archname-stdio"
51de783f
JH
6263 echo "...setting architecture name to $archname." >&4
6264 ;;
6265 esac
6266 ;;
6267esac
b4eb6b3d
JH
6268
6269: determine root of directory hierarchy where package will be installed.
6270case "$prefix" in
6271'')
6272 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6273 ;;
6274*)
6275 dflt="$prefix"
6276 ;;
6277esac
6278$cat <<EOM
6279
6280By default, $package will be installed in $dflt/bin, manual pages
6281under $dflt/man, etc..., i.e. with $dflt as prefix for all
6282installation directories. Typically this is something like /usr/local.
6283If you wish to have binaries under /usr/bin but other parts of the
6284installation under /usr/local, that's ok: you will be prompted
6285separately for each of the installation directories, the prefix being
6286only used to set the defaults.
6287
6288EOM
6289fn=d~
6290rp='Installation prefix to use?'
6291. ./getfile
6292oldprefix=''
6293case "$prefix" in
6294'') ;;
6295*)
6296 case "$ans" in
6297 "$prefix") ;;
6298 *) oldprefix="$prefix";;
6299 esac
6300 ;;
6301esac
6302prefix="$ans"
6303prefixexp="$ansexp"
6304
a6d26a0d
JH
6305case "$afsroot" in
6306'') afsroot=/afs ;;
6307*) afsroot=$afsroot ;;
6308esac
6309
b4eb6b3d
JH
6310: is AFS running?
6311echo " "
6312case "$afs" in
6313$define|true) afs=true ;;
6314$undef|false) afs=false ;;
a6d26a0d 6315*) if test -d $afsroot; then
b4eb6b3d
JH
6316 afs=true
6317 else
6318 afs=false
6319 fi
6320 ;;
6321esac
6322if $afs; then
6323 echo "AFS may be running... I'll be extra cautious then..." >&4
6324else
6325 echo "AFS does not seem to be running..." >&4
6326fi
6327
6328: determine installation prefix for where package is to be installed.
6329if $afs; then
6330$cat <<EOM
6331
6332Since you are running AFS, I need to distinguish the directory in which
6333files will reside from the directory in which they are installed (and from
6334which they are presumably copied to the former directory by occult means).
6335
6336EOM
6337 case "$installprefix" in
6338 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6339 *) dflt="$installprefix";;
6340 esac
6341else
6342$cat <<EOM
6343
6344In some special cases, particularly when building $package for distribution,
6345it is convenient to distinguish between the directory in which files should
6346be installed from the directory ($prefix) in which they
6347will eventually reside. For most users, these two directories are the same.
6348
6349EOM
6350 case "$installprefix" in
6351 '') dflt=$prefix ;;
6352 *) dflt=$installprefix;;
6353 esac
6354fi
6355fn=d~
6356rp='What installation prefix should I use for installing files?'
6357. ./getfile
6358installprefix="$ans"
6359installprefixexp="$ansexp"
6360
6361: set the prefixit variable, to compute a suitable default value
6362prefixit='case "$3" in
6363""|none)
6364 case "$oldprefix" in
6365 "") eval "$1=\"\$$2\"";;
6366 *)
6367 case "$3" in
6368 "") eval "$1=";;
6369 none)
6370 eval "tp=\"\$$2\"";
6371 case "$tp" in
6372 ""|" ") eval "$1=\"\$$2\"";;
6373 *) eval "$1=";;
6374 esac;;
6375 esac;;
6376 esac;;
6377*)
6378 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6379 case "$tp" in
6380 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6381 /*-$oldprefix/*|\~*-$oldprefix/*)
6382 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6383 *) eval "$1=\"\$$2\"";;
6384 esac;;
6385esac'
6386
b4eb6b3d
JH
6387: get the patchlevel
6388echo " "
6389echo "Getting the current patchlevel..." >&4
6390if $test -r $rsrc/patchlevel.h;then
6391 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6392 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6393 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6394 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6395 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6396 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
151e6568 6397 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
b4eb6b3d
JH
6398else
6399 revision=0
6400 patchlevel=0
6401 subversion=0
6402 api_revision=0
6403 api_version=0
6404 api_subversion=0
151e6568
MB
6405 perl_patchlevel=0
6406 $echo "(You do not have patchlevel.h. Eek.)"
b4eb6b3d 6407fi
151e6568
MB
6408if $test -r $rsrc/.patch ; then
6409 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6410 perl_patchlevel=`cat $rsrc/.patch`
6411 fi
6412fi
861eb78d
AD
6413: Define a handy string here to avoid duplication in myconfig.SH and configpm.
6414version_patchlevel_string="version $patchlevel subversion $subversion"
151e6568 6415case "$perl_patchlevel" in
861eb78d
AD
64160|'') ;;
6417*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
151e6568 6418esac
861eb78d
AD
6419
6420$echo "(You have $package $version_patchlevel_string.)"
6421
b4eb6b3d
JH
6422case "$osname" in
6423dos|vms)
6424 : XXX Should be a Configure test for double-dots in filenames.
6425 version=`echo $revision $patchlevel $subversion | \
6426 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6427 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6428 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6429 ;;
6430*)
6431 version=`echo $revision $patchlevel $subversion | \
6432 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6433 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6434 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6435 ;;
6436esac
6437: Special case the 5.005_xx maintenance series, which used 5.005
6438: without any subversion label as a subdirectory in $sitelib
6439if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6440 api_versionstring='5.005'
6441fi
6442
6443: determine installation style
6444: For now, try to deduce it from prefix unless it is already set.
6445: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6446case "$installstyle" in
6447'') case "$prefix" in
6448 *perl*) dflt='lib';;
6449 *) dflt='lib/perl5' ;;
6450 esac
6451 ;;
6452*) dflt="$installstyle" ;;
6453esac
6454: Probably not worth prompting for this since we prompt for all
6455: the directories individually, and the prompt would be too long and
6456: confusing anyway.
6457installstyle=$dflt
6458
6459: determine where private library files go
6460: Usual default is /usr/local/lib/perl5/$version.
6461: Also allow things like /opt/perl/lib/$version, since
6462: /opt/perl/lib/perl5... would be redundant.
6463: The default "style" setting is made in installstyle.U
6464case "$installstyle" in
6465*lib/perl5*) set dflt privlib lib/$package/$version ;;
6466*) set dflt privlib lib/$version ;;
6467esac
6468eval $prefixit
6469$cat <<EOM
6470
6471There are some auxiliary files for $package that need to be put into a
6472private library directory that is accessible by everyone.
6473
6474EOM
6475fn=d~+
6476rp='Pathname where the private library files will reside?'
6477. ./getfile
6478privlib="$ans"
6479privlibexp="$ansexp"
6480: Change installation prefix, if necessary.
6481if $test X"$prefix" != X"$installprefix"; then
6482 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6483else
6484 installprivlib="$privlibexp"
6485fi
6486
6487: set the prefixup variable, to restore leading tilda escape
6488prefixup='case "$prefixexp" in
6489"$prefix") ;;
6490*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6491esac'
6492
6493: determine where public architecture dependent libraries go
6494set archlib archlib
6495eval $prefixit
6496: privlib default is /usr/local/lib/$package/$version
6497: archlib default is /usr/local/lib/$package/$version/$archname
6498: privlib may have an optional trailing /share.
6499tdflt=`echo $privlib | $sed 's,/share$,,'`
6500tdflt=$tdflt/$archname
6501case "$archlib" in
6502'') dflt=$tdflt
6503 ;;
6504*) dflt="$archlib"
6505 ;;
6506esac
6507$cat <<EOM
6508
6509$spackage contains architecture-dependent library files. If you are
6510sharing libraries in a heterogeneous environment, you might store
6511these files in a separate location. Otherwise, you can just include
6512them with the rest of the public library files.
6513
6514EOM
6515fn=d+~
6516rp='Where do you want to put the public architecture-dependent libraries?'
6517. ./getfile
6518archlib="$ans"
6519archlibexp="$ansexp"
6520if $test X"$archlib" = X"$privlib"; then
6521 d_archlib="$undef"
6522else
6523 d_archlib="$define"
6524fi
6525: Change installation prefix, if necessary.
6526if $test X"$prefix" != X"$installprefix"; then
6527 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6528else
6529 installarchlib="$archlibexp"
6530fi
6531
6532
6533: Binary compatibility with 5.005 is not possible for builds
6534: with advanced features
6535case "$usethreads$usemultiplicity" in
6536*define*)
6537 bincompat5005="$undef"
6538 d_bincompat5005="$undef"
6539 ;;
6540*) $cat <<EOM
6541
6542This version of Perl can be compiled for binary compatibility with 5.005.
6543If you decide to do so, you will be able to continue using most of the
6544extensions that were compiled for Perl 5.005.
6545
6546EOM
6547 case "$bincompat5005$d_bincompat5005" in
6548 *"$undef"*) dflt=n ;;
6549 *) dflt=y ;;
6550 esac
6551 rp='Binary compatibility with Perl 5.005?'
6552 . ./myread
6553 case "$ans" in
6554 y*) val="$define" ;;
6555 *) val="$undef" ;;
6556 esac
6557 set d_bincompat5005
6558 eval $setvar
6559 case "$d_bincompat5005" in
6560 "$define")
6561 bincompat5005="$define"
6562 ;;
6563 *) bincompat5005="$undef"
6564 d_bincompat5005="$undef"
6565 ;;
6566 esac
6567 ;;
6568esac
6569
6570
6571: see if setuid scripts can be secure
6572$cat <<EOM
6573
6574Some kernels have a bug that prevents setuid #! scripts from being
6575secure. Some sites have disabled setuid #! scripts because of this.
6576
6577First let's decide if your kernel supports secure setuid #! scripts.
6578(If setuid #! scripts would be secure but have been disabled anyway,
6579don't say that they are secure if asked.)
6580
6581EOM
6582
6583val="$undef"
6584if $test -d /dev/fd; then
6585 echo "#!$ls" >reflect
6586 chmod +x,u+s reflect
6587 ./reflect >flect 2>&1
6588 if $contains "/dev/fd" flect >/dev/null; then
6589 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6590 val="$define"
6591 else
6592 $cat <<EOM
6593If you are not sure if they are secure, I can check but I'll need a
6594username and password different from the one you are using right now.
6595If you don't have such a username or don't want me to test, simply
6596enter 'none'.
6597
6598EOM
6599 rp='Other username to test security of setuid scripts with?'
6600 dflt='none'
6601 . ./myread
6602 case "$ans" in
6603 n|none)
6604 case "$d_suidsafe" in
6605 '') echo "I'll assume setuid scripts are *not* secure." >&4
6606 dflt=n;;
6607 "$undef")
6608 echo "Well, the $hint value is *not* secure." >&4
6609 dflt=n;;
6610 *) echo "Well, the $hint value *is* secure." >&4
6611 dflt=y;;
6612 esac
c1a7f87b 6613 ;;
b4eb6b3d
JH
6614 *)
6615 $rm -f reflect flect
6616 echo "#!$ls" >reflect
6617 chmod +x,u+s reflect
6618 echo >flect
6619 chmod a+w flect
6620 echo '"su" will (probably) prompt you for '"$ans's password."
6621 su $ans -c './reflect >flect'
6622 if $contains "/dev/fd" flect >/dev/null; then
6623 echo "Okay, it looks like setuid scripts are secure." >&4
6624 dflt=y
6625 else
6626 echo "I don't think setuid scripts are secure." >&4
6627 dflt=n
6628 fi
6629 ;;
6630 esac
6631 rp='Does your kernel have *secure* setuid scripts?'
6632 . ./myread
6633 case "$ans" in
6634 [yY]*) val="$define";;
6635 *) val="$undef";;
6636 esac
6637 fi
6638else
6639 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6640 echo "(That's for file descriptors, not floppy disks.)"
6641 val="$undef"
6642fi
6643set d_suidsafe
6644eval $setvar
6645
6646$rm -f reflect flect
6647
6648: now see if they want to do setuid emulation
6649echo " "
6650val="$undef"
6651case "$d_suidsafe" in
6652"$define")
6653 val="$undef"
3c728e00 6654 echo "No need to emulate SUID scripts since they are secure here." >&4
b4eb6b3d
JH
6655 ;;
6656*)
6657 $cat <<EOM
6658Some systems have disabled setuid scripts, especially systems where
6659setuid scripts cannot be secure. On systems where setuid scripts have
6660been disabled, the setuid/setgid bits on scripts are currently
6661useless. It is possible for $package to detect those bits and emulate
6662setuid/setgid in a secure fashion. This emulation will only work if
6663setuid scripts have been disabled in your kernel.
6664
6665EOM
6666 case "$d_dosuid" in
6667 "$define") dflt=y ;;
6668 *) dflt=n ;;
6669 esac
6670 rp="Do you want to do setuid/setgid emulation?"
6671 . ./myread
6672 case "$ans" in
6673 [yY]*) val="$define";;
6674 *) val="$undef";;
6675 esac
6676 ;;
6677esac
6678set d_dosuid
6679eval $setvar
6680
b4eb6b3d
JH
6681: see if this is a malloc.h system
6682set malloc.h i_malloc
6683eval $inhdr
6684
6685: see if stdlib is available
6686set stdlib.h i_stdlib
6687eval $inhdr
6688
6689: determine which malloc to compile in
6690echo " "
6691case "$usemymalloc" in
c4163172
JH
6692[yY]*|true|$define) dflt='y' ;;
6693[nN]*|false|$undef) dflt='n' ;;
6694*) case "$ptrsize" in
6695 4) dflt='y' ;;
6696 *) dflt='n' ;;
6697 esac
6698 ;;
8dfa8df9 6699esac
b4eb6b3d
JH
6700rp="Do you wish to attempt to use the malloc that comes with $package?"
6701. ./myread
6702usemymalloc="$ans"
6703case "$ans" in
6704y*|true)
6705 usemymalloc='y'
6706 mallocsrc='malloc.c'
6707 mallocobj="malloc$_o"
6708 d_mymalloc="$define"
6709 case "$libs" in
6710 *-lmalloc*)
6711 : Remove malloc from list of libraries to use
6712 echo "Removing unneeded -lmalloc from library list" >&4
6713 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6714 shift
6715 libs="$*"
6716 echo "libs = $libs" >&4
6717 ;;
6718 esac
6719 ;;
6720*)
6721 usemymalloc='n'
6722 mallocsrc=''
6723 mallocobj=''
6724 d_mymalloc="$undef"
6725 ;;
6726esac
6727
6728: compute the return types of malloc and free
6729echo " "
6730$cat >malloc.c <<END
6731#$i_malloc I_MALLOC
6732#$i_stdlib I_STDLIB
6733#include <stdio.h>
6734#include <sys/types.h>
6735#ifdef I_MALLOC
6736#include <malloc.h>
6737#endif
6738#ifdef I_STDLIB
6739#include <stdlib.h>
6740#endif
6741#ifdef TRY_MALLOC
6742void *malloc();
6743#endif
6744#ifdef TRY_FREE
6745void free();
6746#endif
6747END
6748case "$malloctype" in
6749'')
6750 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6751 malloctype='void *'
6752 else
6753 malloctype='char *'
6754 fi
6755 ;;
6756esac
6757echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6758
6759case "$freetype" in
6760'')
6761 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6762 freetype='void'
6763 else
6764 freetype='int'
6765 fi
6766 ;;
6767esac
6768echo "Your system uses $freetype free(), it would seem." >&4
6769$rm -f malloc.[co]
6770$cat <<EOM
6771
6772After $package is installed, you may wish to install various
6773add-on modules and utilities. Typically, these add-ons will
6774be installed under $prefix with the rest
6775of this package. However, you may wish to install such add-ons
6776elsewhere under a different prefix.
6777
6778If you do not wish to put everything under a single prefix, that's
6779ok. You will be prompted for the individual locations; this siteprefix
6780is only used to suggest the defaults.
6781
6782The default should be fine for most people.
6783
6784EOM
6785fn=d~+
6786rp='Installation prefix to use for add-on modules and utilities?'
6787: XXX Here might be another good place for an installstyle setting.
6788case "$siteprefix" in
6789'') dflt=$prefix ;;
6790*) dflt=$siteprefix ;;
6791esac
6792. ./getfile
6793: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6794oldsiteprefix=''
6795case "$siteprefix" in
6796'') ;;
6797*) case "$ans" in
6798 "$prefix") ;;
6799 *) oldsiteprefix="$prefix";;
6800 esac
6801 ;;
6802esac
6803siteprefix="$ans"
6804siteprefixexp="$ansexp"
6805
6806: determine where site specific libraries go.
6807: Usual default is /usr/local/lib/perl5/site_perl/$version
6808: The default "style" setting is made in installstyle.U
6809: XXX No longer works with Prefixit stuff.
6810prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6811case "$sitelib" in
6812'') case "$installstyle" in
6813 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6814 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6815 esac
6816 ;;
6817*) dflt="$sitelib"
6818 ;;
6819esac
6820$cat <<EOM
6821
6822The installation process will create a directory for
6823site-specific extensions and modules. Most users find it convenient
6824to place all site-specific files in this directory rather than in the
6825main distribution directory.
6826
6827EOM
6828fn=d~+
6829rp='Pathname for the site-specific library files?'
6830. ./getfile
6831sitelib="$ans"
6832sitelibexp="$ansexp"
6833sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6834: Change installation prefix, if necessary.
6835if $test X"$prefix" != X"$installprefix"; then
6836 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6837else
6838 installsitelib="$sitelibexp"
6839fi
6840
6841: determine where site specific architecture-dependent libraries go.
6842: sitelib default is /usr/local/lib/perl5/site_perl/$version
6843: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6844: sitelib may have an optional trailing /share.
6845case "$sitearch" in
6846'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6847 dflt="$dflt/$archname"
6848 ;;
6849*) dflt="$sitearch"
6850 ;;
6851esac
6852set sitearch sitearch none
6853eval $prefixit
6854$cat <<EOM
6855
6856The installation process will also create a directory for
6857architecture-dependent site-specific extensions and modules.
6858
6859EOM
6860fn=d~+
6861rp='Pathname for the site-specific architecture-dependent library files?'
6862. ./getfile
6863sitearch="$ans"
6864sitearchexp="$ansexp"
6865: Change installation prefix, if necessary.
6866if $test X"$prefix" != X"$installprefix"; then
6867 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6868else
6869 installsitearch="$sitearchexp"
6870fi
6871
6872$cat <<EOM
6873
6874The installation process will also create a directory for
6875vendor-supplied add-ons. Vendors who supply perl with their system
6876may find it convenient to place all vendor-supplied files in this
6877directory rather than in the main distribution directory. This will
6878ease upgrades between binary-compatible maintenance versions of perl.
6879
6880Of course you may also use these directories in whatever way you see
6881fit. For example, you might use them to access modules shared over a
6882company-wide network.
6883
6884The default answer should be fine for most people.
6885This causes further questions about vendor add-ons to be skipped
6886and no vendor-specific directories will be configured for perl.
6887
6888EOM
6889rp='Do you want to configure vendor-specific add-on directories?'
6890case "$usevendorprefix" in
6891define|true|[yY]*) dflt=y ;;
6892*) : User may have set vendorprefix directly on Configure command line.
6893 case "$vendorprefix" in
6894 ''|' ') dflt=n ;;
6895 *) dflt=y ;;
6896 esac
6897 ;;
6898esac
6899. ./myread
6900case "$ans" in
6901[yY]*) fn=d~+
6902 rp='Installation prefix to use for vendor-supplied add-ons?'
6903 case "$vendorprefix" in
6904 '') dflt='' ;;
6905 *) dflt=$vendorprefix ;;
6906 esac
6907 . ./getfile
6908 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6909 oldvendorprefix=''
6910 case "$vendorprefix" in
6911 '') ;;
6912 *) case "$ans" in
6913 "$prefix") ;;
6914 *) oldvendorprefix="$prefix";;
6915 esac
6916 ;;
6917 esac
6918 usevendorprefix="$define"
6919 vendorprefix="$ans"
6920 vendorprefixexp="$ansexp"
6921 ;;
6922*) usevendorprefix="$undef"
6923 vendorprefix=''
6924 vendorprefixexp=''
6925 ;;
6926esac
6927
6928case "$vendorprefix" in
6929'') d_vendorlib="$undef"
6930 vendorlib=''
6931 vendorlibexp=''
6932 ;;
6933*) d_vendorlib="$define"
6934 : determine where vendor-supplied modules go.
6935 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6936 case "$vendorlib" in
6937 '')
6938 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6939 case "$installstyle" in
6940 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6941 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6942 esac
6943 ;;
6944 *) dflt="$vendorlib"
6945 ;;
6946 esac
6947 fn=d~+
6948 rp='Pathname for the vendor-supplied library files?'
6949 . ./getfile
6950 vendorlib="$ans"
6951 vendorlibexp="$ansexp"
6952 ;;
6953esac
6954vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6955: Change installation prefix, if necessary.
6956if $test X"$prefix" != X"$installprefix"; then
6957 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6958else
6959 installvendorlib="$vendorlibexp"
6960fi
6961
6962case "$vendorprefix" in
6963'') d_vendorarch="$undef"
6964 vendorarch=''
6965 vendorarchexp=''
6966 ;;
6967*) d_vendorarch="$define"
6968 : determine where vendor-supplied architecture-dependent libraries go.
6969 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6970 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6971 : vendorlib may have an optional trailing /share.
6972 case "$vendorarch" in
6973 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6974 dflt="$dflt/$archname"
6975 ;;
6976 *) dflt="$vendorarch" ;;
6977 esac
6978 fn=d~+
6979 rp='Pathname for vendor-supplied architecture-dependent files?'
6980 . ./getfile
6981 vendorarch="$ans"
6982 vendorarchexp="$ansexp"
6983 ;;
6984esac
6985: Change installation prefix, if necessary.
6986if $test X"$prefix" != X"$installprefix"; then
6987 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6988else
6989 installvendorarch="$vendorarchexp"
6990fi
6991
6992: Final catch-all directories to search
6993$cat <<EOM
6994
6995Lastly, you can have perl look in other directories for extensions and
6996modules in addition to those already specified.
6997These directories will be searched after
6998 $sitearch
6999 $sitelib
7000EOM
7001test X"$vendorlib" != "X" && echo ' ' $vendorlib
7002test X"$vendorarch" != "X" && echo ' ' $vendorarch
7003echo ' '
7004case "$otherlibdirs" in
7005''|' ') dflt='none' ;;
7006*) dflt="$otherlibdirs" ;;
7007esac
7008$cat <<EOM
7009Enter a colon-separated set of extra paths to include in perl's @INC
7010search path, or enter 'none' for no extra paths.
7011
7012EOM
7013
7014rp='Colon-separated list of additional directories for perl to search?'
7015. ./myread
7016case "$ans" in
7017' '|''|none) otherlibdirs=' ' ;;
7018*) otherlibdirs="$ans" ;;
7019esac
7020case "$otherlibdirs" in
7021' ') val=$undef ;;
7022*) val=$define ;;
7023esac
7024set d_perl_otherlibdirs
7025eval $setvar
7026
7027: Cruising for prototypes
7028echo " "
7029echo "Checking out function prototypes..." >&4
7030$cat >prototype.c <<'EOCP'
7031int main(int argc, char *argv[]) {
7032 exit(0);}
7033EOCP
7034if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7035 echo "Your C compiler appears to support function prototypes."
7036 val="$define"
7037else
7038 echo "Your C compiler doesn't seem to understand function prototypes."
7039 val="$undef"
7040fi
7041set prototype
7042eval $setvar
7043$rm -f prototype*
7044
7045case "$prototype" in
7046"$define") ;;
7047*) ansi2knr='ansi2knr'
7048 echo " "
7049 cat <<EOM >&4
7050
7051$me: FATAL ERROR:
7052This version of $package can only be compiled by a compiler that
7053understands function prototypes. Unfortunately, your C compiler
7054 $cc $ccflags
7055doesn't seem to understand them. Sorry about that.
7056
7057If GNU cc is available for your system, perhaps you could try that instead.
7058
7059Eventually, we hope to support building Perl with pre-ANSI compilers.
7060If you would like to help in that effort, please contact <perlbug@perl.org>.
7061
7062Aborting Configure now.
7063EOM
7064 exit 2
7065 ;;
7066esac
7067
7068: determine where public executables go
7069echo " "
7070set dflt bin bin
7071eval $prefixit
7072fn=d~
7073rp='Pathname where the public executables will reside?'
7074. ./getfile
7075if $test "X$ansexp" != "X$binexp"; then
7076 installbin=''
7077fi
7078bin="$ans"
7079binexp="$ansexp"
7080: Change installation prefix, if necessary.
7081: XXX Bug? -- ignores Configure -Dinstallprefix setting.
7082if $test X"$prefix" != X"$installprefix"; then
7083 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7084else
7085 installbin="$binexp"
7086fi
7087
6fcddf3b 7088echo " "
6fcddf3b 7089case "$extras" in
bf35c3f6
JH
7090'') dflt='n';;
7091*) dflt='y';;
6fcddf3b
JH
7092esac
7093cat <<EOM
7094Perl can be built with extra modules or bundles of modules which
7095will be fetched from the CPAN and installed alongside Perl.
7096
7097Notice that you will need access to the CPAN; either via the Internet,
7098or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
7099be asked later to configure the CPAN.pm module which will in turn do
7100the installation of the rest of the extra modules or bundles.)
7101
7102Notice also that if the modules require any external software such as
dd2de242
JH
7103libraries and headers (the libz library and the zlib.h header for the
7104Compress::Zlib module, for example) you MUST have any such software
7105already installed, this configuration process will NOT install such
7106things for you.
6fcddf3b
JH
7107
7108If this doesn't make any sense to you, just accept the default '$dflt'.
7109EOM
dd2de242 7110rp='Install any extra modules (y or n)?'
6fcddf3b
JH
7111. ./myread
7112case "$ans" in
7113y|Y)
7114 cat <<EOM
7115
7116Please list any extra modules or bundles to be installed from CPAN,
7117with spaces between the names. The names can be in any format the
dd2de242
JH
7118'install' command of CPAN.pm will understand. (Answer 'none',
7119without the quotes, to install no extra modules or bundles.)
6fcddf3b
JH
7120EOM
7121 rp='Extras?'
7122 dflt="$extras"
7123 . ./myread
7124 extras="$ans"
7125esac
7126case "$extras" in
7127''|'none')
7128 val=''
7129 $rm -f ../extras.lst
7130 ;;
7131*) echo "(Saving the list of extras for later...)"
dd2de242
JH
7132 echo "$extras" > ../extras.lst
7133 val="'$extras'"
6fcddf3b
JH
7134 ;;
7135esac
7136set extras
7137eval $setvar
7138echo " "
7139
b4eb6b3d
JH
7140: Find perl5.005 or later.
7141echo "Looking for a previously installed perl5.005 or later... "
7142case "$perl5" in
a938a3bb 7143'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
b4eb6b3d 7144 : Check if this perl is recent and can load a simple module
a938a3bb 7145 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
b4eb6b3d
JH
7146 perl5=$tdir/perl
7147 break;
a938a3bb
IZ
7148 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7149 perl5=$tdir/perl5
b4eb6b3d
JH
7150 break;
7151 fi
7152 done
7153 ;;
7154*) perl5="$perl5"
7155 ;;
7156esac
7157case "$perl5" in
7158'') echo "None found. That's ok.";;
7159*) echo "Using $perl5." ;;
7160esac
7161
7162: Determine list of previous versions to include in @INC
7163$cat > getverlist <<EOPL
7164#!$perl5 -w
7165use File::Basename;
7166\$api_versionstring = "$api_versionstring";
7167\$version = "$version";
7168\$stem = "$sitelib_stem";
7169\$archname = "$archname";
7170EOPL
7171 $cat >> getverlist <<'EOPL'
7172# Can't have leading @ because metaconfig interprets it as a command!
7173;@inc_version_list=();
7174# XXX Redo to do opendir/readdir?
7175if (-d $stem) {
7176 chdir($stem);
7177 ;@candidates = glob("5.*");
7178}
7179else {
7180 ;@candidates = ();
7181}
7182
7183# XXX ToDo: These comparisons must be reworked when two-digit
7184# subversions come along, so that 5.7.10 compares as greater than
7185# 5.7.3! By that time, hope that 5.6.x is sufficiently
7186# widespread that we can use the built-in version vectors rather
7187# than reinventing them here. For 5.6.0, however, we must
7188# assume this script will likely be run by 5.005_0x. --AD 1/2000.
7189foreach $d (@candidates) {
7190 if ($d lt $version) {
7191 if ($d ge $api_versionstring) {
7192 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7193 }
7194 elsif ($d ge "5.005") {
7195 unshift(@inc_version_list, grep { -d } $d);
7196 }
7197 }
7198 else {
7199 # Skip newer version. I.e. don't look in
7200 # 5.7.0 if we're installing 5.6.1.
7201 }
7202}
7203
7204if (@inc_version_list) {
7205 print join(' ', @inc_version_list);
7206}
7207else {
7208 # Blank space to preserve value for next Configure run.
7209 print " ";
7210}
7211EOPL
7212chmod +x getverlist
7213case "$inc_version_list" in
a938a3bb 7214'') if test -x "$perl5$exe_ext"; then
b4eb6b3d
JH
7215 dflt=`$perl5 getverlist`
7216 else
7217 dflt='none'
7218 fi
7219 ;;
7220$undef) dflt='none' ;;
6d1a7737 7221*) eval dflt=\"$inc_version_list\" ;;
b4eb6b3d
JH
7222esac
7223case "$dflt" in
7224''|' ') dflt=none ;;
7225esac
7226case "$dflt" in
72275.005) case "$bincompat5005" in
7228 $define|true|[yY]*) ;;
7229 *) dflt=none ;;
7230 esac
7231 ;;
7232esac
7233$cat <<'EOM'
7234
7235In order to ease the process of upgrading, this version of perl
7236can be configured to use modules built and installed with earlier
7237versions of perl that were installed under $prefix. Specify here
7238the list of earlier versions that this version of perl should check.
7239If Configure detected no earlier versions of perl installed under
7240$prefix, then the list will be empty. Answer 'none' to tell perl
7241to not search earlier versions.
7242
7243The default should almost always be sensible, so if you're not sure,
7244just accept the default.
7245EOM
7246
7247rp='List of earlier versions to include in @INC?'
7248. ./myread
7249case "$ans" in
7250[Nn]one|''|' ') inc_version_list=' ' ;;
7251*) inc_version_list="$ans" ;;
7252esac
7253case "$inc_version_list" in
7254''|' ')
7255 inc_version_list_init='0';;
7256*) inc_version_list_init=`echo $inc_version_list |
7257 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7258 ;;
7259esac
7260$rm -f getverlist
7261
7262: determine whether to install perl also as /usr/bin/perl
7263
7264echo " "
7265if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7266 $cat <<EOM
7267Many scripts expect perl to be installed as /usr/bin/perl.
7268I can install the perl you are about to compile also as /usr/bin/perl
7269(in addition to $installbin/perl).
7270EOM
7271 case "$installusrbinperl" in
7272 "$undef"|[nN]*) dflt='n';;
7273 *) dflt='y';;
7274 esac
7275 rp="Do you want to install perl as /usr/bin/perl?"
7276 . ./myread
7277 case "$ans" in
7278 [yY]*) val="$define";;
7279 *) val="$undef" ;;
7280 esac
7281else
7282 val="$undef"
7283fi
7284set installusrbinperl
7285eval $setvar
7286
7287: see if dld is available
7288set dld.h i_dld
7289eval $inhdr
7290
7291: see if dlopen exists
7292xxx_runnm="$runnm"
7293runnm=false
7294set dlopen d_dlopen
7295eval $inlibc
7296runnm="$xxx_runnm"
7297
7298: determine which dynamic loading, if any, to compile in
7299echo " "
7300dldir="ext/DynaLoader"
7301case "$usedl" in
7302$define|y|true)
7303 dflt='y'
7304 usedl="$define"
7305 ;;
7306$undef|n|false)
7307 dflt='n'
7308 usedl="$undef"
7309 ;;
7310*)
7311 dflt='n'
7312 case "$d_dlopen" in
7313 $define) dflt='y' ;;
7314 esac
7315 case "$i_dld" in
7316 $define) dflt='y' ;;
7317 esac
7318 : Does a dl_xxx.xs file exist for this operating system
7319 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7320 ;;
7321esac
7322rp="Do you wish to use dynamic loading?"
7323. ./myread
7324usedl="$ans"
7325case "$ans" in
7326y*) usedl="$define"
7327 case "$dlsrc" in
7328 '')
7329 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7330 dflt="$dldir/dl_${osname}.xs"
7331 elif $test "$d_dlopen" = "$define" ; then
7332 dflt="$dldir/dl_dlopen.xs"
7333 elif $test "$i_dld" = "$define" ; then
7334 dflt="$dldir/dl_dld.xs"
7335 else
7336 dflt=''
7337 fi
7338 ;;
7339 *) dflt="$dldir/$dlsrc"
7340 ;;
7341 esac
7342 echo "The following dynamic loading files are available:"
7343 : Can not go over to $dldir because getfile has path hard-coded in.
6904989c 7344 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
b4eb6b3d
JH
7345 rp="Source file to use for dynamic loading"
7346 fn="fne"
7347 gfpth="$src"
7348 . ./getfile
7349 usedl="$define"
7350 : emulate basename
7351 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7352
7353 $cat << EOM
7354
7355Some systems may require passing special flags to $cc -c to
7356compile modules that will be used to create a shared library.
7357To use no flags, say "none".
7358
7359EOM
7360 case "$cccdlflags" in
7361 '') case "$gccversion" in
7362 '') case "$osname" in
7363 hpux) dflt='+z' ;;
7364 next) dflt='none' ;;
7365 irix*) dflt='-KPIC' ;;
48bcfe03 7366 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
7367 sunos) dflt='-pic' ;;
7368 *) dflt='none' ;;
7369 esac
7370 ;;
7371 *) case "$osname" in
b6cc0f4c 7372 darwin) dflt='none' ;;
48bcfe03 7373 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
7374 *) dflt='-fpic' ;;
7375 esac ;;
7376 esac ;;
7377 ' ') dflt='none' ;;
7378 *) dflt="$cccdlflags" ;;
7379 esac
7380 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7381 . ./myread
7382 case "$ans" in
7383 none) cccdlflags=' ' ;;
7384 *) cccdlflags="$ans" ;;
7385 esac
7386
7387 cat << EOM
7388
7389Some systems use ld to create libraries that can be dynamically loaded,
7390while other systems (such as those using ELF) use $cc.
7391
7392EOM
7393 case "$ld" in
7394 '') $cat >try.c <<'EOM'
7395/* Test for whether ELF binaries are produced */
7396#include <fcntl.h>
7397#include <stdlib.h>
7398int main() {
7399 char b[4];
7400 int i = open("a.out",O_RDONLY);
7401 if(i == -1)
7402 exit(1); /* fail */
7403 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7404 exit(0); /* succeed (yes, it's ELF) */
7405 else
7406 exit(1); /* fail */
7407}
7408EOM
5440bc8e 7409 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
b4eb6b3d
JH
7410 cat <<EOM
7411You appear to have ELF support. I'll use $cc to build dynamic libraries.
7412EOM
7413 dflt="$cc"
7414 else
7415 echo "I'll use ld to build dynamic libraries."
7416 dflt='ld'
7417 fi
7418 rm -f try.c a.out
7419 ;;
7420 *) dflt="$ld"
7421 ;;
7422 esac
7423
7424 rp="What command should be used to create dynamic libraries?"
7425 . ./myread
7426 ld="$ans"
7427
7428 cat << EOM
7429
7430Some systems may require passing special flags to $ld to create a
7431library that can be dynamically loaded. If your ld flags include
7432-L/other/path options to locate libraries outside your loader's normal
7433search path, you may need to specify those -L options here as well. To
7434use no flags, say "none".
7435
7436EOM
7437 case "$lddlflags" in
7438 '') case "$osname" in
7439 beos) dflt='-nostart' ;;
7440 hpux) dflt='-b';
7441 case "$gccversion" in
7442 '') dflt="$dflt +vnocompatwarnings" ;;
7443 esac
7444 ;;
7445 linux|irix*) dflt='-shared' ;;
7446 next) dflt='none' ;;
7447 solaris) dflt='-G' ;;
7448 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 7449 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
7450 *) dflt='none' ;;
7451 esac
7452 ;;
7453 *) dflt="$lddlflags" ;;
7454 esac
7455
7456 : Try to guess additional flags to pick up local libraries.
7457 : Be careful not to append to a plain 'none'
7458 case "$dflt" in
7459 none) dflt='' ;;
7460 esac
7461 for thisflag in $ldflags; do
7462 case "$thisflag" in
b5b9f165 7463 -L*|-R*|-Wl,-R*)
b4eb6b3d
JH
7464 case " $dflt " in
7465 *" $thisflag "*) ;;
7466 *) dflt="$dflt $thisflag" ;;
7467 esac
7468 ;;
7469 esac
7470 done
7471
7472 case "$dflt" in
7473 ''|' ') dflt='none' ;;
7474 esac
7475
7476 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7477 . ./myread
7478 case "$ans" in
7479 none) lddlflags=' ' ;;
7480 *) lddlflags="$ans" ;;
7481 esac
7482
7483 cat <<EOM
7484
7485Some systems may require passing special flags to $cc to indicate that
7486the resulting executable will use dynamic linking. To use no flags,
7487say "none".
7488
7489EOM
7490 case "$ccdlflags" in
7491 '') case "$osname" in
7492 hpux) dflt='-Wl,-E' ;;
7493 linux) dflt='-rdynamic' ;;
7494 next) dflt='none' ;;
7495 sunos) dflt='none' ;;
7496 *) dflt='none' ;;
7497 esac ;;
7498 ' ') dflt='none' ;;
7499 *) dflt="$ccdlflags" ;;
7500 esac
7501 rp="Any special flags to pass to $cc to use dynamic linking?"
7502 . ./myread
7503 case "$ans" in
7504 none) ccdlflags=' ' ;;
7505 *) ccdlflags="$ans" ;;
7506 esac
7507 ;;
7508*) usedl="$undef"
7509 ld='ld'
7510 dlsrc='dl_none.xs'
7511 lddlflags=''
7512 ccdlflags=''
7513 ;;
7514esac
7515
7516also=''
7517case "$usedl" in
7518$undef)
7519 # No dynamic loading being used, so don't bother even to prompt.
7520 useshrplib='false'
7521 ;;
7522*) case "$useshrplib" in
7523 '') case "$osname" in
48bcfe03 7524 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
7525 dflt=y
7526 also='Building a shared libperl is required for dynamic loading to work on your system.'
7527 ;;
7528 next*)
7529 case "$osvers" in
7530 4*) dflt=y
7531 also='Building a shared libperl is needed for MAB support.'
7532 ;;
7533 *) dflt=n
7534 ;;
7535 esac
7536 ;;
7537 *) dflt=n
7538 ;;
7539 esac
7540 ;;
7541 $define|true|[Yy]*)
7542 dflt=y
7543 ;;
7544 *) dflt=n
7545 ;;
7546 esac
7547 $cat << EOM
7548
7549The perl executable is normally obtained by linking perlmain.c with
7550libperl${_a}, any static extensions (usually just DynaLoader), and
7551any other libraries needed on this system (such as -lm, etc.). Since
7552your system supports dynamic loading, it is probably possible to build
7553a shared libperl.$so. If you will have more than one executable linked
7554to libperl.$so, this will significantly reduce the size of each
7555executable, but it may have a noticeable affect on performance. The
7556default is probably sensible for your system.
7557$also
7558
7559EOM
7560 rp="Build a shared libperl.$so (y/n)"
7561 . ./myread
7562 case "$ans" in
7563 true|$define|[Yy]*)
7564 useshrplib='true' ;;
7565 *) useshrplib='false' ;;
7566 esac
7567 ;;
7568esac
7569
7570case "$useshrplib" in
7571true)
7572 case "$libperl" in
7573 '')
7574 # Figure out a good name for libperl.so. Since it gets stored in
7575 # a version-specific architecture-dependent library, the version
7576 # number isn't really that important, except for making cc/ld happy.
7577 #
7578 # A name such as libperl.so.3.1
7579 majmin="libperl.$so.$patchlevel.$subversion"
7580 # A name such as libperl.so.301
7581 majonly=`echo $patchlevel $subversion |
7582 $awk '{printf "%d%02d", $1, $2}'`
7583 majonly=libperl.$so.$majonly
7584 # I'd prefer to keep the os-specific stuff here to a minimum, and
7585 # rely on figuring it out from the naming of libc.
7586 case "${osname}${osvers}" in
7587 next4*)
7588 dflt=libperl.5.$so
7589 # XXX How handle the --version stuff for MAB?
7590 ;;
7591 linux*) # ld won't link with a bare -lperl otherwise.
7592 dflt=libperl.$so
7593 ;;
b53432e4
GH
7594 cygwin*) # ld links against an importlib
7595 dflt=libperl$lib_ext
b4eb6b3d
JH
7596 ;;
7597 *) # Try to guess based on whether libc has major.minor.
7598 case "$libc" in
7599 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7600 *libc.$so.[0-9]*) dflt=$majonly ;;
7601 *) dflt=libperl.$so ;;
7602 esac
7603 ;;
7604 esac
7605 ;;
7606 *) dflt=$libperl
7607 ;;
7608 esac
7609 cat << EOM
7610
7611I need to select a good name for the shared libperl. If your system uses
7612library names with major and minor numbers, then you might want something
7613like $majmin. Alternatively, if your system uses a single version
7614number for shared libraries, then you might want to use $majonly.
7615Or, your system might be quite happy with a simple libperl.$so.
7616
7617Since the shared libperl will get installed into a version-specific
7618architecture-dependent directory, the version number of the shared perl
7619library probably isn't important, so the default should be o.k.
7620
7621EOM
7622 rp='What name do you want to give to the shared libperl?'
7623 . ./myread
7624 libperl=$ans
7625 echo "Ok, I'll use $libperl"
7626 ;;
7627*)
7628 libperl="libperl${_a}"
7629 ;;
7630esac
7631
7632# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7633case "$shrpdir" in
7634'') ;;
7635*) $cat >&4 <<EOM
7636WARNING: Use of the shrpdir variable for the installation location of
7637the shared $libperl is not supported. It was never documented and
7638will not work in this version. Let me (perlbug@perl.org)
7639know of any problems this may cause.
7640
7641EOM
7642 case "$shrpdir" in
7643 "$archlibexp/CORE")
7644 $cat >&4 <<EOM
7645But your current setting of $shrpdir is
7646the default anyway, so it's harmless.
7647EOM
7648 ;;
7649 *)
7650 $cat >&4 <<EOM
7651Further, your current attempted setting of $shrpdir
7652conflicts with the value of $archlibexp/CORE
7653that installperl will use.
7654EOM
7655 ;;
7656 esac
7657 ;;
7658esac
7659
7660# How will the perl executable find the installed shared $libperl?
7661# Add $xxx to ccdlflags.
7662# If we can't figure out a command-line option, use $shrpenv to
7663# set env LD_RUN_PATH. The main perl makefile uses this.
7664shrpdir=$archlibexp/CORE
7665xxx=''
7666tmp_shrpenv=''
7667if "$useshrplib"; then
7668 case "$osname" in
7669 aix)
7670 # We'll set it in Makefile.SH...
7671 ;;
b5b9f165 7672 solaris)
b4eb6b3d
JH
7673 xxx="-R $shrpdir"
7674 ;;
b5b9f165 7675 freebsd|netbsd)
b4eb6b3d
JH
7676 xxx="-Wl,-R$shrpdir"
7677 ;;
6b20d41b 7678 bsdos|linux|irix*|dec_osf)
b4eb6b3d
JH
7679 xxx="-Wl,-rpath,$shrpdir"
7680 ;;
7681 next)
7682 # next doesn't like the default...
7683 ;;
7684 beos)
7685 # beos doesn't like the default, either.
7686 ;;
7687 hpux*)
7688 # hpux doesn't like the default, either.
7689 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7690 ;;
7691 *)
7692 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7693 ;;
7694 esac
7695 case "$xxx" in
7696 '') ;;
7697 *)
7698 # Only add $xxx if it isn't already in ccdlflags.
7699 case " $ccdlflags " in
7700 *" $xxx "*) ;;
7701 *) ccdlflags="$ccdlflags $xxx"
7702 cat <<EOM >&4
7703
7704Adding $xxx to the flags
7705passed to $ld so that the perl executable will find the
7706installed shared $libperl.
7707
7708EOM
7709 ;;
7710 esac
7711 ;;
7712 esac
7713fi
7714# Fix ccdlflags in AIX for building external extensions.
7715# (For building Perl itself bare -bE:perl.exp is needed,
7716# Makefile.SH takes care of this.)
7717case "$osname" in
7718aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7719esac
7720# Respect a hint or command-line value.
7721case "$shrpenv" in
7722'') shrpenv="$tmp_shrpenv" ;;
7723esac
7724case "$ldlibpthname" in
7725'') ldlibpthname=LD_LIBRARY_PATH ;;
7726none) ldlibpthname='' ;;
7727esac
7728
7729: determine where manual pages are on this system
7730echo " "
7731case "$sysman" in
7732'')
4a0a3829
SD
7733 syspath='/usr/share/man/man1 /usr/man/man1'
7734 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7735 syspath="$syspath /usr/man/u_man/man1"
b4eb6b3d
JH
7736 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7737 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7738 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7739 sysman=`./loc . /usr/man/man1 $syspath`
7740 ;;
7741esac
7742if $test -d "$sysman"; then
7743 echo "System manual is in $sysman." >&4
7744else
7745 echo "Could not find manual pages in source form." >&4
7746fi
7747
7748: determine where manual pages go
7749set man1dir man1dir none
7750eval $prefixit
7751$cat <<EOM
7752
7753$spackage has manual pages available in source form.
7754EOM
7755case "$nroff" in
7756nroff)
7757 echo "However, you don't have nroff, so they're probably useless to you."
7758 case "$man1dir" in
7759 '') man1dir="none";;
7760 esac;;
7761esac
7762echo "If you don't want the manual sources installed, answer 'none'."
7763case "$man1dir" in
7764' ') dflt=none
7765 ;;
7766'')
4a0a3829
SD
7767 lookpath="$prefixexp/share/man/man1"
7768 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
b4eb6b3d
JH
7769 lookpath="$lookpath $prefixexp/man/p_man/man1"
7770 lookpath="$lookpath $prefixexp/man/u_man/man1"
7771 lookpath="$lookpath $prefixexp/man/man.1"
7772 case "$sysman" in
7773 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7774 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7775 esac
7776 set dflt
7777 eval $prefixup
7778 ;;
7779*) dflt="$man1dir"
7780 ;;
7781esac
7782echo " "
7783fn=dn+~
7784rp="Where do the main $spackage manual pages (source) go?"
7785. ./getfile
7786if $test "X$man1direxp" != "X$ansexp"; then
7787 installman1dir=''
7788fi
7789man1dir="$ans"
7790man1direxp="$ansexp"
7791case "$man1dir" in
7792'') man1dir=' '
7793 installman1dir='';;
7794esac
7795
7796: Change installation prefix, if necessary.
7797if $test X"$prefix" != X"$installprefix"; then
7798 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7799else
7800 installman1dir="$man1direxp"
7801fi
7802
7803: What suffix to use on installed man pages
7804
7805case "$man1dir" in
7806' ')
7807 man1ext='0'
7808 ;;
7809*)
7810 rp="What suffix should be used for the main $spackage man pages?"
7811 case "$man1ext" in
7812 '') case "$man1dir" in
7813 *1) dflt=1 ;;
7814 *1p) dflt=1p ;;
7815 *1pm) dflt=1pm ;;
7816 *l) dflt=l;;
7817 *n) dflt=n;;
7818 *o) dflt=o;;
7819 *p) dflt=p;;
7820 *C) dflt=C;;
7821 *L) dflt=L;;
7822 *L1) dflt=L1;;
7823 *) dflt=1;;
7824 esac
7825 ;;
7826 *) dflt="$man1ext";;
7827 esac
7828 . ./myread
7829 man1ext="$ans"
7830 ;;
7831esac
7832
7833: see if we can have long filenames
7834echo " "
7835first=123456789abcdef
7836$rm -f $first
7837if (echo hi >$first) 2>/dev/null; then
7838 if $test -f 123456789abcde; then
7839 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7840 val="$undef"
7841 else
7842 echo 'You can have filenames longer than 14 characters.'>&4
7843 val="$define"
7844 fi
7845else
7846 $cat <<'EOM'
7847You can't have filenames longer than 14 chars.
7848You can't even think about them!
7849EOM
7850 val="$undef"
7851fi
7852set d_flexfnam
7853eval $setvar
7854$rm -rf 123456789abcde*
7855
7856: determine where library module manual pages go
7857set man3dir man3dir none
7858eval $prefixit
7859$cat <<EOM
7860
7861$spackage has manual pages for many of the library modules.
7862EOM
7863
7864case "$nroff" in
7865nroff)
7866 $cat <<'EOM'
7867However, you don't have nroff, so they're probably useless to you.
7868EOM
7869 case "$man3dir" in
7870 '') man3dir="none";;
7871 esac;;
7872esac
7873
7874case "$d_flexfnam" in
7875undef)
7876 $cat <<'EOM'
7877However, your system can't handle the long file names like File::Basename.3.
7878EOM
7879 case "$man3dir" in
7880 '') man3dir="none";;
7881 esac;;
7882esac
7883
7884echo "If you don't want the manual sources installed, answer 'none'."
7885prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7886case "$man3dir" in
7887'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7888 if $test -d "$privlib/man/man3"; then
7889 cat <<EOM >&4
7890
7891WARNING: Previous versions of perl installed man3 pages into
7892$privlib/man/man3. This version will suggest a
7893new default of $dflt.
7894EOM
7895 tdflt=$dflt
7896 dflt='n'
7897 rp='Do you wish to preserve the old behavior?(y/n)'
7898 . ./myread
7899 case "$ans" in
7900 y*) dflt="$privlib/man/man3" ;;
7901 *) dflt=$tdflt ;;
7902 esac
7903 fi
7904 ;;
7905*) dflt="$man3dir" ;;
7906esac
7907case "$dflt" in
7908' ') dflt=none ;;
7909esac
7910echo " "
7911fn=dn+~
7912rp="Where do the $package library man pages (source) go?"
7913. ./getfile
7914man3dir="$ans"
7915man3direxp="$ansexp"
7916case "$man3dir" in
7917'') man3dir=' '
7918 installman3dir='';;
7919esac
7920
7921: Change installation prefix, if necessary.
7922if $test X"$prefix" != X"$installprefix"; then
7923 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7924else
7925 installman3dir="$man3direxp"
7926fi
7927
7928: What suffix to use on installed man pages
7929case "$man3dir" in
7930' ')
7931 man3ext='0'
7932 ;;
7933*)
7934 rp="What suffix should be used for the $package library man pages?"
7935 case "$man3ext" in
7936 '') case "$man3dir" in
7937 *3) dflt=3 ;;
7938 *3p) dflt=3p ;;
7939 *3pm) dflt=3pm ;;
7940 *l) dflt=l;;
7941 *n) dflt=n;;
7942 *o) dflt=o;;
7943 *p) dflt=p;;
7944 *C) dflt=C;;
7945 *L) dflt=L;;
7946 *L3) dflt=L3;;
7947 *) dflt=3;;
7948 esac
7949 ;;
7950 *) dflt="$man3ext";;
7951 esac
7952 . ./myread
7953 man3ext="$ans"
7954 ;;
7955esac
7956
7957: see if we have to deal with yellow pages, now NIS.
0384a54a 7958if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
b4eb6b3d
JH
7959 if $test -f /usr/etc/nibindd; then
7960 echo " "
7961 echo "I'm fairly confident you're on a NeXT."
7962 echo " "
7963 rp='Do you get the hosts file via NetInfo?'
7964 dflt=y
7965 case "$hostcat" in
7966 nidump*) ;;
7967 '') ;;
7968 *) dflt=n;;
7969 esac
7970 . ./myread
7971 case "$ans" in
7972 y*) hostcat='nidump hosts .';;
7973 *) case "$hostcat" in
7974 nidump*) hostcat='';;
7975 esac
7976 ;;
7977 esac
7978 fi
7979 case "$hostcat" in
7980 nidump*) ;;
7981 *)
7982 case "$hostcat" in
7983 *ypcat*) dflt=y;;
7984 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7985 dflt=y
7986 else
7987 dflt=n
7988 fi;;
7989 *) dflt=n;;
7990 esac
7991 echo " "
7992 rp='Are you getting the hosts file via yellow pages?'
7993 . ./myread
7994 case "$ans" in
7995 y*) hostcat='ypcat hosts';;
7996 *) hostcat='cat /etc/hosts';;
7997 esac
7998 ;;
7999 esac
8000fi
8001case "$hostcat" in
8002'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8003esac
8004case "$groupcat" in
8005'') test -f /etc/group && groupcat='cat /etc/group';;
8006esac
8007case "$passcat" in
8008'') test -f /etc/passwd && passcat='cat /etc/passwd';;
8009esac
8010
8011: now get the host name
8012echo " "
8013echo "Figuring out host name..." >&4
8014case "$myhostname" in
8015'') cont=true
8016 echo 'Maybe "hostname" will work...'
73614538 8017 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
8018 myhostname=$tans
8019 phostname=hostname
8020 cont=''
8021 fi
8022 ;;
8023*) cont='';;
8024esac
8025if $test "$cont"; then
8026 if ./xenix; then
8027 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8028 if tans=`cat /etc/systemid 2>&1` ; then
8029 myhostname=$tans
8030 phostname='cat /etc/systemid'
8031 echo "Whadyaknow. Xenix always was a bit strange..."
8032 cont=''
8033 fi
8034 elif $test -r /etc/systemid; then
8035 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8036 fi
8037fi
8038if $test "$cont"; then
8039 echo 'No, maybe "uuname -l" will work...'
73614538 8040 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
8041 myhostname=$tans
8042 phostname='uuname -l'
8043 else
8044 echo 'Strange. Maybe "uname -n" will work...'
73614538 8045 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
8046 myhostname=$tans
8047 phostname='uname -n'
8048 else
8049 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 8050 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
8051 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8052 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8053 else
8054 case "$myhostname" in
8055 '') echo "Does this machine have an identity crisis or something?"
8056 phostname='';;
8057 *)
8058 echo "Well, you said $myhostname before..."
8059 phostname='echo $myhostname';;
8060 esac
8061 fi
8062 fi
8063 fi
8064fi
52a549d0
JH
8065case "$myhostname" in
8066'') myhostname=noname ;;
8067esac
b4eb6b3d
JH
8068: you do not want to know about this
8069set $myhostname
8070myhostname=$1
8071
8072: verify guess
8073if $test "$myhostname" ; then
8074 dflt=y
8075 rp='Your host name appears to be "'$myhostname'".'" Right?"
8076 . ./myread
8077 case "$ans" in
8078 y*) ;;
8079 *) myhostname='';;
8080 esac
8081fi
8082
8083: bad guess or no guess
8084while $test "X$myhostname" = X ; do
8085 dflt=''
8086 rp="Please type the (one word) name of your host:"
8087 . ./myread
8088 myhostname="$ans"
8089done
8090
8091: translate upper to lower if necessary
8092case "$myhostname" in
8093*[A-Z]*)
8094 echo "(Normalizing case in your host name)"
8095 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8096 ;;
8097esac
8098
8099case "$myhostname" in
8100*.*)
8101 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8102 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8103 echo "(Trimming domain name from host name--host name is now $myhostname)"
8104 ;;
8105*) case "$mydomain" in
8106 '')
8107 {
8108 test "X$hostcat" = "Xypcat hosts" &&
8109 ypmatch "$myhostname" hosts 2>/dev/null |\
8110 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8111 $test -s hosts
8112 } || {
8113 test "X$hostcat" != "X" &&
8114 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8115 /[ ]$myhostname[ . ]/p" > hosts
8116 }
8117 tmp_re="[ . ]"
f08cbdd1
PP
8118 if $test -f hosts; then
8119 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 8120 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
8121 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8122 hosts | $sort | $uniq | \
8123 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8124 case `$echo X$dflt` in
8125 X*\ *) echo "(Several hosts in the database matched hostname)"
8126 dflt=.
8127 ;;
8128 X.) echo "(You do not have fully-qualified names in the hosts database)"
8129 ;;
8130 esac
8131 else
8132 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 8133 dflt=.
f08cbdd1 8134 fi
b4eb6b3d
JH
8135 case "$dflt" in
8136 .)
8137 tans=`./loc resolv.conf X /etc /usr/etc`
8138 if $test -f "$tans"; then
8139 echo "(Attempting domain name extraction from $tans)"
8140 dflt=.`$sed -n -e 's/ / /g' \
8141 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8142 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8143 case "$dflt" in
8144 .) dflt=.`$sed -n -e 's/ / /g' \
8145 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8146 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8147 ;;
8148 esac
8149 fi
8150 ;;
8151 esac
8152 case "$dflt" in
8153 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 8154 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
8155 case "$dflt" in
8156 '') dflt='.';;
8157 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8158 esac
8159 ;;
8160 esac
59c9e5d6
PP
8161 case "$dflt$osname" in
8162 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
caf85fe8 8163 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
59c9e5d6
PP
8164 ;;
8165 esac
b4eb6b3d
JH
8166 case "$dflt" in
8167 .) echo "(Lost all hope -- silly guess then)"
52a549d0 8168 dflt='.nonet'
b4eb6b3d
JH
8169 ;;
8170 esac
8171 $rm -f hosts
8172 ;;
8173 *) dflt="$mydomain";;
8174 esac;;
8175esac
8176echo " "
8177rp="What is your domain name?"
8178. ./myread
8179tans="$ans"
8180case "$ans" in
8181'') ;;
8182.*) ;;
8183*) tans=".$tans";;
8184esac
8185mydomain="$tans"
8186
8187: translate upper to lower if necessary
8188case "$mydomain" in
8189*[A-Z]*)
8190 echo "(Normalizing case in your domain name)"
8191 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8192 ;;
8193esac
8194
8195: a little sanity check here
8196case "$phostname" in
8197'') ;;
8198*)
8199 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8200 $myhostname$mydomain|$myhostname) ;;
8201 *)
8202 case "$phostname" in
8203 sed*)
8204 echo "(That doesn't agree with your whoami.h file, by the way.)"
8205 ;;
8206 *)
8207 echo "(That doesn't agree with your $phostname command, by the way.)"
8208 ;;
8209 esac
8210 ;;
8211 esac
8212 ;;
8213esac
8214
8215$cat <<EOM
8216
8217I need to get your e-mail address in Internet format if possible, i.e.
8218something like user@host.domain. Please answer accurately since I have
8219no easy means to double check it. The default value provided below
8220is most probably close to reality but may not be valid from outside
8221your organization...
8222
8223EOM
8224cont=x
8225while test "$cont"; do
8226 case "$cf_email" in
8227 '') dflt="$cf_by@$myhostname$mydomain";;
8228 *) dflt="$cf_email";;
8229 esac
8230 rp='What is your e-mail address?'
8231 . ./myread
8232 cf_email="$ans"
8233 case "$cf_email" in
8234 *@*.*) cont='' ;;
8235 *)
8236 rp='Address does not look like an Internet one. Use it anyway?'
8237 case "$fastread" in
8238 yes) dflt=y ;;
8239 *) dflt=n ;;
8240 esac
8241 . ./myread
8242 case "$ans" in
8243 y*) cont='' ;;
8244 *) echo " " ;;
8245 esac
8246 ;;
8247 esac
8248done
8249
8250$cat <<EOM
8251
8252If you or somebody else will be maintaining perl at your site, please
8253fill in the correct e-mail address here so that they may be contacted
8254if necessary. Currently, the "perlbug" program included with perl
8255will send mail to this address in addition to perlbug@perl.org. You may
8256enter "none" for no administrator.
8257
8258EOM
8259case "$perladmin" in
8260'') dflt="$cf_email";;
8261*) dflt="$perladmin";;
8262esac
8263rp='Perl administrator e-mail address'
8264. ./myread
8265perladmin="$ans"
8266
674912d7
RB
8267: determine whether to only install version-specific parts.
8268echo " "
8269$cat <<EOM
8270Do you want to install only the version-specific parts of the perl
8271distribution? Usually you do *not* want to do this.
8272EOM
8273case "$versiononly" in
8274"$define"|[Yy]*|true) dflt='y' ;;
8275*) dflt='n';
8276esac
8277rp="Do you want to install only the version-specific parts of perl?"
8278. ./myread
8279case "$ans" in
8280[yY]*) val="$define";;
8281*) val="$undef" ;;
8282esac
8283set versiononly
8284eval $setvar
8285
b4eb6b3d
JH
8286: figure out how to guarantee perl startup
8287case "$startperl" in
8288'')
8289 case "$sharpbang" in
8290 *!)
8291 $cat <<EOH
8292
8293I can use the #! construct to start perl on your system. This will
8294make startup of perl scripts faster, but may cause problems if you
8295want to share those scripts and perl is not in a standard place
8296($binexp/perl) on all your platforms. The alternative is to force
8297a shell by starting the script with a single ':' character.
8298
8299EOH
674912d7
RB
8300 case "$versiononly" in
8301 "$define") dflt="$binexp/perl$version";;
8302 *) dflt="$binexp/perl";;
8303 esac
b4eb6b3d
JH
8304 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8305 . ./myread
8306 case "$ans" in
8307 none) startperl=": # use perl";;
8308 *) startperl="#!$ans"
8309 if $test 30 -lt `echo "$ans" | wc -c`; then
8310 $cat >&4 <<EOM
8311
8312WARNING: Some systems limit the #! command to 32 characters.
8313If you experience difficulty running Perl scripts with #!, try
8314installing Perl in a directory with a shorter pathname.
8315
8316EOM
8317 fi ;;
8318 esac
8319 ;;
8320 *) startperl=": # use perl"
8321 ;;
8322 esac
8323 ;;
8324esac
8325echo "I'll use $startperl to start perl scripts."
8326
8327: figure best path for perl in scripts
8328case "$perlpath" in
8329'')
5e20a8ca
RGS
8330 case "$versiononly" in
8331 "$define") perlpath="$binexp/perl$version";;
8332 *) perlpath="$binexp/perl";;
8333 esac
b4eb6b3d
JH
8334 case "$startperl" in
8335 *!*) ;;
8336 *)
8337 $cat <<EOH
8338
8339I will use the "eval 'exec'" idiom to start Perl on your system.
8340I can use the full path of your Perl binary for this purpose, but
8341doing so may cause problems if you want to share those scripts and
8342Perl is not always in a standard place ($binexp/perl).
8343
8344EOH
8345 dflt="$binexp/perl"
8346 rp="What path shall I use in \"eval 'exec'\"?"
8347 . ./myread
8348 perlpath="$ans"
8349 ;;
8350 esac
8351 ;;
8352esac
8353case "$startperl" in
8354*!*) ;;
8355*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8356esac
8357
8358: determine where public executable scripts go
8359set scriptdir scriptdir
8360eval $prefixit
8361case "$scriptdir" in
8362'')
8363 dflt="$bin"
8364 : guess some guesses
8365 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8366 $test -d /usr/share/bin && dflt=/usr/share/bin
8367 $test -d /usr/local/script && dflt=/usr/local/script
8368 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8369 $test -d $prefixexp/script && dflt=$prefixexp/script
8370 set dflt
8371 eval $prefixup
8372 ;;
8373*) dflt="$scriptdir"
8374 ;;
8375esac
8376$cat <<EOM
8377
8378Some installations have a separate directory just for executable scripts so
8379that they can mount it across multiple architectures but keep the scripts in
8380one spot. You might, for example, have a subdirectory of /usr/share for this.
8381Or you might just lump your scripts in with all your other executables.
8382
8383EOM
8384fn=d~
8385rp='Where do you keep publicly executable scripts?'
8386. ./getfile
8387if $test "X$ansexp" != "X$scriptdirexp"; then
8388 installscript=''
8389fi
8390scriptdir="$ans"
8391scriptdirexp="$ansexp"
8392: Change installation prefix, if necessary.
8393if $test X"$prefix" != X"$installprefix"; then
8394 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8395else
8396 installscript="$scriptdirexp"
8397fi
8398
8399: determine where add-on public executables go
8400case "$sitebin" in
8401'') dflt=$siteprefix/bin ;;
8402*) dflt=$sitebin ;;
8403esac
8404fn=d~
8405rp='Pathname where the add-on public executables should be installed?'
8406. ./getfile
8407sitebin="$ans"
8408sitebinexp="$ansexp"
8409: Change installation prefix, if necessary.
8410if $test X"$prefix" != X"$installprefix"; then
8411 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8412else
8413 installsitebin="$sitebinexp"
8414fi
8415
96056487
JH
8416: define an is-a-typedef? function
8417typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8418case "$inclist" in
8419"") inclist="sys/types.h";;
8420esac;
8421eval "varval=\$$var";
8422case "$varval" in
8423"")
8424 $rm -f temp.c;
8425 for inc in $inclist; do
8426 echo "#include <$inc>" >>temp.c;
8427 done;
8428 echo "#ifdef $type" >> temp.c;
8429 echo "printf(\"We have $type\");" >> temp.c;
8430 echo "#endif" >> temp.c;
8431 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8432 if $contains $type temp.E >/dev/null 2>&1; then
8433 eval "$var=\$type";
8434 else
8435 eval "$var=\$def";
8436 fi;
8437 $rm -f temp.?;;
8438*) eval "$var=\$varval";;
8439esac'
8440
8441: define an is-a-typedef? function that prompts if the type is not available.
8442typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8443case "$inclist" in
8444"") inclist="sys/types.h";;
8445esac;
8446eval "varval=\$$var";
8447case "$varval" in
8448"")
8449 $rm -f temp.c;
8450 for inc in $inclist; do
8451 echo "#include <$inc>" >>temp.c;
8452 done;
8453 echo "#ifdef $type" >> temp.c;
8454 echo "printf(\"We have $type\");" >> temp.c;
8455 echo "#endif" >> temp.c;
8456 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8457 echo " " ;
8458 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8459 if $contains $type temp.E >/dev/null 2>&1; then
8460 echo "$type found." >&4;
8461 eval "$var=\$type";
8462 else
8463 echo "$type NOT found." >&4;
8464 dflt="$def";
8465 . ./myread ;
8466 eval "$var=\$ans";
8467 fi;
8468 $rm -f temp.?;;
8469*) eval "$var=\$varval";;
8470esac'
8471
8472: see what type lseek is declared as in the kernel
8473rp="What is the type used for lseek's offset on this system?"
8474set off_t lseektype long stdio.h sys/types.h
8475eval $typedef_ask
8476
8477echo " "
8478echo "Checking to see how big your file offsets are..." >&4
8479$cat >try.c <<EOCP
8480#include <sys/types.h>
8481#include <stdio.h>
8482int main()
8483{
8484 printf("%d\n", (int)sizeof($lseektype));
8485 return(0);
8486}
8487EOCP
8488set try
8489if eval $compile_ok; then
8490 lseeksize=`$run ./try`
8491 echo "Your file offsets are $lseeksize bytes long."
8492else
8493 dflt=$longsize
8494 echo " "
8495 echo "(I can't seem to compile the test program. Guessing...)"
8496 rp="What is the size of your file offsets (in bytes)?"
8497 . ./myread
8498 lseeksize="$ans"
8499fi
8500$rm -f try.c try
8501
8502: see what type file positions are declared as in the library
8503rp="What is the type for file position used by fsetpos()?"
8504set fpos_t fpostype long stdio.h sys/types.h
8505eval $typedef_ask
8506
8507echo " "
8508case "$fpostype" in
8509*_t) zzz="$fpostype" ;;
8510*) zzz="fpos_t" ;;
8511esac
8512echo "Checking the size of $zzz..." >&4
8513cat > try.c <<EOCP
8514#include <sys/types.h>
8515#include <stdio.h>
8516int main() {
8517 printf("%d\n", (int)sizeof($fpostype));
8518 exit(0);
8519}
8520EOCP
8521set try
8522if eval $compile_ok; then
8523 yyy=`$run ./try`
8524 case "$yyy" in
8525 '') fpossize=4
8526 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8527 ;;
8528 *) fpossize=$yyy
8529 echo "Your $zzz is $fpossize bytes long."
8530 ;;
8531 esac
8532else
8533 dflt="$longsize"
8534 echo " " >&4
8535 echo "(I can't compile the test program. Guessing...)" >&4
8536 rp="What is the size of your file positions (in bytes)?"
8537 . ./myread
8538 fpossize="$ans"
8539fi
8540
8541
8542
8543# Backward compatibility (uselfs is deprecated).
8544case "$uselfs" in
8545"$define"|true|[yY]*)
8546 cat <<EOM >&4
8547
8548*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8549EOM
8550 uselargefiles="$define"
8551 ;;
8552esac
8553
8554case "$lseeksize:$fpossize" in
85558:8) cat <<EOM
8556
8557You can have files larger than 2 gigabytes.
8558EOM
8559 val="$define" ;;
8560*) case "$uselargefiles" in
8561 "$undef"|false|[nN]*) dflt='n' ;;
8562 *) dflt='y' ;;
8563 esac
8564 cat <<EOM
8565
8566Perl can be built to understand large files (files larger than 2 gigabytes)
8567on some systems. To do so, Configure can be run with -Duselargefiles.
8568
8569If this doesn't make any sense to you, just accept the default '$dflt'.
8570EOM
8571 rp='Try to understand large files, if available?'
8572 . ./myread
8573 case "$ans" in
8574 y|Y) val="$define" ;;
8575 *) val="$undef" ;;
8576 esac
8577 ;;
8578esac
8579set uselargefiles
8580eval $setvar
8581case "$uselargefiles" in
8582"$define")
8583: Look for a hint-file generated 'call-back-unit'. If the
8584: user has specified that a large files perl is to be built,
8585: we may need to set or change some other defaults.
8586 if $test -f uselargefiles.cbu; then
8587 echo "Your platform has some specific hints for large file builds, using them..."
8588 . ./uselargefiles.cbu
8589 echo " "
8590 echo "Rechecking to see how big your file offsets are..." >&4
8591 $cat >try.c <<EOCP
8592#include <sys/types.h>
8593#include <stdio.h>
8594int main()
8595{
8596 printf("%d\n", (int)sizeof($lseektype));
8597 return(0);
8598}
8599EOCP
8600 set try
8601 if eval $compile_ok; then
8602 lseeksize=`$run ./try`
8603 $echo "Your file offsets are now $lseeksize bytes long."
8604 else
8605 dflt="$lseeksize"
8606 echo " "
8607 echo "(I can't seem to compile the test program. Guessing...)"
8608 rp="What is the size of your file offsets (in bytes)?"
8609 . ./myread
8610 lseeksize="$ans"
8611 fi
8612 case "$fpostype" in
8613 *_t) zzz="$fpostype" ;;
8614 *) zzz="fpos_t" ;;
8615 esac
8616 $echo $n "Rechecking the size of $zzz...$c" >&4
8617 $cat > try.c <<EOCP
8618#include <sys/types.h>
8619#include <stdio.h>
8620int main() {
8621 printf("%d\n", (int)sizeof($fpostype));
8622 exit(0);
8623}
8624EOCP
8625 set try
8626 if eval $compile_ok; then
8627 yyy=`$run ./try`
8628 dflt="$lseeksize"
8629 case "$yyy" in
8630 '') echo " "
8631 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8632 ;;
8633 *) fpossize=$yyy
8634 echo " $fpossize bytes." >&4
8635 ;;
8636 esac
8637 else
8638 dflt="$fpossize"
8639 echo " "
8640 echo "(I can't compile the test program. Guessing...)" >&4
8641 rp="What is the size of your file positions (in bytes)?"
8642 . ./myread
8643 fpossize="$ans"
8644 fi
8645 $rm -f try.c try
8646 fi
8647 ;;
8648esac
8649
b4eb6b3d
JH
8650case "$vendorprefix" in
8651'') d_vendorbin="$undef"
8652 vendorbin=''
8653 vendorbinexp=''
8654 ;;
8655*) d_vendorbin="$define"
8656 : determine where vendor-supplied executables go.
8657 case "$vendorbin" in
8658 '') dflt=$vendorprefix/bin ;;
8659 *) dflt="$vendorbin" ;;
8660 esac
8661 fn=d~+
8662 rp='Pathname for the vendor-supplied executables directory?'
8663 . ./getfile
8664 vendorbin="$ans"
8665 vendorbinexp="$ansexp"
8666 ;;
8667esac
8668: Change installation prefix, if necessary.
8669if $test X"$prefix" != X"$installprefix"; then
8670 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8671else
8672 installvendorbin="$vendorbinexp"
8673fi
8674
8675: see if qgcvt exists
8676set qgcvt d_qgcvt
8677eval $inlibc
8678
b4eb6b3d 8679: Check how to convert floats to strings.
a5b10d80
YST
8680
8681if test "X$d_Gconvert" = X; then
8682
b4eb6b3d
JH
8683echo " "
8684echo "Checking for an efficient way to convert floats to strings."
8685echo " " > try.c
8686case "$uselongdouble" in
8687"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8688esac
8689case "$d_longdbl" in
8690"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8691esac
8692case "$d_PRIgldbl" in
8693"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8694esac
8695$cat >>try.c <<EOP
8696#ifdef TRY_gconvert
8697#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8698char *myname = "gconvert";
8699#endif
8700#ifdef TRY_gcvt
8701#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8702char *myname = "gcvt";
8703#endif
8704#ifdef TRY_qgcvt
8705#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8706char *myname = "qgcvt";
8707#define DOUBLETYPE long double
8708#endif
8709#ifdef TRY_sprintf
a5b10d80
YST
8710#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8711#ifdef HAS_PRIgldbl
b4eb6b3d
JH
8712#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8713#else
a5b10d80
YST
8714#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
8715#endif
8716#else
b4eb6b3d
JH
8717#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8718#endif
8719char *myname = "sprintf";
8720#endif
8721
8722#ifndef DOUBLETYPE
8723#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8724#define DOUBLETYPE long double
8725#else
8726#define DOUBLETYPE double
8727#endif
8728#endif
8729
8730#include <stdio.h>
8731
8732#define I_STDLIB $i_stdlib
8733#ifdef I_STDLIB
8734#include <stdlib.h>
8735#endif
8736
8737int
8738checkit(expect, got)
8739char *expect;
8740char *got;
8741{
8742 if (strcmp(expect, got)) {
8743 printf("%s oddity: Expected %s, got %s\n",
8744 myname, expect, got);
8745 exit(1);
8746 }
8747}
8748
8749int main()
8750{
8751 char buf[64];
8752 buf[63] = '\0';
8753
8754 /* This must be 1st test on (which?) platform */
8755 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8756 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8757 checkit("0.1", buf);
8758
a5b10d80
YST
8759 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
8760 checkit("0.01", buf);
8761
8762 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
8763 checkit("0.001", buf);
8764
8765 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
8766 checkit("0.0001", buf);
8767
8768 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
8769 if (strlen(buf) > 5)
8770 checkit("9e-005", buf); /* for Microsoft ?? */
8771 else
8772 checkit("9e-05", buf);
8773
b4eb6b3d
JH
8774 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8775 checkit("1", buf);
8776
8777 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8778 checkit("1.1", buf);
8779
8780 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8781 checkit("1.01", buf);
8782
8783 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8784 checkit("1.001", buf);
8785
8786 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8787 checkit("1.0001", buf);
8788
8789 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8790 checkit("1.00001", buf);
8791
8792 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8793 checkit("1.000001", buf);
8794
8795 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8796 checkit("0", buf);
8797
8798 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8799 checkit("-1", buf);
8800
8801 /* Some Linux gcvt's give 1.e+5 here. */
8802 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8803 checkit("100000", buf);
8804
8805 /* Some Linux gcvt's give -1.e+5 here. */
8806 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8807 checkit("-100000", buf);
8808
8809 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8810 checkit("123.456", buf);
8811
ab6ca9f4
JH
8812 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8813 Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8814 if (strlen(buf) > 5)
8815 checkit("1e+030", buf); /* for Microsoft */
8816 else
8817 checkit("1e+30", buf);
8e2a5ede 8818
b4eb6b3d
JH
8819 exit(0);
8820}
8821EOP
ab6ca9f4 8822: first add preferred functions to our list
a5b10d80 8823xxx_list=""
ab6ca9f4 8824for xxx_convert in $gconvert_preference; do
a5b10d80
YST
8825 case $xxx_convert in
8826 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
ab6ca9f4 8827 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
a5b10d80
YST
8828 esac
8829done
8830: then add any others
8831for xxx_convert in gconvert gcvt sprintf; do
8832 case "$xxx_list" in
8833 *$xxx_convert*) ;;
8834 *) xxx_list="$xxx_list $xxx_convert" ;;
8835 esac
8836done
8837
8838case "$d_longdbl$uselongdouble" in
8839"$define$define")
8840 : again, add prefered functions to our list first
8841 xxx_ld_list=""
ab6ca9f4 8842 for xxx_convert in $gconvert_ld_preference; do
a5b10d80
YST
8843 case $xxx_convert in
8844 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
ab6ca9f4 8845 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
a5b10d80
YST
8846 esac
8847 done
8848 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
8849 for xxx_convert in qgcvt sprintf $xxx_list; do
8850 case "$xxx_ld_list" in
8851 $xxx_convert*|*" $xxx_convert"*) ;;
8852 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8853 esac
8854 done
8855 : if sprintf cannot do long doubles, move it to the end
8856 if test "$d_PRIgldbl" != "$define"; then
8857 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
8858 fi
8859 : if no qgcvt, remove it
8860 if test "$d_qgcvt" != "$define"; then
8861 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
8862 fi
8863 : use the ld_list
8864 xxx_list="$xxx_ld_list"
b4eb6b3d
JH
8865 ;;
8866esac
8867
8868for xxx_convert in $xxx_list; do
8869 echo "Trying $xxx_convert..."
8870 $rm -f try try$_o
8871 set try -DTRY_$xxx_convert
8872 if eval $compile; then
8873 echo "$xxx_convert() found." >&4
5440bc8e 8874 if $run ./try; then
b4eb6b3d
JH
8875 echo "I'll use $xxx_convert to convert floats into a string." >&4
8876 break;
8877 else
8878 echo "...But $xxx_convert didn't work as I expected."
a5b10d80 8879 xxx_convert=''
b4eb6b3d
JH
8880 fi
8881 else
8882 echo "$xxx_convert NOT found." >&4
8883 fi
8884done
ab6ca9f4 8885
a5b10d80
YST
8886if test X$xxx_convert = X; then
8887 echo "*** WHOA THERE!!! ***" >&4
8888 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
8889 xxx_convert=sprintf
8890fi
8891
b4eb6b3d
JH
8892case "$xxx_convert" in
8893gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8894gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8895qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8896*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8897 "$define$define$define")
8898 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
a5b10d80
YST
8899 "$define$define$undef")
8900 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
b4eb6b3d
JH
8901 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8902 esac
8903 ;;
8904esac
8905
a5b10d80
YST
8906fi
8907
74cac757
JH
8908: see if _fwalk exists
8909set fwalk d__fwalk
8910eval $inlibc
8911
b4eb6b3d
JH
8912: Initialize h_fcntl
8913h_fcntl=false
8914
8915: Initialize h_sysfile
8916h_sysfile=false
8917
8918: access call always available on UNIX
8919set access d_access
8920eval $inlibc
8921
8922: locate the flags for 'access()'
8923case "$d_access" in
8924"$define")
8925 echo " "
8926 $cat >access.c <<'EOCP'
8927#include <sys/types.h>
8928#ifdef I_FCNTL
8929#include <fcntl.h>
8930#endif
8931#ifdef I_SYS_FILE
8932#include <sys/file.h>
8933#endif
8934#ifdef I_UNISTD
8935#include <unistd.h>
8936#endif
8937int main() {
8938 exit(R_OK);
8939}
8940EOCP
8941 : check sys/file.h first, no particular reason here
8942 if $test `./findhdr sys/file.h` && \
7a282f6d 8943 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8944 h_sysfile=true;
8945 echo "<sys/file.h> defines the *_OK access constants." >&4
8946 elif $test `./findhdr fcntl.h` && \
7a282f6d 8947 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8948 h_fcntl=true;
8949 echo "<fcntl.h> defines the *_OK access constants." >&4
8950 elif $test `./findhdr unistd.h` && \
7a282f6d 8951 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8952 echo "<unistd.h> defines the *_OK access constants." >&4
8953 else
8954 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8955 fi
8956 ;;
8957esac
8958$rm -f access*
8959
8960: see if accessx exists
8961set accessx d_accessx
8962eval $inlibc
8963
8964: see if alarm exists
8965set alarm d_alarm
8966eval $inlibc
8967
8968: see if atolf exists
8969set atolf d_atolf
8970eval $inlibc
8971
8972: see if atoll exists
8973set atoll d_atoll
8974eval $inlibc
8975
8976: Look for GNU-cc style attribute checking
8977echo " "
8978echo "Checking whether your compiler can handle __attribute__ ..." >&4
8979$cat >attrib.c <<'EOCP'
8980#include <stdio.h>
8981void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8982EOCP
8983if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8984 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8985 echo "Your C compiler doesn't fully support __attribute__."
8986 val="$undef"
8987 else
8988 echo "Your C compiler supports __attribute__."
8989 val="$define"
8990 fi
8991else
8992 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8993 val="$undef"
8994fi
8995set d_attribut
8996eval $setvar
8997$rm -f attrib*
8998
8999: see if bcmp exists
9000set bcmp d_bcmp
9001eval $inlibc
9002
9003: see if bcopy exists
9004set bcopy d_bcopy
9005eval $inlibc
9006
9007: see if this is a unistd.h system
9008set unistd.h i_unistd
9009eval $inhdr
9010
9011: see if getpgrp exists
9012set getpgrp d_getpgrp
9013eval $inlibc
9014
9015case "$d_getpgrp" in
9016"$define")
9017 echo " "
9018 echo "Checking to see which flavor of getpgrp is in use..."
5440bc8e 9019 $cat >try.c <<EOP
b4eb6b3d
JH
9020#$i_unistd I_UNISTD
9021#include <sys/types.h>
9022#ifdef I_UNISTD
9023# include <unistd.h>
9024#endif
9025int main()
9026{
9027 if (getuid() == 0) {
9028 printf("(I see you are running Configure as super-user...)\n");
9029 setuid(1);
9030 }
9031#ifdef TRY_BSD_PGRP
9032 if (getpgrp(1) == 0)
9033 exit(0);
9034#else
9035 if (getpgrp() > 0)
9036 exit(0);
9037#endif
9038 exit(1);
9039}
9040EOP
5440bc8e 9041 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9042 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9043 val="$define"
5440bc8e 9044 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9045 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9046 val="$undef"
9047 else
9048 echo "I can't seem to compile and run the test program."
9049 if ./usg; then
9050 xxx="a USG one, i.e. you use getpgrp()."
9051 else
9052 # SVR4 systems can appear rather BSD-ish.
9053 case "$i_unistd" in
9054 $undef)
9055 xxx="a BSD one, i.e. you use getpgrp(pid)."
9056 val="$define"
9057 ;;
9058 $define)
9059 xxx="probably a USG one, i.e. you use getpgrp()."
9060 val="$undef"
9061 ;;
9062 esac
9063 fi
9064 echo "Assuming your getpgrp is $xxx" >&4
9065 fi
9066 ;;
9067*) val="$undef";;
9068esac
9069set d_bsdgetpgrp
9070eval $setvar
5440bc8e 9071$rm -f try try.*
b4eb6b3d
JH
9072
9073: see if setpgrp exists
9074set setpgrp d_setpgrp
9075eval $inlibc
9076
9077case "$d_setpgrp" in
9078"$define")
9079 echo " "
9080 echo "Checking to see which flavor of setpgrp is in use..."
5440bc8e 9081 $cat >try.c <<EOP
b4eb6b3d
JH
9082#$i_unistd I_UNISTD
9083#include <sys/types.h>
9084#ifdef I_UNISTD
9085# include <unistd.h>
9086#endif
9087int main()
9088{
9089 if (getuid() == 0) {
9090 printf("(I see you are running Configure as super-user...)\n");
9091 setuid(1);
9092 }
9093#ifdef TRY_BSD_PGRP
9094 if (-1 == setpgrp(1, 1))
9095 exit(0);
9096#else
9097 if (setpgrp() != -1)
9098 exit(0);
9099#endif
9100 exit(1);
9101}
9102EOP
5440bc8e 9103 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9104 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9105 val="$define"
5440bc8e 9106 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9107 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9108 val="$undef"
9109 else
9110 echo "(I can't seem to compile and run the test program.)"
9111 if ./usg; then
9112 xxx="a USG one, i.e. you use setpgrp()."
9113 else
9114 # SVR4 systems can appear rather BSD-ish.
9115 case "$i_unistd" in
9116 $undef)
9117 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9118 val="$define"
9119 ;;
9120 $define)
9121 xxx="probably a USG one, i.e. you use setpgrp()."
9122 val="$undef"
9123 ;;
9124 esac
9125 fi
9126 echo "Assuming your setpgrp is $xxx" >&4
9127 fi
9128 ;;
9129*) val="$undef";;
9130esac
9131set d_bsdsetpgrp
9132eval $setvar
5440bc8e 9133$rm -f try try.*
b4eb6b3d
JH
9134: see if bzero exists
9135set bzero d_bzero
9136eval $inlibc
9137
9138: see if signal is declared as pointer to function returning int or void
9139echo " "
9140xxx=`./findhdr signal.h`
9141$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9142if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9143 echo "You have int (*signal())() instead of void." >&4
9144 val="$undef"
9145elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9146 echo "You have void (*signal())()." >&4
9147 val="$define"
9148elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9149 echo "You have int (*signal())() instead of void." >&4
9150 val="$undef"
9151elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9152 echo "You have void (*signal())()." >&4
9153 val="$define"
9154else
9155 case "$d_voidsig" in
9156 '')
9157 echo "I can't determine whether signal handler returns void or int..." >&4
9158 dflt=void
9159 rp="What type does your signal handler return?"
9160 . ./myread
9161 case "$ans" in
9162 v*) val="$define";;
9163 *) val="$undef";;
9164 esac;;
9165 "$define")
9166 echo "As you already told me, signal handler returns void." >&4
9167 val="$define"
9168 ;;
9169 *) echo "As you already told me, signal handler returns int." >&4
9170 val="$undef"
9171 ;;
9172 esac
9173fi
9174set d_voidsig
9175eval $setvar
9176case "$d_voidsig" in
9177"$define") signal_t="void";;
9178*) signal_t="int";;
9179esac
9180$rm -f $$.tmp
9181
9182: check for ability to cast large floats to 32-bit ints.
9183echo " "
9184echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9185if $test "$intsize" -ge 4; then
9186 xxx=int
9187else
9188 xxx=long
9189fi
9190$cat >try.c <<EOCP
9191#include <stdio.h>
9192#include <sys/types.h>
9193#include <signal.h>
9194$signal_t blech(s) int s; { exit(3); }
9195int main()
9196{
9197 $xxx i32;
9198 double f, g;
9199 int result = 0;
9200 char str[16];
9201 signal(SIGFPE, blech);
9202
9203 /* Don't let compiler optimize the test away. Store the number
9204 in a writable string for gcc to pass to sscanf under HP/UX.
9205 */
9206 sprintf(str, "2147483647");
9207 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9208 g = 10 * f;
9209 i32 = ($xxx) g;
9210
9211 /* x86 processors will probably give 0x8000 0000, which is a
9212 sign change. We don't want that. We want to mimic SPARC
9213 behavior here, which is to preserve the sign and give
9214 back 0x7fff ffff.
9215 */
9216 if (i32 != ($xxx) f)
9217 result |= 1;
9218 exit(result);
9219}
9220EOCP
9221set try
9222if eval $compile_ok; then
5440bc8e 9223 $run ./try
b4eb6b3d
JH
9224 yyy=$?
9225else
9226 echo "(I can't seem to compile the test program--assuming it can't)"
9227 yyy=1
9228fi
9229case "$yyy" in
92300) val="$define"
9231 echo "Yup, it can."
9232 ;;
9233*) val="$undef"
9234 echo "Nope, it can't."
9235 ;;
9236esac
9237set d_casti32
9238eval $setvar
9239$rm -f try try.*
9240
9241: check for ability to cast negative floats to unsigned
9242echo " "
9243echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9244$cat >try.c <<EOCP
9245#include <stdio.h>
9246#include <sys/types.h>
9247#include <signal.h>
9248$signal_t blech(s) int s; { exit(7); }
9249$signal_t blech_in_list(s) int s; { exit(4); }
9250unsigned long dummy_long(p) unsigned long p; { return p; }
9251unsigned int dummy_int(p) unsigned int p; { return p; }
9252unsigned short dummy_short(p) unsigned short p; { return p; }
9253int main()
9254{
9255 double f;
9256 unsigned long along;
9257 unsigned int aint;
9258 unsigned short ashort;
9259 int result = 0;
9260 char str[16];
9261
9262 /* Frustrate gcc-2.7.2's optimizer which failed this test with
9263 a direct f = -123. assignment. gcc-2.8.0 reportedly
9264 optimized the whole file away
9265 */
9266 /* Store the number in a writable string for gcc to pass to
9267 sscanf under HP/UX.
9268 */
9269 sprintf(str, "-123");
9270 sscanf(str, "%lf", &f); /* f = -123.; */
9271
9272 signal(SIGFPE, blech);
9273 along = (unsigned long)f;
9274 aint = (unsigned int)f;
9275 ashort = (unsigned short)f;
9276 if (along != (unsigned long)-123)
9277 result |= 1;
9278 if (aint != (unsigned int)-123)
9279 result |= 1;
9280 if (ashort != (unsigned short)-123)
9281 result |= 1;
9282 sprintf(str, "1073741824.");
9283 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9284 f = f + f;
9285 along = 0;
9286 along = (unsigned long)f;
9287 if (along != 0x80000000)
9288 result |= 2;
9289 f -= 1.;
9290 along = 0;
9291 along = (unsigned long)f;
9292 if (along != 0x7fffffff)
9293 result |= 1;
9294 f += 2.;
9295 along = 0;
9296 along = (unsigned long)f;
9297 if (along != 0x80000001)
9298 result |= 2;
9299 if (result)
9300 exit(result);
9301 signal(SIGFPE, blech_in_list);
9302 sprintf(str, "123.");
9303 sscanf(str, "%lf", &f); /* f = 123.; */
9304 along = dummy_long((unsigned long)f);
9305 aint = dummy_int((unsigned int)f);
9306 ashort = dummy_short((unsigned short)f);
9307 if (along != (unsigned long)123)
9308 result |= 4;
9309 if (aint != (unsigned int)123)
9310 result |= 4;
9311 if (ashort != (unsigned short)123)
9312 result |= 4;
9313 exit(result);
9314
9315}
9316EOCP
9317set try
9318if eval $compile_ok; then
5440bc8e 9319 $run ./try
b4eb6b3d
JH
9320 castflags=$?
9321else
9322 echo "(I can't seem to compile the test program--assuming it can't)"
9323 castflags=7
9324fi
9325case "$castflags" in
93260) val="$define"
9327 echo "Yup, it can."
9328 ;;
9329*) val="$undef"
9330 echo "Nope, it can't."
9331 ;;
9332esac
9333set d_castneg
9334eval $setvar
9335$rm -f try.*
9336
9337: see if vprintf exists
9338echo " "
9339if set vprintf val -f d_vprintf; eval $csym; $val; then
9340 echo 'vprintf() found.' >&4
9341 val="$define"
5440bc8e 9342 $cat >try.c <<'EOF'
b4eb6b3d
JH
9343#include <varargs.h>
9344
9345int main() { xxx("foo"); }
9346
9347xxx(va_alist)
9348va_dcl
9349{
9350 va_list args;
9351 char buf[10];
9352
9353 va_start(args);
9354 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9355}
9356EOF
5440bc8e
JH
9357 set try
9358 if eval $compile && $run ./try; then
b4eb6b3d
JH
9359 echo "Your vsprintf() returns (int)." >&4
9360 val2="$undef"
9361 else
9362 echo "Your vsprintf() returns (char*)." >&4
9363 val2="$define"
9364 fi
9365else
9366 echo 'vprintf() NOT found.' >&4
9367 val="$undef"
9368 val2="$undef"
9369fi
5440bc8e 9370$rm -f try try.*
b4eb6b3d
JH
9371set d_vprintf
9372eval $setvar
9373val=$val2
9374set d_charvspr
9375eval $setvar
9376
9377: see if chown exists
9378set chown d_chown
9379eval $inlibc
9380
9381: see if chroot exists
9382set chroot d_chroot
9383eval $inlibc
9384
9385: see if chsize exists
9386set chsize d_chsize
9387eval $inlibc
9388
758a5d79
JH
9389: see if class exists
9390set class d_class
9391eval $inlibc
9392
4e0554ec
JH
9393hasstruct='varname=$1; struct=$2; shift; shift;
9394while $test $# -ge 2; do
9395 case "$1" in
9396 $define) echo "#include <$2>";;
9397 esac ;
9398 shift 2;
9399done > try.c;
9400echo "int main () { struct $struct foo; }" >> try.c;
9401set try;
9402if eval $compile; then
9403 val="$define";
9404else
9405 val="$undef";
9406fi;
9407set $varname;
9408eval $setvar;
9409$rm -f try.c try.o'
9410
9411: see if sys/types.h has to be included
9412set sys/types.h i_systypes
9413eval $inhdr
9414
9415hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9416while $test $# -ge 2; do
9417 case "$1" in
9418 $define) echo "#include <$2>";;
9419 esac ;
9420 shift 2;
9421done > try.c;
9422echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9423set try;
9424if eval $compile; then
9425 val="$define";
9426else
9427 val="$undef";
9428fi;
9429set $varname;
9430eval $setvar;
9431$rm -f try.c try.o'
9432
9433socketlib=''
9434sockethdr=''
9435: see whether socket exists
9436echo " "
9437$echo $n "Hmm... $c" >&4
9438if set socket val -f d_socket; eval $csym; $val; then
9439 echo "Looks like you have Berkeley networking support." >&4
9440 d_socket="$define"
9441 if set setsockopt val -f; eval $csym; $val; then
9442 d_oldsock="$undef"
9443 else
9444 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9445 d_oldsock="$define"
9446 fi
9447else
9448 if $contains socklib libc.list >/dev/null 2>&1; then
9449 echo "Looks like you have Berkeley networking support." >&4
9450 d_socket="$define"
9451 : we will have to assume that it supports the 4.2 BSD interface
9452 d_oldsock="$undef"
9453 else
9454 echo "You don't have Berkeley networking in libc$_a..." >&4
9455 if test "X$d_socket" = "X$define"; then
9456 echo "...but you seem to believe that you have sockets." >&4
9457 else
9458 for net in net socket
9459 do
9460 if test -f /usr/lib/lib$net$_a; then
9461 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9462 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9463 if $contains socket libc.list >/dev/null 2>&1; then
9464 d_socket="$define"
9465 socketlib="-l$net"
9466 case "$net" in
9467 net)
9468 echo "...but the Wollongong group seems to have hacked it in." >&4
9469 sockethdr="-I/usr/netinclude"
9470 ;;
9471 esac
3c728e00 9472 echo "Found Berkeley sockets interface in lib$net." >&4
4e0554ec
JH
9473 if $contains setsockopt libc.list >/dev/null 2>&1; then
9474 d_oldsock="$undef"
9475 else
9476 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9477 d_oldsock="$define"
9478 fi
9479 break
9480 fi
9481 fi
9482 done
9483 if test "X$d_socket" != "X$define"; then
9484 echo "or anywhere else I see." >&4
9485 d_socket="$undef"
9486 d_oldsock="$undef"
9487 fi
9488 fi
9489 fi
9490fi
9491
9492: see if socketpair exists
9493set socketpair d_sockpair
9494eval $inlibc
9495
9496
9497echo " "
3c728e00 9498echo "Checking the availability of certain socket constants..." >&4
4e0554ec
JH
9499for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9500 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9501 $cat >try.c <<EOF
9502#include <sys/types.h>
9503#include <sys/socket.h>
9504int main() {
9505 int i = $ENUM;
9506}
9507EOF
9508 val="$undef"
9509 set try; if eval $compile; then
9510 val="$define"
9511 fi
9512 set d_${enum}; eval $setvar
9513 $rm -f try.c try
9514done
9515
9516: see if this is a sys/uio.h system
9517set sys/uio.h i_sysuio
9518eval $inhdr
9519
9520
9521echo " "
9522echo "Checking to see if your system supports struct cmsghdr..." >&4
9523set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9524eval $hasstruct
9525case "$d_cmsghdr_s" in
9526"$define") echo "Yes, it does." ;;
9527*) echo "No, it doesn't." ;;
9528esac
9529
9530
b4eb6b3d
JH
9531: check for const keyword
9532echo " "
9533echo 'Checking to see if your C compiler knows about "const"...' >&4
9534$cat >const.c <<'EOCP'
9535typedef struct spug { int drokk; } spug;
9536int main()
9537{
9538 const char *foo;
9539 const spug y;
9540}
9541EOCP
9542if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9543 val="$define"
9544 echo "Yup, it does."
9545else
9546 val="$undef"
9547 echo "Nope, it doesn't."
9548fi
9549set d_const
9550eval $setvar
9551
9552: see if crypt exists
9553echo " "
a5a94ea5
JH
9554set crypt d_crypt
9555eval $inlibc
9556case "$d_crypt" in
9557$define) cryptlib='' ;;
9558*) if set crypt val -f d_crypt; eval $csym; $val; then
9559 echo 'crypt() found.' >&4
b4eb6b3d 9560 val="$define"
a5a94ea5
JH
9561 cryptlib=''
9562 else
9563 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9564 if $test -z "$cryptlib"; then
9565 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9566 else
9567 cryptlib=-lcrypt
9568 fi
9569 if $test -z "$cryptlib"; then
9570 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9571 else
9572 cryptlib=-lcrypt
9573 fi
9574 if $test -z "$cryptlib"; then
9575 cryptlib=`./loc libcrypt$_a "" $libpth`
9576 else
9577 cryptlib=-lcrypt
9578 fi
9579 if $test -z "$cryptlib"; then
9580 echo 'crypt() NOT found.' >&4
9581 val="$undef"
9582 else
9583 val="$define"
9584 fi
b4eb6b3d 9585 fi
a5a94ea5
JH
9586 set d_crypt
9587 eval $setvar
9588 ;;
9589esac
b4eb6b3d
JH
9590
9591: get csh whereabouts
9592case "$csh" in
9593'csh') val="$undef" ;;
9594*) val="$define" ;;
9595esac
9596set d_csh
9597eval $setvar
9598: Respect a hint or command line value for full_csh.
9599case "$full_csh" in
9600'') full_csh=$csh ;;
9601esac
9602
9603: see if cuserid exists
9604set cuserid d_cuserid
9605eval $inlibc
9606
9607: see if this is a limits.h system
9608set limits.h i_limits
9609eval $inhdr
9610
9611: see if this is a float.h system
9612set float.h i_float
9613eval $inhdr
9614
9615: See if number of significant digits in a double precision number is known
9616echo " "
9617$cat >dbl_dig.c <<EOM
9618#$i_limits I_LIMITS
9619#$i_float I_FLOAT
9620#ifdef I_LIMITS
9621#include <limits.h>
9622#endif
9623#ifdef I_FLOAT
9624#include <float.h>
9625#endif
9626#ifdef DBL_DIG
9627printf("Contains DBL_DIG");
9628#endif
9629EOM
9630$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9631if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9632 echo "DBL_DIG found." >&4
9633 val="$define"
9634else
9635 echo "DBL_DIG NOT found." >&4
9636 val="$undef"
9637fi
9638$rm -f dbl_dig.?
9639set d_dbl_dig
9640eval $setvar
9641
2ef53570
JH
9642hasproto='varname=$1; func=$2; shift; shift;
9643while $test $# -ge 2; do
9644 case "$1" in
9645 $define) echo "#include <$2>";;
9646 esac ;
9647 shift 2;
9648done > try.c;
9649$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9650if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9651 echo "$func() prototype found.";
9652 val="$define";
9653else
9654 echo "$func() prototype NOT found.";
9655 val="$undef";
9656fi;
9657set $varname;
9658eval $setvar;
9659$rm -f try.c tryout.c'
9660
9661: see if dbm.h is available
9662: see if dbmclose exists
9663set dbmclose d_dbmclose
9664eval $inlibc
9665
9666case "$d_dbmclose" in
9667$define)
9668 set dbm.h i_dbm
9669 eval $inhdr
9670 case "$i_dbm" in
9671 $define)
9672 val="$undef"
9673 set i_rpcsvcdbm
9674 eval $setvar
9675 ;;
9676 *) set rpcsvc/dbm.h i_rpcsvcdbm
9677 eval $inhdr
9678 ;;
9679 esac
9680 ;;
9681*) echo "We won't be including <dbm.h>"
9682 val="$undef"
9683 set i_dbm
9684 eval $setvar
9685 val="$undef"
9686 set i_rpcsvcdbm
9687 eval $setvar
9688 ;;
9689esac
9690
9691: see if prototype for dbminit is available
9692echo " "
9693set d_dbminitproto dbminit $i_dbm dbm.h
9694eval $hasproto
9695
b4eb6b3d
JH
9696: see if difftime exists
9697set difftime d_difftime
9698eval $inlibc
9699
9700: see if this is a dirent system
9701echo " "
9702if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9703 val="$define"
9704 echo "<dirent.h> found." >&4
9705else
9706 val="$undef"
9707 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9708 echo "<sys/dir.h> found." >&4
9709 echo " "
9710 else
9711 xinc=`./findhdr sys/ndir.h`
9712 fi
9713 echo "<dirent.h> NOT found." >&4
9714fi
9715set i_dirent
9716eval $setvar
9717
9718: Look for type of directory structure.
9719echo " "
9720$cppstdin $cppflags $cppminus < "$xinc" > try.c
9721
9722case "$direntrytype" in
9723''|' ')
9724 case "$i_dirent" in
9725 $define) guess1='struct dirent' ;;
9726 *) guess1='struct direct' ;;
9727 esac
9728 ;;
9729*) guess1="$direntrytype"
9730 ;;
9731esac
9732
9733case "$guess1" in
9734'struct dirent') guess2='struct direct' ;;
9735*) guess2='struct dirent' ;;
9736esac
9737
9738if $contains "$guess1" try.c >/dev/null 2>&1; then
9739 direntrytype="$guess1"
9740 echo "Your directory entries are $direntrytype." >&4
9741elif $contains "$guess2" try.c >/dev/null 2>&1; then
9742 direntrytype="$guess2"
9743 echo "Your directory entries seem to be $direntrytype." >&4
9744else
9745 echo "I don't recognize your system's directory entries." >&4
9746 rp="What type is used for directory entries on this system?"
9747 dflt="$guess1"
9748 . ./myread
9749 direntrytype="$ans"
9750fi
9751$rm -f try.c
9752
9753
9754: see if the directory entry stores field length
9755echo " "
9756$cppstdin $cppflags $cppminus < "$xinc" > try.c
9757if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9758 echo "Good, your directory entry keeps length information in d_namlen." >&4
9759 val="$define"
9760else
9761 echo "Your directory entry does not know about the d_namlen field." >&4
9762 val="$undef"
9763fi
9764set d_dirnamlen
9765eval $setvar
9766$rm -f try.c
9767
ae0e3d3b
JH
9768: see if this is an sysdir system
9769set sys/dir.h i_sysdir
9770eval $inhdr
9771
9772: see if this is an sysndir system
9773set sys/ndir.h i_sysndir
9774eval $inhdr
9775
9776: Look for dirfd
9777echo " "
9778$cat >dirfd.c <<EOM
9779#include <stdio.h>
9780#$i_dirent I_DIRENT /**/
9781#$i_sysdir I_SYS_DIR /**/
9782#$i_sysndir I_SYS_NDIR /**/
9783#$i_systypes I_SYS_TYPES /**/
9784#if defined(I_SYS_TYPES)
9785#include <sys/types.h>
9786#endif
9787#if defined(I_DIRENT)
9788#include <dirent.h>
9789#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
9790#include <sys/dir.h>
9791#endif
9792#else
9793#ifdef I_SYS_NDIR
9794#include <sys/ndir.h>
9795#else
9796#ifdef I_SYS_DIR
9797#ifdef hp9000s500
9798#include <ndir.h> /* may be wrong in the future */
9799#else
9800#include <sys/dir.h>
9801#endif
9802#endif
9803#endif
9804#endif
9805int main() {
9806 DIR *dirp = opendir(".");
9807 if (dirfd(dirp) >= 0)
9808 exit(0);
9809 else
9810 exit(1);
9811}
9812EOM
9813set dirfd
9814if eval $compile; then
9815 val="$define"
9816fi
9817case "$val" in
9818$define) echo "dirfd() found." >&4 ;;
9819*) echo "dirfd() NOT found." >&4 ;;
9820esac
9821set d_dirfd
9822eval $setvar
9823$rm -f dirfd*
9824
b4eb6b3d
JH
9825: see if dlerror exists
9826xxx_runnm="$runnm"
9827runnm=false
9828set dlerror d_dlerror
9829eval $inlibc
9830runnm="$xxx_runnm"
9831
9832: see if dlfcn is available
9833set dlfcn.h i_dlfcn
9834eval $inhdr
9835
9836case "$usedl" in
9837$define|y|true)
9838 $cat << EOM
9839
9840On a few systems, the dynamically loaded modules that perl generates and uses
9841will need a different extension than shared libs. The default will probably
9842be appropriate.
9843
9844EOM
9845 case "$dlext" in
9846 '') dflt="$so" ;;
9847 *) dflt="$dlext" ;;
9848 esac
9849 rp='What is the extension of dynamically loaded modules'
9850 . ./myread
9851 dlext="$ans"
9852 ;;
9853*)
9854 dlext="none"
9855 ;;
9856esac
9857
9858: Check if dlsym need a leading underscore
9859echo " "
9860val="$undef"
9861
9862case "$dlsrc" in
9863dl_dlopen.xs)
9864 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9865 $cat >dyna.c <<'EOM'
9866fred () { }
9867EOM
9868
9869$cat >fred.c<<EOM
9870
9871#include <stdio.h>
9872#$i_dlfcn I_DLFCN
9873#ifdef I_DLFCN
5440bc8e 9874#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
b4eb6b3d
JH
9875#else
9876#include <sys/types.h>
9877#include <nlist.h>
9878#include <link.h>
9879#endif
9880
9881extern int fred() ;
9882
9883int main()
9884{
9885 void * handle ;
9886 void * symbol ;
9887#ifndef RTLD_LAZY
9888 int mode = 1 ;
9889#else
9890 int mode = RTLD_LAZY ;
9891#endif
9892 handle = dlopen("./dyna.$dlext", mode) ;
9893 if (handle == NULL) {
9894 printf ("1\n") ;
9895 fflush (stdout) ;
9896 exit(0);
9897 }
9898 symbol = dlsym(handle, "fred") ;
9899 if (symbol == NULL) {
9900 /* try putting a leading underscore */
9901 symbol = dlsym(handle, "_fred") ;
9902 if (symbol == NULL) {
9903 printf ("2\n") ;
9904 fflush (stdout) ;
9905 exit(0);
9906 }
9907 printf ("3\n") ;
9908 }
9909 else
9910 printf ("4\n") ;
9911 fflush (stdout) ;
9912 exit(0);
9913}
9914EOM
9915 : Call the object file tmp-dyna.o in case dlext=o.
9916 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9917 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
e4778687 9918 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
5440bc8e
JH
9919 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9920 xxx=`$run ./fred`
b4eb6b3d
JH
9921 case $xxx in
9922 1) echo "Test program failed using dlopen." >&4
9923 echo "Perhaps you should not use dynamic loading." >&4;;
9924 2) echo "Test program failed using dlsym." >&4
9925 echo "Perhaps you should not use dynamic loading." >&4;;
9926 3) echo "dlsym needs a leading underscore" >&4
9927 val="$define" ;;
9928 4) echo "dlsym doesn't need a leading underscore." >&4;;
9929 esac
9930 else
9931 echo "I can't compile and run the test program." >&4
9932 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9933 fi
9934 ;;
9935esac
9936
3c728e00 9937$rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
b4eb6b3d
JH
9938
9939set d_dlsymun
9940eval $setvar
9941
b4eb6b3d
JH
9942: see if prototype for drand48 is available
9943echo " "
9944set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9945eval $hasproto
9946
9947: see if dup2 exists
9948set dup2 d_dup2
9949eval $inlibc
9950
9951: see if eaccess exists
9952set eaccess d_eaccess
9953eval $inlibc
9954
9955: see if endgrent exists
9956set endgrent d_endgrent
9957eval $inlibc
9958
9959: see if endhostent exists
9960set endhostent d_endhent
9961eval $inlibc
9962
9963: see if endnetent exists
9964set endnetent d_endnent
9965eval $inlibc
9966
9967: see if endprotoent exists
9968set endprotoent d_endpent
9969eval $inlibc
9970
9971: see if endpwent exists
9972set endpwent d_endpwent
9973eval $inlibc
9974
9975: see if endservent exists
9976set endservent d_endsent
9977eval $inlibc
9978
9979: Locate the flags for 'open()'
9980echo " "
5440bc8e 9981$cat >try.c <<'EOCP'
b4eb6b3d
JH
9982#include <sys/types.h>
9983#ifdef I_FCNTL
9984#include <fcntl.h>
9985#endif
9986#ifdef I_SYS_FILE
9987#include <sys/file.h>
9988#endif
9989int main() {
9990 if(O_RDONLY);
9991#ifdef O_TRUNC
9992 exit(0);
9993#else
9994 exit(1);
9995#endif
9996}
9997EOCP
9998: check sys/file.h first to get FREAD on Sun
9999if $test `./findhdr sys/file.h` && \
5440bc8e 10000 set try -DI_SYS_FILE && eval $compile; then
b4eb6b3d
JH
10001 h_sysfile=true;
10002 echo "<sys/file.h> defines the O_* constants..." >&4
5440bc8e 10003 if $run ./try; then
b4eb6b3d
JH
10004 echo "and you have the 3 argument form of open()." >&4
10005 val="$define"
10006 else
10007 echo "but not the 3 argument form of open(). Oh, well." >&4
10008 val="$undef"
10009 fi
10010elif $test `./findhdr fcntl.h` && \
5440bc8e 10011 set try -DI_FCNTL && eval $compile; then
b4eb6b3d
JH
10012 h_fcntl=true;
10013 echo "<fcntl.h> defines the O_* constants..." >&4
5440bc8e 10014 if $run ./try; then
b4eb6b3d
JH
10015 echo "and you have the 3 argument form of open()." >&4
10016 val="$define"
10017 else
10018 echo "but not the 3 argument form of open(). Oh, well." >&4
10019 val="$undef"
10020 fi
10021else
10022 val="$undef"
10023 echo "I can't find the O_* constant definitions! You got problems." >&4
10024fi
10025set d_open3
10026eval $setvar
5440bc8e 10027$rm -f try try.*
b4eb6b3d
JH
10028
10029: see which of string.h or strings.h is needed
10030echo " "
10031strings=`./findhdr string.h`
10032if $test "$strings" && $test -r "$strings"; then
10033 echo "Using <string.h> instead of <strings.h>." >&4
10034 val="$define"
10035else
10036 val="$undef"
10037 strings=`./findhdr strings.h`
10038 if $test "$strings" && $test -r "$strings"; then
10039 echo "Using <strings.h> instead of <string.h>." >&4
10040 else
10041 echo "No string header found -- You'll surely have problems." >&4
10042 fi
10043fi
10044set i_string
10045eval $setvar
10046case "$i_string" in
10047"$undef") strings=`./findhdr strings.h`;;
10048*) strings=`./findhdr string.h`;;
10049esac
10050
3c728e00
JH
10051: see if this is a sys/file.h system
10052val=''
10053set sys/file.h val
10054eval $inhdr
10055
10056: do we need to include sys/file.h ?
10057case "$val" in
10058"$define")
10059 echo " "
10060 if $h_sysfile; then
10061 val="$define"
10062 echo "We'll be including <sys/file.h>." >&4
10063 else
10064 val="$undef"
10065 echo "We won't be including <sys/file.h>." >&4
10066 fi
10067 ;;
10068*)
10069 h_sysfile=false
10070 ;;
10071esac
10072set i_sysfile
10073eval $setvar
10074
10075: see if fcntl.h is there
10076val=''
10077set fcntl.h val
10078eval $inhdr
10079
10080: see if we can include fcntl.h
10081case "$val" in
10082"$define")
10083 echo " "
10084 if $h_fcntl; then
10085 val="$define"
10086 echo "We'll be including <fcntl.h>." >&4
10087 else
10088 val="$undef"
10089 if $h_sysfile; then
10090 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
10091 else
10092 echo "We won't be including <fcntl.h>." >&4
10093 fi
10094 fi
10095 ;;
10096*)
10097 h_fcntl=false
10098 val="$undef"
10099 ;;
10100esac
10101set i_fcntl
10102eval $setvar
10103
b4eb6b3d
JH
10104: check for non-blocking I/O stuff
10105case "$h_sysfile" in
a0acbdc3
JH
10106true) echo "#include <sys/file.h>" > head.c;;
10107*)
10108 case "$h_fcntl" in
10109 true) echo "#include <fcntl.h>" > head.c;;
10110 *) echo "#include <sys/fcntl.h>" > head.c;;
10111 esac
10112 ;;
b4eb6b3d
JH
10113esac
10114echo " "
10115echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
10116case "$o_nonblock" in
10117'')
10118 $cat head.c > try.c
3c728e00 10119 $cat >>try.c <<EOCP
b4eb6b3d 10120#include <stdio.h>
80b3ef99 10121#include <stdlib.h>
3c728e00
JH
10122#$i_fcntl I_FCNTL
10123#ifdef I_FCNTL
10124#include <fcntl.h>
10125#endif
b4eb6b3d
JH
10126int main() {
10127#ifdef O_NONBLOCK
10128 printf("O_NONBLOCK\n");
10129 exit(0);
10130#endif
10131#ifdef O_NDELAY
10132 printf("O_NDELAY\n");
10133 exit(0);
10134#endif
10135#ifdef FNDELAY
10136 printf("FNDELAY\n");
10137 exit(0);
10138#endif
10139 exit(0);
10140}
10141EOCP
10142 set try
10143 if eval $compile_ok; then
5440bc8e 10144 o_nonblock=`$run ./try`
b4eb6b3d
JH
10145 case "$o_nonblock" in
10146 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
10147 *) echo "Seems like we can use $o_nonblock.";;
10148 esac
10149 else
10150 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
10151 fi
10152 ;;
10153*) echo "Using $hint value $o_nonblock.";;
10154esac
10155$rm -f try try.* .out core
10156
10157echo " "
10158echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
10159case "$eagain" in
10160'')
10161 $cat head.c > try.c
10162 $cat >>try.c <<EOCP
10163#include <errno.h>
10164#include <sys/types.h>
10165#include <signal.h>
10166#include <stdio.h>
80b3ef99 10167#include <stdlib.h>
1deb0a86
JH
10168#$i_fcntl I_FCNTL
10169#ifdef I_FCNTL
10170#include <fcntl.h>
10171#endif
b4eb6b3d
JH
10172#define MY_O_NONBLOCK $o_nonblock
10173#ifndef errno /* XXX need better Configure test */
10174extern int errno;
10175#endif
10176#$i_unistd I_UNISTD
10177#ifdef I_UNISTD
10178#include <unistd.h>
10179#endif
10180#$i_string I_STRING
10181#ifdef I_STRING
10182#include <string.h>
10183#else
10184#include <strings.h>
10185#endif
10186$signal_t blech(x) int x; { exit(3); }
10187EOCP
10188 $cat >> try.c <<'EOCP'
10189int main()
10190{
10191 int pd[2];
10192 int pu[2];
10193 char buf[1];
10194 char string[100];
10195
10196 pipe(pd); /* Down: child -> parent */
10197 pipe(pu); /* Up: parent -> child */
10198 if (0 != fork()) {
10199 int ret;
10200 close(pd[1]); /* Parent reads from pd[0] */
10201 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 10202#ifdef F_SETFL
b4eb6b3d
JH
10203 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
10204 exit(1);
a0acbdc3
JH
10205#else
10206 exit(4);
10207#endif
b4eb6b3d
JH
10208 signal(SIGALRM, blech);
10209 alarm(5);
10210 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
10211 exit(2);
10212 sprintf(string, "%d\n", ret);
10213 write(2, string, strlen(string));
10214 alarm(0);
10215#ifdef EAGAIN
10216 if (errno == EAGAIN) {
10217 printf("EAGAIN\n");
10218 goto ok;
10219 }
10220#endif
10221#ifdef EWOULDBLOCK
10222 if (errno == EWOULDBLOCK)
10223 printf("EWOULDBLOCK\n");
10224#endif
10225 ok:
10226 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
10227 sleep(2); /* Give it time to close our pipe */
10228 alarm(5);
10229 ret = read(pd[0], buf, 1); /* Should read EOF */
10230 alarm(0);
10231 sprintf(string, "%d\n", ret);
868439a2 10232 write(4, string, strlen(string));
b4eb6b3d
JH
10233 exit(0);
10234 }
10235
10236 close(pd[0]); /* We write to pd[1] */
10237 close(pu[1]); /* We read from pu[0] */
10238 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
10239 close(pd[1]); /* Pipe pd is now fully closed! */
10240 exit(0); /* Bye bye, thank you for playing! */
10241}
10242EOCP
10243 set try
10244 if eval $compile_ok; then
10245 echo "$startsh" >mtry
868439a2 10246 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
b4eb6b3d
JH
10247 chmod +x mtry
10248 ./mtry >/dev/null 2>&1
10249 case $? in
10250 0) eagain=`$cat try.out`;;
10251 1) echo "Could not perform non-blocking setting!";;
10252 2) echo "I did a successful read() for something that was not there!";;
10253 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 10254 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
10255 *) echo "Something terribly wrong happened during testing.";;
10256 esac
10257 rd_nodata=`$cat try.ret`
10258 echo "A read() system call with no data present returns $rd_nodata."
10259 case "$rd_nodata" in
10260 0|-1) ;;
10261 *)
10262 echo "(That's peculiar, fixing that to be -1.)"
10263 rd_nodata=-1
10264 ;;
10265 esac
10266 case "$eagain" in
10267 '')
10268 echo "Forcing errno EAGAIN on read() with no data available."
10269 eagain=EAGAIN
10270 ;;
10271 *)
10272 echo "Your read() sets errno to $eagain when no data is available."
10273 ;;
10274 esac
10275 status=`$cat try.err`
10276 case "$status" in
10277 0) echo "And it correctly returns 0 to signal EOF.";;
10278 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
10279 *) echo "However, your read() returns '$status' on EOF??";;
10280 esac
10281 val="$define"
10282 if test "$status" = "$rd_nodata"; then
10283 echo "WARNING: you can't distinguish between EOF and no data!"
10284 val="$undef"
10285 fi
10286 else
10287 echo "I can't compile the test program--assuming errno EAGAIN will do."
10288 eagain=EAGAIN
10289 fi
10290 set d_eofnblk
10291 eval $setvar
10292 ;;
10293*)
10294 echo "Using $hint value $eagain."
10295 echo "Your read() returns $rd_nodata when no data is present."
10296 case "$d_eofnblk" in
10297 "$define") echo "And you can see EOF because read() returns 0.";;
10298 "$undef") echo "But you can't see EOF status from read() returned value.";;
10299 *)
10300 echo "(Assuming you can't see EOF status from read anyway.)"
10301 d_eofnblk=$undef
10302 ;;
10303 esac
10304 ;;
10305esac
10306$rm -f try try.* .out core head.c mtry
10307
b363b713
JH
10308: see if fchdir exists
10309set fchdir d_fchdir
10310eval $inlibc
10311
b4eb6b3d
JH
10312: see if fchmod exists
10313set fchmod d_fchmod
10314eval $inlibc
10315
10316: see if fchown exists
10317set fchown d_fchown
10318eval $inlibc
10319
10320: see if this is an fcntl system
10321set fcntl d_fcntl
10322eval $inlibc
10323
9d9004a9
AD
10324echo " "
10325: See if fcntl-based locking works.
832492ee 10326$cat >try.c <<EOCP
9d9004a9
AD
10327#include <stdlib.h>
10328#include <unistd.h>
10329#include <fcntl.h>
832492ee 10330#include <signal.h>
832492ee 10331$signal_t blech(x) int x; { exit(3); }
9d9004a9
AD
10332int main() {
10333#if defined(F_SETLK) && defined(F_SETLKW)
10334 struct flock flock;
10335 int retval, fd;
10336 fd = open("try.c", O_RDONLY);
10337 flock.l_type = F_RDLCK;
10338 flock.l_whence = SEEK_SET;
10339 flock.l_start = flock.l_len = 0;
832492ee
JH
10340 signal(SIGALRM, blech);
10341 alarm(10);
9d9004a9
AD
10342 retval = fcntl(fd, F_SETLK, &flock);
10343 close(fd);
10344 (retval < 0 ? exit(2) : exit(0));
10345#else
10346 exit(2);
10347#endif
10348}
10349EOCP
10350echo "Checking if fcntl-based file locking works... "
10351case "$d_fcntl" in
10352"$define")
10353 set try
10354 if eval $compile_ok; then
5440bc8e 10355 if $run ./try; then
9d9004a9
AD
10356 echo "Yes, it seems to work."
10357 val="$define"
10358 else
10359 echo "Nope, it didn't work."
10360 val="$undef"
832492ee
JH
10361 case "$?" in
10362 3) $cat >&4 <<EOM
10363***
10364*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
10365*** This is (almost) impossible.
10366*** If your NFS lock daemons are not feeling well, something like
10367*** this may happen, please investigate. Cannot continue, aborting.
10368***
10369EOM
10370 exit 1
10371 ;;
10372 esac
9d9004a9
AD
10373 fi
10374 else
10375 echo "I'm unable to compile the test program, so I'll assume not."
10376 val="$undef"
10377 fi
10378 ;;
10379*) val="$undef";
10380 echo "Nope, since you don't even have fcntl()."
10381 ;;
10382esac
10383set d_fcntl_can_lock
10384eval $setvar
10385$rm -f try*
10386
10387
b4eb6b3d
JH
10388: see if sys/select.h has to be included
10389set sys/select.h i_sysselct
10390eval $inhdr
10391
10392: see if we should include time.h, sys/time.h, or both
10393echo " "
10394if test "X$timeincl" = X; then
10395 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10396 $echo $n "I'm now running the test program...$c"
10397 $cat >try.c <<'EOCP'
10398#include <sys/types.h>
10399#ifdef I_TIME
10400#include <time.h>
10401#endif
10402#ifdef I_SYSTIME
10403#ifdef SYSTIMEKERNEL
10404#define KERNEL
10405#endif
10406#include <sys/time.h>
10407#endif
10408#ifdef I_SYSSELECT
10409#include <sys/select.h>
10410#endif
10411int main()
10412{
10413 struct tm foo;
10414#ifdef S_TIMEVAL
10415 struct timeval bar;
10416#endif
10417#ifdef S_TIMEZONE
10418 struct timezone tzp;
10419#endif
10420 if (foo.tm_sec == foo.tm_sec)
10421 exit(0);
10422#ifdef S_TIMEVAL
10423 if (bar.tv_sec == bar.tv_sec)
10424 exit(0);
10425#endif
10426 exit(1);
10427}
10428EOCP
10429 flags=''
10430 for s_timezone in '-DS_TIMEZONE' ''; do
10431 sysselect=''
10432 for s_timeval in '-DS_TIMEVAL' ''; do
10433 for i_systimek in '' '-DSYSTIMEKERNEL'; do
10434 for i_time in '' '-DI_TIME'; do
10435 for i_systime in '-DI_SYSTIME' ''; do
10436 case "$flags" in
10437 '') $echo $n ".$c"
10438 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10439 if eval $compile; then
10440 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10441 shift
10442 flags="$*"
10443 echo " "
10444 $echo $n "Succeeded with $flags$c"
10445 fi
10446 ;;
10447 esac
10448 done
10449 done
10450 done
10451 done
10452 done
10453 timeincl=''
10454 echo " "
10455 case "$flags" in
10456 *SYSTIMEKERNEL*) i_systimek="$define"
10457 timeincl=`./findhdr sys/time.h`
10458 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10459 *) i_systimek="$undef";;
10460 esac
10461 case "$flags" in
10462 *I_TIME*) i_time="$define"
10463 timeincl=`./findhdr time.h`" $timeincl"
10464 echo "We'll include <time.h>." >&4;;
10465 *) i_time="$undef";;
10466 esac
10467 case "$flags" in
10468 *I_SYSTIME*) i_systime="$define"
10469 timeincl=`./findhdr sys/time.h`" $timeincl"
10470 echo "We'll include <sys/time.h>." >&4;;
10471 *) i_systime="$undef";;
10472 esac
10473 $rm -f try.c try
10474fi
10475
10476: check for fd_set items
10477$cat <<EOM
10478
10479Checking to see how well your C compiler handles fd_set and friends ...
10480EOM
5440bc8e 10481$cat >try.c <<EOCP
b4eb6b3d
JH
10482#$i_systime I_SYS_TIME
10483#$i_sysselct I_SYS_SELECT
10484#$d_socket HAS_SOCKET
10485#include <sys/types.h>
10486#ifdef HAS_SOCKET
10487#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10488#endif
10489#ifdef I_SYS_TIME
10490#include <sys/time.h>
10491#endif
10492#ifdef I_SYS_SELECT
10493#include <sys/select.h>
10494#endif
10495int main() {
10496 fd_set fds;
10497
10498#ifdef TRYBITS
10499 if(fds.fds_bits);
10500#endif
10501
10502#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10503 exit(0);
10504#else
10505 exit(1);
10506#endif
10507}
10508EOCP
5440bc8e 10509set try -DTRYBITS
b4eb6b3d
JH
10510if eval $compile; then
10511 d_fds_bits="$define"
10512 d_fd_set="$define"
10513 echo "Well, your system knows about the normal fd_set typedef..." >&4
5440bc8e 10514 if $run ./try; then
b4eb6b3d
JH
10515 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10516 d_fd_macros="$define"
10517 else
10518 $cat >&4 <<'EOM'
10519but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10520EOM
10521 d_fd_macros="$undef"
10522 fi
10523else
10524 $cat <<'EOM'
10525Hmm, your compiler has some difficulty with fd_set. Checking further...
10526EOM
5440bc8e 10527 set try
b4eb6b3d
JH
10528 if eval $compile; then
10529 d_fds_bits="$undef"
10530 d_fd_set="$define"
10531 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 10532 if $run ./try; then
b4eb6b3d
JH
10533 echo "and you have the normal fd_set macros." >&4
10534 d_fd_macros="$define"
10535 else
10536 $cat <<'EOM'
10537but not the normal fd_set macros! Gross! More work for me...
10538EOM
10539 d_fd_macros="$undef"
10540 fi
10541 else
10542 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10543 d_fd_set="$undef"
10544 d_fds_bits="$undef"
10545 d_fd_macros="$undef"
10546 fi
10547fi
5440bc8e 10548$rm -f try try.*
b4eb6b3d
JH
10549
10550: see if fgetpos exists
10551set fgetpos d_fgetpos
10552eval $inlibc
10553
758a5d79
JH
10554: see if finite exists
10555set finite d_finite
10556eval $inlibc
10557
10558: see if finitel exists
10559set finitel d_finitel
10560eval $inlibc
10561
b4eb6b3d
JH
10562: see if flock exists
10563set flock d_flock
10564eval $inlibc
10565
2ef53570
JH
10566: see if prototype for flock is available
10567echo " "
10568set d_flockproto flock $i_sysfile sys/file.h
10569eval $hasproto
10570
b4eb6b3d
JH
10571: see if fork exists
10572set fork d_fork
10573eval $inlibc
10574
758a5d79
JH
10575: see if fp_class exists
10576set fp_class d_fp_class
10577eval $inlibc
10578
b4eb6b3d
JH
10579: see if pathconf exists
10580set pathconf d_pathconf
10581eval $inlibc
10582
10583: see if fpathconf exists
10584set fpathconf d_fpathconf
10585eval $inlibc
10586
758a5d79
JH
10587: see if fpclass exists
10588set fpclass d_fpclass
10589eval $inlibc
10590
10591: see if fpclassify exists
10592set fpclassify d_fpclassify
10593eval $inlibc
10594
10595: see if fpclassl exists
10596set fpclassl d_fpclassl
10597eval $inlibc
10598
b4eb6b3d
JH
10599
10600: check for fpos64_t
10601echo " "
10602echo "Checking to see if you have fpos64_t..." >&4
10603$cat >try.c <<EOCP
10604#include <stdio.h>
10605int main() { fpos64_t x = 7; }
10606EOCP
10607set try
10608if eval $compile; then
10609 val="$define"
10610 echo "You have fpos64_t."
10611else
10612 val="$undef"
10613 echo "You do not have fpos64_t."
10614 case "$fpossize" in
10615 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10616 esac
10617fi
10618$rm -f try.* try
10619set d_fpos64_t
10620eval $setvar
10621
10622: see if frexpl exists
10623set frexpl d_frexpl
10624eval $inlibc
10625
b4eb6b3d
JH
10626: see if this is a sys/param system
10627set sys/param.h i_sysparam
10628eval $inhdr
10629
10630: see if this is a sys/mount.h system
10631set sys/mount.h i_sysmount
10632eval $inhdr
10633
b4eb6b3d
JH
10634
10635echo " "
10636echo "Checking to see if your system supports struct fs_data..." >&4
10637set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10638eval $hasstruct
10639case "$d_fs_data_s" in
10640"$define") echo "Yes, it does." ;;
10641*) echo "No, it doesn't." ;;
10642esac
10643
10644: see if fseeko exists
10645set fseeko d_fseeko
10646eval $inlibc
10647case "$longsize" in
106488) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10649esac
10650
10651: see if fsetpos exists
10652set fsetpos d_fsetpos
10653eval $inlibc
10654
10655
10656: see if fstatfs exists
10657set fstatfs d_fstatfs
10658eval $inlibc
10659
10660
10661: see if statvfs exists
10662set statvfs d_statvfs
10663eval $inlibc
10664
10665: see if fstatvfs exists
10666set fstatvfs d_fstatvfs
10667eval $inlibc
10668
10669
411ab01c
JH
10670: see if fsync exists
10671set fsync d_fsync
10672eval $inlibc
10673
b4eb6b3d
JH
10674: see if ftello exists
10675set ftello d_ftello
10676eval $inlibc
10677case "$longsize" in
106788) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10679esac
10680
10681: see if getcwd exists
10682set getcwd d_getcwd
10683eval $inlibc
10684
10685: see if getespwnam exists
10686set getespwnam d_getespwnam
10687eval $inlibc
10688
10689
10690: see if getfsstat exists
10691set getfsstat d_getfsstat
10692eval $inlibc
10693
10694: see if getgrent exists
10695set getgrent d_getgrent
10696eval $inlibc
10697
10698: see if gethostbyaddr exists
10699set gethostbyaddr d_gethbyaddr
10700eval $inlibc
10701
10702: see if gethostbyname exists
10703set gethostbyname d_gethbyname
10704eval $inlibc
10705
10706: see if gethostent exists
10707set gethostent d_gethent
10708eval $inlibc
10709
10710: see how we will look up host name
10711echo " "
10712call=''
10713if set gethostname val -f d_gethname; eval $csym; $val; then
10714 echo 'gethostname() found.' >&4
10715 d_gethname="$define"
10716 call=gethostname
10717fi
10718if set uname val -f d_uname; eval $csym; $val; then
10719 if ./xenix; then
10720 $cat <<'EOM'
10721uname() was found, but you're running xenix, and older versions of xenix
10722have a broken uname(). If you don't really know whether your xenix is old
10723enough to have a broken system call, use the default answer.
10724
10725EOM
10726 dflt=y
10727 case "$d_uname" in
10728 "$define") dflt=n;;
10729 esac
10730 rp='Is your uname() broken?'
10731 . ./myread
10732 case "$ans" in
10733 n*) d_uname="$define"; call=uname;;
10734 esac
10735 else
10736 echo 'uname() found.' >&4
10737 d_uname="$define"
10738 case "$call" in
10739 '') call=uname ;;
10740 esac
10741 fi
10742fi
10743case "$d_gethname" in
10744'') d_gethname="$undef";;
10745esac
10746case "$d_uname" in
10747'') d_uname="$undef";;
10748esac
10749case "$d_uname$d_gethname" in
10750*define*)
10751 dflt=n
10752 cat <<EOM
10753
10754Every now and then someone has a $call() that lies about the hostname
10755but can't be fixed for political or economic reasons. If you wish, I can
10756pretend $call() isn't there and maybe compute hostname at run-time
10757thanks to the '$phostname' command.
10758
10759EOM
10760 rp="Shall I ignore $call() from now on?"
10761 . ./myread
10762 case "$ans" in
10763 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10764 esac;;
10765esac
10766case "$phostname" in
10767'') aphostname='';;
10768*) case "$aphostname" in
10769 /*) ;;
10770 *) set X $phostname
10771 shift
10772 file=$1
10773 shift
10774 file=`./loc $file $file $pth`
10775 aphostname=`echo $file $*`
10776 ;;
10777 esac
10778 ;;
10779esac
10780case "$d_uname$d_gethname" in
10781*define*) ;;
10782*)
10783 case "$phostname" in
10784 '')
10785 echo "There will be no way for $package to get your hostname." >&4;;
10786 *)
10787 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10788 ;;
10789 esac;;
10790esac
10791case "$d_phostname" in
10792'') d_phostname="$undef";;
10793esac
10794
10795: see if this is a netdb.h system
10796set netdb.h i_netdb
10797eval $inhdr
10798
10799: see if prototypes for various gethostxxx netdb.h functions are available
10800echo " "
10801set d_gethostprotos gethostent $i_netdb netdb.h
10802eval $hasproto
10803
4e0554ec
JH
10804: see if getitimer exists
10805set getitimer d_getitimer
10806eval $inlibc
10807
b4eb6b3d
JH
10808: see if getlogin exists
10809set getlogin d_getlogin
10810eval $inlibc
10811
10812: see if getmnt exists
10813set getmnt d_getmnt
10814eval $inlibc
10815
10816: see if getmntent exists
10817set getmntent d_getmntent
10818eval $inlibc
10819
10820: see if getnetbyaddr exists
10821set getnetbyaddr d_getnbyaddr
10822eval $inlibc
10823
10824: see if getnetbyname exists
10825set getnetbyname d_getnbyname
10826eval $inlibc
10827
10828: see if getnetent exists
10829set getnetent d_getnent
10830eval $inlibc
10831
10832: see if prototypes for various getnetxxx netdb.h functions are available
10833echo " "
10834set d_getnetprotos getnetent $i_netdb netdb.h
10835eval $hasproto
10836
0c0643d0
JH
10837: see if getpagesize exists
10838set getpagesize d_getpagsz
10839eval $inlibc
10840
b4eb6b3d
JH
10841
10842: see if getprotobyname exists
10843set getprotobyname d_getpbyname
10844eval $inlibc
10845
10846: see if getprotobynumber exists
10847set getprotobynumber d_getpbynumber
10848eval $inlibc
10849
10850: see if getprotoent exists
10851set getprotoent d_getpent
10852eval $inlibc
10853
10854: see if getpgid exists
10855set getpgid d_getpgid
10856eval $inlibc
10857
10858: see if getpgrp2 exists
10859set getpgrp2 d_getpgrp2
10860eval $inlibc
10861
10862: see if getppid exists
10863set getppid d_getppid
10864eval $inlibc
10865
10866: see if getpriority exists
10867set getpriority d_getprior
10868eval $inlibc
10869
10870: see if prototypes for various getprotoxxx netdb.h functions are available
10871echo " "
10872set d_getprotoprotos getprotoent $i_netdb netdb.h
10873eval $hasproto
10874
10875: see if getprpwnam exists
10876set getprpwnam d_getprpwnam
10877eval $inlibc
10878
10879: see if getpwent exists
10880set getpwent d_getpwent
10881eval $inlibc
10882
10883
10884: see if getservbyname exists
10885set getservbyname d_getsbyname
10886eval $inlibc
10887
10888: see if getservbyport exists
10889set getservbyport d_getsbyport
10890eval $inlibc
10891
10892: see if getservent exists
10893set getservent d_getsent
10894eval $inlibc
10895
10896: see if prototypes for various getservxxx netdb.h functions are available
10897echo " "
10898set d_getservprotos getservent $i_netdb netdb.h
10899eval $hasproto
10900
10901: see if getspnam exists
10902set getspnam d_getspnam
10903eval $inlibc
10904
10905: see if gettimeofday or ftime exists
10906set gettimeofday d_gettimeod
10907eval $inlibc
10908case "$d_gettimeod" in
10909"$undef")
10910 set ftime d_ftime
10911 eval $inlibc
10912 ;;
10913*)
10914 val="$undef"; set d_ftime; eval $setvar
10915 ;;
10916esac
10917case "$d_gettimeod$d_ftime" in
10918"$undef$undef")
10919 echo " "
10920 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10921 ;;
10922esac
10923
10924: see if this is an grp system
10925set grp.h i_grp
10926eval $inhdr
10927
10928case "$i_grp" in
10929$define)
10930 xxx=`./findhdr grp.h`
10931 $cppstdin $cppflags $cppminus < $xxx >$$.h
10932
10933 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10934 val="$define"
10935 else
10936 val="$undef"
10937 fi
10938 set d_grpasswd
10939 eval $setvar
10940
10941 $rm -f $$.h
10942 ;;
10943*)
10944 val="$undef";
10945 set d_grpasswd; eval $setvar
10946 ;;
10947esac
10948
10949: see if hasmntopt exists
10950set hasmntopt d_hasmntopt
10951eval $inlibc
10952
10953: see if this is a netinet/in.h or sys/in.h system
10954set netinet/in.h i_niin sys/in.h i_sysin
10955eval $inhdr
10956
10957: see if arpa/inet.h has to be included
10958set arpa/inet.h i_arpainet
10959eval $inhdr
10960
10961: see if htonl --and friends-- exists
10962val=''
10963set htonl val
10964eval $inlibc
10965
10966: Maybe they are macros.
10967case "$val" in
10968$undef)
10969 $cat >htonl.c <<EOM
10970#include <stdio.h>
10971#include <sys/types.h>
10972#$i_niin I_NETINET_IN
10973#$i_sysin I_SYS_IN
10974#$i_arpainet I_ARPA_INET
10975#ifdef I_NETINET_IN
10976#include <netinet/in.h>
10977#endif
10978#ifdef I_SYS_IN
10979#include <sys/in.h>
10980#endif
10981#ifdef I_ARPA_INET
10982#include <arpa/inet.h>
10983#endif
10984#ifdef htonl
10985printf("Defined as a macro.");
10986#endif
10987EOM
10988 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10989 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10990 val="$define"
10991 echo "But it seems to be defined as a macro." >&4
10992 fi
10993 $rm -f htonl.?
10994 ;;
10995esac
10996set d_htonl
10997eval $setvar
10998
b4eb6b3d
JH
10999: index or strchr
11000echo " "
11001if set index val -f; eval $csym; $val; then
11002 if set strchr val -f d_strchr; eval $csym; $val; then
11003 if $contains strchr "$strings" >/dev/null 2>&1 ; then
11004 val="$define"
11005 vali="$undef"
11006 echo "strchr() found." >&4
11007 else
11008 val="$undef"
11009 vali="$define"
11010 echo "index() found." >&4
11011 fi
11012 else
11013 val="$undef"
11014 vali="$define"
8dfa8df9
JH
11015 echo "index() found." >&4
11016 fi
b4eb6b3d 11017else
8dfa8df9
JH
11018 if set strchr val -f d_strchr; eval $csym; $val; then
11019 val="$define"
11020 vali="$undef"
11021 echo "strchr() found." >&4
11022 else
11023 echo "No index() or strchr() found!" >&4
11024 val="$undef"
11025 vali="$undef"
11026 fi
b4eb6b3d 11027fi
8dfa8df9
JH
11028set d_strchr; eval $setvar
11029val="$vali"
11030set d_index; eval $setvar
11031
11032: check whether inet_aton exists
11033set inet_aton d_inetaton
11034eval $inlibc
b4eb6b3d
JH
11035
11036: Look for isascii
11037echo " "
11038$cat >isascii.c <<'EOCP'
11039#include <stdio.h>
11040#include <ctype.h>
11041int main() {
11042 int c = 'A';
11043 if (isascii(c))
11044 exit(0);
11045 else
11046 exit(1);
11047}
11048EOCP
11049set isascii
11050if eval $compile; then
11051 echo "isascii() found." >&4
11052 val="$define"
11053else
11054 echo "isascii() NOT found." >&4
11055 val="$undef"
11056fi
11057set d_isascii
11058eval $setvar
11059$rm -f isascii*
11060
758a5d79
JH
11061: see if isfinite exists
11062set isfinite d_isfinite
11063eval $inlibc
11064
11065: see if isinf exists
11066set isinf d_isinf
11067eval $inlibc
11068
b4eb6b3d
JH
11069: see if isnan exists
11070set isnan d_isnan
11071eval $inlibc
11072
11073: see if isnanl exists
11074set isnanl d_isnanl
11075eval $inlibc
11076
11077: see if killpg exists
11078set killpg d_killpg
11079eval $inlibc
11080
11081: see if lchown exists
11082echo " "
11083$cat > try.c <<'EOCP'
11084/* System header to define __stub macros and hopefully few prototypes,
11085 which can conflict with char lchown(); below. */
11086#include <assert.h>
11087/* Override any gcc2 internal prototype to avoid an error. */
11088/* We use char because int might match the return type of a gcc2
11089 builtin and then its argument prototype would still apply. */
11090char lchown();
11091int main() {
11092 /* The GNU C library defines this for functions which it implements
11093 to always fail with ENOSYS. Some functions are actually named
11094 something starting with __ and the normal name is an alias. */
11095#if defined (__stub_lchown) || defined (__stub___lchown)
11096choke me
11097#else
11098lchown();
11099#endif
11100; return 0; }
11101EOCP
11102set try
11103if eval $compile; then
11104 $echo "lchown() found." >&4
11105 val="$define"
11106else
11107 $echo "lchown() NOT found." >&4
11108 val="$undef"
11109fi
11110set d_lchown
11111eval $setvar
11112
11113: See if number of significant digits in a double precision number is known
11114echo " "
11115$cat >ldbl_dig.c <<EOM
11116#$i_limits I_LIMITS
11117#$i_float I_FLOAT
11118#ifdef I_LIMITS
11119#include <limits.h>
11120#endif
11121#ifdef I_FLOAT
11122#include <float.h>
11123#endif
11124#ifdef LDBL_DIG
11125printf("Contains LDBL_DIG");
11126#endif
11127EOM
11128$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
11129if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
11130 echo "LDBL_DIG found." >&4
11131 val="$define"
11132else
11133 echo "LDBL_DIG NOT found." >&4
11134 val="$undef"
11135fi
11136$rm -f ldbl_dig.?
11137set d_ldbl_dig
11138eval $setvar
11139
11140: see if link exists
11141set link d_link
11142eval $inlibc
11143
11144: see if localeconv exists
11145set localeconv d_locconv
11146eval $inlibc
11147
11148: see if lockf exists
11149set lockf d_lockf
11150eval $inlibc
11151
b4eb6b3d
JH
11152: see if prototype for lseek is available
11153echo " "
4786929f 11154set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
b4eb6b3d
JH
11155eval $hasproto
11156
11157: see if lstat exists
11158set lstat d_lstat
11159eval $inlibc
11160
11161: see if madvise exists
11162set madvise d_madvise
11163eval $inlibc
11164
11165: see if mblen exists
11166set mblen d_mblen
11167eval $inlibc
11168
11169: see if mbstowcs exists
11170set mbstowcs d_mbstowcs
11171eval $inlibc
11172
11173: see if mbtowc exists
11174set mbtowc d_mbtowc
11175eval $inlibc
11176
11177: see if memchr exists
11178set memchr d_memchr
11179eval $inlibc
11180
11181: see if memcmp exists
11182set memcmp d_memcmp
11183eval $inlibc
11184
11185: see if memcpy exists
11186set memcpy d_memcpy
11187eval $inlibc
11188
11189: see if memmove exists
11190set memmove d_memmove
11191eval $inlibc
11192
11193: see if memset exists
11194set memset d_memset
11195eval $inlibc
11196
11197: see if mkdir exists
11198set mkdir d_mkdir
11199eval $inlibc
11200
11201: see if mkdtemp exists
11202set mkdtemp d_mkdtemp
11203eval $inlibc
11204
11205: see if mkfifo exists
11206set mkfifo d_mkfifo
11207eval $inlibc
11208
11209: see if mkstemp exists
11210set mkstemp d_mkstemp
11211eval $inlibc
11212
11213: see if mkstemps exists
11214set mkstemps d_mkstemps
11215eval $inlibc
11216
11217: see if mktime exists
11218set mktime d_mktime
11219eval $inlibc
11220
11221: see if this is a sys/mman.h system
11222set sys/mman.h i_sysmman
11223eval $inhdr
11224
11225: see if mmap exists
11226set mmap d_mmap
11227eval $inlibc
11228: see what shmat returns
11229: default to something harmless
11230mmaptype='void *'
11231case "$i_sysmman$d_mmap" in
11232"$define$define")
11233 $cat >mmap.c <<'END'
11234#include <sys/mman.h>
11235void *mmap();
11236END
11237 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
11238 mmaptype='void *'
11239 else
11240 mmaptype='caddr_t'
11241 fi
11242 echo "and it returns ($mmaptype)." >&4
11243 ;;
11244esac
11245
11246
11247
b4eb6b3d
JH
11248: see if mprotect exists
11249set mprotect d_mprotect
11250eval $inlibc
11251
11252: see if msgctl exists
11253set msgctl d_msgctl
11254eval $inlibc
11255
11256: see if msgget exists
11257set msgget d_msgget
11258eval $inlibc
11259
11260: see if msgsnd exists
11261set msgsnd d_msgsnd
11262eval $inlibc
11263
11264: see if msgrcv exists
11265set msgrcv d_msgrcv
11266eval $inlibc
11267
11268: see how much of the 'msg*(2)' library is present.
11269h_msg=true
11270echo " "
11271case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
11272*"$undef"*) h_msg=false;;
11273esac
11274case "$osname" in
11275freebsd)
11276 case "`ipcs 2>&1`" in
11277 "SVID messages"*"not configured"*)
11278 echo "Your $osname does not have the msg*(2) configured." >&4
11279 h_msg=false
11280 val="$undef"
11281 set msgctl d_msgctl
11282 eval $setvar
11283 set msgget d_msgget
11284 eval $setvar
11285 set msgsnd d_msgsnd
11286 eval $setvar
11287 set msgrcv d_msgrcv
11288 eval $setvar
11289 ;;
11290 esac
11291 ;;
11292esac
11293: we could also check for sys/ipc.h ...
11294if $h_msg && $test `./findhdr sys/msg.h`; then
11295 echo "You have the full msg*(2) library." >&4
11296 val="$define"
11297else
11298 echo "You don't have the full msg*(2) library." >&4
11299 val="$undef"
11300fi
11301set d_msg
11302eval $setvar
11303
4e0554ec
JH
11304
11305echo " "
11306echo "Checking to see if your system supports struct msghdr..." >&4
11307set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11308eval $hasstruct
11309case "$d_msghdr_s" in
11310"$define") echo "Yes, it does." ;;
11311*) echo "No, it doesn't." ;;
11312esac
11313
11314
b4eb6b3d
JH
11315: see if msync exists
11316set msync d_msync
11317eval $inlibc
11318
11319: see if munmap exists
11320set munmap d_munmap
11321eval $inlibc
11322
11323: see if nice exists
11324set nice d_nice
11325eval $inlibc
11326
2765b840
JH
11327: see if this is a langinfo.h system
11328set langinfo.h i_langinfo
11329eval $inhdr
11330
11331: see if nl_langinfo exists
11332set nl_langinfo d_nl_langinfo
11333eval $inlibc
11334
b4eb6b3d
JH
11335: check for length of character
11336echo " "
11337case "$charsize" in
11338'')
11339 echo "Checking to see how big your characters are (hey, you never know)..." >&4
11340 $cat >try.c <<'EOCP'
11341#include <stdio.h>
11342int main()
11343{
11344 printf("%d\n", (int)sizeof(char));
11345 exit(0);
11346}
11347EOCP
11348 set try
11349 if eval $compile_ok; then
5440bc8e 11350 dflt=`$run ./try`
b4eb6b3d
JH
11351 else
11352 dflt='1'
11353 echo "(I can't seem to compile the test program. Guessing...)"
11354 fi
11355 ;;
11356*)
11357 dflt="$charsize"
11358 ;;
11359esac
11360rp="What is the size of a character (in bytes)?"
11361. ./myread
11362charsize="$ans"
11363$rm -f try.c try
11364
1d1be0dc
NC
11365: check for volatile keyword
11366echo " "
11367echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11368$cat >try.c <<'EOCP'
11369int main()
11370{
11371 typedef struct _goo_struct goo_struct;
11372 goo_struct * volatile goo = ((goo_struct *)0);
11373 struct _goo_struct {
11374 long long_int;
11375 int reg_int;
11376 char char_var;
11377 };
11378 typedef unsigned short foo_t;
11379 char *volatile foo;
11380 volatile int bar;
11381 volatile foo_t blech;
11382 foo = foo;
11383}
11384EOCP
11385if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11386 val="$define"
11387 echo "Yup, it does."
11388else
11389 val="$undef"
11390 echo "Nope, it doesn't."
11391fi
11392set d_volatile
11393eval $setvar
11394$rm -f try.*
11395
b4eb6b3d
JH
11396
11397echo " "
11398$echo "Choosing the C types to be used for Perl's internal types..." >&4
11399
11400case "$use64bitint:$d_quad:$quadtype" in
11401define:define:?*)
11402 ivtype="$quadtype"
11403 uvtype="$uquadtype"
11404 ivsize=8
11405 uvsize=8
11406 ;;
11407*) ivtype="long"
11408 uvtype="unsigned long"
11409 ivsize=$longsize
11410 uvsize=$longsize
11411 ;;
11412esac
11413
11414case "$uselongdouble:$d_longdbl" in
11415define:define)
11416 nvtype="long double"
11417 nvsize=$longdblsize
11418 ;;
11419*) nvtype=double
11420 nvsize=$doublesize
11421 ;;
11422esac
11423
11424$echo "(IV will be "$ivtype", $ivsize bytes)"
11425$echo "(UV will be "$uvtype", $uvsize bytes)"
11426$echo "(NV will be "$nvtype", $nvsize bytes)"
11427
11428$cat >try.c <<EOCP
11429#$i_inttypes I_INTTYPES
11430#ifdef I_INTTYPES
11431#include <inttypes.h>
11432#endif
11433#include <stdio.h>
11434int main() {
11435#ifdef INT8
11436 int8_t i = INT8_MAX;
11437 uint8_t u = UINT8_MAX;
11438 printf("int8_t\n");
11439#endif
11440#ifdef INT16
11441 int16_t i = INT16_MAX;
11442 uint16_t i = UINT16_MAX;
11443 printf("int16_t\n");
11444#endif
11445#ifdef INT32
11446 int32_t i = INT32_MAX;
11447 uint32_t u = UINT32_MAX;
11448 printf("int32_t\n");
11449#endif
11450}
11451EOCP
11452
11453case "$i8type" in
11454'') case "$charsize" in
11455 1) i8type=char
11456 u8type="unsigned char"
11457 i8size=$charsize
11458 u8size=$charsize
11459 ;;
11460 esac
11461 ;;
11462esac
11463case "$i8type" in
11464'') set try -DINT8
11465 if eval $compile; then
5440bc8e 11466 case "`$run ./try`" in
b4eb6b3d
JH
11467 int8_t) i8type=int8_t
11468 u8type=uint8_t
11469 i8size=1
11470 u8size=1
11471 ;;
11472 esac
11473 fi
11474 ;;
11475esac
11476case "$i8type" in
11477'') if $test $charsize -ge 1; then
11478 i8type=char
11479 u8type="unsigned char"
11480 i8size=$charsize
11481 u8size=$charsize
11482 fi
11483 ;;
11484esac
11485
11486case "$i16type" in
11487'') case "$shortsize" in
11488 2) i16type=short
11489 u16type="unsigned short"
11490 i16size=$shortsize
11491 u16size=$shortsize
11492 ;;
11493 esac
11494 ;;
11495esac
11496case "$i16type" in
11497'') set try -DINT16
11498 if eval $compile; then
5440bc8e 11499 case "`$run ./try`" in
b4eb6b3d
JH
11500 int16_t)
11501 i16type=int16_t
11502 u16type=uint16_t
11503 i16size=2
11504 u16size=2
11505 ;;
11506 esac
11507 fi
11508 ;;
11509esac
11510case "$i16type" in
11511'') if $test $shortsize -ge 2; then
11512 i16type=short
11513 u16type="unsigned short"
11514 i16size=$shortsize
11515 u16size=$shortsize
11516 fi
11517 ;;
11518esac
11519
11520case "$i32type" in
11521'') case "$longsize" in
11522 4) i32type=long
11523 u32type="unsigned long"
11524 i32size=$longsize
11525 u32size=$longsize
11526 ;;
11527 *) case "$intsize" in
11528 4) i32type=int
11529 u32type="unsigned int"
11530 i32size=$intsize
11531 u32size=$intsize
11532 ;;
11533 esac
11534 ;;
11535 esac
11536 ;;
11537esac
11538case "$i32type" in
11539'') set try -DINT32
11540 if eval $compile; then
5440bc8e 11541 case "`$run ./try`" in
b4eb6b3d
JH
11542 int32_t)
11543 i32type=int32_t
11544 u32type=uint32_t
11545 i32size=4
11546 u32size=4
11547 ;;
11548 esac
11549 fi
11550 ;;
11551esac
11552case "$i32type" in
11553'') if $test $intsize -ge 4; then
11554 i32type=int
11555 u32type="unsigned int"
11556 i32size=$intsize
11557 u32size=$intsize
11558 fi
11559 ;;
11560esac
11561
11562case "$i64type" in
11563'') case "$d_quad:$quadtype" in
11564 define:?*)
11565 i64type="$quadtype"
11566 u64type="$uquadtype"
11567 i64size=8
11568 u64size=8
11569 ;;
11570 esac
11571 ;;
11572esac
11573
1d1be0dc
NC
11574$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11575: volatile so that the compiler has to store it out to memory.
11576if test X"$d_volatile" = X"$define"; then
11577 volatile=volatile
11578fi
b4eb6b3d
JH
11579$cat <<EOP >try.c
11580#include <stdio.h>
1d1be0dc
NC
11581#include <sys/types.h>
11582#include <signal.h>
11583#ifdef SIGFPE
11584$volatile int bletched = 0;
11585$signal_t blech(s) int s; { bletched = 1; }
11586#endif
b4eb6b3d
JH
11587int main() {
11588 $uvtype u = 0;
1d1be0dc 11589 $nvtype d;
b4eb6b3d
JH
11590 int n = 8 * $uvsize;
11591 int i;
1d1be0dc
NC
11592#ifdef SIGFPE
11593 signal(SIGFPE, blech);
11594#endif
11595
b4eb6b3d
JH
11596 for (i = 0; i < n; i++) {
11597 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
11598 d = ($nvtype)u;
11599 if (($uvtype)d != u)
b4eb6b3d 11600 break;
1d1be0dc
NC
11601 if (d <= 0)
11602 break;
11603 d = ($nvtype)(u - 1);
11604 if (($uvtype)d != (u - 1))
11605 break;
11606#ifdef SIGFPE
11607 if (bletched) {
11608 break;
11609#endif
11610 }
b4eb6b3d 11611 }
efd1522b 11612 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
11613 exit(0);
11614}
11615EOP
1d1be0dc
NC
11616set try
11617
11618d_nv_preserves_uv="$undef"
11619if eval $compile; then
5440bc8e 11620 d_nv_preserves_uv_bits="`$run ./try`"
1d1be0dc
NC
11621fi
11622case "$d_nv_preserves_uv_bits" in
11623\-[1-9]*)
11624 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11625 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11626 d_nv_preserves_uv="$define"
b4eb6b3d 11627 ;;
1d1be0dc
NC
11628[1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11629 d_nv_preserves_uv="$undef" ;;
11630*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11631 d_nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
11632esac
11633
1d1be0dc
NC
11634$rm -f try.* try
11635
b4eb6b3d
JH
11636
11637: check for off64_t
11638echo " "
11639echo "Checking to see if you have off64_t..." >&4
11640$cat >try.c <<EOCP
11641#include <sys/types.h>
11642#include <unistd.h>
11643int main() { off64_t x = 7; }
11644EOCP
11645set try
11646if eval $compile; then
11647 val="$define"
11648 echo "You have off64_t."
11649else
11650 val="$undef"
11651 echo "You do not have off64_t."
11652 case "$lseeksize" in
11653 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11654 esac
11655fi
11656$rm -f try.* try
11657set d_off64_t
11658eval $setvar
11659
11660: see if POSIX threads are available
11661set pthread.h i_pthread
11662eval $inhdr
11663
11664
11665
11666
11667: how to create joinable pthreads
11668if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11669 echo " "
11670 echo "Checking what constant to use for creating joinable pthreads..." >&4
11671 $cat >try.c <<'EOCP'
11672#include <pthread.h>
11673int main() {
11674 int detachstate = JOINABLE;
11675}
11676EOCP
11677 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11678 if eval $compile; then
11679 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11680 val="$undef" # Yes, undef.
11681 set d_old_pthread_create_joinable
11682 eval $setvar
11683 val=""
11684 set old_pthread_create_joinable
11685 eval $setvar
11686 else
11687 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11688 if eval $compile; then
11689 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11690 val="$define"
11691 set d_old_pthread_create_joinable
11692 eval $setvar
11693 val=PTHREAD_CREATE_UNDETACHED
11694 set old_pthread_create_joinable
11695 eval $setvar
11696 else
11697 set try -DJOINABLE=__UNDETACHED
11698 if eval $compile; then
11699 echo "You seem to use __UNDETACHED." >&4
11700 val="$define"
11701 set d_old_pthread_create_joinable
11702 eval $setvar
11703 val=__UNDETACHED
11704 set old_pthread_create_joinable
11705 eval $setvar
11706 else
11707 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11708 val="$define"
11709 set d_old_pthread_create_joinable
11710 eval $setvar
11711 val=0
11712 set old_pthread_create_joinable
11713 eval $setvar
11714 fi
11715 fi
11716 fi
11717 $rm -f try try.*
11718else
11719 d_old_pthread_create_joinable="$undef"
11720 old_pthread_create_joinable=""
11721fi
11722
11723: see if pause exists
11724set pause d_pause
11725eval $inlibc
11726
11727: see if pipe exists
11728set pipe d_pipe
11729eval $inlibc
11730
11731: see if poll exists
11732set poll d_poll
11733eval $inlibc
11734
c7aff470
NIS
11735: see if readlink exists
11736set readlink d_readlink
11737eval $inlibc
11738
11739echo " "
f24dbf84 11740procselfexe=''
c7aff470 11741val="$undef"
a33c94aa
JH
11742case "$d_readlink" in
11743"$define")
c7aff470
NIS
11744 if $issymlink /proc/self/exe ; then
11745 $ls -l /proc/self/exe > reflect
51660ed5 11746 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
a33c94aa 11747 echo "You have Linux-like /proc/self/exe."
92236451 11748 procselfexe='"/proc/self/exe"'
f24dbf84 11749 val="$define"
f24dbf84
JH
11750 fi
11751 fi
11752 if $issymlink /proc/curproc/file ; then
11753 $ls -l /proc/curproc/file > reflect
11754 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
11755 echo "You have BSD-like /proc/curproc/file."
92236451 11756 procselfexe='"/proc/curproc/file"'
f24dbf84 11757 val="$define"
c7aff470 11758 fi
c7aff470 11759 fi
a33c94aa
JH
11760 ;;
11761esac
428dc699 11762$rm -f reflect
c7aff470
NIS
11763set d_procselfexe
11764eval $setvar
11765
d6483fcc
JH
11766: see if pthread_atfork exists
11767set pthread_atfork d_pthread_atfork
11768eval $inlibc
11769
b4eb6b3d
JH
11770
11771: see whether the various POSIXish _yields exist
11772$cat >try.c <<EOP
11773#include <pthread.h>
11774#include <stdio.h>
11775int main() {
11776#ifdef SCHED_YIELD
11777 sched_yield();
11778#else
11779#ifdef PTHREAD_YIELD
11780 pthread_yield();
11781#else
11782#ifdef PTHREAD_YIELD_NULL
11783 pthread_yield(NULL);
11784#endif
11785#endif
11786#endif
11787}
11788EOP
11789: see if sched_yield exists
11790set try -DSCHED_YIELD
11791if eval $compile; then
11792 val="$define"
11793 sched_yield='sched_yield()'
11794else
11795 val="$undef"
11796fi
11797case "$usethreads" in
11798$define)
11799 case "$val" in
11800 $define) echo 'sched_yield() found.' >&4 ;;
11801 *) echo 'sched_yield() NOT found.' >&4 ;;
11802 esac
11803esac
11804set d_sched_yield
11805eval $setvar
11806
11807: see if pthread_yield exists
11808set try -DPTHREAD_YIELD
11809if eval $compile; then
11810 val="$define"
11811 case "$sched_yield" in
11812 '') sched_yield='pthread_yield()' ;;
11813 esac
11814else
11815 set try -DPTHREAD_YIELD_NULL
11816 if eval $compile; then
11817 val="$define"
11818 case "$sched_yield" in
11819 '') sched_yield='pthread_yield(NULL)' ;;
11820 esac
11821 else
11822 val="$undef"
11823 fi
11824fi
11825case "$usethreads" in
11826$define)
11827 case "$val" in
11828 $define) echo 'pthread_yield() found.' >&4 ;;
11829 *) echo 'pthread_yield() NOT found.' >&4 ;;
11830 esac
11831 ;;
11832esac
11833set d_pthread_yield
11834eval $setvar
11835
11836case "$sched_yield" in
11837'') sched_yield=undef ;;
11838esac
11839
11840$rm -f try try.*
11841
11842: see if this is a pwd.h system
11843set pwd.h i_pwd
11844eval $inhdr
11845
11846case "$i_pwd" in
11847$define)
11848 xxx=`./findhdr pwd.h`
11849 $cppstdin $cppflags $cppminus < $xxx >$$.h
11850
11851 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11852 val="$define"
11853 else
11854 val="$undef"
11855 fi
11856 set d_pwquota
11857 eval $setvar
11858
11859 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11860 val="$define"
11861 else
11862 val="$undef"
11863 fi
11864 set d_pwage
11865 eval $setvar
11866
11867 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11868 val="$define"
11869 else
11870 val="$undef"
11871 fi
11872 set d_pwchange
11873 eval $setvar
11874
11875 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11876 val="$define"
11877 else
11878 val="$undef"
11879 fi
11880 set d_pwclass
11881 eval $setvar
11882
11883 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11884 val="$define"
11885 else
11886 val="$undef"
11887 fi
11888 set d_pwexpire
11889 eval $setvar
11890
11891 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11892 val="$define"
11893 else
11894 val="$undef"
11895 fi
11896 set d_pwcomment
11897 eval $setvar
11898
11899 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11900 val="$define"
11901 else
11902 val="$undef"
11903 fi
11904 set d_pwgecos
11905 eval $setvar
11906
11907 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11908 val="$define"
11909 else
11910 val="$undef"
11911 fi
11912 set d_pwpasswd
11913 eval $setvar
11914
11915 $rm -f $$.h
11916 ;;
11917*)
11918 val="$undef";
11919 set d_pwquota; eval $setvar
11920 set d_pwage; eval $setvar
11921 set d_pwchange; eval $setvar
11922 set d_pwclass; eval $setvar
11923 set d_pwexpire; eval $setvar
11924 set d_pwcomment; eval $setvar
11925 set d_pwgecos; eval $setvar
11926 set d_pwpasswd; eval $setvar
11927 ;;
11928esac
11929
11930: see if readdir and friends exist
11931set readdir d_readdir
11932eval $inlibc
11933set seekdir d_seekdir
11934eval $inlibc
11935set telldir d_telldir
11936eval $inlibc
11937set rewinddir d_rewinddir
11938eval $inlibc
11939
4e0554ec
JH
11940: see if readv exists
11941set readv d_readv
11942eval $inlibc
11943
11944: see if recvmsg exists
11945set recvmsg d_recvmsg
11946eval $inlibc
11947
b4eb6b3d
JH
11948: see if rename exists
11949set rename d_rename
11950eval $inlibc
11951
11952: see if rmdir exists
11953set rmdir d_rmdir
11954eval $inlibc
11955
11956: see if memory.h is available.
11957val=''
11958set memory.h val
11959eval $inhdr
11960
11961: See if it conflicts with string.h
11962case "$val" in
11963$define)
11964 case "$strings" in
11965 '') ;;
11966 *)
11967 $cppstdin $cppflags $cppminus < $strings > mem.h
11968 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11969 echo " "
11970 echo "We won't be including <memory.h>."
11971 val="$undef"
11972 fi
11973 $rm -f mem.h
11974 ;;
11975 esac
11976esac
11977set i_memory
11978eval $setvar
11979
11980: can bcopy handle overlapping blocks?
b6cc3bc4 11981echo " "
b4eb6b3d 11982val="$undef"
b6cc3bc4
AD
11983case "$d_memmove" in
11984"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11985*) case "$d_bcopy" in
11986 "$define")
11987 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11988 $cat >try.c <<EOCP
b4eb6b3d
JH
11989#$i_memory I_MEMORY
11990#$i_stdlib I_STDLIB
11991#$i_string I_STRING
11992#$i_unistd I_UNISTD
11993EOCP
11994 $cat >>try.c <<'EOCP'
11995#include <stdio.h>
11996#ifdef I_MEMORY
11997# include <memory.h>
11998#endif
11999#ifdef I_STDLIB
12000# include <stdlib.h>
12001#endif
12002#ifdef I_STRING
12003# include <string.h>
12004#else
12005# include <strings.h>
12006#endif
12007#ifdef I_UNISTD
12008# include <unistd.h> /* Needed for NetBSD */
12009#endif
12010int main()
12011{
12012char buf[128], abc[128];
12013char *b;
12014int len;
12015int off;
12016int align;
12017
b6cc3bc4
AD
12018/* Copy "abcde..." string to char abc[] so that gcc doesn't
12019 try to store the string in read-only memory. */
b4eb6b3d
JH
12020bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
12021
12022for (align = 7; align >= 0; align--) {
12023 for (len = 36; len; len--) {
12024 b = buf+align;
12025 bcopy(abc, b, len);
12026 for (off = 1; off <= len; off++) {
12027 bcopy(b, b+off, len);
12028 bcopy(b+off, b, len);
12029 if (bcmp(b, abc, len))
12030 exit(1);
12031 }
12032 }
12033}
12034exit(0);
12035}
12036EOCP
b6cc3bc4
AD
12037 set try
12038 if eval $compile_ok; then
12039 if ./try 2>/dev/null; then
12040 echo "Yes, it can."
12041 val="$define"
12042 else
12043 echo "It can't, sorry."
12044 fi
b4eb6b3d 12045 else
b6cc3bc4 12046 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 12047 fi
b6cc3bc4
AD
12048 ;;
12049 esac
12050 $rm -f try.* try core
b4eb6b3d
JH
12051 ;;
12052esac
b4eb6b3d
JH
12053set d_safebcpy
12054eval $setvar
12055
12056: can memcpy handle overlapping blocks?
b6cc3bc4 12057echo " "
b4eb6b3d 12058val="$undef"
b6cc3bc4
AD
12059case "$d_memmove" in
12060"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
12061*) case "$d_memcpy" in
12062 "$define")
12063 echo "Checking to see if memcpy() can do overlapping copies..." >&4
12064 $cat >try.c <<EOCP
b4eb6b3d
JH
12065#$i_memory I_MEMORY
12066#$i_stdlib I_STDLIB
12067#$i_string I_STRING
12068#$i_unistd I_UNISTD
12069EOCP
12070 $cat >>try.c <<'EOCP'
12071#include <stdio.h>
12072#ifdef I_MEMORY
12073# include <memory.h>
12074#endif
12075#ifdef I_STDLIB
12076# include <stdlib.h>
12077#endif
12078#ifdef I_STRING
12079# include <string.h>
12080#else
12081# include <strings.h>
12082#endif
12083#ifdef I_UNISTD
12084# include <unistd.h> /* Needed for NetBSD */
12085#endif
12086int main()
12087{
12088char buf[128], abc[128];
12089char *b;
12090int len;
12091int off;
12092int align;
12093
12094/* Copy "abcde..." string to char abc[] so that gcc doesn't
12095 try to store the string in read-only memory. */
12096memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
12097
12098for (align = 7; align >= 0; align--) {
12099 for (len = 36; len; len--) {
12100 b = buf+align;
12101 memcpy(b, abc, len);
12102 for (off = 1; off <= len; off++) {
12103 memcpy(b+off, b, len);
12104 memcpy(b, b+off, len);
12105 if (memcmp(b, abc, len))
12106 exit(1);
12107 }
12108 }
12109}
12110exit(0);
12111}
12112EOCP
b6cc3bc4
AD
12113 set try
12114 if eval $compile_ok; then
12115 if ./try 2>/dev/null; then
12116 echo "Yes, it can."
12117 val="$define"
12118 else
12119 echo "It can't, sorry."
12120 fi
b4eb6b3d 12121 else
b6cc3bc4 12122 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 12123 fi
b6cc3bc4
AD
12124 ;;
12125 esac
12126 $rm -f try.* try core
b4eb6b3d
JH
12127 ;;
12128esac
b4eb6b3d
JH
12129set d_safemcpy
12130eval $setvar
12131
12132: can memcmp be trusted to compare relative magnitude?
12133val="$undef"
12134case "$d_memcmp" in
12135"$define")
12136 echo " "
12137 echo "Checking if your memcmp() can compare relative magnitude..." >&4
12138 $cat >try.c <<EOCP
12139#$i_memory I_MEMORY
12140#$i_stdlib I_STDLIB
12141#$i_string I_STRING
12142#$i_unistd I_UNISTD
12143EOCP
12144 $cat >>try.c <<'EOCP'
12145#include <stdio.h>
12146#ifdef I_MEMORY
12147# include <memory.h>
12148#endif
12149#ifdef I_STDLIB
12150# include <stdlib.h>
12151#endif
12152#ifdef I_STRING
12153# include <string.h>
12154#else
12155# include <strings.h>
12156#endif
12157#ifdef I_UNISTD
12158# include <unistd.h> /* Needed for NetBSD */
12159#endif
12160int main()
12161{
12162char a = -1;
12163char b = 0;
12164if ((a < b) && memcmp(&a, &b, 1) < 0)
12165 exit(1);
12166exit(0);
12167}
12168EOCP
12169 set try
12170 if eval $compile_ok; then
5440bc8e 12171 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
12172 echo "Yes, it can."
12173 val="$define"
12174 else
12175 echo "No, it can't (it uses signed chars)."
12176 fi
12177 else
12178 echo "(I can't compile the test program, so we'll assume not...)"
12179 fi
12180 ;;
12181esac
12182$rm -f try.* try core
12183set d_sanemcmp
12184eval $setvar
12185
ef9f17be
JH
12186: see if prototype for sbrk is available
12187echo " "
12188set d_sbrkproto sbrk $i_unistd unistd.h
12189eval $hasproto
12190
b4eb6b3d
JH
12191: see if select exists
12192set select d_select
12193eval $inlibc
12194
12195: see if semctl exists
12196set semctl d_semctl
12197eval $inlibc
12198
12199: see if semget exists
12200set semget d_semget
12201eval $inlibc
12202
12203: see if semop exists
12204set semop d_semop
12205eval $inlibc
12206
12207: see how much of the 'sem*(2)' library is present.
12208h_sem=true
12209echo " "
12210case "$d_semctl$d_semget$d_semop" in
12211*"$undef"*) h_sem=false;;
12212esac
12213case "$osname" in
12214freebsd)
12215 case "`ipcs 2>&1`" in
12216 "SVID messages"*"not configured"*)
12217 echo "Your $osname does not have the sem*(2) configured." >&4
12218 h_sem=false
12219 val="$undef"
12220 set semctl d_semctl
12221 eval $setvar
12222 set semget d_semget
12223 eval $setvar
12224 set semop d_semop
12225 eval $setvar
12226 ;;
12227 esac
12228 ;;
12229esac
12230: we could also check for sys/ipc.h ...
12231if $h_sem && $test `./findhdr sys/sem.h`; then
12232 echo "You have the full sem*(2) library." >&4
12233 val="$define"
12234else
12235 echo "You don't have the full sem*(2) library." >&4
12236 val="$undef"
12237fi
12238set d_sem
12239eval $setvar
12240
12241: see whether sys/sem.h defines union semun
12242echo " "
12243$cat > try.c <<'END'
12244#include <sys/types.h>
12245#include <sys/ipc.h>
12246#include <sys/sem.h>
12247int main () { union semun semun; semun.buf = 0; }
12248END
12249set try
12250if eval $compile; then
12251 echo "You have union semun in <sys/sem.h>." >&4
12252 val="$define"
12253else
12254 echo "You do not have union semun in <sys/sem.h>." >&4
12255 val="$undef"
12256fi
12257$rm -f try try.c try.h
12258set d_union_semun
12259eval $setvar
12260
12261: see how to do semctl IPC_STAT
12262case "$d_sem" in
12263$define)
12264 : see whether semctl IPC_STAT can use union semun
12265 echo " "
12266 $cat > try.h <<END
12267#ifndef S_IRUSR
12268# ifdef S_IREAD
12269# define S_IRUSR S_IREAD
12270# define S_IWUSR S_IWRITE
12271# define S_IXUSR S_IEXEC
12272# else
12273# define S_IRUSR 0400
12274# define S_IWUSR 0200
12275# define S_IXUSR 0100
12276# endif
12277# define S_IRGRP (S_IRUSR>>3)
12278# define S_IWGRP (S_IWUSR>>3)
12279# define S_IXGRP (S_IXUSR>>3)
12280# define S_IROTH (S_IRUSR>>6)
12281# define S_IWOTH (S_IWUSR>>6)
12282# define S_IXOTH (S_IXUSR>>6)
12283#endif
12284#ifndef S_IRWXU
12285# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
12286# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
12287# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
12288#endif
12289END
12290
12291 $cat > try.c <<END
12292#include <sys/types.h>
12293#include <sys/ipc.h>
12294#include <sys/sem.h>
12295#include <sys/stat.h>
12296#include <stdio.h>
12297#include <errno.h>
12298#include "try.h"
12299#ifndef errno
12300extern int errno;
12301#endif
12302#$d_union_semun HAS_UNION_SEMUN
12303int main() {
12304 union semun
12305#ifndef HAS_UNION_SEMUN
12306 {
12307 int val;
12308 struct semid_ds *buf;
12309 unsigned short *array;
12310 }
12311#endif
12312 arg;
12313 int sem, st;
12314
12315#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12316 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12317 if (sem > -1) {
12318 struct semid_ds argbuf;
12319 arg.buf = &argbuf;
12320# ifdef IPC_STAT
12321 st = semctl(sem, 0, IPC_STAT, arg);
12322 if (st == 0)
12323 printf("semun\n");
12324 else
12325# endif /* IPC_STAT */
12326 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12327# ifdef IPC_RMID
12328 if (semctl(sem, 0, IPC_RMID, arg) != 0)
12329# endif /* IPC_RMID */
12330 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12331 } else
12332#endif /* IPC_PRIVATE && ... */
12333 printf("semget failed: errno = %d\n", errno);
12334 return 0;
12335}
12336END
12337 val="$undef"
12338 set try
12339 if eval $compile; then
5440bc8e 12340 xxx=`$run ./try`
b4eb6b3d
JH
12341 case "$xxx" in
12342 semun) val="$define" ;;
12343 esac
12344 fi
12345 $rm -f try try.c
12346 set d_semctl_semun
12347 eval $setvar
12348 case "$d_semctl_semun" in
12349 $define)
12350 echo "You can use union semun for semctl IPC_STAT." >&4
12351 also='also'
12352 ;;
12353 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
12354 also=''
12355 ;;
12356 esac
12357
12358 : see whether semctl IPC_STAT can use struct semid_ds pointer
12359 $cat > try.c <<'END'
12360#include <sys/types.h>
12361#include <sys/ipc.h>
12362#include <sys/sem.h>
12363#include <sys/stat.h>
12364#include "try.h"
12365#include <stdio.h>
12366#include <errno.h>
12367#ifndef errno
12368extern int errno;
12369#endif
12370int main() {
12371 struct semid_ds arg;
12372 int sem, st;
12373
12374#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12375 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12376 if (sem > -1) {
12377# ifdef IPC_STAT
12378 st = semctl(sem, 0, IPC_STAT, &arg);
12379 if (st == 0)
12380 printf("semid_ds\n");
12381 else
12382# endif /* IPC_STAT */
12383 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12384# ifdef IPC_RMID
12385 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12386# endif /* IPC_RMID */
12387 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12388 } else
12389#endif /* IPC_PRIVATE && ... */
12390 printf("semget failed: errno = %d\n", errno);
12391
12392 return 0;
12393}
12394END
12395 val="$undef"
12396 set try
12397 if eval $compile; then
5440bc8e 12398 xxx=`$run ./try`
b4eb6b3d
JH
12399 case "$xxx" in
12400 semid_ds) val="$define" ;;
12401 esac
12402 fi
12403 $rm -f try try.c
12404 set d_semctl_semid_ds
12405 eval $setvar
12406 case "$d_semctl_semid_ds" in
12407 $define)
12408 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12409 ;;
12410 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12411 ;;
12412 esac
12413 $rm -f try.h
12414 ;;
12415*) val="$undef"
12416
12417 # We do not have the full sem*(2) library, so assume we can not
12418 # use either.
12419
12420 set d_semctl_semun
12421 eval $setvar
12422
12423 set d_semctl_semid_ds
12424 eval $setvar
12425 ;;
12426esac
12427
4e0554ec
JH
12428: see if sendmsg exists
12429set sendmsg d_sendmsg
12430eval $inlibc
12431
b4eb6b3d
JH
12432: see if setegid exists
12433set setegid d_setegid
12434eval $inlibc
12435
12436: see if seteuid exists
12437set seteuid d_seteuid
12438eval $inlibc
12439
12440: see if setgrent exists
12441set setgrent d_setgrent
12442eval $inlibc
12443
12444: see if sethostent exists
12445set sethostent d_sethent
12446eval $inlibc
12447
4e0554ec
JH
12448: see if setitimer exists
12449set setitimer d_setitimer
12450eval $inlibc
12451
b4eb6b3d
JH
12452: see if setlinebuf exists
12453set setlinebuf d_setlinebuf
12454eval $inlibc
12455
12456: see if setlocale exists
12457set setlocale d_setlocale
12458eval $inlibc
12459
12460: see if setnetent exists
12461set setnetent d_setnent
12462eval $inlibc
12463
12464: see if setprotoent exists
12465set setprotoent d_setpent
12466eval $inlibc
12467
12468: see if setpgid exists
12469set setpgid d_setpgid
12470eval $inlibc
12471
12472: see if setpgrp2 exists
12473set setpgrp2 d_setpgrp2
12474eval $inlibc
12475
12476: see if setpriority exists
12477set setpriority d_setprior
12478eval $inlibc
12479
12480: see if setproctitle exists
12481set setproctitle d_setproctitle
12482eval $inlibc
12483
12484: see if setpwent exists
12485set setpwent d_setpwent
12486eval $inlibc
12487
12488: see if setregid exists
12489set setregid d_setregid
12490eval $inlibc
12491set setresgid d_setresgid
12492eval $inlibc
12493
12494: see if setreuid exists
12495set setreuid d_setreuid
12496eval $inlibc
12497set setresuid d_setresuid
12498eval $inlibc
12499
12500: see if setrgid exists
12501set setrgid d_setrgid
12502eval $inlibc
12503
12504: see if setruid exists
12505set setruid d_setruid
12506eval $inlibc
12507
12508: see if setservent exists
12509set setservent d_setsent
12510eval $inlibc
12511
12512: see if setsid exists
12513set setsid d_setsid
12514eval $inlibc
12515
12516: see if setvbuf exists
12517set setvbuf d_setvbuf
12518eval $inlibc
12519
12520: see if sfio.h is available
12521set sfio.h i_sfio
12522eval $inhdr
12523
12524
12525: see if sfio library is available
12526case "$i_sfio" in
12527$define)
12528 val=''
12529 set sfreserve val
12530 eval $inlibc
12531 ;;
12532*)
12533 val="$undef"
12534 ;;
12535esac
12536: Ok, but do we want to use it.
12537case "$val" in
12538$define)
12539 case "$usesfio" in
12540 true|$define|[yY]*) dflt='y';;
12541 *) dflt='n';;
12542 esac
12543 echo "$package can use the sfio library, but it is experimental."
12544 case "$useperlio" in
12545 "$undef")
12546 echo "For sfio also the PerlIO abstraction layer is needed."
12547 echo "Earlier you said you wouldn't want that."
12548 ;;
12549 esac
12550 rp="You seem to have sfio available, do you want to try using it?"
12551 . ./myread
12552 case "$ans" in
12553 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12554 useperlio="$define"
12555 val="$define"
12556 ;;
12557 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12558 val="$undef"
b4eb6b3d
JH
12559 ;;
12560 esac
12561 ;;
12562*) case "$usesfio" in
12563 true|$define|[yY]*)
12564 echo "Sorry, cannot find sfio on this machine." >&4
12565 echo "Ignoring your setting of usesfio=$usesfio." >&4
12566 val="$undef"
12567 ;;
12568 esac
12569 ;;
12570esac
12571set d_sfio
12572eval $setvar
12573case "$d_sfio" in
12574$define) usesfio='true';;
12575*) usesfio='false';;
12576esac
3659ebf1
JH
12577case "$d_sfio" in
12578$define) ;;
12579*) : Remove sfio from list of libraries to use
7483f793
JH
12580 case "$libs" in
12581 *-lsfio*)
12582 echo "Removing unneeded -lsfio from library list" >&4
12583 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12584 shift
12585 libs="$*"
12586 echo "libs = $libs" >&4
12587 ;;
12588 esac
3659ebf1
JH
12589;;
12590esac
12591
b4eb6b3d
JH
12592
12593: see if shmctl exists
12594set shmctl d_shmctl
12595eval $inlibc
12596
12597: see if shmget exists
12598set shmget d_shmget
12599eval $inlibc
12600
12601: see if shmat exists
12602set shmat d_shmat
12603eval $inlibc
12604: see what shmat returns
12605case "$d_shmat" in
12606"$define")
12607 $cat >shmat.c <<'END'
12608#include <sys/shm.h>
12609void *shmat();
12610END
12611 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12612 shmattype='void *'
12613 else
12614 shmattype='char *'
12615 fi
12616 echo "and it returns ($shmattype)." >&4
12617 : see if a prototype for shmat is available
12618 xxx=`./findhdr sys/shm.h`
12619 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12620 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12621 val="$define"
12622 else
12623 val="$undef"
12624 fi
12625 $rm -f shmat.[co]
12626 ;;
12627*)
12628 val="$undef"
12629 ;;
12630esac
12631set d_shmatprototype
12632eval $setvar
12633
12634: see if shmdt exists
12635set shmdt d_shmdt
12636eval $inlibc
12637
12638: see how much of the 'shm*(2)' library is present.
12639h_shm=true
12640echo " "
12641case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12642*"$undef"*) h_shm=false;;
12643esac
12644case "$osname" in
12645freebsd)
12646 case "`ipcs 2>&1`" in
12647 "SVID shared memory"*"not configured"*)
12648 echo "Your $osname does not have the shm*(2) configured." >&4
12649 h_shm=false
12650 val="$undef"
12651 set shmctl d_shmctl
12652 evat $setvar
12653 set shmget d_shmget
12654 evat $setvar
12655 set shmat d_shmat
12656 evat $setvar
12657 set shmdt d_shmdt
12658 evat $setvar
12659 ;;
12660 esac
12661 ;;
12662esac
12663: we could also check for sys/ipc.h ...
12664if $h_shm && $test `./findhdr sys/shm.h`; then
12665 echo "You have the full shm*(2) library." >&4
12666 val="$define"
12667else
12668 echo "You don't have the full shm*(2) library." >&4
12669 val="$undef"
12670fi
12671set d_shm
12672eval $setvar
12673
12674echo " "
12675: see if we have sigaction
12676if set sigaction val -f d_sigaction; eval $csym; $val; then
12677 echo 'sigaction() found.' >&4
12678 $cat > try.c <<'EOP'
12679#include <stdio.h>
12680#include <sys/types.h>
12681#include <signal.h>
12682int main()
12683{
12684 struct sigaction act, oact;
12685 act.sa_flags = 0;
12686 oact.sa_handler = 0;
12687 /* so that act and oact are used */
12688 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12689}
12690EOP
12691 set try
12692 if eval $compile_ok; then
12693 val="$define"
12694 else
12695 echo "But you don't seem to have a useable struct sigaction." >&4
12696 val="$undef"
12697 fi
12698else
12699 echo 'sigaction NOT found.' >&4
12700 val="$undef"
12701fi
12702set d_sigaction; eval $setvar
12703$rm -f try try$_o try.c
12704
983dbef6
JH
12705: see if sigprocmask exists
12706set sigprocmask d_sigprocmask
12707eval $inlibc
12708
b4eb6b3d
JH
12709: see if sigsetjmp exists
12710echo " "
12711case "$d_sigsetjmp" in
12712'')
12713 $cat >try.c <<'EOP'
12714#include <setjmp.h>
12715sigjmp_buf env;
12716int set = 1;
12717int main()
12718{
12719 if (sigsetjmp(env,1))
12720 exit(set);
12721 set = 0;
12722 siglongjmp(env, 1);
12723 exit(1);
12724}
12725EOP
12726 set try
12727 if eval $compile; then
5440bc8e 12728 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
12729 echo "POSIX sigsetjmp found." >&4
12730 val="$define"
12731 else
12732 $cat >&4 <<EOM
12733Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12734I'll ignore them.
12735EOM
12736 val="$undef"
12737 fi
12738 else
12739 echo "sigsetjmp not found." >&4
12740 val="$undef"
12741 fi
12742 ;;
12743*) val="$d_sigsetjmp"
12744 case "$d_sigsetjmp" in
12745 $define) echo "POSIX sigsetjmp found." >&4;;
12746 $undef) echo "sigsetjmp not found." >&4;;
12747 esac
12748 ;;
12749esac
12750set d_sigsetjmp
12751eval $setvar
12752$rm -f try.c try
12753
49a78c82
JH
12754: see if sockatmark exists
12755set sockatmark d_sockatmark
12756eval $inlibc
12757
2ef53570
JH
12758: see if prototype for sockatmark is available
12759echo " "
12760set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12761eval $hasproto
12762
b4eb6b3d
JH
12763: see if socks5_init exists
12764set socks5_init d_socks5_init
12765eval $inlibc
12766
eef837ea
JH
12767: see if prototype for setresgid is available
12768echo " "
12769set d_sresgproto setresgid $i_unistd unistd.h
12770eval $hasproto
12771
640374d0
JH
12772: see if prototype for setresuid is available
12773echo " "
12774set d_sresuproto setresuid $i_unistd unistd.h
12775eval $hasproto
12776
b4eb6b3d
JH
12777: see if sys/stat.h is available
12778set sys/stat.h i_sysstat
12779eval $inhdr
12780
12781
12782: see if stat knows about block sizes
12783echo " "
12784echo "Checking to see if your struct stat has st_blocks field..." >&4
12785set d_statblks stat st_blocks $i_sysstat sys/stat.h
12786eval $hasfield
12787
12788
12789: see if this is a sys/vfs.h system
12790set sys/vfs.h i_sysvfs
12791eval $inhdr
12792
12793
12794: see if this is a sys/statfs.h system
12795set sys/statfs.h i_sysstatfs
12796eval $inhdr
12797
12798
12799echo " "
12800echo "Checking to see if your system supports struct statfs..." >&4
12801set 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
12802eval $hasstruct
12803case "$d_statfs_s" in
12804"$define") echo "Yes, it does." ;;
12805*) echo "No, it doesn't." ;;
12806esac
12807
12808
12809
12810: see if struct statfs knows about f_flags
12811case "$d_statfs_s" in
12812define)
12813 echo " "
12814 echo "Checking to see if your struct statfs has f_flags field..." >&4
12815 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
12816 eval $hasfield
12817 ;;
12818*) val="$undef"
12819 set d_statfs_f_flags
12820 eval $setvar
12821 ;;
12822esac
12823case "$d_statfs_f_flags" in
12824"$define") echo "Yes, it does." ;;
12825*) echo "No, it doesn't." ;;
12826esac
12827
12828: see if _ptr and _cnt from stdio act std
12829echo " "
80f36755
NC
12830
12831if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12832 echo "(Looks like you have stdio.h from BSD.)"
12833 case "$stdio_ptr" in
12834 '') stdio_ptr='((fp)->_p)'
12835 ptr_lval=$define
12836 ;;
12837 *) ptr_lval=$d_stdio_ptr_lval;;
12838 esac
12839 case "$stdio_cnt" in
12840 '') stdio_cnt='((fp)->_r)'
12841 cnt_lval=$define
12842 ;;
12843 *) cnt_lval=$d_stdio_cnt_lval;;
12844 esac
12845 case "$stdio_base" in
12846 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12847 esac
12848 case "$stdio_bufsiz" in
12849 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12850 esac
12851elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
b4eb6b3d
JH
12852 echo "(Looks like you have stdio.h from Linux.)"
12853 case "$stdio_ptr" in
12854 '') stdio_ptr='((fp)->_IO_read_ptr)'
12855 ptr_lval=$define
12856 ;;
12857 *) ptr_lval=$d_stdio_ptr_lval;;
12858 esac
12859 case "$stdio_cnt" in
12860 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12861 cnt_lval=$undef
12862 ;;
12863 *) cnt_lval=$d_stdio_cnt_lval;;
12864 esac
12865 case "$stdio_base" in
12866 '') stdio_base='((fp)->_IO_read_base)';;
12867 esac
12868 case "$stdio_bufsiz" in
12869 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12870 esac
12871else
12872 case "$stdio_ptr" in
12873 '') stdio_ptr='((fp)->_ptr)'
12874 ptr_lval=$define
12875 ;;
12876 *) ptr_lval=$d_stdio_ptr_lval;;
12877 esac
12878 case "$stdio_cnt" in
12879 '') stdio_cnt='((fp)->_cnt)'
12880 cnt_lval=$define
12881 ;;
12882 *) cnt_lval=$d_stdio_cnt_lval;;
12883 esac
12884 case "$stdio_base" in
12885 '') stdio_base='((fp)->_base)';;
12886 esac
12887 case "$stdio_bufsiz" in
12888 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12889 esac
12890fi
80f36755 12891
b4eb6b3d
JH
12892: test whether _ptr and _cnt really work
12893echo "Checking how std your stdio is..." >&4
12894$cat >try.c <<EOP
12895#include <stdio.h>
12896#define FILE_ptr(fp) $stdio_ptr
12897#define FILE_cnt(fp) $stdio_cnt
12898int main() {
12899 FILE *fp = fopen("try.c", "r");
12900 char c = getc(fp);
12901 if (
12902 18 <= FILE_cnt(fp) &&
12903 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12904 )
12905 exit(0);
12906 exit(1);
12907}
12908EOP
12909val="$undef"
12910set try
5440bc8e
JH
12911if eval $compile && $to try.c; then
12912 if $run ./try; then
b4eb6b3d
JH
12913 echo "Your stdio acts pretty std."
12914 val="$define"
12915 else
12916 echo "Your stdio isn't very std."
12917 fi
12918else
12919 echo "Your stdio doesn't appear very std."
12920fi
12921$rm -f try.c try
12922set d_stdstdio
12923eval $setvar
12924
12925: Can _ptr be used as an lvalue?
12926case "$d_stdstdio$ptr_lval" in
12927$define$define) val=$define ;;
12928*) val=$undef ;;
12929esac
12930set d_stdio_ptr_lval
12931eval $setvar
12932
12933: Can _cnt be used as an lvalue?
12934case "$d_stdstdio$cnt_lval" in
12935$define$define) val=$define ;;
12936*) val=$undef ;;
12937esac
12938set d_stdio_cnt_lval
12939eval $setvar
12940
a7ffa9b9
NC
12941
12942: test whether setting _ptr sets _cnt as a side effect
12943d_stdio_ptr_lval_sets_cnt="$undef"
12944d_stdio_ptr_lval_nochange_cnt="$undef"
12945case "$d_stdio_ptr_lval$d_stdstdio" in
12946$define$define)
12947 echo "Checking to see what happens if we set the stdio ptr..." >&4
12948$cat >try.c <<EOP
12949#include <stdio.h>
12950/* Can we scream? */
12951/* Eat dust sed :-) */
c1d9e6fa 12952/* In the buffer space, no one can hear you scream. */
0bbfc344
JH
12953#define FILE_ptr(fp) $stdio_ptr
12954#define FILE_cnt(fp) $stdio_cnt
c1d9e6fa 12955#include <sys/types.h>
a7ffa9b9
NC
12956int main() {
12957 FILE *fp = fopen("try.c", "r");
c1d9e6fa 12958 int c;
a7ffa9b9
NC
12959 char *ptr;
12960 size_t cnt;
c1d9e6fa
JH
12961 if (!fp) {
12962 puts("Fail even to read");
12963 exit(1);
12964 }
12965 c = getc(fp); /* Read away the first # */
12966 if (c == EOF) {
12967 puts("Fail even to read");
12968 exit(1);
12969 }
a7ffa9b9
NC
12970 if (!(
12971 18 <= FILE_cnt(fp) &&
12972 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12973 )) {
12974 puts("Fail even to read");
12975 exit (1);
12976 }
c1d9e6fa
JH
12977 ptr = (char*) FILE_ptr(fp);
12978 cnt = (size_t)FILE_cnt(fp);
a7ffa9b9 12979
c1d9e6fa 12980 FILE_ptr(fp) += 42;
a7ffa9b9 12981
c1d9e6fa 12982 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
a7ffa9b9
NC
12983 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12984 exit (1);
12985 }
12986 if (FILE_cnt(fp) <= 20) {
12987 printf ("Fail (<20 chars to test)");
12988 exit (1);
12989 }
12990 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12991 puts("Fail compare");
12992 exit (1);
12993 }
12994 if (cnt == FILE_cnt(fp)) {
12995 puts("Pass_unchanged");
12996 exit (0);
12997 }
12998 if (FILE_cnt(fp) == (cnt - 42)) {
12999 puts("Pass_changed");
13000 exit (0);
13001 }
13002 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
13003 return 1;
13004
13005}
13006EOP
13007 set try
5440bc8e
JH
13008 if eval $compile && $to try.c; then
13009 case `$run ./try` in
a7ffa9b9 13010 Pass_changed)
2e32dcfe 13011 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
a7ffa9b9
NC
13012 d_stdio_ptr_lval_sets_cnt="$define" ;;
13013 Pass_unchanged)
13014 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
13015 d_stdio_ptr_lval_nochange_cnt="$define" ;;
13016 Fail*)
13017 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
13018 *)
13019 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
13020 esac
13021 else
13022 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
13023 fi
13024 $rm -f try.c try
13025 ;;
13026esac
13027
b4eb6b3d
JH
13028: see if _base is also standard
13029val="$undef"
13030case "$d_stdstdio" in
13031$define)
13032 $cat >try.c <<EOP
13033#include <stdio.h>
13034#define FILE_base(fp) $stdio_base
13035#define FILE_bufsiz(fp) $stdio_bufsiz
13036int main() {
13037 FILE *fp = fopen("try.c", "r");
13038 char c = getc(fp);
13039 if (
13040 19 <= FILE_bufsiz(fp) &&
13041 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
13042 )
13043 exit(0);
13044 exit(1);
13045}
13046EOP
13047 set try
5440bc8e
JH
13048 if eval $compile && $to try.c; then
13049 if $run ./try; then
b4eb6b3d
JH
13050 echo "And its _base field acts std."
13051 val="$define"
13052 else
13053 echo "But its _base field isn't std."
13054 fi
13055 else
13056 echo "However, it seems to be lacking the _base field."
13057 fi
13058 $rm -f try.c try
13059 ;;
13060esac
13061set d_stdiobase
13062eval $setvar
13063
13064$cat >&4 <<EOM
13065Checking how to access stdio streams by file descriptor number...
13066EOM
13067case "$stdio_stream_array" in
13068'') $cat >try.c <<EOCP
13069#include <stdio.h>
13070int main() {
13071 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
13072 printf("yes\n");
13073}
13074EOCP
13075 for s in _iob __iob __sF
13076 do
13077 set try -DSTDIO_STREAM_ARRAY=$s
13078 if eval $compile; then
5440bc8e 13079 case "`$run ./try`" in
b4eb6b3d
JH
13080 yes) stdio_stream_array=$s; break ;;
13081 esac
13082 fi
13083 done
13084 $rm -f try.* try$exe_ext
13085esac
13086case "$stdio_stream_array" in
13087'') $cat >&4 <<EOM
13088I can't figure out how to access stdio streams by file descriptor number.
13089EOM
13090 d_stdio_stream_array="$undef"
13091 ;;
13092*) $cat >&4 <<EOM
13093You can access stdio streams by file descriptor number by the $stdio_stream_array array.
13094EOM
13095 d_stdio_stream_array="$define"
13096 ;;
13097esac
13098
13099: see if strcoll exists
13100set strcoll d_strcoll
13101eval $inlibc
13102
13103: check for structure copying
13104echo " "
13105echo "Checking to see if your C compiler can copy structs..." >&4
13106$cat >try.c <<'EOCP'
13107int main()
13108{
13109 struct blurfl {
13110 int dyick;
13111 } foo, bar;
13112
13113 foo = bar;
13114}
13115EOCP
13116if $cc -c try.c >/dev/null 2>&1 ; then
13117 val="$define"
13118 echo "Yup, it can."
13119else
13120 val="$undef"
13121 echo "Nope, it can't."
13122fi
13123set d_strctcpy
13124eval $setvar
13125$rm -f try.*
13126
13127: see if strerror and/or sys_errlist[] exist
13128echo " "
13129if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
13130 if set strerror val -f d_strerror; eval $csym; $val; then
13131 echo 'strerror() found.' >&4
13132 d_strerror="$define"
13133 d_strerrm='strerror(e)'
13134 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
13135 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
13136 d_syserrlst="$define"
13137 else
13138 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
13139 d_syserrlst="$undef"
13140 fi
13141 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
13142 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
13143 echo 'strerror() found in string header.' >&4
13144 d_strerror="$define"
13145 d_strerrm='strerror(e)'
13146 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
13147 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
13148 d_syserrlst="$define"
13149 else
13150 echo "(You don't appear to have any sys_errlist[], how can this be?)"
13151 d_syserrlst="$undef"
13152 fi
13153 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
13154 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
13155 d_strerror="$undef"
13156 d_syserrlst="$define"
13157 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
13158 else
13159 echo 'strerror() and sys_errlist[] NOT found.' >&4
13160 d_strerror="$undef"
13161 d_syserrlst="$undef"
13162 d_strerrm='"unknown"'
13163 fi
13164fi
13165
b3c85772
JH
13166: see if strftime exists
13167set strftime d_strftime
13168eval $inlibc
13169
b4eb6b3d
JH
13170: see if strtod exists
13171set strtod d_strtod
13172eval $inlibc
13173
13174: see if strtol exists
13175set strtol d_strtol
13176eval $inlibc
13177
13178: see if strtold exists
13179set strtold d_strtold
13180eval $inlibc
13181
13182: see if strtoll exists
13183set strtoll d_strtoll
13184eval $inlibc
13185
13186case "$d_longlong-$d_strtoll" in
13187"$define-$define")
13188 $cat <<EOM
13189Checking whether your strtoll() works okay...
13190EOM
13191 $cat >try.c <<'EOCP'
13192#include <errno.h>
13193#ifdef __hpux
13194#define strtoll __strtoll
13195#endif
e75931a7
YST
13196#ifdef __EMX__
13197#define strtoll _strtoll
13198#endif
b4eb6b3d
JH
13199#include <stdio.h>
13200extern long long int strtoll(char *s, char **, int);
13201static int bad = 0;
13202int check(char *s, long long ell, int een) {
13203 long long gll;
13204 errno = 0;
13205 gll = strtoll(s, 0, 10);
13206 if (!((gll == ell) && (errno == een)))
13207 bad++;
13208}
13209int main() {
13210 check(" 1", 1LL, 0);
13211 check(" 0", 0LL, 0);
13212 check("-1", -1LL, 0);
13213 check("-9223372036854775808", -9223372036854775808LL, 0);
13214 check("-9223372036854775808", -9223372036854775808LL, 0);
13215 check(" 9223372036854775807", 9223372036854775807LL, 0);
13216 check("-9223372036854775808", -9223372036854775808LL, 0);
13217 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
13218 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
13219 if (!bad)
13220 printf("ok\n");
13221}
13222EOCP
13223 set try
13224 if eval $compile; then
5440bc8e 13225 yyy=`$run ./try`
e75931a7 13226 case "$yyy" in
b4eb6b3d
JH
13227 ok) echo "Your strtoll() seems to be working okay." ;;
13228 *) cat <<EOM >&4
13229Your strtoll() doesn't seem to be working okay.
13230EOM
13231 d_strtoll="$undef"
13232 ;;
69eadf66 13233 esac
e75931a7
YST
13234 else
13235 echo "(I can't seem to compile the test program--assuming it doesn't)"
13236 d_strtoll="$undef"
b4eb6b3d
JH
13237 fi
13238 ;;
13239esac
13240
28e5dec8
JH
13241: see if strtoq exists
13242set strtoq d_strtoq
13243eval $inlibc
13244
b4eb6b3d
JH
13245: see if strtoul exists
13246set strtoul d_strtoul
13247eval $inlibc
13248
d0e6d399
NC
13249case "$d_strtoul" in
13250"$define")
13251 $cat <<EOM
13252Checking whether your strtoul() works okay...
13253EOM
13254 $cat >try.c <<'EOCP'
13255#include <errno.h>
13256#include <stdio.h>
13257extern unsigned long int strtoul(char *s, char **, int);
13258static int bad = 0;
13259void check(char *s, unsigned long eul, int een) {
13260 unsigned long gul;
13261 errno = 0;
13262 gul = strtoul(s, 0, 10);
13263 if (!((gul == eul) && (errno == een)))
13264 bad++;
13265}
13266int main() {
13267 check(" 1", 1L, 0);
13268 check(" 0", 0L, 0);
13269EOCP
13270 case "$longsize" in
13271 8)
13272 $cat >>try.c <<'EOCP'
09c0d2c4
JH
13273 check("18446744073709551615", 18446744073709551615UL, 0);
13274 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 13275#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 13276 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
13277 check("-18446744073709551614", 2, 0);
13278 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
13279 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
13280 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 13281#endif
d0e6d399
NC
13282EOCP
13283 ;;
13284 4)
13285 $cat >>try.c <<'EOCP'
13286 check("4294967295", 4294967295UL, 0);
13287 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 13288#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
13289 check("-1", 4294967295UL, 0);
13290 check("-4294967294", 2, 0);
13291 check("-4294967295", 1, 0);
13292 check("-4294967296", 4294967295UL, ERANGE);
13293 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 13294#endif
d0e6d399
NC
13295EOCP
13296 ;;
13297 *)
13298: Should we write these tests to be more portable by sprintf-ing
13299: ~0 and then manipulating that char string as input for strtol?
13300 ;;
13301 esac
13302 $cat >>try.c <<'EOCP'
13303 if (!bad)
13304 printf("ok\n");
13305 return 0;
13306}
13307EOCP
13308 set try
13309 if eval $compile; then
5440bc8e 13310 case "`$run ./try`" in
d0e6d399
NC
13311 ok) echo "Your strtoul() seems to be working okay." ;;
13312 *) cat <<EOM >&4
13313Your strtoul() doesn't seem to be working okay.
13314EOM
13315 d_strtoul="$undef"
13316 ;;
13317 esac
13318 fi
13319 ;;
13320esac
13321
b4eb6b3d
JH
13322: see if strtoull exists
13323set strtoull d_strtoull
13324eval $inlibc
13325
13326case "$d_longlong-$d_strtoull" in
13327"$define-$define")
13328 $cat <<EOM
13329Checking whether your strtoull() works okay...
13330EOM
13331 $cat >try.c <<'EOCP'
13332#include <errno.h>
13333#ifdef __hpux
13334#define strtoull __strtoull
13335#endif
13336#include <stdio.h>
13337extern unsigned long long int strtoull(char *s, char **, int);
13338static int bad = 0;
13339int check(char *s, long long eull, int een) {
13340 long long gull;
13341 errno = 0;
13342 gull = strtoull(s, 0, 10);
13343 if (!((gull == eull) && (errno == een)))
13344 bad++;
13345}
13346int main() {
d0e6d399
NC
13347 check(" 1", 1LL, 0);
13348 check(" 0", 0LL, 0);
13349 check("18446744073709551615", 18446744073709551615ULL, 0);
13350 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 13351#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
13352 check("-1", 18446744073709551615ULL, 0);
13353 check("-18446744073709551614", 2LL, 0);
13354 check("-18446744073709551615", 1LL, 0);
13355 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13356 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 13357#endif
b4eb6b3d
JH
13358 if (!bad)
13359 printf("ok\n");
13360}
13361EOCP
13362 set try
13363 if eval $compile; then
5440bc8e 13364 case "`$run ./try`" in
b4eb6b3d
JH
13365 ok) echo "Your strtoull() seems to be working okay." ;;
13366 *) cat <<EOM >&4
13367Your strtoull() doesn't seem to be working okay.
13368EOM
13369 d_strtoull="$undef"
13370 ;;
13371 esac
13372 fi
13373 ;;
13374esac
13375
13376: see if strtouq exists
13377set strtouq d_strtouq
13378eval $inlibc
13379
d0e6d399
NC
13380case "$d_strtouq" in
13381"$define")
13382 $cat <<EOM
13383Checking whether your strtouq() works okay...
13384EOM
13385 $cat >try.c <<'EOCP'
13386#include <errno.h>
13387#include <stdio.h>
13388extern unsigned long long int strtouq(char *s, char **, int);
13389static int bad = 0;
13390void check(char *s, unsigned long long eull, int een) {
13391 unsigned long long gull;
13392 errno = 0;
13393 gull = strtouq(s, 0, 10);
13394 if (!((gull == eull) && (errno == een)))
13395 bad++;
13396}
13397int main() {
13398 check(" 1", 1LL, 0);
13399 check(" 0", 0LL, 0);
13400 check("18446744073709551615", 18446744073709551615ULL, 0);
13401 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 13402#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
13403 check("-1", 18446744073709551615ULL, 0);
13404 check("-18446744073709551614", 2LL, 0);
13405 check("-18446744073709551615", 1LL, 0);
13406 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13407 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 13408#endif
d0e6d399
NC
13409 if (!bad)
13410 printf("ok\n");
13411 return 0;
13412}
13413EOCP
13414 set try
13415 if eval $compile; then
5440bc8e 13416 case "`$run ./try`" in
d0e6d399
NC
13417 ok) echo "Your strtouq() seems to be working okay." ;;
13418 *) cat <<EOM >&4
13419Your strtouq() doesn't seem to be working okay.
13420EOM
13421 d_strtouq="$undef"
13422 ;;
13423 esac
13424 fi
13425 ;;
13426esac
13427
b4eb6b3d
JH
13428: see if strxfrm exists
13429set strxfrm d_strxfrm
13430eval $inlibc
13431
13432: see if symlink exists
13433set symlink d_symlink
13434eval $inlibc
13435
13436: see if syscall exists
13437set syscall d_syscall
13438eval $inlibc
13439
2ef53570
JH
13440: see if prototype for syscall is available
13441echo " "
13442set d_syscallproto syscall $i_unistd unistd.h
13443eval $hasproto
13444
b4eb6b3d
JH
13445: see if sysconf exists
13446set sysconf d_sysconf
13447eval $inlibc
13448
13449: see if system exists
13450set system d_system
13451eval $inlibc
13452
13453: see if tcgetpgrp exists
13454set tcgetpgrp d_tcgetpgrp
13455eval $inlibc
13456
13457: see if tcsetpgrp exists
13458set tcsetpgrp d_tcsetpgrp
13459eval $inlibc
13460
13461: see if prototype for telldir is available
13462echo " "
13463set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13464eval $hasproto
13465
13466: see if this is a sys/times.h system
13467set sys/times.h i_systimes
13468eval $inhdr
13469
13470: see if times exists
13471echo " "
13472if set times val -f d_times; eval $csym; $val; then
13473 echo 'times() found.' >&4
13474 d_times="$define"
13475 inc=''
13476 case "$i_systimes" in
13477 "$define") inc='sys/times.h';;
13478 esac
13479 rp="What is the type returned by times() on this system?"
13480 set clock_t clocktype long stdio.h sys/types.h $inc
13481 eval $typedef_ask
13482else
13483 echo 'times() NOT found, hope that will do.' >&4
13484 d_times="$undef"
13485 clocktype='int'
13486fi
13487
13488: see if truncate exists
13489set truncate d_truncate
13490eval $inlibc
13491
13492: see if tzname[] exists
13493echo " "
13494if set tzname val -a d_tzname; eval $csym; $val; then
13495 val="$define"
13496 echo 'tzname[] found.' >&4
13497else
13498 val="$undef"
13499 echo 'tzname[] NOT found.' >&4
13500fi
13501set d_tzname
13502eval $setvar
13503
4e0554ec
JH
13504case "$osname" in
13505next|rhapsody|darwin) multiarch="$define" ;;
13506esac
13507case "$multiarch" in
13508''|[nN]*) multiarch="$undef" ;;
13509esac
13510
13511: check for ordering of bytes in a long
13512echo " "
5440bc8e 13513case "$usecrosscompile$multiarch" in
4e0554ec
JH
13514*$define*)
13515 $cat <<EOM
13516You seem to be either cross-compiling or doing a multiarchitecture build,
13517skipping the byteorder check.
13518
13519EOM
5440bc8e 13520 byteorder='ffff'
4e0554ec
JH
13521 ;;
13522*)
13523 case "$byteorder" in
13524 '')
13525 $cat <<'EOM'
13526In the following, larger digits indicate more significance. A big-endian
13527machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13528little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13529machines may have weird orders like 3412. A Cray will report 87654321,
13530an Alpha will report 12345678. If the test program works the default is
13531probably right.
13532I'm now running the test program...
13533EOM
13534 $cat >try.c <<'EOCP'
13535#include <stdio.h>
13536int main()
13537{
13538 int i;
13539 union {
13540 unsigned long l;
13541 char c[sizeof(long)];
13542 } u;
13543
13544 if (sizeof(long) > 4)
13545 u.l = (0x08070605L << 32) | 0x04030201L;
13546 else
13547 u.l = 0x04030201L;
13548 for (i = 0; i < sizeof(long); i++)
13549 printf("%c", u.c[i]+'0');
13550 printf("\n");
13551 exit(0);
13552}
13553EOCP
13554 xxx_prompt=y
13555 set try
13556 if eval $compile && ./try > /dev/null; then
5440bc8e 13557 dflt=`$run ./try`
4e0554ec
JH
13558 case "$dflt" in
13559 [1-4][1-4][1-4][1-4]|12345678|87654321)
13560 echo "(The test program ran ok.)"
13561 echo "byteorder=$dflt"
13562 xxx_prompt=n
13563 ;;
13564 ????|????????) echo "(The test program ran ok.)" ;;
13565 *) echo "(The test program didn't run right for some reason.)" ;;
13566 esac
13567 else
13568 dflt='4321'
13569 cat <<'EOM'
13570(I can't seem to compile the test program. Guessing big-endian...)
13571EOM
13572 fi
13573 case "$xxx_prompt" in
13574 y)
13575 rp="What is the order of bytes in a long?"
13576 . ./myread
13577 byteorder="$ans"
13578 ;;
13579 *) byteorder=$dflt
13580 ;;
13581 esac
13582 ;;
13583 esac
13584 $rm -f try.c try
13585 ;;
13586esac
13587
13588
13589$cat <<EOM
13590
13591Checking to see whether you can access character data unalignedly...
13592EOM
dc7b0a4f
JH
13593case "$d_u32align" in
13594'') $cat >try.c <<EOCP
4e0554ec
JH
13595#include <stdio.h>
13596#define U32 $u32type
d308175a
JH
13597#define BYTEORDER 0x$byteorder
13598#define U8 $u8type
9958dc3c
JH
13599#include <signal.h>
13600#ifdef SIGBUS
13601$signal_t bletch(s) int s; { exit(4); }
13602#endif
4e0554ec
JH
13603int main() {
13604#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
8906a23e 13605 U8 buf[8];
4e0554ec
JH
13606 U32 *up;
13607 int i;
13608
13609 if (sizeof(U32) != 4) {
13610 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13611 exit(1);
13612 }
13613
13614 fflush(stdout);
13615
9958dc3c
JH
13616#ifdef SIGBUS
13617 signal(SIGBUS, bletch);
13618#endif
13619
8906a23e
JH
13620 buf[0] = 0;
13621 buf[1] = 0;
13622 buf[2] = 0;
13623 buf[3] = 1;
13624 buf[5] = 0;
13625 buf[6] = 0;
13626 buf[7] = 0;
13627 buf[8] = 1;
13628
4e0554ec
JH
13629 for (i = 0; i < 4; i++) {
13630 up = (U32*)(buf + i);
13631 if (! ((*up == 1 << (8*i)) || /* big-endian */
13632 (*up == 1 << (8*(3-i))) /* little-endian */
13633 )
13634 )
13635 {
13636 printf("read failed (%x)\n", *up);
13637 exit(2);
13638 }
13639 }
13640
13641 /* write test */
13642 for (i = 0; i < 4; i++) {
13643 up = (U32*)(buf + i);
13644 *up = 0xBeef;
13645 if (*up != 0xBeef) {
13646 printf("write failed (%x)\n", *up);
13647 exit(3);
13648 }
13649 }
13650
13651 exit(0);
13652#else
13653 printf("1\n");
13654 exit(1);
13655#endif
13656 return 0;
13657}
13658EOCP
13659set try
13660if eval $compile_ok; then
d308175a 13661 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
5440bc8e 13662 $run ./try 2>&1 >/dev/null
4e0554ec
JH
13663 case "$?" in
13664 0) cat >&4 <<EOM
13665You can access character data pretty unalignedly.
13666EOM
13667 d_u32align="$undef"
13668 ;;
13669 *) cat >&4 <<EOM
13670It seems that you must access character data in an aligned manner.
13671EOM
13672 d_u32align="$define"
13673 ;;
13674 esac
4e0554ec
JH
13675else
13676 rp='Can you access character data at unaligned addresses?'
13677 dflt='n'
13678 . ./myread
13679 case "$ans" in
13680 [yY]*) d_u32align="$undef" ;;
13681 *) d_u32align="$define" ;;
13682 esac
13683fi
e36b5403 13684$rm -f core core.try.* try.core
dc7b0a4f
JH
13685;;
13686esac
4e0554ec
JH
13687
13688: see if ualarm exists
13689set ualarm d_ualarm
13690eval $inlibc
13691
b4eb6b3d
JH
13692: see if umask exists
13693set umask d_umask
13694eval $inlibc
13695
758a5d79
JH
13696: see if unordered exists
13697set unordered d_unordered
13698eval $inlibc
13699
4e0554ec
JH
13700: see if usleep exists
13701set usleep d_usleep
13702eval $inlibc
13703
2ef53570
JH
13704: see if prototype for usleep is available
13705echo " "
13706set d_usleepproto usleep $i_unistd unistd.h
13707eval $hasproto
13708
b4eb6b3d
JH
13709: see if ustat exists
13710set ustat d_ustat
13711eval $inlibc
13712
13713: backward compatibility for d_hvfork
13714if test X$d_hvfork != X; then
13715 d_vfork="$d_hvfork"
13716 d_hvfork=''
13717fi
13718: see if there is a vfork
13719val=''
13720set vfork val
13721eval $inlibc
13722
13723: Ok, but do we want to use it. vfork is reportedly unreliable in
13724: perl on Solaris 2.x, and probably elsewhere.
13725case "$val" in
13726$define)
13727 echo " "
13728 case "$usevfork" in
13729 false) dflt='n';;
13730 *) dflt='y';;
13731 esac
13732 cat <<'EOM'
13733
13734Perl can only use a vfork() that doesn't suffer from strict
13735restrictions on calling functions or modifying global data in
13736the child. For example, glibc-2.1 contains such a vfork()
13737that is unsuitable. If your system provides a proper fork()
13738call, chances are that you do NOT want perl to use vfork().
13739
13740EOM
13741 rp="Do you still want to use vfork()?"
13742 . ./myread
13743 case "$ans" in
13744 y|Y) ;;
13745 *)
13746 echo "Ok, we won't use vfork()."
13747 val="$undef"
13748 ;;
13749 esac
13750 ;;
13751esac
13752set d_vfork
13753eval $setvar
13754case "$d_vfork" in
13755$define) usevfork='true';;
13756*) usevfork='false';;
13757esac
13758
b4eb6b3d
JH
13759: see if closedir exists
13760set closedir d_closedir
13761eval $inlibc
13762
13763case "$d_closedir" in
13764"$define")
13765 echo " "
13766 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 13767 cat > try.c <<EOM
b4eb6b3d
JH
13768#$i_dirent I_DIRENT /**/
13769#$i_sysdir I_SYS_DIR /**/
13770#$i_sysndir I_SYS_NDIR /**/
13771#$i_systypes I_SYS_TYPES /**/
13772
13773#if defined(I_SYS_TYPES)
13774#include <sys/types.h>
13775#endif
13776#if defined(I_DIRENT)
13777#include <dirent.h>
13778#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13779#include <sys/dir.h>
13780#endif
13781#else
13782#ifdef I_SYS_NDIR
13783#include <sys/ndir.h>
13784#else
13785#ifdef I_SYS_DIR
13786#ifdef hp9000s500
13787#include <ndir.h> /* may be wrong in the future */
13788#else
13789#include <sys/dir.h>
13790#endif
13791#endif
13792#endif
13793#endif
13794int main() { return closedir(opendir(".")); }
13795EOM
5440bc8e 13796 set try
b4eb6b3d 13797 if eval $compile_ok; then
5440bc8e 13798 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
13799 echo "Yes, it does."
13800 val="$undef"
13801 else
13802 echo "No, it doesn't."
13803 val="$define"
13804 fi
13805 else
13806 echo "(I can't seem to compile the test program--assuming it doesn't)"
13807 val="$define"
13808 fi
13809 ;;
13810*)
13811 val="$undef";
13812 ;;
13813esac
13814set d_void_closedir
13815eval $setvar
5440bc8e 13816$rm -f try try.*
b4eb6b3d
JH
13817: see if there is a wait4
13818set wait4 d_wait4
13819eval $inlibc
13820
13821: see if waitpid exists
13822set waitpid d_waitpid
13823eval $inlibc
13824
13825: see if wcstombs exists
13826set wcstombs d_wcstombs
13827eval $inlibc
13828
13829: see if wctomb exists
13830set wctomb d_wctomb
13831eval $inlibc
13832
4e0554ec
JH
13833: see if writev exists
13834set writev d_writev
13835eval $inlibc
13836
b4eb6b3d
JH
13837: preserve RCS keywords in files with variable substitution, grrr
13838Date='$Date'
13839Id='$Id'
13840Log='$Log'
13841RCSfile='$RCSfile'
13842Revision='$Revision'
13843
b4eb6b3d
JH
13844: check for alignment requirements
13845echo " "
5440bc8e 13846case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
13847*$define*)
13848 $cat <<EOM
13849You seem to be either cross-compiling or doing a multiarchitecture build,
13850skipping the memory alignment check.
13851
13852EOM
13853 case "$alignbytes" in
13854 '') alignbytes=8 ;;
13855 esac
13856 ;;
13857*)
13858 case "$alignbytes" in
13859 '') echo "Checking alignment constraints..." >&4
13860 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13861 $cat >try.c <<'EOCP'
13862typedef long double NV;
13863EOCP
13864 else
13865 $cat >try.c <<'EOCP'
13866typedef double NV;
13867EOCP
13868 fi
13869 $cat >>try.c <<'EOCP'
13870#include <stdio.h>
13871struct foobar {
13872 char foo;
13873 NV bar;
13874} try_algn;
13875int main()
13876{
13877 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13878 return(0);
13879}
13880EOCP
13881 set try
13882 if eval $compile_ok; then
5440bc8e 13883 dflt=`$run ./try`
b4eb6b3d
JH
13884 else
13885 dflt='8'
13886 echo "(I can't seem to compile the test program...)"
13887 fi
13888 ;;
13889 *) dflt="$alignbytes"
13890 ;;
13891 esac
13892 rp="Doubles must be aligned on a how-many-byte boundary?"
13893 . ./myread
13894 alignbytes="$ans"
13895 $rm -f try.c try
13896 ;;
13897esac
13898
13899
13900: set the base revision
13901baserev=5.0
13902
b4eb6b3d
JH
13903: how do we catenate cpp tokens here?
13904echo " "
13905echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13906$cat >cpp_stuff.c <<'EOCP'
13907#define RCAT(a,b)a/**/b
13908#define ACAT(a,b)a ## b
13909RCAT(Rei,ser)
13910ACAT(Cir,cus)
13911EOCP
13912$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13913if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13914 echo "Oh! Smells like ANSI's been here." >&4
13915 echo "We can catify or stringify, separately or together!"
13916 cpp_stuff=42
13917elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13918 echo "Ah, yes! The good old days!" >&4
13919 echo "However, in the good old days we don't know how to stringify and"
13920 echo "catify at the same time."
13921 cpp_stuff=1
13922else
13923 $cat >&4 <<EOM
13924Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13925to have to edit the values of CAT[2-5] in config.h...
13926EOM
13927 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13928fi
13929$rm -f cpp_stuff.*
13930
13931: see if this is a db.h system
13932set db.h i_db
13933eval $inhdr
13934
13935case "$i_db" in
13936$define)
13937 : Check db version.
13938 echo " "
13939 echo "Checking Berkeley DB version ..." >&4
13940 $cat >try.c <<EOCP
13941#$d_const HASCONST
13942#ifndef HASCONST
13943#define const
13944#endif
13945#include <sys/types.h>
13946#include <stdio.h>
13947#include <db.h>
640374d0 13948int main(int argc, char *argv[])
b4eb6b3d
JH
13949{
13950#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13951 int Major, Minor, Patch ;
13952 unsigned long Version ;
13953 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
13954 if (argc == 2) {
13955 printf("%d %d %d %d %d %d\n",
13956 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13957 Major, Minor, Patch);
13958 exit(0);
13959 }
13960 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
13961
13962 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13963 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13964 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13965 Major, Minor, Patch) ;
13966
13967 /* check that db.h & libdb are compatible */
13968 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 13969 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
13970 exit(3);
13971 }
13972
640374d0 13973 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
13974
13975 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13976 + DB_VERSION_PATCH ;
13977
13978 /* needs to be >= 2.3.4 */
13979 if (Version < 2003004) {
13980 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 13981 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
13982 exit(2);
13983 }
13984
13985 exit(0);
13986#else
13987#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
13988 if (argc == 2) {
13989 printf("1 0 0\n");
13990 exit(0);
13991 }
13992 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
13993 exit(0); /* DB version < 2: the coast is clear. */
13994#else
13995 exit(1); /* <db.h> not Berkeley DB? */
13996#endif
13997#endif
13998}
13999EOCP
14000 set try
5440bc8e 14001 if eval $compile_ok && $run ./try; then
b4eb6b3d 14002 echo 'Looks OK.' >&4
5440bc8e 14003 set `$run ./try 1`
640374d0
JH
14004 db_version_major=$1
14005 db_version_minor=$2
14006 db_version_patch=$3
b4eb6b3d
JH
14007 else
14008 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
14009 i_db=$undef
14010 case " $libs " in
14011 *"-ldb "*)
14012 : Remove db from list of libraries to use
14013 echo "Removing unusable -ldb from library list" >&4
14014 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
14015 shift
14016 libs="$*"
14017 echo "libs = $libs" >&4
14018 ;;
14019 esac
14020 fi
14021 $rm -f try.*
14022 ;;
14023esac
14024
14025case "$i_db" in
14026define)
14027 : Check the return type needed for hash
14028 echo " "
14029 echo "Checking return type needed for hash for Berkeley DB ..." >&4
14030 $cat >try.c <<EOCP
14031#$d_const HASCONST
14032#ifndef HASCONST
14033#define const
14034#endif
14035#include <sys/types.h>
14036#include <db.h>
14037
14038#ifndef DB_VERSION_MAJOR
14039u_int32_t hash_cb (ptr, size)
14040const void *ptr;
14041size_t size;
14042{
14043}
14044HASHINFO info;
14045int main()
14046{
14047 info.hash = hash_cb;
14048}
14049#endif
14050EOCP
14051 if $cc $ccflags -c try.c >try.out 2>&1 ; then
14052 if $contains warning try.out >>/dev/null 2>&1 ; then
14053 db_hashtype='int'
14054 else
14055 db_hashtype='u_int32_t'
14056 fi
14057 else
14058 : XXX Maybe we should just give up here.
14059 db_hashtype=u_int32_t
14060 $cat try.out >&4
14061 echo "Help: I can't seem to compile the db test program." >&4
14062 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
14063 fi
14064 $rm -f try.*
14065 echo "Your version of Berkeley DB uses $db_hashtype for hash."
14066 ;;
14067*) db_hashtype=u_int32_t
14068 ;;
14069esac
14070case "$i_db" in
14071define)
14072 : Check the return type needed for prefix
14073 echo " "
14074 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
14075 cat >try.c <<EOCP
14076#$d_const HASCONST
14077#ifndef HASCONST
14078#define const
14079#endif
14080#include <sys/types.h>
14081#include <db.h>
14082
14083#ifndef DB_VERSION_MAJOR
14084size_t prefix_cb (key1, key2)
14085const DBT *key1;
14086const DBT *key2;
14087{
14088}
14089BTREEINFO info;
14090int main()
14091{
14092 info.prefix = prefix_cb;
14093}
14094#endif
14095EOCP
14096 if $cc $ccflags -c try.c >try.out 2>&1 ; then
14097 if $contains warning try.out >>/dev/null 2>&1 ; then
14098 db_prefixtype='int'
14099 else
14100 db_prefixtype='size_t'
14101 fi
14102 else
14103 db_prefixtype='size_t'
14104 : XXX Maybe we should just give up here.
14105 $cat try.out >&4
14106 echo "Help: I can't seem to compile the db test program." >&4
14107 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
14108 fi
14109 $rm -f try.*
14110 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
14111 ;;
14112*) db_prefixtype='size_t'
14113 ;;
14114esac
14115
b4eb6b3d
JH
14116
14117: How can we generate normalized random numbers ?
14118echo " "
14119echo "Looking for a random number function..." >&4
14120case "$randfunc" in
14121'')
14122 if set drand48 val -f; eval $csym; $val; then
14123 dflt="drand48"
14124 echo "Good, found drand48()." >&4
14125 elif set random val -f; eval $csym; $val; then
14126 dflt="random"
14127 echo "OK, found random()." >&4
14128 else
14129 dflt="rand"
14130 echo "Yick, looks like I have to use rand()." >&4
14131 fi
14132 echo " "
14133 ;;
14134*)
14135 dflt="$randfunc"
14136 ;;
14137esac
14138cont=true
14139
14140case "$ccflags" in
14141*-Dmy_rand=*|*-Dmy_srand=*)
14142 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
14143 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
14144 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
14145 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
14146 ;;
14147esac
14148
14149while $test "$cont"; do
14150 rp="Use which function to generate random numbers?"
14151 . ./myread
14152 if $test "$ans" = "$dflt"; then
14153 : null
14154 else
14155 randbits=''
14156 fi
14157 randfunc="$ans"
14158 if set $ans val -f; eval $csym; $val; then
14159 cont=''
14160 else
14161 dflt=y
14162 rp="I cannot find function $ans. Use that name anyway?"
14163 . ./myread
14164 dflt=rand
14165 case "$ans" in
14166 [yY]*) cont='';;
14167 esac
14168 fi
14169 case "$cont" in
14170 '')
14171 case "$randfunc" in
14172 drand48)
14173 drand01="drand48()"
14174 seedfunc="srand48"
14175 randbits=48
14176 randseedtype=long
14177 ;;
14178 rand|random)
14179 case "$randbits" in
14180 '')
14181echo "Checking to see how many bits your $randfunc() function produces..." >&4
14182 $cat >try.c <<EOCP
14183#$i_unistd I_UNISTD
14184#$i_stdlib I_STDLIB
14185#include <stdio.h>
14186#ifdef I_UNISTD
14187# include <unistd.h>
14188#endif
14189#ifdef I_STDLIB
14190# include <stdlib.h>
14191#endif
14192int main()
14193{
14194 register int i;
14195 register unsigned long tmp;
14196 register unsigned long max = 0L;
14197
14198 for (i = 1000; i; i--) {
14199 tmp = (unsigned long) $randfunc();
14200 if (tmp > max) max = tmp;
14201 }
14202 for (i = 0; max; i++)
14203 max /= 2;
14204 printf("%d\n",i);
14205}
14206EOCP
14207 set try
14208 if eval $compile_ok; then
14209 dflt=`try`
14210 else
14211 dflt='?'
14212 echo "(I can't seem to compile the test program...)"
14213 fi
14214 ;;
14215 *)
14216 dflt="$randbits"
14217 ;;
14218 esac
14219 rp="How many bits does your $randfunc() function produce?"
14220 . ./myread
14221 randbits="$ans"
14222 $rm -f try.c try
14223 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14224 seedfunc="s$randfunc"
14225 randseedtype=unsigned
14226 ;;
14227 *)
14228 dflt="31"
14229 rp="How many bits does your $randfunc() function produce?"
14230 . ./myread
14231 randbits="$ans"
14232 seedfunc="s$randfunc"
14233 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14234 if set $seedfunc val -f; eval $csym; $val; then
14235 echo "(Using $seedfunc() to seed random generator)"
14236 else
14237 echo "(Warning: no $seedfunc() to seed random generator)"
14238 seedfunc=rand
14239 fi
14240 randseedtype=unsigned
14241 ;;
14242 esac
14243 ;;
14244 esac
14245done
14246
14247echo " "
14248echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 14249$cat >try.c <<'EOM'
b4eb6b3d
JH
14250int main()
14251{
14252 if ('M'==0xd4) return 0;
14253 return 1;
14254}
14255EOM
14256
14257val=$undef
5440bc8e 14258set try
b4eb6b3d 14259if eval $compile_ok; then
5440bc8e 14260 if $run ./try; then
b4eb6b3d
JH
14261 echo "You seem to speak EBCDIC." >&4
14262 val="$define"
14263 else
5440bc8e 14264 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
14265 fi
14266else
14267 echo "I'm unable to compile the test program." >&4
14268 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
14269fi
5440bc8e 14270$rm -f try try.*
b4eb6b3d
JH
14271set ebcdic
14272eval $setvar
14273
14274echo " "
14275$cat >&4 <<EOM
14276Checking how to flush all pending stdio output...
14277EOM
14278# I only know how to find the first 32 possibly open files on SunOS.
14279# See also hints/sunos_4_1.sh and util.c --AD
14280case "$osname" in
14281sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
14282esac
14283$cat >>try.c <<EOCP
14284#include <stdio.h>
14285#$i_unistd I_UNISTD
14286#ifdef I_UNISTD
14287# include <unistd.h>
14288#endif
14289#$d_sysconf HAS_SYSCONF
14290#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
14291#ifdef HAS_STDIO_STREAM_ARRAY
14292# define STDIO_STREAM_ARRAY $stdio_stream_array
14293#endif
14294int main() {
5440bc8e
JH
14295 FILE* p;
14296 unlink("try.out");
14297 p = fopen("try.out", "w");
b4eb6b3d
JH
14298#ifdef TRY_FPUTC
14299 fputc('x', p);
14300#else
14301# ifdef TRY_FPRINTF
14302 fprintf(p, "x");
14303# endif
14304#endif
14305#ifdef TRY_FFLUSH_NULL
14306 fflush(NULL);
14307#endif
14308#ifdef TRY_FFLUSH_ALL
14309 {
14310 long open_max = -1;
14311# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
14312 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
14313# else
14314# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
14315 open_max = sysconf(_SC_OPEN_MAX);
14316# else
14317# ifdef FOPEN_MAX
14318 open_max = FOPEN_MAX;
14319# else
14320# ifdef OPEN_MAX
14321 open_max = OPEN_MAX;
14322# else
14323# ifdef _NFILE
14324 open_max = _NFILE;
14325# endif
14326# endif
14327# endif
14328# endif
14329# endif
14330# ifdef HAS_STDIO_STREAM_ARRAY
14331 if (open_max > 0) {
14332 long i;
14333 for (i = 0; i < open_max; i++)
14334 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14335 STDIO_STREAM_ARRAY[i]._file < open_max &&
14336 STDIO_STREAM_ARRAY[i]._flag)
14337 fflush(&STDIO_STREAM_ARRAY[i]);
14338 }
14339 }
14340# endif
14341#endif
14342 _exit(42);
14343}
14344EOCP
14345: first we have to find out how _not_ to flush
5440bc8e 14346$to try.c
b4eb6b3d
JH
14347if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14348 output=''
14349 set try -DTRY_FPUTC
14350 if eval $compile; then
fbe73d74 14351 $run ./try 2>/dev/null
28f5ac64 14352 code="$?"
5440bc8e 14353 $from try.out
28f5ac64 14354 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14355 output=-DTRY_FPUTC
14356 fi
14357 fi
14358 case "$output" in
14359 '')
14360 set try -DTRY_FPRINTF
b4eb6b3d 14361 if eval $compile; then
fbe73d74 14362 $run ./try 2>/dev/null
28f5ac64 14363 code="$?"
5440bc8e 14364 $from try.out
28f5ac64 14365 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14366 output=-DTRY_FPRINTF
14367 fi
14368 fi
14369 ;;
14370 esac
14371fi
14372: check for fflush NULL behaviour
14373case "$fflushNULL" in
14374'') set try -DTRY_FFLUSH_NULL $output
14375 if eval $compile; then
5440bc8e 14376 $run ./try 2>/dev/null
b4eb6b3d 14377 code="$?"
5440bc8e 14378 $from try.out
b4eb6b3d
JH
14379 if $test -s try.out -a "X$code" = X42; then
14380 fflushNULL="`$cat try.out`"
14381 else
14382 if $test "X$code" != X42; then
14383 $cat >&4 <<EOM
14384(If this test failed, don't worry, we'll try another method shortly.)
14385EOM
14386 fi
14387 fi
14388 fi
14389 $rm -f core try.core core.try.*
14390 case "$fflushNULL" in
14391 x) $cat >&4 <<EOM
14392Your fflush(NULL) works okay for output streams.
14393Let's see if it clobbers input pipes...
14394EOM
14395# As of mid-March 2000 all versions of Solaris appear to have a stdio
14396# bug that improperly flushes the input end of pipes. So we avoid the
14397# autoflush on fork/system/exec support for now. :-(
14398$cat >tryp.c <<EOCP
14399#include <stdio.h>
14400int
14401main(int argc, char **argv)
14402{
14403 char buf[1024];
14404 int i;
14405 char *bp = buf;
14406 while (1) {
14407 while ((i = getc(stdin)) != -1
14408 && (*bp++ = i) != '\n'
14409 && bp < &buf[1024])
14410 /* DO NOTHING */ ;
14411 *bp = '\0';
14412 fprintf(stdout, "%s", buf);
14413 fflush(NULL);
14414 if (i == -1)
14415 return 0;
14416 bp = buf;
14417 }
14418}
14419EOCP
14420 fflushNULL="$define"
14421 set tryp
14422 if eval $compile; then
14423 $rm -f tryp.out
5440bc8e 14424 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
14425 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14426 $cat >&4 <<EOM
14427fflush(NULL) seems to behave okay with input streams.
14428EOM
14429 fflushNULL="$define"
14430 else
14431 $cat >&4 <<EOM
14432Ouch, fflush(NULL) clobbers input pipes! We will not use it.
14433EOM
14434 fflushNULL="$undef"
14435 fi
14436 fi
14437 $rm -f core tryp.c tryp.core core.tryp.*
14438 ;;
14439 '') $cat >&4 <<EOM
14440Your fflush(NULL) isn't working (contrary to ANSI C).
14441EOM
14442 fflushNULL="$undef"
14443 ;;
14444 *) $cat >&4 <<EOM
14445Cannot figure out whether your fflush(NULL) works or not.
14446I'm assuming it doesn't (contrary to ANSI C).
14447EOM
14448 fflushNULL="$undef"
14449 ;;
14450 esac
14451 ;;
14452$define|true|[yY]*)
14453 fflushNULL="$define"
14454 ;;
14455*)
14456 fflushNULL="$undef"
14457 ;;
14458esac
14459: check explicit looping only if NULL did not work, and if the pipe
14460: bug does not show up on an explicit flush too
14461case "$fflushNULL" in
14462"$undef")
14463 $cat >tryp.c <<EOCP
14464#include <stdio.h>
14465int
14466main(int argc, char **argv)
14467{
14468 char buf[1024];
14469 int i;
14470 char *bp = buf;
14471 while (1) {
14472 while ((i = getc(stdin)) != -1
14473 && (*bp++ = i) != '\n'
14474 && bp < &buf[1024])
14475 /* DO NOTHING */ ;
14476 *bp = '\0';
14477 fprintf(stdout, "%s", buf);
14478 fflush(stdin);
14479 if (i == -1)
14480 return 0;
14481 bp = buf;
14482 }
14483}
14484EOCP
14485 set tryp
14486 if eval $compile; then
14487 $rm -f tryp.out
5440bc8e 14488 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
14489 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14490 $cat >&4 <<EOM
14491Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14492EOM
14493 : now check for fflushall behaviour
14494 case "$fflushall" in
14495 '') set try -DTRY_FFLUSH_ALL $output
14496 if eval $compile; then
14497 $cat >&4 <<EOM
14498(Now testing the other method--but note that this also may fail.)
14499EOM
5440bc8e 14500 $run ./try 2>/dev/null
28f5ac64 14501 code=$?
fbe73d74 14502 $from try.out
28f5ac64 14503 if $test -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14504 fflushall="`$cat try.out`"
14505 fi
14506 fi
14507 $rm -f core try.core core.try.*
14508 case "$fflushall" in
14509 x) $cat >&4 <<EOM
14510Whew. Flushing explicitly all the stdio streams works.
14511EOM
14512 fflushall="$define"
14513 ;;
14514 '') $cat >&4 <<EOM
14515Sigh. Flushing explicitly all the stdio streams doesn't work.
14516EOM
14517 fflushall="$undef"
14518 ;;
14519 *) $cat >&4 <<EOM
14520Cannot figure out whether flushing stdio streams explicitly works or not.
14521I'm assuming it doesn't.
14522EOM
14523 fflushall="$undef"
14524 ;;
14525 esac
14526 ;;
14527 "$define"|true|[yY]*)
14528 fflushall="$define"
14529 ;;
14530 *)
14531 fflushall="$undef"
14532 ;;
14533 esac
14534 else
14535 $cat >&4 <<EOM
14536All is futile. Even fflush(stdin) clobbers input pipes!
14537EOM
14538 fflushall="$undef"
14539 fi
14540 else
14541 fflushall="$undef"
14542 fi
14543 $rm -f core tryp.c tryp.core core.tryp.*
14544 ;;
14545*) fflushall="$undef"
14546 ;;
14547esac
14548
14549case "$fflushNULL$fflushall" in
14550undefundef)
14551 $cat <<EOM
14552OK, I give up. I cannot figure out how to flush pending stdio output.
14553We won't be flushing handles at all before fork/exec/popen.
14554EOM
14555 ;;
14556esac
14557$rm -f try.* try$exe_ext
14558
14559: Store the full pathname to the ar program for use in the C program
14560: Respect a hint or command line value for full_ar.
14561case "$full_ar" in
14562'') full_ar=$ar ;;
14563esac
14564
14565: Store the full pathname to the sed program for use in the C program
14566full_sed=$sed
14567
14568: see what type gids are declared as in the kernel
14569echo " "
14570echo "Looking for the type for group ids returned by getgid()."
14571set gid_t gidtype xxx stdio.h sys/types.h
14572eval $typedef
14573case "$gidtype" in
14574xxx)
14575 xxx=`./findhdr sys/user.h`
14576 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14577 case $1 in
14578 unsigned) dflt="$1 $2" ;;
14579 *) dflt="$1" ;;
14580 esac
14581 ;;
14582*) dflt="$gidtype";;
14583esac
14584case "$gidtype" in
14585gid_t) echo "gid_t found." ;;
14586*) rp="What is the type for group ids returned by getgid()?"
14587 . ./myread
14588 gidtype="$ans"
14589 ;;
14590esac
14591
14592echo " "
14593case "$gidtype" in
14594*_t) zzz="$gidtype" ;;
14595*) zzz="gid" ;;
14596esac
14597echo "Checking the size of $zzz..." >&4
14598cat > try.c <<EOCP
14599#include <sys/types.h>
14600#include <stdio.h>
14601int main() {
14602 printf("%d\n", (int)sizeof($gidtype));
14603 exit(0);
14604}
14605EOCP
14606set try
14607if eval $compile_ok; then
5440bc8e 14608 yyy=`$run ./try`
b4eb6b3d
JH
14609 case "$yyy" in
14610 '') gidsize=4
14611 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14612 ;;
14613 *) gidsize=$yyy
14614 echo "Your $zzz is $gidsize bytes long."
14615 ;;
14616 esac
14617else
14618 gidsize=4
14619 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14620fi
14621
14622
14623echo " "
14624case "$gidtype" in
14625*_t) zzz="$gidtype" ;;
14626*) zzz="gid" ;;
14627esac
14628echo "Checking the sign of $zzz..." >&4
14629cat > try.c <<EOCP
14630#include <sys/types.h>
14631#include <stdio.h>
14632int main() {
14633 $gidtype foo = -1;
14634 if (foo < 0)
14635 printf("-1\n");
14636 else
14637 printf("1\n");
14638}
14639EOCP
14640set try
14641if eval $compile; then
5440bc8e 14642 yyy=`$run ./try`
b4eb6b3d
JH
14643 case "$yyy" in
14644 '') gidsign=1
14645 echo "(I can't execute the test program--guessing unsigned.)" >&4
14646 ;;
14647 *) gidsign=$yyy
14648 case "$gidsign" in
14649 1) echo "Your $zzz is unsigned." ;;
14650 -1) echo "Your $zzz is signed." ;;
14651 esac
14652 ;;
14653 esac
14654else
14655 gidsign=1
14656 echo "(I can't compile the test program--guessing unsigned.)" >&4
14657fi
14658
14659
14660echo " "
14661
14662if $test X"$quadtype" != X; then
14663
14664echo "Checking how to print 64-bit integers..." >&4
14665
14666if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14667 $cat >try.c <<'EOCP'
14668#include <sys/types.h>
14669#include <stdio.h>
14670int main() {
14671 int q = 12345678901;
14672 printf("%ld\n", q);
14673}
14674EOCP
14675 set try
14676 if eval $compile; then
5440bc8e 14677 yyy=`$run ./try`
b4eb6b3d
JH
14678 case "$yyy" in
14679 12345678901)
14680 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14681 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14682 echo "We will use %d."
14683 ;;
14684 esac
14685 fi
14686fi
14687
14688if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14689 $cat >try.c <<'EOCP'
14690#include <sys/types.h>
14691#include <stdio.h>
14692int main() {
14693 long q = 12345678901;
14694 printf("%ld\n", q);
14695}
14696EOCP
14697 set try
14698 if eval $compile; then
5440bc8e 14699 yyy=`$run ./try`
b4eb6b3d
JH
14700 case "$yyy" in
14701 12345678901)
14702 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14703 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14704 echo "We will use %ld."
14705 ;;
14706 esac
14707 fi
14708fi
14709
14710if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14711 $cat >try.c <<'EOCP'
14712#include <sys/types.h>
14713#include <inttypes.h>
14714#include <stdio.h>
14715int main() {
14716 int64_t q = 12345678901;
14717 printf("%" PRId64 "\n", q);
14718}
14719EOCP
14720 set try
14721 if eval $compile; then
5440bc8e 14722 yyy=`$run ./try`
b4eb6b3d
JH
14723 case "$yyy" in
14724 12345678901)
14725 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14726 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14727 echo "We will use the C9X style."
14728 ;;
14729 esac
14730 fi
14731fi
14732
2ef53570
JH
14733if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14734 $cat >try.c <<EOCP
b4eb6b3d
JH
14735#include <sys/types.h>
14736#include <stdio.h>
14737int main() {
2ef53570
JH
14738 $quadtype q = 12345678901;
14739 printf("%Ld\n", q);
b4eb6b3d
JH
14740}
14741EOCP
14742 set try
14743 if eval $compile; then
5440bc8e 14744 yyy=`$run ./try`
b4eb6b3d
JH
14745 case "$yyy" in
14746 12345678901)
2ef53570
JH
14747 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14748 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14749 echo "We will use %Ld."
b4eb6b3d
JH
14750 ;;
14751 esac
14752 fi
14753fi
14754
2ef53570
JH
14755if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14756 $cat >try.c <<'EOCP'
b4eb6b3d
JH
14757#include <sys/types.h>
14758#include <stdio.h>
14759int main() {
2ef53570
JH
14760 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14761 printf("%lld\n", q);
b4eb6b3d
JH
14762}
14763EOCP
14764 set try
14765 if eval $compile; then
5440bc8e 14766 yyy=`$run ./try`
b4eb6b3d
JH
14767 case "$yyy" in
14768 12345678901)
2ef53570
JH
14769 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14770 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14771 echo "We will use the %lld style."
b4eb6b3d
JH
14772 ;;
14773 esac
14774 fi
14775fi
14776
14777if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14778 $cat >try.c <<EOCP
14779#include <sys/types.h>
14780#include <stdio.h>
14781int main() {
14782 $quadtype q = 12345678901;
14783 printf("%qd\n", q);
14784}
14785EOCP
14786 set try
14787 if eval $compile; then
5440bc8e 14788 yyy=`$run ./try`
b4eb6b3d
JH
14789 case "$yyy" in
14790 12345678901)
14791 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14792 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14793 echo "We will use %qd."
14794 ;;
14795 esac
14796 fi
14797fi
14798
14799if $test X"$sPRId64" = X; then
14800 echo "Cannot figure out how to print 64-bit integers." >&4
14801fi
14802
14803$rm -f try try.*
14804
14805fi
14806
14807case "$sPRId64" in
14808'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14809 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14810 ;;
14811*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14812 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14813 ;;
14814esac
14815
14816
14817echo " "
14818$echo "Checking the format strings to be used for Perl's internal types..." >&4
14819
14820if $test X"$ivsize" = X8; then
14821 ivdformat="$sPRId64"
14822 uvuformat="$sPRIu64"
14823 uvoformat="$sPRIo64"
14824 uvxformat="$sPRIx64"
14825 uvXUformat="$sPRIXU64"
14826else
14827 if $test X"$ivsize" = X"$longsize"; then
14828 ivdformat='"ld"'
14829 uvuformat='"lu"'
14830 uvoformat='"lo"'
14831 uvxformat='"lx"'
14832 uvXUformat='"lX"'
14833 else
14834 if $test X"$ivsize" = X"$intsize"; then
14835 ivdformat='"d"'
14836 uvuformat='"u"'
14837 uvoformat='"o"'
14838 uvxformat='"x"'
14839 uvXUformat='"X"'
14840 else
14841 : far out
14842 if $test X"$ivsize" = X"$shortsize"; then
14843 ivdformat='"hd"'
14844 uvuformat='"hu"'
14845 uvoformat='"ho"'
14846 uvxformat='"hx"'
14847 uvXUformat='"hX"'
14848 fi
14849 fi
14850 fi
14851fi
14852
14853if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14854 nveformat="$sPRIeldbl"
14855 nvfformat="$sPRIfldbl"
14856 nvgformat="$sPRIgldbl"
14857 nvEUformat="$sPRIEUldbl"
14858 nvFUformat="$sPRIFUldbl"
14859 nvGUformat="$sPRIGUldbl"
14860else
14861 nveformat='"e"'
14862 nvfformat='"f"'
14863 nvgformat='"g"'
14864 nvEUformat='"E"'
14865 nvFUformat='"F"'
14866 nvGUformat='"G"'
14867fi
14868
14869case "$ivdformat" in
3c728e00 14870'') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
b4eb6b3d
JH
14871 exit 1
14872 ;;
14873esac
14874
14875
14876echo " "
14877$echo "Checking the format string to be used for gids..." >&4
14878
14879case "$gidsign" in
14880-1) if $test X"$gidsize" = X"$ivsize"; then
14881 gidformat="$ivdformat"
14882 else
14883 if $test X"$gidsize" = X"$longsize"; then
14884 gidformat='"ld"'
14885 else
14886 if $test X"$gidsize" = X"$intsize"; then
14887 gidformat='"d"'
14888 else
14889 if $test X"$gidsize" = X"$shortsize"; then
14890 gidformat='"hd"'
14891 fi
14892 fi
14893 fi
14894 fi
14895 ;;
14896*) if $test X"$gidsize" = X"$uvsize"; then
14897 gidformat="$uvuformat"
14898 else
14899 if $test X"$gidsize" = X"$longsize"; then
14900 gidformat='"lu"'
14901 else
14902 if $test X"$gidsize" = X"$intsize"; then
14903 gidformat='"u"'
14904 else
14905 if $test X"$gidsize" = X"$shortsize"; then
14906 gidformat='"hu"'
14907 fi
14908 fi
14909 fi
14910 fi
14911 ;;
14912esac
14913
14914: see if getgroups exists
14915set getgroups d_getgrps
14916eval $inlibc
14917
14918: see if setgroups exists
14919set setgroups d_setgrps
14920eval $inlibc
14921
14922
14923: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14924echo " "
14925case "$d_getgrps$d_setgrps" in
14926*define*)
14927 case "$groupstype" in
14928 '') dflt="$gidtype" ;;
14929 *) dflt="$groupstype" ;;
14930 esac
14931 $cat <<EOM
14932What type of pointer is the second argument to getgroups() and setgroups()?
14933Usually this is the same as group ids, $gidtype, but not always.
14934
14935EOM
14936 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14937 . ./myread
14938 groupstype="$ans"
14939 ;;
14940*) groupstype="$gidtype";;
14941esac
14942
14943echo " "
14944echo "Checking if your $make program sets \$(MAKE)..." >&4
14945case "$make_set_make" in
14946'')
14947 $sed 's/^X //' > testmake.mak << 'EOF'
14948Xall:
14949X @echo 'maketemp="$(MAKE)"'
14950EOF
14951 case "`$make -f testmake.mak 2>/dev/null`" in
14952 *maketemp=*) make_set_make='#' ;;
14953 *) make_set_make="MAKE=$make" ;;
14954 esac
14955 $rm -f testmake.mak
14956 ;;
14957esac
14958case "$make_set_make" in
14959'#') echo "Yup, it does.";;
14960*) echo "Nope, it doesn't.";;
14961esac
14962
14963: see what type is used for mode_t
14964rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14965set mode_t modetype int stdio.h sys/types.h
14966eval $typedef_ask
14967
2cc61e15
DD
14968: see if stdarg is available
14969echo " "
14970if $test `./findhdr stdarg.h`; then
14971 echo "<stdarg.h> found." >&4
14972 valstd="$define"
14973else
14974 echo "<stdarg.h> NOT found." >&4
14975 valstd="$undef"
14976fi
14977
14978: see if varags is available
14979echo " "
14980if $test `./findhdr varargs.h`; then
14981 echo "<varargs.h> found." >&4
14982else
14983 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14984fi
14985
14986: set up the varargs testing programs
14987$cat > varargs.c <<EOP
14988#ifdef I_STDARG
14989#include <stdarg.h>
14990#endif
14991#ifdef I_VARARGS
14992#include <varargs.h>
14993#endif
14994
14995#ifdef I_STDARG
14996int f(char *p, ...)
14997#else
14998int f(va_alist)
14999va_dcl
15000#endif
15001{
15002 va_list ap;
15003#ifndef I_STDARG
15004 char *p;
15005#endif
15006#ifdef I_STDARG
15007 va_start(ap,p);
15008#else
15009 va_start(ap);
15010 p = va_arg(ap, char *);
15011#endif
15012 va_end(ap);
15013}
15014EOP
15015$cat > varargs <<EOP
15016$startsh
15017if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
15018 echo "true"
15019else
15020 echo "false"
15021fi
15022$rm -f varargs$_o
15023EOP
15024chmod +x varargs
15025
15026: now check which varargs header should be included
15027echo " "
15028i_varhdr=''
15029case "$valstd" in
15030"$define")
15031 if `./varargs I_STDARG`; then
15032 val='stdarg.h'
15033 elif `./varargs I_VARARGS`; then
15034 val='varargs.h'
15035 fi
15036 ;;
15037*)
15038 if `./varargs I_VARARGS`; then
15039 val='varargs.h'
15040 fi
15041 ;;
15042esac
15043case "$val" in
15044'')
15045echo "I could not find the definition for va_dcl... You have problems..." >&4
15046 val="$undef"; set i_stdarg; eval $setvar
15047 val="$undef"; set i_varargs; eval $setvar
15048 ;;
15049*)
15050 set i_varhdr
15051 eval $setvar
15052 case "$i_varhdr" in
15053 stdarg.h)
15054 val="$define"; set i_stdarg; eval $setvar
15055 val="$undef"; set i_varargs; eval $setvar
15056 ;;
15057 varargs.h)
15058 val="$undef"; set i_stdarg; eval $setvar
15059 val="$define"; set i_varargs; eval $setvar
15060 ;;
15061 esac
15062 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
15063esac
15064$rm -f varargs*
15065
15066: see if we need va_copy
15067echo " "
15068case "$i_stdarg" in
15069"$define")
15070 $cat >try.c <<EOCP
15071#include <stdarg.h>
15072#include <stdio.h>
85c8a686
DD
15073#$i_stdlib I_STDLIB
15074#ifdef I_STDLIB
15075#include <stdlib.h>
15076#endif
15077#include <signal.h>
2cc61e15
DD
15078
15079int
15080ivfprintf(FILE *f, const char *fmt, va_list *valp)
15081{
15082 return vfprintf(f, fmt, *valp);
15083}
15084
15085int
15086myvfprintf(FILE *f, const char *fmt, va_list val)
15087{
15088 return ivfprintf(f, fmt, &val);
15089}
15090
15091int
15092myprintf(char *fmt, ...)
15093{
15094 va_list val;
15095 va_start(val, fmt);
15096 return myvfprintf(stdout, fmt, val);
15097}
15098
15099int
15100main(int ac, char **av)
15101{
85c8a686
DD
15102 signal(SIGSEGV, exit);
15103
2cc61e15
DD
15104 myprintf("%s%cs all right, then\n", "that", '\'');
15105 exit(0);
15106}
15107EOCP
15108 set try
5440bc8e
JH
15109 if eval $compile && $run ./try 2>&1 >/dev/null; then
15110 case "`$run ./try`" in
2cc61e15
DD
15111 "that's all right, then")
15112 okay=yes
15113 ;;
15114 esac
15115 fi
15116 case "$okay" in
15117 yes) echo "It seems that you don't need va_copy()." >&4
15118 need_va_copy="$undef"
15119 ;;
15120 *) echo "It seems that va_copy() or similar will be needed." >&4
15121 need_va_copy="$define"
15122 ;;
15123 esac
15124 $rm -f try.* core core.* *.core *.core.*
15125 ;;
15126*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
15127 ;;
15128esac
15129
b4eb6b3d
JH
15130: define a fucntion to check prototypes
15131$cat > protochk <<EOSH
15132$startsh
15133cc="$cc"
15134optimize="$optimize"
15135ccflags="$ccflags"
15136prototype="$prototype"
15137define="$define"
15138rm=$rm
15139EOSH
15140
15141$cat >> protochk <<'EOSH'
15142
15143$rm -f try.c
15144foo="$1"
15145shift
15146while test $# -ge 2; do
15147 case "$1" in
15148 $define) echo "#include <$2>" >> try.c ;;
15149 literal) echo "$2" >> try.c ;;
15150 esac
15151 shift 2
15152done
15153test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
15154cat >> try.c <<'EOCP'
15155#ifdef CAN_PROTOTYPE
15156#define _(args) args
15157#else
15158#define _(args) ()
15159#endif
15160EOCP
15161echo "$foo" >> try.c
15162echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
15163$cc $optimize $ccflags -c try.c > /dev/null 2>&1
15164status=$?
15165$rm -f try.[co]
15166exit $status
15167EOSH
15168chmod +x protochk
15169$eunicefix protochk
15170
15171: see what type is used for size_t
15172rp="What is the type used for the length parameter for string functions?"
15173set size_t sizetype 'unsigned int' stdio.h sys/types.h
15174eval $typedef_ask
15175
15176: check for type of arguments to gethostbyaddr.
15177if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
15178 case "$d_gethbyaddr" in
15179 $define)
15180 $cat <<EOM
15181
15182Checking to see what type of arguments are accepted by gethostbyaddr().
15183EOM
15184 hdrs="$define sys/types.h
15185 $d_socket sys/socket.h
15186 $i_niin netinet/in.h
15187 $i_netdb netdb.h
15188 $i_unistd unistd.h"
15189 : The first arg can 'char *' or 'void *'
15190 : The second arg is some of integral type
15191 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
15192 for yyy in size_t long int; do
15193 case "$netdb_host_type" in
15194 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
15195 if ./protochk "$try" $hdrs; then
15196 echo "Your system accepts $xxx for the first arg."
15197 echo "...and $yyy for the second arg."
15198 netdb_host_type="$xxx"
15199 netdb_hlen_type="$yyy"
15200 fi
15201 ;;
15202 esac
15203 done
15204 done
15205 : In case none of those worked, prompt the user.
15206 case "$netdb_host_type" in
15207 '') rp='What is the type for the 1st argument to gethostbyaddr?'
15208 dflt='char *'
15209 . ./myread
15210 netdb_host_type=$ans
15211 rp='What is the type for the 2nd argument to gethostbyaddr?'
15212 dflt="$sizetype"
15213 . ./myread
15214 netdb_hlen_type=$ans
15215 ;;
15216 esac
15217 ;;
15218 *) : no gethostbyaddr, so pick harmless defaults
15219 netdb_host_type='char *'
15220 netdb_hlen_type="$sizetype"
15221 ;;
15222 esac
15223 # Remove the "const" if needed. -- but then we'll have a
15224 # prototype clash!
15225 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
15226fi
15227
15228: check for type of argument to gethostbyname.
15229if test "X$netdb_name_type" = X ; then
15230 case "$d_gethbyname" in
15231 $define)
15232 $cat <<EOM
15233
15234Checking to see what type of argument is accepted by gethostbyname().
15235EOM
15236 hdrs="$define sys/types.h
15237 $d_socket sys/socket.h
15238 $i_niin netinet/in.h
15239 $i_netdb netdb.h
15240 $i_unistd unistd.h"
15241 for xxx in "const char *" "char *"; do
15242 case "$netdb_name_type" in
15243 '') try="extern struct hostent *gethostbyname($xxx);"
15244 if ./protochk "$try" $hdrs; then
15245 echo "Your system accepts $xxx."
15246 netdb_name_type="$xxx"
15247 fi
15248 ;;
15249 esac
15250 done
15251 : In case none of those worked, prompt the user.
15252 case "$netdb_name_type" in
15253 '') rp='What is the type for the 1st argument to gethostbyname?'
15254 dflt='char *'
15255 . ./myread
15256 netdb_name_type=$ans
15257 ;;
15258 esac
15259 ;;
15260 *) : no gethostbyname, so pick harmless default
15261 netdb_name_type='char *'
15262 ;;
15263 esac
15264fi
15265
15266: check for type of 1st argument to getnetbyaddr.
15267if test "X$netdb_net_type" = X ; then
15268 case "$d_getnbyaddr" in
15269 $define)
15270 $cat <<EOM
15271
15272Checking to see what type of 1st argument is accepted by getnetbyaddr().
15273EOM
15274 hdrs="$define sys/types.h
15275 $d_socket sys/socket.h
15276 $i_niin netinet/in.h
15277 $i_netdb netdb.h
15278 $i_unistd unistd.h"
15279 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
15280 case "$netdb_net_type" in
15281 '') try="extern struct netent *getnetbyaddr($xxx, int);"
15282 if ./protochk "$try" $hdrs; then
15283 echo "Your system accepts $xxx."
15284 netdb_net_type="$xxx"
15285 fi
15286 ;;
15287 esac
15288 done
15289 : In case none of those worked, prompt the user.
15290 case "$netdb_net_type" in
15291 '') rp='What is the type for the 1st argument to getnetbyaddr?'
15292 dflt='long'
15293 . ./myread
15294 netdb_net_type=$ans
15295 ;;
15296 esac
15297 ;;
15298 *) : no getnetbyaddr, so pick harmless default
15299 netdb_net_type='long'
15300 ;;
15301 esac
15302fi
15303: locate the preferred pager for this system
15304case "$pager" in
15305'')
15306 dflt=''
15307 case "$pg" in
15308 /*) dflt=$pg;;
15309 [a-zA-Z]:/*) dflt=$pg;;
15310 esac
15311 case "$more" in
15312 /*) dflt=$more;;
15313 [a-zA-Z]:/*) dflt=$more;;
15314 esac
15315 case "$less" in
15316 /*) dflt=$less;;
15317 [a-zA-Z]:/*) dflt=$less;;
15318 esac
15319 case "$dflt" in
15320 '') dflt=/usr/ucb/more;;
15321 esac
15322 ;;
15323*) dflt="$pager";;
15324esac
15325echo " "
15326fn=f/
15327rp='What pager is used on your system?'
15328. ./getfile
15329pager="$ans"
15330
15331: see what type pids are declared as in the kernel
15332rp="What is the type of process ids on this system?"
15333set pid_t pidtype int stdio.h sys/types.h
15334eval $typedef_ask
15335
15336: Find earliest binary compatible site_perl subdirectory perl can use.
15337case "$bincompat5005" in
15338"$define") xs_apiversion='5.005' ;;
15339*) xs_apiversion=$version ;; # The current site_perl version.
15340esac
15341: Find earliest pure perl site_perl subdirectory perl can use.
15342: The versioned directories started at 5.005.
15343pm_apiversion='5.005'
15344
b4eb6b3d
JH
15345: see if ar generates random libraries by itself
15346echo " "
15347echo "Checking how to generate random libraries on your machine..." >&4
15348echo 'int bar1() { return bar2(); }' > bar1.c
15349echo 'int bar2() { return 2; }' > bar2.c
15350$cat > foo.c <<'EOP'
15351int main() { printf("%d\n", bar1()); exit(0); }
15352EOP
15353$cc $ccflags -c bar1.c >/dev/null 2>&1
15354$cc $ccflags -c bar2.c >/dev/null 2>&1
15355$cc $ccflags -c foo.c >/dev/null 2>&1
15356$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 15357if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 15358 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
15359 echo "$ar appears to generate random libraries itself."
15360 orderlib=false
15361 ranlib=":"
15362elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 15363 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 15364 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
15365 echo "a table of contents needs to be added with '$ar ts'."
15366 orderlib=false
15367 ranlib="$ar ts"
15368else
15369 case "$ranlib" in
15370 :) ranlib='';;
15371 '')
15372 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15373 $test -f $ranlib || ranlib=''
15374 ;;
15375 esac
15376 if $test -n "$ranlib"; then
15377 echo "your system has '$ranlib'; we'll use that."
15378 orderlib=false
15379 else
15380 echo "your system doesn't seem to support random libraries"
15381 echo "so we'll use lorder and tsort to order the libraries."
15382 orderlib=true
15383 ranlib=":"
15384 fi
15385fi
15386$rm -f foo* bar*
15387
15388: check for type of arguments to select.
15389case "$selecttype" in
15390'') case "$d_select" in
15391 $define)
15392 echo " "
15393 $cat <<EOM
15394Checking to see what type of arguments are accepted by select().
15395EOM
15396 hdrs="$define sys/types.h
15397 $i_systime sys/time.h
15398 $i_sysselct sys/select.h
15399 $d_socket sys/socket.h"
15400 : The first arg can be int, unsigned, or size_t
15401 : The last arg may or may not be 'const'
15402 val=''
15403 : void pointer has been seen but using that
15404 : breaks the selectminbits test
15405 for xxx in 'fd_set *' 'int *'; do
15406 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15407 for tmo in 'struct timeval *' 'const struct timeval *'; do
15408 case "$val" in
15409 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15410 if ./protochk "$try" $hdrs; then
15411 echo "Your system accepts $xxx."
15412 val="$xxx"
15413 fi
15414 ;;
15415 esac
15416 done
15417 done
15418 done
15419 case "$val" in
15420 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15421 case "$d_fd_set" in
15422 $define) dflt="fd_set *" ;;
15423 *) dflt="int *" ;;
15424 esac
15425 . ./myread
15426 val=$ans
15427 ;;
15428 esac
15429 selecttype="$val"
15430 ;;
15431 *) : no select, so pick a harmless default
15432 selecttype='int *'
15433 ;;
15434 esac
15435 ;;
15436esac
15437
15438: check for the select 'width'
15439case "$selectminbits" in
15440'') case "$d_select" in
15441 $define)
15442 $cat <<EOM
15443
15444Checking to see on how many bits at a time your select() operates...
15445EOM
15446 $cat >try.c <<EOCP
15447#include <sys/types.h>
15448#$i_time I_TIME
15449#$i_systime I_SYS_TIME
15450#$i_systimek I_SYS_TIME_KERNEL
15451#ifdef I_TIME
15452# include <time.h>
15453#endif
15454#ifdef I_SYS_TIME
15455# ifdef I_SYS_TIME_KERNEL
15456# define KERNEL
15457# endif
15458# include <sys/time.h>
15459# ifdef I_SYS_TIME_KERNEL
15460# undef KERNEL
15461# endif
15462#endif
15463#$i_sysselct I_SYS_SELECT
15464#ifdef I_SYS_SELECT
15465#include <sys/select.h>
15466#endif
15467#$d_socket HAS_SOCKET
15468#ifdef HAS_SOCKET
15469# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15470#endif
15471#include <stdio.h>
15472$selecttype b;
15473#define S sizeof(*(b))
15474#define MINBITS 64
15475#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15476#define NBITS (NBYTES * 8)
15477int main() {
15478 char s[NBYTES];
15479 struct timeval t;
15480 int i;
15481 FILE* fp;
15482 int fd;
15483
15484 fclose(stdin);
15485 fp = fopen("try.c", "r");
15486 if (fp == 0)
15487 exit(1);
15488 fd = fileno(fp);
15489 if (fd < 0)
15490 exit(2);
15491 b = ($selecttype)s;
15492 for (i = 0; i < NBITS; i++)
15493 FD_SET(i, b);
15494 t.tv_sec = 0;
15495 t.tv_usec = 0;
15496 select(fd + 1, b, 0, 0, &t);
15497 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15498 printf("%d\n", i + 1);
15499 return 0;
15500}
15501EOCP
15502 set try
15503 if eval $compile_ok; then
5440bc8e 15504 selectminbits=`$run ./try`
b4eb6b3d
JH
15505 case "$selectminbits" in
15506 '') cat >&4 <<EOM
15507Cannot figure out on how many bits at a time your select() operates.
15508I'll play safe and guess it is 32 bits.
15509EOM
15510 selectminbits=32
15511 bits="32 bits"
15512 ;;
15513 1) bits="1 bit" ;;
15514 *) bits="$selectminbits bits" ;;
15515 esac
15516 echo "Your select() operates on $bits at a time." >&4
15517 else
15518 rp='What is the minimum number of bits your select() operates on?'
15519 case "$byteorder" in
15520 1234|12345678) dflt=32 ;;
15521 *) dflt=1 ;;
15522 esac
15523 . ./myread
15524 val=$ans
15525 selectminbits="$val"
15526 fi
15527 $rm -f try.* try
15528 ;;
15529 *) : no select, so pick a harmless default
15530 selectminbits='32'
15531 ;;
15532 esac
15533 ;;
15534esac
15535
15536: Trace out the files included by signal.h, then look for SIGxxx names.
15537: Remove SIGARRAYSIZE used by HPUX.
15538: Remove SIGSTKSIZE used by Linux.
15539: Remove SIGSTKSZ used by Posix.
15540: Remove SIGTYP void lines used by OS2.
15541: Some cpps, like os390, dont give the file name anywhere
15542if [ "X$fieldn" = X ]; then
15543 : Just make some guesses. We check them later.
15544 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15545else
15546 xxx=`echo '#include <signal.h>' |
15547 $cppstdin $cppminus $cppflags 2>/dev/null |
15548 $grep '^[ ]*#.*include' |
a938a3bb 15549 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
15550fi
15551: Check this list of files to be sure we have parsed the cpp output ok.
15552: This will also avoid potentially non-existent files, such
15553: as ../foo/bar.h
15554xxxfiles=''
15555for xx in $xxx /dev/null ; do
15556 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15557done
15558: If we have found no files, at least try signal.h
15559case "$xxxfiles" in
15560'') xxxfiles=`./findhdr signal.h` ;;
15561esac
15562xxx=`awk '
15563$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15564 print substr($2, 4, 20)
15565}
15566$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15567 print substr($3, 4, 20)
15568}' $xxxfiles`
15569: Append some common names just in case the awk scan failed.
15570xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15571xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15572xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15573xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15574xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15575
15576: generate a few handy files for later
15577$cat > signal.c <<'EOCP'
15578#include <sys/types.h>
15579#include <signal.h>
15580#include <stdio.h>
15581int main() {
15582
15583/* Strange style to avoid deeply-nested #if/#else/#endif */
15584#ifndef NSIG
15585# ifdef _NSIG
15586# define NSIG (_NSIG)
15587# endif
15588#endif
15589
15590#ifndef NSIG
15591# ifdef SIGMAX
15592# define NSIG (SIGMAX+1)
15593# endif
15594#endif
15595
15596#ifndef NSIG
15597# ifdef SIG_MAX
15598# define NSIG (SIG_MAX+1)
15599# endif
15600#endif
15601
15602#ifndef NSIG
15603# ifdef MAXSIG
15604# define NSIG (MAXSIG+1)
15605# endif
15606#endif
15607
15608#ifndef NSIG
15609# ifdef MAX_SIG
15610# define NSIG (MAX_SIG+1)
15611# endif
15612#endif
15613
15614#ifndef NSIG
15615# ifdef SIGARRAYSIZE
15616# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15617# endif
15618#endif
15619
15620#ifndef NSIG
15621# ifdef _sys_nsig
15622# define NSIG (_sys_nsig) /* Solaris 2.5 */
15623# endif
15624#endif
15625
15626/* Default to some arbitrary number that's big enough to get most
15627 of the common signals.
15628*/
15629#ifndef NSIG
15630# define NSIG 50
15631#endif
15632
15633printf("NSIG %d\n", NSIG);
15634
15635#ifndef JUST_NSIG
15636
15637EOCP
15638
15639echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15640{
15641 printf "#ifdef SIG"; printf $1; printf "\n"
65197d93 15642 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
b4eb6b3d
JH
15643 printf $1; printf ");\n"
15644 printf "#endif\n"
15645}
15646END {
15647 printf "#endif /* JUST_NSIG */\n";
15648 printf "exit(0);\n}\n";
15649}
15650' >>signal.c
15651$cat >signal.awk <<'EOP'
15652BEGIN { ndups = 0 }
65197d93
JH
15653$1 ~ /^NSIG$/ { nsig = $2 }
15654($1 !~ /^NSIG$/) && (NF == 2) {
15655 if ($2 > maxsig) { maxsig = $2 }
15656 if (sig_name[$2]) {
15657 dup_name[ndups] = $1
15658 dup_num[ndups] = $2
b4eb6b3d
JH
15659 ndups++
15660 }
15661 else {
65197d93
JH
15662 sig_name[$2] = $1
15663 sig_num[$2] = $2
b4eb6b3d
JH
15664 }
15665}
15666END {
15667 if (nsig == 0) {
15668 nsig = maxsig + 1
15669 }
15670 printf("NSIG %d\n", nsig);
15671 for (n = 1; n < nsig; n++) {
15672 if (sig_name[n]) {
15673 printf("%s %d\n", sig_name[n], sig_num[n])
15674 }
15675 else {
15676 printf("NUM%d %d\n", n, n)
15677 }
15678 }
15679 for (n = 0; n < ndups; n++) {
15680 printf("%s %d\n", dup_name[n], dup_num[n])
15681 }
15682}
15683EOP
15684$cat >signal_cmd <<EOS
15685$startsh
15686if $test -s signal.lst; then
15687 echo "Using your existing signal.lst file"
15688 exit 0
15689fi
15690xxx="$xxx"
15691EOS
15692$cat >>signal_cmd <<'EOS'
15693
15694set signal
15695if eval $compile_ok; then
1eb9ad5b 15696 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
15697else
15698 echo "(I can't seem be able to compile the whole test program)" >&4
15699 echo "(I'll try it in little pieces.)" >&4
15700 set signal -DJUST_NSIG
15701 if eval $compile_ok; then
5440bc8e 15702 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
15703 $cat signal.nsg
15704 else
15705 echo "I can't seem to figure out how many signals you have." >&4
15706 echo "Guessing 50." >&4
15707 echo 'NSIG 50' > signal.nsg
15708 fi
15709 : Now look at all the signal names, one at a time.
15710 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15711 $cat > signal.c <<EOCP
15712#include <sys/types.h>
15713#include <signal.h>
15714#include <stdio.h>
15715int main() {
15716printf("$xx %d\n", SIG${xx});
15717return 0;
15718}
15719EOCP
15720 set signal
15721 if eval $compile; then
15722 echo "SIG${xx} found."
5440bc8e 15723 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
15724 else
15725 echo "SIG${xx} NOT found."
15726 fi
15727 done
15728 if $test -s signal.ls1; then
15729 $cat signal.nsg signal.ls1 |
65197d93 15730 $sort -n | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
15731 fi
15732
15733fi
15734if $test -s signal.lst; then
15735 :
15736else
15737 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15738 echo 'kill -l' >signal
15739 set X `csh -f <signal`
15740 $rm -f signal
15741 shift
15742 case $# in
15743 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15744 esac
15745 echo $@ | $tr ' ' $trnl | \
15746 $awk '{ printf "%s %d\n", $1, ++s; }
15747 END { printf "NSIG %d\n", ++s }' >signal.lst
15748fi
15749$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15750EOS
15751chmod a+x signal_cmd
15752$eunicefix signal_cmd
15753
15754: generate list of signal names
15755echo " "
15756case "$sig_name_init" in
15757'') doinit=yes ;;
15758*) case "$sig_num_init" in
15759 ''|*,*) doinit=yes ;;
15760 esac ;;
15761esac
15762case "$doinit" in
15763yes)
15764 echo "Generating a list of signal names and numbers..." >&4
15765 . ./signal_cmd
15766 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15767 sig_name=`$awk 'BEGIN { printf "ZERO " }
15768 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15769 sig_num=`$awk 'BEGIN { printf "0 " }
15770 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15771 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15772 !/^NSIG/ { printf "\"%s\", ", $1 }
15773 END { printf "0\n" }' signal.lst`
15774 sig_num_init=`$awk 'BEGIN { printf "0, " }
15775 !/^NSIG/ { printf "%d, ", $2}
15776 END { printf "0\n"}' signal.lst`
15777 ;;
15778esac
15779echo "The following $sig_count signals are available:"
15780echo " "
15781echo $sig_name | $awk \
15782'BEGIN { linelen = 0 }
15783{
15784 for (i = 1; i <= NF; i++) {
15785 name = "SIG" $i " "
15786 linelen = linelen + length(name)
15787 if (linelen > 70) {
15788 printf "\n"
15789 linelen = length(name)
15790 }
15791 printf "%s", name
15792 }
15793 printf "\n"
15794}'
76d3c696 15795sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
15796$rm -f signal signal.c signal.awk signal.lst signal_cmd
15797
15798echo " "
15799case "$sizetype" in
15800*_t) zzz="$sizetype" ;;
15801*) zzz="filesize" ;;
15802esac
15803echo "Checking the size of $zzz..." >&4
15804cat > try.c <<EOCP
15805#include <sys/types.h>
15806#include <stdio.h>
15807int main() {
15808 printf("%d\n", (int)sizeof($sizetype));
15809 exit(0);
15810}
15811EOCP
15812set try
15813if eval $compile_ok; then
5440bc8e 15814 yyy=`$run ./try`
b4eb6b3d
JH
15815 case "$yyy" in
15816 '') sizesize=4
15817 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15818 ;;
15819 *) sizesize=$yyy
15820 echo "Your $zzz size is $sizesize bytes."
15821 ;;
15822 esac
15823else
15824 sizesize=4
15825 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15826fi
15827
15828
15829: check for socklen_t
15830echo " "
15831echo "Checking to see if you have socklen_t..." >&4
15832$cat >try.c <<EOCP
15833#include <sys/types.h>
15834#$d_socket HAS_SOCKET
15835#ifdef HAS_SOCKET
15836#include <sys/socket.h>
15837#endif
15838int main() { socklen_t x = 16; }
15839EOCP
15840set try
15841if eval $compile; then
15842 val="$define"
15843 echo "You have socklen_t."
15844else
15845 val="$undef"
15846 echo "You do not have socklen_t."
15847 case "$sizetype" in
15848 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15849 esac
15850fi
15851$rm -f try try.*
15852set d_socklen_t
15853eval $setvar
15854
a7710f8d
JH
15855: see if this is a socks.h system
15856set socks.h i_socks
15857eval $inhdr
15858
b4eb6b3d
JH
15859: check for type of the size argument to socket calls
15860case "$d_socket" in
15861"$define")
15862 $cat <<EOM
15863
15864Checking to see what type is the last argument of accept().
15865EOM
b4eb6b3d
JH
15866 yyy=''
15867 case "$d_socklen_t" in
15868 "$define") yyy="$yyy socklen_t"
15869 esac
15870 yyy="$yyy $sizetype int long unsigned"
15871 for xxx in $yyy; do
15872 case "$socksizetype" in
15873 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
15874 case "$usesocks" in
15875 "$define")
15876 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15877 echo "Your system accepts '$xxx *' for the last argument of accept()."
15878 socksizetype="$xxx"
15879 fi
15880 ;;
15881 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15882 echo "Your system accepts '$xxx *' for the last argument of accept()."
15883 socksizetype="$xxx"
15884 fi
15885 ;;
15886 esac
b4eb6b3d
JH
15887 ;;
15888 esac
15889 done
15890: In case none of those worked, prompt the user.
15891 case "$socksizetype" in
15892 '') rp='What is the type for socket address structure sizes?'
15893 dflt='int'
15894 . ./myread
15895 socksizetype=$ans
15896 ;;
15897 esac
15898 ;;
15899*) : no sockets, so pick relatively harmless default
15900 socksizetype='int'
15901 ;;
15902esac
15903
15904: see what type is used for signed size_t
15905set ssize_t ssizetype int stdio.h sys/types.h
15906eval $typedef
15907dflt="$ssizetype"
5440bc8e 15908$cat > try.c <<EOM
b4eb6b3d
JH
15909#include <stdio.h>
15910#include <sys/types.h>
15911#define Size_t $sizetype
15912#define SSize_t $dflt
15913int main()
15914{
15915 if (sizeof(Size_t) == sizeof(SSize_t))
15916 printf("$dflt\n");
15917 else if (sizeof(Size_t) == sizeof(int))
15918 printf("int\n");
15919 else
15920 printf("long\n");
15921 exit(0);
15922}
15923EOM
15924echo " "
5440bc8e
JH
15925set try
15926if eval $compile_ok && $run ./try > /dev/null; then
15927 ssizetype=`$run ./try`
b4eb6b3d
JH
15928 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15929else
15930 $cat >&4 <<EOM
15931Help! I can't compile and run the ssize_t test program: please enlighten me!
15932(This is probably a misconfiguration in your system or libraries, and
15933you really ought to fix it. Still, I'll try anyway.)
15934
15935I need a type that is the same size as $sizetype, but is guaranteed to
15936be signed. Common values are ssize_t, int and long.
15937
15938EOM
15939 rp="What signed type is the same size as $sizetype?"
15940 . ./myread
15941 ssizetype="$ans"
15942fi
5440bc8e 15943$rm -f try try.*
b4eb6b3d
JH
15944
15945: see what type of char stdio uses.
15946echo " "
aa517f50
JH
15947echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15948if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
15949 echo "Your stdio uses unsigned chars." >&4
15950 stdchar="unsigned char"
15951else
aa517f50
JH
15952 echo "Your stdio uses signed chars." >&4
15953 stdchar="char"
b4eb6b3d 15954fi
aa517f50
JH
15955$rm -f stdioh
15956
15957
b4eb6b3d
JH
15958
15959: see if time exists
15960echo " "
15961if test "X$d_time" = X -o X"$timetype" = X; then
15962 if set time val -f d_time; eval $csym; $val; then
15963 echo 'time() found.' >&4
15964 val="$define"
15965 rp="What is the type returned by time() on this system?"
15966 set time_t timetype long stdio.h sys/types.h
15967 eval $typedef_ask
15968 else
15969 echo 'time() not found, hope that will do.' >&4
15970 val="$undef"
15971 timetype='int';
15972 fi
15973 set d_time
15974 eval $setvar
15975fi
15976
15977: see what type uids are declared as in the kernel
15978echo " "
15979echo "Looking for the type for user ids returned by getuid()."
15980set uid_t uidtype xxx stdio.h sys/types.h
15981eval $typedef
15982case "$uidtype" in
15983xxx)
15984 xxx=`./findhdr sys/user.h`
15985 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15986 case $1 in
15987 unsigned) dflt="$1 $2" ;;
15988 *) dflt="$1" ;;
15989 esac
15990 ;;
15991*) dflt="$uidtype";;
15992esac
15993case "$uidtype" in
15994uid_t) echo "uid_t found." ;;
15995*) rp="What is the type for user ids returned by getuid()?"
15996 . ./myread
15997 uidtype="$ans"
15998 ;;
15999esac
16000
16001echo " "
16002case "$uidtype" in
16003*_t) zzz="$uidtype" ;;
16004*) zzz="uid" ;;
16005esac
16006echo "Checking the size of $zzz..." >&4
16007cat > try.c <<EOCP
16008#include <sys/types.h>
16009#include <stdio.h>
16010int main() {
16011 printf("%d\n", (int)sizeof($uidtype));
16012 exit(0);
16013}
16014EOCP
16015set try
16016if eval $compile_ok; then
5440bc8e 16017 yyy=`$run ./try`
b4eb6b3d
JH
16018 case "$yyy" in
16019 '') uidsize=4
16020 echo "(I can't execute the test program--guessing $uidsize.)" >&4
16021 ;;
16022 *) uidsize=$yyy
16023 echo "Your $zzz is $uidsize bytes long."
16024 ;;
16025 esac
16026else
16027 uidsize=4
16028 echo "(I can't compile the test program--guessing $uidsize.)" >&4
16029fi
16030
16031echo " "
16032case "$uidtype" in
16033*_t) zzz="$uidtype" ;;
16034*) zzz="uid" ;;
16035esac
16036echo "Checking the sign of $zzz..." >&4
16037cat > try.c <<EOCP
16038#include <sys/types.h>
16039#include <stdio.h>
16040int main() {
16041 $uidtype foo = -1;
16042 if (foo < 0)
16043 printf("-1\n");
16044 else
16045 printf("1\n");
16046}
16047EOCP
16048set try
16049if eval $compile; then
5440bc8e 16050 yyy=`$run ./try`
b4eb6b3d
JH
16051 case "$yyy" in
16052 '') uidsign=1
16053 echo "(I can't execute the test program--guessing unsigned.)" >&4
16054 ;;
16055 *) uidsign=$yyy
16056 case "$uidsign" in
16057 1) echo "Your $zzz is unsigned." ;;
16058 -1) echo "Your $zzz is signed." ;;
16059 esac
16060 ;;
16061 esac
16062else
16063 uidsign=1
16064 echo "(I can't compile the test program--guessing unsigned.)" >&4
16065fi
16066
16067
16068
16069echo " "
16070$echo "Checking the format string to be used for uids..." >&4
16071
16072case "$uidsign" in
16073-1) if $test X"$uidsize" = X"$ivsize"; then
16074 uidformat="$ivdformat"
16075 else
16076 if $test X"$uidsize" = X"$longsize"; then
16077 uidformat='"ld"'
16078 else
16079 if $test X"$uidsize" = X"$intsize"; then
16080 uidformat='"d"'
16081 else
16082 if $test X"$uidsize" = X"$shortsize"; then
16083 uidformat='"hd"'
16084 fi
16085 fi
16086 fi
16087 fi
16088 ;;
16089*) if $test X"$uidsize" = X"$uvsize"; then
16090 uidformat="$uvuformat"
16091 else
16092 if $test X"$uidsize" = X"$longsize"; then
16093 uidformat='"lu"'
16094 else
16095 if $test X"$uidsize" = X"$intsize"; then
16096 uidformat='"u"'
16097 else
16098 if $test X"$uidsize" = X"$shortsize"; then
16099 uidformat='"hu"'
16100 fi
16101 fi
16102 fi
16103 fi
16104 ;;
16105esac
16106
3659ebf1
JH
16107: determine compiler compiler
16108case "$yacc" in
16109'')
16110 dflt=yacc;;
16111*)
16112 dflt="$yacc";;
16113esac
16114echo " "
16115comp='yacc'
3c728e00 16116if $test -f "$byacc$_exe"; then
3659ebf1
JH
16117 dflt="$byacc"
16118 comp="byacc or $comp"
16119fi
3c728e00 16120if $test -f "$bison$_exe"; then
3659ebf1
JH
16121 comp="$comp or bison -y"
16122fi
16123rp="Which compiler compiler ($comp) shall I use?"
16124. ./myread
16125yacc="$ans"
16126case "$yacc" in
16127*bis*)
16128 case "$yacc" in
16129 *-y*) ;;
16130 *)
16131 yacc="$yacc -y"
16132 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
16133 ;;
16134 esac
16135 ;;
16136esac
16137
758a5d79
JH
16138: see if this is a fp.h system
16139set fp.h i_fp
16140eval $inhdr
16141
16142: see if this is a fp_class.h system
16143set fp_class.h i_fp_class
16144eval $inhdr
16145
b4eb6b3d 16146: see if this is a ieeefp.h system
b5b9f165
JH
16147case "$i_ieeefp" in
16148'' ) set ieeefp.h i_ieeefp
16149 eval $inhdr
16150 ;;
16151esac
b4eb6b3d
JH
16152
16153: see if this is a libutil.h system
16154set libutil.h i_libutil
16155eval $inhdr
16156
16157: see if locale.h is available
16158set locale.h i_locale
16159eval $inhdr
16160
16161: see if mach cthreads are available
16162if test "X$usethreads" = "X$define"; then
16163 set mach/cthreads.h i_machcthr
16164 eval $inhdr
16165else
16166 i_machcthr="$undef"
16167fi
16168
16169
16170
16171: see if this is a math.h system
16172set math.h i_math
16173eval $inhdr
16174
16175: see if this is a mntent.h system
16176set mntent.h i_mntent
16177eval $inhdr
16178
16179: see if ndbm.h is available
16180set ndbm.h t_ndbm
16181eval $inhdr
1c6861ad
JS
16182
16183case "$t_ndbm" in
16184$undef)
16185 # Some Linux distributions such as RedHat 7.1 put the
16186 # ndbm.h header in /usr/include/gdbm/ndbm.h.
16187 if $test -f /usr/include/gdbm/ndbm.h; then
d11b91bf 16188 echo '<gdbm/ndbm.h> found.'
1c6861ad
JS
16189 ccflags="$ccflags -I/usr/include/gdbm"
16190 cppflags="$cppflags -I/usr/include/gdbm"
16191 t_ndbm=$define
16192 fi
16193 ;;
16194esac
16195
b4eb6b3d
JH
16196case "$t_ndbm" in
16197$define)
16198 : see if dbm_open exists
16199 set dbm_open d_dbm_open
16200 eval $inlibc
16201 case "$d_dbm_open" in
16202 $undef)
16203 t_ndbm="$undef"
16204 echo "We won't be including <ndbm.h>"
16205 ;;
16206 esac
16207 ;;
16208esac
16209val="$t_ndbm"
16210set i_ndbm
16211eval $setvar
16212
16213: see if net/errno.h is available
16214val=''
16215set net/errno.h val
16216eval $inhdr
16217
16218: Unfortunately, it causes problems on some systems. Arrgh.
16219case "$val" in
16220$define)
16221 cat > try.c <<'EOM'
16222#include <stdio.h>
16223#include <errno.h>
16224#include <net/errno.h>
16225int func()
16226{
16227 return ENOTSOCK;
16228}
16229EOM
16230 if $cc $ccflags -c try.c >/dev/null 2>&1; then
16231 echo "We'll be including <net/errno.h>." >&4
16232 else
16233 echo "We won't be including <net/errno.h>." >&4
16234 val="$undef"
16235 fi
16236 $rm -f try.* try
16237 ;;
16238esac
16239set i_neterrno
16240eval $setvar
16241
16242: see if netinet/tcp.h is available
16243set netinet/tcp.h i_netinettcp
16244eval $inhdr
16245
16246: see if this is a poll.h system
16247set poll.h i_poll
16248eval $inhdr
16249
16250: see if this is a prot.h system
16251set prot.h i_prot
16252eval $inhdr
16253
16254echo " "
16255$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
16256$cat <<'EOSH' > Cppsym.know
16257a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
16258AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
16259alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
16260ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
16261BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
16262BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
16263bull c cadmus clipper CMU COFF COMPILER_VERSION
16264concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
16265CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
4f17444b
JH
16266Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
16267FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
16268GLIBC GLIBC_MINOR
16269GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
b4eb6b3d
JH
16270H3050R H3050RX hbullx20 hcx host_mips
16271hp200 hp300 hp700 HP700 hp800 hp9000
16272hp9000s200 hp9000s300 hp9000s400 hp9000s500
16273hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
16274i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 16275IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
16276INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
16277LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
16278LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
16279Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
16280LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
16281M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
16282M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
16283M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
16284MATH_HAS_NO_SIDE_EFFECTS
16285mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
16286mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
16287mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
16288MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
16289mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
16290NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 16291news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
16292ns32016 ns32332 ns32k nsc32000
16293OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
16294pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
16295pc532 pdp11 PGC PIC plexus PORTAR posix
16296POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
16297POSIX_C_SOURCE POSIX_SOURCE POWER
16298PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 16299riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
16300SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
16301sony sony_news sonyrisc sparc sparclite spectrum
16302stardent stdc STDC_EXT stratos sun sun3 sun386
16303Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
16304SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
16305SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
16306sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 16307TM3200 TM5400 TM5600
b4eb6b3d
JH
16308tower tower32 tower32_200 tower32_600 tower32_700
16309tower32_800 tower32_850 tss
16310u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
16311ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
4f17444b
JH
16312unix UNIX95 UNIX99 unixpc unos
16313USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
16314USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
16315USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
16316USGr4 USGr4_2
b4eb6b3d
JH
16317Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16318XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16319XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16320z8000
16321EOSH
16322# Maybe put other stuff here too.
16323cat <<EOSH >>Cppsym.know
16324$osname
16325EOSH
16326./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16327./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16328$cat Cppsym.know > Cppsym.c
381aa1ff 16329$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
16330$rm -f Cppsym.a Cppsym.b Cppsym.c
16331cat <<EOSH > Cppsym
16332$startsh
16333if $test \$# -gt 0; then
16334 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16335 if $test -s Cppsym.got; then
16336 $rm -f Cppsym.got
16337 exit 0
16338 fi
16339 $rm -f Cppsym.got
16340 exit 1
16341else
16342 $tr " " "$trnl" | ./Cppsym.try
16343 exit 0
16344fi
16345EOSH
16346chmod +x Cppsym
16347$eunicefix Cppsym
16348cat <<EOSH > Cppsym.try
16349$startsh
16350cat <<'EOCP' > try.c
16351#include <stdio.h>
16352int main() {
16353EOCP
16354$awk \\
16355EOSH
16356cat <<'EOSH' >> Cppsym.try
16357'length($1) > 0 {
2ef53570
JH
16358 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
16359 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
16360 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
16361 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 16362}' >> try.c
2ef53570 16363echo 'return 0;}' >> try.c
b4eb6b3d
JH
16364EOSH
16365cat <<EOSH >> Cppsym.try
16366ccflags="$ccflags"
16367case "$osname-$gccversion" in
16368irix-) ccflags="\$ccflags -woff 1178" ;;
16369os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16370esac
5440bc8e 16371$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
16372EOSH
16373chmod +x Cppsym.try
16374$eunicefix Cppsym.try
16375./Cppsym < Cppsym.know > Cppsym.true
16376: now check the C compiler for additional symbols
16377postprocess_cc_v=''
16378case "$osname" in
16379aix) postprocess_cc_v="|$tr , ' '" ;;
16380esac
16381$cat >ccsym <<EOS
16382$startsh
16383$cat >tmp.c <<EOF
16384extern int foo;
16385EOF
16386for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16387do
16388 case "\$i" in
16389 -D*) echo "\$i" | $sed 's/^-D//';;
16390 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16391 esac
16392done
16393$rm -f try.c
16394EOS
16395postprocess_cc_v=''
16396chmod +x ccsym
16397$eunicefix ccsym
16398./ccsym > ccsym1.raw
16399if $test -s ccsym1.raw; then
16400 $sort ccsym1.raw | $uniq >ccsym.raw
16401else
16402 mv ccsym1.raw ccsym.raw
16403fi
16404
16405$awk '/\=/ { print $0; next }
16406 { print $0"=1" }' ccsym.raw >ccsym.list
16407$awk '/\=/ { print $0; next }
16408 { print $0"=1" }' Cppsym.true >ccsym.true
16409$comm -13 ccsym.true ccsym.list >ccsym.own
16410$comm -12 ccsym.true ccsym.list >ccsym.com
16411$comm -23 ccsym.true ccsym.list >ccsym.cpp
16412also=''
16413if $test -z ccsym.raw; then
16414 echo "Your C compiler doesn't seem to define any symbols!" >&4
16415 echo " "
16416 echo "However, your C preprocessor defines the following symbols:"
16417 $cat Cppsym.true
16418 ccsymbols=''
16419 cppsymbols=`$cat Cppsym.true`
16420 cppsymbols=`echo $cppsymbols`
16421 cppccsymbols="$cppsymbols"
16422else
16423 if $test -s ccsym.com; then
16424 echo "Your C compiler and pre-processor define these symbols:"
16425 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16426 also='also '
16427 symbols='ones'
16428 cppccsymbols=`$cat ccsym.com`
16429 cppccsymbols=`echo $cppccsymbols`
16430 $test "$silent" || sleep 1
16431 fi
16432 if $test -s ccsym.cpp; then
16433 $test "$also" && echo " "
16434 echo "Your C pre-processor ${also}defines the following symbols:"
16435 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16436 also='further '
16437 cppsymbols=`$cat ccsym.cpp`
16438 cppsymbols=`echo $cppsymbols`
16439 $test "$silent" || sleep 1
16440 fi
16441 if $test -s ccsym.own; then
16442 $test "$also" && echo " "
16443 echo "Your C compiler ${also}defines the following cpp symbols:"
16444 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16445 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16446 ccsymbols=`$cat ccsym.own`
16447 ccsymbols=`echo $ccsymbols`
16448 $test "$silent" || sleep 1
16449 fi
16450fi
b4eb6b3d
JH
16451
16452: see if this is a termio system
16453val="$undef"
16454val2="$undef"
16455val3="$undef"
16456if $test `./findhdr termios.h`; then
16457 set tcsetattr i_termios
16458 eval $inlibc
16459 val3="$i_termios"
16460fi
16461echo " "
16462case "$val3" in
16463"$define") echo "You have POSIX termios.h... good!" >&4;;
16464*) if ./Cppsym pyr; then
16465 case "`/bin/universe`" in
16466 ucb) if $test `./findhdr sgtty.h`; then
16467 val2="$define"
16468 echo "<sgtty.h> found." >&4
16469 else
16470 echo "System is pyramid with BSD universe."
16471 echo "<sgtty.h> not found--you could have problems." >&4
16472 fi;;
16473 *) if $test `./findhdr termio.h`; then
16474 val="$define"
16475 echo "<termio.h> found." >&4
16476 else
16477 echo "System is pyramid with USG universe."
16478 echo "<termio.h> not found--you could have problems." >&4
16479 fi;;
16480 esac
16481 elif ./usg; then
16482 if $test `./findhdr termio.h`; then
16483 echo "<termio.h> found." >&4
16484 val="$define"
16485 elif $test `./findhdr sgtty.h`; then
16486 echo "<sgtty.h> found." >&4
16487 val2="$define"
16488 else
16489echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16490 fi
16491 else
16492 if $test `./findhdr sgtty.h`; then
16493 echo "<sgtty.h> found." >&4
16494 val2="$define"
16495 elif $test `./findhdr termio.h`; then
16496 echo "<termio.h> found." >&4
16497 val="$define"
16498 else
16499echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16500 fi
16501 fi;;
16502esac
16503set i_termio; eval $setvar
16504val=$val2; set i_sgtty; eval $setvar
16505val=$val3; set i_termios; eval $setvar
16506
16507: see if this is a shadow.h system
16508set shadow.h i_shadow
16509eval $inhdr
16510
b4eb6b3d
JH
16511: see if stddef is available
16512set stddef.h i_stddef
16513eval $inhdr
923fc586 16514
b4eb6b3d
JH
16515: see if this is a sunmath.h system
16516set sunmath.h i_sunmath
16517eval $inhdr
5f80c64f 16518
b4eb6b3d
JH
16519: see if sys/access.h is available
16520set sys/access.h i_sysaccess
16521eval $inhdr
16522
16523: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16524set sys/filio.h i_sysfilio
16525eval $inhdr
16526echo " "
16527if $test `./findhdr sys/ioctl.h`; then
16528 val="$define"
16529 echo '<sys/ioctl.h> found.' >&4
16530else
16531 val="$undef"
16532 if $test $i_sysfilio = "$define"; then
16533 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 16534 else
b4eb6b3d
JH
16535 $test $i_sgtty = "$define" && xxx="sgtty.h"
16536 $test $i_termio = "$define" && xxx="termio.h"
16537 $test $i_termios = "$define" && xxx="termios.h"
16538echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16539 fi
16540fi
16541set i_sysioctl
16542eval $setvar
16543
49a78c82
JH
16544: see if socket ioctl defs are in sys/sockio.h
16545echo " "
16546xxx=`./findhdr sys/sockio.h`
16547if $test "$xxx"; then
16548 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16549 val="$define"
16550 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16551 else
16552 val="$undef"
16553 echo "No socket ioctls found in <sys/sockio.h>." >&4
16554 fi
16555else
16556 val="$undef"
16557 $cat <<EOM
16558<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16559EOM
16560fi
16561set i_syssockio
16562eval $setvar
16563
b4eb6b3d
JH
16564
16565: see if this is a syslog.h system
16566set syslog.h i_syslog
16567eval $inhdr
16568
16569
16570: see if this is a sys/mode.h system
16571set sys/mode.h i_sysmode
16572eval $inhdr
16573
16574: see if sys/resource.h has to be included
16575set sys/resource.h i_sysresrc
16576eval $inhdr
16577
16578: see if sys/security.h is available
16579set sys/security.h i_syssecrt
16580eval $inhdr
16581
16582: see if this is a sys/statvfs.h system
16583set sys/statvfs.h i_sysstatvfs
16584eval $inhdr
16585
b4eb6b3d
JH
16586: see if this is a sys/un.h system
16587set sys/un.h i_sysun
16588eval $inhdr
16589
16590
16591: see if this is a sys/utsname.h system
16592set sys/utsname.h i_sysutsname
16593eval $inhdr
16594
16595: see if this is a syswait system
16596set sys/wait.h i_syswait
16597eval $inhdr
16598
16599: see if this is a ustat.h system
16600set ustat.h i_ustat
16601eval $inhdr
16602
16603: see if this is an utime system
16604set utime.h i_utime
16605eval $inhdr
16606
16607: see if this is a values.h system
16608set values.h i_values
16609eval $inhdr
16610
16611: see if this is a vfork system
16612case "$d_vfork" in
16613"$define")
16614 set vfork.h i_vfork
16615 eval $inhdr
16616 ;;
16617*)
16618 i_vfork="$undef"
16619 ;;
16620esac
16621
16622: see if gdbm.h is available
16623set gdbm.h t_gdbm
16624eval $inhdr
16625case "$t_gdbm" in
16626$define)
16627 : see if gdbm_open exists
16628 set gdbm_open d_gdbm_open
16629 eval $inlibc
16630 case "$d_gdbm_open" in
16631 $undef)
16632 t_gdbm="$undef"
16633 echo "We won't be including <gdbm.h>"
5f80c64f 16634 ;;
b4eb6b3d
JH
16635 esac
16636 ;;
16637esac
16638val="$t_gdbm"
16639set i_gdbm
16640eval $setvar
16641
16642echo " "
16643echo "Looking for extensions..." >&4
16644: If we are using the old config.sh, known_extensions may contain
16645: old or inaccurate or duplicate values.
16646known_extensions=''
16647nonxs_extensions=''
16648: We do not use find because it might not be available.
16649: We do not just use MANIFEST because the user may have dropped
16650: some additional extensions into the source tree and expect them
16651: to be built.
16652
16653: Function to recursively find available extensions, ignoring DynaLoader
16654: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16655find_extensions='
16656 for xxx in *; do
16657 case "$xxx" in
16658 DynaLoader|dynaload) ;;
16659 *)
16660 if $test -f $xxx/$xxx.xs; then
16661 known_extensions="$known_extensions $1$xxx";
16662 elif $test -f $xxx/Makefile.PL; then
16663 nonxs_extensions="$nonxs_extensions $1$xxx";
16664 else
16665 if $test -d $xxx -a $# -lt 10; then
16666 set $1$xxx/ $*;
6904989c 16667 cd "$xxx";
b4eb6b3d
JH
16668 eval $find_extensions;
16669 cd ..;
16670 shift;
16671 fi;
16672 fi
16673 ;;
16674 esac;
16675 done'
16676tdir=`pwd`
6904989c 16677cd "$rsrc/ext"
b4eb6b3d
JH
16678set X
16679shift
16680eval $find_extensions
4e1a6d26
AD
16681# Special case: Add in threads/shared since it is not picked up by the
16682# recursive find above (and adding in general recursive finding breaks
16683# SDBM_File/sdbm). A.D. 10/25/2001.
a3c02183
JH
16684# Encode::XX need explicit mentions for the same reason.
16685# --jhi 2002-03-04
16686known_extensions="$known_extensions threads/shared Encode/CN Encode/JP Encode/KR Encode/TW"
b4eb6b3d
JH
16687set X $nonxs_extensions
16688shift
16689nonxs_extensions="$*"
16690set X $known_extensions
16691shift
16692known_extensions="$*"
6904989c 16693cd "$tdir"
b4eb6b3d
JH
16694
16695: Now see which are supported on this system.
16696avail_ext=''
16697for xxx in $known_extensions ; do
16698 case "$xxx" in
16699 DB_File|db_file)
16700 case "$i_db" in
16701 $define) avail_ext="$avail_ext $xxx" ;;
16702 esac
16703 ;;
16704 GDBM_File|gdbm_fil)
16705 case "$i_gdbm" in
16706 $define) avail_ext="$avail_ext $xxx" ;;
16707 esac
16708 ;;
1d59c593 16709 I18N/Langinfo|i18n_lan)
4bbcc6e8
JH
16710 case "$i_langinfo$d_nl_langinfo" in
16711 $define$define) avail_ext="$avail_ext $xxx" ;;
16712 esac
16713 ;;
b4eb6b3d
JH
16714 NDBM_File|ndbm_fil)
16715 case "$i_ndbm" in
16716 $define)
16717 case "$osname-$use64bitint" in
252f4fb1 16718 cygwin-*|hpux-define)
b4eb6b3d
JH
16719 case "$libs" in
16720 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16721 esac
16722 ;;
16723 *) avail_ext="$avail_ext $xxx" ;;
16724 esac
16725 ;;
16726 esac
16727 ;;
16728 ODBM_File|odbm_fil)
16729 case "${i_dbm}${i_rpcsvcdbm}" in
16730 *"${define}"*)
16731 case "$osname-$use64bitint" in
252f4fb1 16732 cygwin-*|hpux-define)
b4eb6b3d
JH
16733 case "$libs" in
16734 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16735 esac
16736 ;;
16737 *) avail_ext="$avail_ext $xxx" ;;
16738 esac
16739 ;;
16740 esac
16741 ;;
16742 POSIX|posix)
16743 case "$useposix" in
16744 true|define|y) avail_ext="$avail_ext $xxx" ;;
16745 esac
16746 ;;
16747 Opcode|opcode)
16748 case "$useopcode" in
16749 true|define|y) avail_ext="$avail_ext $xxx" ;;
16750 esac
16751 ;;
16752 Socket|socket)
16753 case "$d_socket" in
4a9f028c
JH
16754 true|$define|y)
16755 case "$osname" in
16756 beos) ;; # not unless BONE
16757 *) avail_ext="$avail_ext $xxx" ;;
16758 esac
16759 ;;
b4eb6b3d
JH
16760 esac
16761 ;;
16762 Sys/Syslog|sys/syslog)
16763 : XXX syslog requires socket
16764 case "$d_socket" in
16765 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16766 esac
16767 ;;
16768 Thread|thread)
b00ec89b
AB
16769 case "$usethreads" in
16770 true|$define|y)
16771 case "$useithreads" in
16772 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16773 esac
b4eb6b3d
JH
16774 esac
16775 ;;
7deadc5f 16776 threads|threads/shared)
1dca008a
JH
16777 case "$usethreads" in
16778 true|$define|y)
16779 case "$useithreads" in
16780 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16781 esac
16782 esac
16783 ;;
b4eb6b3d
JH
16784 IPC/SysV|ipc/sysv)
16785 : XXX Do we need a useipcsysv variable here
16786 case "${d_msg}${d_sem}${d_shm}" in
16787 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16788 esac
16789 ;;
16790 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
16791 ;;
16792 esac
b4eb6b3d 16793done
5f80c64f 16794
b4eb6b3d
JH
16795set X $avail_ext
16796shift
16797avail_ext="$*"
5f80c64f 16798
b4eb6b3d
JH
16799: Now see which nonxs extensions are supported on this system.
16800: For now assume all are.
16801nonxs_ext=''
16802for xxx in $nonxs_extensions ; do
16803 case "$xxx" in
16804 *) nonxs_ext="$nonxs_ext $xxx"
16805 ;;
16806 esac
16807done
5f80c64f 16808
b4eb6b3d
JH
16809set X $nonxs_ext
16810shift
16811nonxs_ext="$*"
16812
16813case $usedl in
16814$define)
16815 $cat <<EOM
16816A number of extensions are supplied with $package. You may choose to
16817compile these extensions for dynamic loading (the default), compile
16818them into the $package executable (static loading), or not include
16819them at all. Answer "none" to include no extensions.
16820Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
16821
16822EOM
b4eb6b3d
JH
16823 case "$dynamic_ext" in
16824 '') dflt="$avail_ext" ;;
16825 *) dflt="$dynamic_ext"
16826 # Perhaps we are reusing an old out-of-date config.sh.
16827 case "$hint" in
16828 previous)
16829 if test X"$dynamic_ext" != X"$avail_ext"; then
16830 $cat <<EOM
16831NOTICE: Your previous config.sh list may be incorrect.
16832The extensions now available to you are
16833 ${avail_ext}
16834but the default list from your previous config.sh is
16835 ${dynamic_ext}
9c839522 16836
b4eb6b3d
JH
16837EOM
16838 fi
9c839522
PM
16839 ;;
16840 esac
b4eb6b3d
JH
16841 ;;
16842 esac
5f80c64f 16843 case "$dflt" in
b4eb6b3d
JH
16844 '') dflt=none;;
16845 esac
16846 rp="What extensions do you wish to load dynamically?"
16847 . ./myread
16848 case "$ans" in
16849 none) dynamic_ext=' ' ;;
16850 *) dynamic_ext="$ans" ;;
5f80c64f 16851 esac
5f80c64f 16852
b4eb6b3d
JH
16853 case "$static_ext" in
16854 '')
16855 : Exclude those already listed in dynamic linking
16856 dflt=''
16857 for xxx in $avail_ext; do
16858 case " $dynamic_ext " in
16859 *" $xxx "*) ;;
16860 *) dflt="$dflt $xxx" ;;
16861 esac
16862 done
16863 set X $dflt
16864 shift
16865 dflt="$*"
16866 ;;
16867 *) dflt="$static_ext"
16868 ;;
16869 esac
9c839522 16870
b4eb6b3d
JH
16871 case "$dflt" in
16872 '') dflt=none;;
16873 esac
16874 rp="What extensions do you wish to load statically?"
16875 . ./myread
16876 case "$ans" in
16877 none) static_ext=' ' ;;
16878 *) static_ext="$ans" ;;
16879 esac
16880 ;;
16881*)
16882 $cat <<EOM
16883A number of extensions are supplied with $package. Answer "none"
16884to include no extensions.
16885Note that DynaLoader is always built and need not be mentioned here.
9c839522 16886
b4eb6b3d
JH
16887EOM
16888 case "$static_ext" in
16889 '') dflt="$avail_ext" ;;
16890 *) dflt="$static_ext"
16891 # Perhaps we are reusing an old out-of-date config.sh.
16892 case "$hint" in
16893 previous)
16894 if test X"$static_ext" != X"$avail_ext"; then
16895 $cat <<EOM
16896NOTICE: Your previous config.sh list may be incorrect.
16897The extensions now available to you are
16898 ${avail_ext}
16899but the default list from your previous config.sh is
16900 ${static_ext}
5f80c64f
JH
16901
16902EOM
b4eb6b3d
JH
16903 fi
16904 ;;
16905 esac
16906 ;;
16907 esac
16908 : Exclude those that are not xs extensions
16909 case "$dflt" in
16910 '') dflt=none;;
16911 esac
16912 rp="What extensions do you wish to include?"
16913 . ./myread
16914 case "$ans" in
16915 none) static_ext=' ' ;;
16916 *) static_ext="$ans" ;;
16917 esac
16918 ;;
5f80c64f
JH
16919esac
16920
b4eb6b3d
JH
16921set X $dynamic_ext $static_ext $nonxs_ext
16922shift
16923extensions="$*"
16924
9c839522
PM
16925: Remove libraries needed only for extensions
16926: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
16927: The exception is SunOS 4.x, which needs them.
16928case "${osname}X${osvers}" in
16929sunos*X4*)
16930 perllibs="$libs"
16931 ;;
16932*) case "$usedl" in
16933 $define|true|[yY]*)
16934 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16935 shift
16936 perllibs="$*"
16937 ;;
16938 *) perllibs="$libs"
16939 ;;
16940 esac
16941 ;;
9c839522 16942esac
5f80c64f
JH
16943
16944: Remove build directory name from cppstdin so it can be used from
16945: either the present location or the final installed location.
16946echo " "
16947: Get out of the UU directory to get correct path name.
16948cd ..
16949case "$cppstdin" in
16950`pwd`/cppstdin)
16951 echo "Stripping down cppstdin path name"
16952 cppstdin=cppstdin
16953 ;;
16954esac
16955cd UU
16956
16957: end of configuration questions
16958echo " "
16959echo "End of configuration questions."
16960echo " "
16961
16962: back to where it started
16963if test -d ../UU; then
16964 cd ..
16965fi
16966
48370efc
JH
16967: configuration may be patched via a 'config.arch' file
16968if $test -f config.arch; then
16969 echo "I see a config.arch file, loading it."
16970 . ./config.arch
16971fi
16972
5f80c64f
JH
16973: configuration may be patched via a 'config.over' file
16974if $test -f config.over; then
16975 echo " "
16976 dflt=y
16977 rp='I see a config.over file. Do you wish to load it?'
16978 . UU/myread
16979 case "$ans" in
16980 n*) echo "OK, I'll ignore it.";;
16981 *) . ./config.over
16982 echo "Configuration override changes have been loaded."
16983 ;;
16984 esac
16985fi
16986
16987: in case they want portability, strip down executable paths
16988case "$d_portable" in
16989"$define")
16990 echo " "
16991 echo "Stripping down executable paths..." >&4
16992 for file in $loclist $trylist; do
534ac15a
JH
16993 eval temp=\$$file
16994 eval $file=`basename $temp`
5f80c64f
JH
16995 done
16996 ;;
16997esac
16998
16999: create config.sh file
17000echo " "
17001echo "Creating config.sh..." >&4
17002$spitshell <<EOT >config.sh
17003$startsh
17004#
17005# This file was produced by running the Configure script. It holds all the
17006# definitions figured out by Configure. Should you modify one of these values,
17007# do not forget to propagate your changes by running "Configure -der". You may
17008# instead choose to run each of the .SH files by yourself, or "Configure -S".
17009#
17010
17011# Package name : $package
17012# Source directory : $src
17013# Configuration time: $cf_time
17014# Configured by : $cf_by
17015# Target system : $myuname
17016
17017Author='$Author'
17018Date='$Date'
17019Header='$Header'
17020Id='$Id'
17021Locker='$Locker'
17022Log='$Log'
17023Mcc='$Mcc'
17024RCSfile='$RCSfile'
17025Revision='$Revision'
17026Source='$Source'
17027State='$State'
17028_a='$_a'
17029_exe='$_exe'
17030_o='$_o'
b4eb6b3d 17031afs='$afs'
a6d26a0d 17032afsroot='$afsroot'
b4eb6b3d
JH
17033alignbytes='$alignbytes'
17034ansi2knr='$ansi2knr'
17035aphostname='$aphostname'
17036api_revision='$api_revision'
17037api_subversion='$api_subversion'
17038api_version='$api_version'
17039api_versionstring='$api_versionstring'
5f80c64f 17040ar='$ar'
b4eb6b3d
JH
17041archlib='$archlib'
17042archlibexp='$archlibexp'
17043archname64='$archname64'
17044archname='$archname'
5f80c64f
JH
17045archobjs='$archobjs'
17046awk='$awk'
b4eb6b3d 17047baserev='$baserev'
5f80c64f 17048bash='$bash'
b4eb6b3d
JH
17049bin='$bin'
17050bincompat5005='$bincompat5005'
17051binexp='$binexp'
5f80c64f
JH
17052bison='$bison'
17053byacc='$byacc'
b4eb6b3d 17054byteorder='$byteorder'
5f80c64f 17055c='$c'
b4eb6b3d 17056castflags='$castflags'
5f80c64f
JH
17057cat='$cat'
17058cc='$cc'
17059cccdlflags='$cccdlflags'
17060ccdlflags='$ccdlflags'
17061ccflags='$ccflags'
b4eb6b3d 17062ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 17063ccname='$ccname'
b4eb6b3d 17064ccsymbols='$ccsymbols'
6b356c8e 17065ccversion='$ccversion'
5f80c64f 17066cf_by='$cf_by'
b4eb6b3d 17067cf_email='$cf_email'
5f80c64f 17068cf_time='$cf_time'
b4eb6b3d 17069charsize='$charsize'
5f80c64f
JH
17070chgrp='$chgrp'
17071chmod='$chmod'
17072chown='$chown'
b4eb6b3d 17073clocktype='$clocktype'
5f80c64f
JH
17074comm='$comm'
17075compress='$compress'
17076contains='$contains'
17077cp='$cp'
17078cpio='$cpio'
17079cpp='$cpp'
b4eb6b3d
JH
17080cpp_stuff='$cpp_stuff'
17081cppccsymbols='$cppccsymbols'
5f80c64f
JH
17082cppflags='$cppflags'
17083cpplast='$cpplast'
17084cppminus='$cppminus'
17085cpprun='$cpprun'
17086cppstdin='$cppstdin'
b4eb6b3d 17087cppsymbols='$cppsymbols'
b4eb6b3d 17088cryptlib='$cryptlib'
5f80c64f 17089csh='$csh'
b4eb6b3d
JH
17090d_Gconvert='$d_Gconvert'
17091d_PRIEUldbl='$d_PRIEUldbl'
17092d_PRIFUldbl='$d_PRIFUldbl'
17093d_PRIGUldbl='$d_PRIGUldbl'
17094d_PRIXU64='$d_PRIXU64'
17095d_PRId64='$d_PRId64'
17096d_PRIeldbl='$d_PRIeldbl'
17097d_PRIfldbl='$d_PRIfldbl'
17098d_PRIgldbl='$d_PRIgldbl'
17099d_PRIi64='$d_PRIi64'
17100d_PRIo64='$d_PRIo64'
17101d_PRIu64='$d_PRIu64'
17102d_PRIx64='$d_PRIx64'
17103d_SCNfldbl='$d_SCNfldbl'
74cac757 17104d__fwalk='$d__fwalk'
b4eb6b3d
JH
17105d_access='$d_access'
17106d_accessx='$d_accessx'
17107d_alarm='$d_alarm'
17108d_archlib='$d_archlib'
17109d_atolf='$d_atolf'
17110d_atoll='$d_atoll'
17111d_attribut='$d_attribut'
17112d_bcmp='$d_bcmp'
17113d_bcopy='$d_bcopy'
17114d_bincompat5005='$d_bincompat5005'
5f80c64f 17115d_bsd='$d_bsd'
b4eb6b3d
JH
17116d_bsdgetpgrp='$d_bsdgetpgrp'
17117d_bsdsetpgrp='$d_bsdsetpgrp'
17118d_bzero='$d_bzero'
17119d_casti32='$d_casti32'
17120d_castneg='$d_castneg'
17121d_charvspr='$d_charvspr'
17122d_chown='$d_chown'
17123d_chroot='$d_chroot'
17124d_chsize='$d_chsize'
758a5d79 17125d_class='$d_class'
b4eb6b3d 17126d_closedir='$d_closedir'
4e0554ec 17127d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d
JH
17128d_const='$d_const'
17129d_crypt='$d_crypt'
17130d_csh='$d_csh'
17131d_cuserid='$d_cuserid'
17132d_dbl_dig='$d_dbl_dig'
2ef53570 17133d_dbminitproto='$d_dbminitproto'
b4eb6b3d 17134d_difftime='$d_difftime'
ae0e3d3b 17135d_dirfd='$d_dirfd'
b4eb6b3d
JH
17136d_dirnamlen='$d_dirnamlen'
17137d_dlerror='$d_dlerror'
5f80c64f 17138d_dlopen='$d_dlopen'
b4eb6b3d
JH
17139d_dlsymun='$d_dlsymun'
17140d_dosuid='$d_dosuid'
17141d_drand48proto='$d_drand48proto'
17142d_dup2='$d_dup2'
17143d_eaccess='$d_eaccess'
17144d_endgrent='$d_endgrent'
17145d_endhent='$d_endhent'
17146d_endnent='$d_endnent'
17147d_endpent='$d_endpent'
17148d_endpwent='$d_endpwent'
17149d_endsent='$d_endsent'
17150d_eofnblk='$d_eofnblk'
5f80c64f 17151d_eunice='$d_eunice'
b363b713 17152d_fchdir='$d_fchdir'
b4eb6b3d
JH
17153d_fchmod='$d_fchmod'
17154d_fchown='$d_fchown'
17155d_fcntl='$d_fcntl'
9d9004a9 17156d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
17157d_fd_macros='$d_fd_macros'
17158d_fd_set='$d_fd_set'
17159d_fds_bits='$d_fds_bits'
17160d_fgetpos='$d_fgetpos'
758a5d79
JH
17161d_finite='$d_finite'
17162d_finitel='$d_finitel'
b4eb6b3d
JH
17163d_flexfnam='$d_flexfnam'
17164d_flock='$d_flock'
2ef53570 17165d_flockproto='$d_flockproto'
b4eb6b3d 17166d_fork='$d_fork'
758a5d79 17167d_fp_class='$d_fp_class'
b4eb6b3d 17168d_fpathconf='$d_fpathconf'
758a5d79
JH
17169d_fpclass='$d_fpclass'
17170d_fpclassify='$d_fpclassify'
17171d_fpclassl='$d_fpclassl'
b4eb6b3d
JH
17172d_fpos64_t='$d_fpos64_t'
17173d_frexpl='$d_frexpl'
17174d_fs_data_s='$d_fs_data_s'
17175d_fseeko='$d_fseeko'
17176d_fsetpos='$d_fsetpos'
17177d_fstatfs='$d_fstatfs'
17178d_fstatvfs='$d_fstatvfs'
411ab01c 17179d_fsync='$d_fsync'
b4eb6b3d
JH
17180d_ftello='$d_ftello'
17181d_ftime='$d_ftime'
17182d_getcwd='$d_getcwd'
17183d_getespwnam='$d_getespwnam'
17184d_getfsstat='$d_getfsstat'
17185d_getgrent='$d_getgrent'
17186d_getgrps='$d_getgrps'
17187d_gethbyaddr='$d_gethbyaddr'
17188d_gethbyname='$d_gethbyname'
17189d_gethent='$d_gethent'
17190d_gethname='$d_gethname'
17191d_gethostprotos='$d_gethostprotos'
4e0554ec 17192d_getitimer='$d_getitimer'
b4eb6b3d
JH
17193d_getlogin='$d_getlogin'
17194d_getmnt='$d_getmnt'
17195d_getmntent='$d_getmntent'
17196d_getnbyaddr='$d_getnbyaddr'
17197d_getnbyname='$d_getnbyname'
17198d_getnent='$d_getnent'
17199d_getnetprotos='$d_getnetprotos'
0c0643d0 17200d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
17201d_getpbyname='$d_getpbyname'
17202d_getpbynumber='$d_getpbynumber'
17203d_getpent='$d_getpent'
17204d_getpgid='$d_getpgid'
17205d_getpgrp2='$d_getpgrp2'
17206d_getpgrp='$d_getpgrp'
17207d_getppid='$d_getppid'
17208d_getprior='$d_getprior'
17209d_getprotoprotos='$d_getprotoprotos'
17210d_getprpwnam='$d_getprpwnam'
17211d_getpwent='$d_getpwent'
17212d_getsbyname='$d_getsbyname'
17213d_getsbyport='$d_getsbyport'
17214d_getsent='$d_getsent'
17215d_getservprotos='$d_getservprotos'
17216d_getspnam='$d_getspnam'
17217d_gettimeod='$d_gettimeod'
5f80c64f 17218d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
17219d_grpasswd='$d_grpasswd'
17220d_hasmntopt='$d_hasmntopt'
17221d_htonl='$d_htonl'
b4eb6b3d
JH
17222d_index='$d_index'
17223d_inetaton='$d_inetaton'
17224d_int64_t='$d_int64_t'
17225d_isascii='$d_isascii'
758a5d79
JH
17226d_isfinite='$d_isfinite'
17227d_isinf='$d_isinf'
b4eb6b3d
JH
17228d_isnan='$d_isnan'
17229d_isnanl='$d_isnanl'
17230d_killpg='$d_killpg'
17231d_lchown='$d_lchown'
17232d_ldbl_dig='$d_ldbl_dig'
17233d_link='$d_link'
17234d_locconv='$d_locconv'
17235d_lockf='$d_lockf'
17236d_longdbl='$d_longdbl'
17237d_longlong='$d_longlong'
17238d_lseekproto='$d_lseekproto'
17239d_lstat='$d_lstat'
17240d_madvise='$d_madvise'
17241d_mblen='$d_mblen'
17242d_mbstowcs='$d_mbstowcs'
17243d_mbtowc='$d_mbtowc'
17244d_memchr='$d_memchr'
17245d_memcmp='$d_memcmp'
17246d_memcpy='$d_memcpy'
17247d_memmove='$d_memmove'
17248d_memset='$d_memset'
17249d_mkdir='$d_mkdir'
17250d_mkdtemp='$d_mkdtemp'
17251d_mkfifo='$d_mkfifo'
17252d_mkstemp='$d_mkstemp'
17253d_mkstemps='$d_mkstemps'
17254d_mktime='$d_mktime'
17255d_mmap='$d_mmap'
17256d_modfl='$d_modfl'
e67aeab1 17257d_modfl_pow32_bug='$d_modfl_pow32_bug'
b4eb6b3d
JH
17258d_mprotect='$d_mprotect'
17259d_msg='$d_msg'
17260d_msg_ctrunc='$d_msg_ctrunc'
17261d_msg_dontroute='$d_msg_dontroute'
17262d_msg_oob='$d_msg_oob'
17263d_msg_peek='$d_msg_peek'
17264d_msg_proxy='$d_msg_proxy'
17265d_msgctl='$d_msgctl'
17266d_msgget='$d_msgget'
4e0554ec 17267d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
17268d_msgrcv='$d_msgrcv'
17269d_msgsnd='$d_msgsnd'
17270d_msync='$d_msync'
17271d_munmap='$d_munmap'
17272d_mymalloc='$d_mymalloc'
17273d_nice='$d_nice'
2765b840 17274d_nl_langinfo='$d_nl_langinfo'
b4eb6b3d
JH
17275d_nv_preserves_uv='$d_nv_preserves_uv'
17276d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
17277d_off64_t='$d_off64_t'
17278d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
17279d_oldpthreads='$d_oldpthreads'
17280d_oldsock='$d_oldsock'
17281d_open3='$d_open3'
17282d_pathconf='$d_pathconf'
17283d_pause='$d_pause'
17284d_perl_otherlibdirs='$d_perl_otherlibdirs'
17285d_phostname='$d_phostname'
17286d_pipe='$d_pipe'
17287d_poll='$d_poll'
5f80c64f 17288d_portable='$d_portable'
c7aff470 17289d_procselfexe='$d_procselfexe'
d6483fcc 17290d_pthread_atfork='$d_pthread_atfork'
b4eb6b3d
JH
17291d_pthread_yield='$d_pthread_yield'
17292d_pwage='$d_pwage'
17293d_pwchange='$d_pwchange'
17294d_pwclass='$d_pwclass'
17295d_pwcomment='$d_pwcomment'
17296d_pwexpire='$d_pwexpire'
17297d_pwgecos='$d_pwgecos'
17298d_pwpasswd='$d_pwpasswd'
17299d_pwquota='$d_pwquota'
17300d_qgcvt='$d_qgcvt'
17301d_quad='$d_quad'
17302d_readdir='$d_readdir'
17303d_readlink='$d_readlink'
4e0554ec
JH
17304d_readv='$d_readv'
17305d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
17306d_rename='$d_rename'
17307d_rewinddir='$d_rewinddir'
17308d_rmdir='$d_rmdir'
17309d_safebcpy='$d_safebcpy'
17310d_safemcpy='$d_safemcpy'
17311d_sanemcmp='$d_sanemcmp'
ef9f17be 17312d_sbrkproto='$d_sbrkproto'
b4eb6b3d
JH
17313d_sched_yield='$d_sched_yield'
17314d_scm_rights='$d_scm_rights'
17315d_seekdir='$d_seekdir'
17316d_select='$d_select'
17317d_sem='$d_sem'
17318d_semctl='$d_semctl'
17319d_semctl_semid_ds='$d_semctl_semid_ds'
17320d_semctl_semun='$d_semctl_semun'
17321d_semget='$d_semget'
17322d_semop='$d_semop'
4e0554ec 17323d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
17324d_setegid='$d_setegid'
17325d_seteuid='$d_seteuid'
17326d_setgrent='$d_setgrent'
17327d_setgrps='$d_setgrps'
17328d_sethent='$d_sethent'
4e0554ec 17329d_setitimer='$d_setitimer'
b4eb6b3d
JH
17330d_setlinebuf='$d_setlinebuf'
17331d_setlocale='$d_setlocale'
17332d_setnent='$d_setnent'
17333d_setpent='$d_setpent'
17334d_setpgid='$d_setpgid'
17335d_setpgrp2='$d_setpgrp2'
17336d_setpgrp='$d_setpgrp'
17337d_setprior='$d_setprior'
17338d_setproctitle='$d_setproctitle'
17339d_setpwent='$d_setpwent'
17340d_setregid='$d_setregid'
17341d_setresgid='$d_setresgid'
17342d_setresuid='$d_setresuid'
17343d_setreuid='$d_setreuid'
17344d_setrgid='$d_setrgid'
17345d_setruid='$d_setruid'
17346d_setsent='$d_setsent'
17347d_setsid='$d_setsid'
17348d_setvbuf='$d_setvbuf'
17349d_sfio='$d_sfio'
17350d_shm='$d_shm'
17351d_shmat='$d_shmat'
17352d_shmatprototype='$d_shmatprototype'
17353d_shmctl='$d_shmctl'
17354d_shmdt='$d_shmdt'
17355d_shmget='$d_shmget'
17356d_sigaction='$d_sigaction'
983dbef6 17357d_sigprocmask='$d_sigprocmask'
b4eb6b3d 17358d_sigsetjmp='$d_sigsetjmp'
49a78c82 17359d_sockatmark='$d_sockatmark'
2ef53570 17360d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
17361d_socket='$d_socket'
17362d_socklen_t='$d_socklen_t'
17363d_sockpair='$d_sockpair'
17364d_socks5_init='$d_socks5_init'
17365d_sqrtl='$d_sqrtl'
eef837ea 17366d_sresgproto='$d_sresgproto'
640374d0 17367d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
17368d_statblks='$d_statblks'
17369d_statfs_f_flags='$d_statfs_f_flags'
17370d_statfs_s='$d_statfs_s'
17371d_statvfs='$d_statvfs'
17372d_stdio_cnt_lval='$d_stdio_cnt_lval'
17373d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
17374d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17375d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
17376d_stdio_stream_array='$d_stdio_stream_array'
17377d_stdiobase='$d_stdiobase'
17378d_stdstdio='$d_stdstdio'
17379d_strchr='$d_strchr'
17380d_strcoll='$d_strcoll'
17381d_strctcpy='$d_strctcpy'
17382d_strerrm='$d_strerrm'
17383d_strerror='$d_strerror'
b3c85772 17384d_strftime='$d_strftime'
b4eb6b3d
JH
17385d_strtod='$d_strtod'
17386d_strtol='$d_strtol'
17387d_strtold='$d_strtold'
17388d_strtoll='$d_strtoll'
28e5dec8 17389d_strtoq='$d_strtoq'
b4eb6b3d
JH
17390d_strtoul='$d_strtoul'
17391d_strtoull='$d_strtoull'
17392d_strtouq='$d_strtouq'
17393d_strxfrm='$d_strxfrm'
17394d_suidsafe='$d_suidsafe'
17395d_symlink='$d_symlink'
17396d_syscall='$d_syscall'
2ef53570 17397d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
17398d_sysconf='$d_sysconf'
17399d_sysernlst='$d_sysernlst'
17400d_syserrlst='$d_syserrlst'
17401d_system='$d_system'
17402d_tcgetpgrp='$d_tcgetpgrp'
17403d_tcsetpgrp='$d_tcsetpgrp'
17404d_telldir='$d_telldir'
17405d_telldirproto='$d_telldirproto'
17406d_time='$d_time'
17407d_times='$d_times'
17408d_truncate='$d_truncate'
17409d_tzname='$d_tzname'
4e0554ec
JH
17410d_u32align='$d_u32align'
17411d_ualarm='$d_ualarm'
b4eb6b3d
JH
17412d_umask='$d_umask'
17413d_uname='$d_uname'
17414d_union_semun='$d_union_semun'
758a5d79 17415d_unordered='$d_unordered'
4e0554ec 17416d_usleep='$d_usleep'
2ef53570 17417d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
17418d_ustat='$d_ustat'
17419d_vendorarch='$d_vendorarch'
17420d_vendorbin='$d_vendorbin'
17421d_vendorlib='$d_vendorlib'
17422d_vfork='$d_vfork'
17423d_void_closedir='$d_void_closedir'
17424d_voidsig='$d_voidsig'
17425d_voidtty='$d_voidtty'
17426d_volatile='$d_volatile'
17427d_vprintf='$d_vprintf'
17428d_wait4='$d_wait4'
17429d_waitpid='$d_waitpid'
17430d_wcstombs='$d_wcstombs'
17431d_wctomb='$d_wctomb'
4e0554ec 17432d_writev='$d_writev'
5f80c64f
JH
17433d_xenix='$d_xenix'
17434date='$date'
b4eb6b3d
JH
17435db_hashtype='$db_hashtype'
17436db_prefixtype='$db_prefixtype'
640374d0
JH
17437db_version_major='$db_version_major'
17438db_version_minor='$db_version_minor'
17439db_version_patch='$db_version_patch'
b4eb6b3d
JH
17440defvoidused='$defvoidused'
17441direntrytype='$direntrytype'
17442dlext='$dlext'
5f80c64f 17443dlsrc='$dlsrc'
b4eb6b3d
JH
17444doublesize='$doublesize'
17445drand01='$drand01'
17446dynamic_ext='$dynamic_ext'
17447eagain='$eagain'
17448ebcdic='$ebcdic'
5f80c64f
JH
17449echo='$echo'
17450egrep='$egrep'
17451emacs='$emacs'
17452eunicefix='$eunicefix'
17453exe_ext='$exe_ext'
17454expr='$expr'
b4eb6b3d 17455extensions='$extensions'
6fcddf3b 17456extras='$extras'
b4eb6b3d
JH
17457fflushNULL='$fflushNULL'
17458fflushall='$fflushall'
5f80c64f
JH
17459find='$find'
17460firstmakefile='$firstmakefile'
17461flex='$flex'
b4eb6b3d
JH
17462fpossize='$fpossize'
17463fpostype='$fpostype'
17464freetype='$freetype'
5440bc8e 17465from='$from'
b4eb6b3d
JH
17466full_ar='$full_ar'
17467full_csh='$full_csh'
17468full_sed='$full_sed'
5b463ca7 17469gccosandvers='$gccosandvers'
5f80c64f 17470gccversion='$gccversion'
b4eb6b3d
JH
17471gidformat='$gidformat'
17472gidsign='$gidsign'
17473gidsize='$gidsize'
17474gidtype='$gidtype'
5f80c64f 17475glibpth='$glibpth'
3c728e00 17476gmake='$gmake'
5f80c64f 17477grep='$grep'
b4eb6b3d
JH
17478groupcat='$groupcat'
17479groupstype='$groupstype'
5f80c64f 17480gzip='$gzip'
b4eb6b3d
JH
17481h_fcntl='$h_fcntl'
17482h_sysfile='$h_sysfile'
5f80c64f 17483hint='$hint'
b4eb6b3d
JH
17484hostcat='$hostcat'
17485i16size='$i16size'
17486i16type='$i16type'
17487i32size='$i32size'
17488i32type='$i32type'
17489i64size='$i64size'
17490i64type='$i64type'
17491i8size='$i8size'
17492i8type='$i8type'
17493i_arpainet='$i_arpainet'
17494i_bsdioctl='$i_bsdioctl'
17495i_db='$i_db'
17496i_dbm='$i_dbm'
17497i_dirent='$i_dirent'
5f80c64f 17498i_dld='$i_dld'
b4eb6b3d
JH
17499i_dlfcn='$i_dlfcn'
17500i_fcntl='$i_fcntl'
17501i_float='$i_float'
758a5d79
JH
17502i_fp='$i_fp'
17503i_fp_class='$i_fp_class'
b4eb6b3d
JH
17504i_gdbm='$i_gdbm'
17505i_grp='$i_grp'
b4eb6b3d
JH
17506i_ieeefp='$i_ieeefp'
17507i_inttypes='$i_inttypes'
2765b840 17508i_langinfo='$i_langinfo'
b4eb6b3d
JH
17509i_libutil='$i_libutil'
17510i_limits='$i_limits'
17511i_locale='$i_locale'
17512i_machcthr='$i_machcthr'
17513i_malloc='$i_malloc'
17514i_math='$i_math'
17515i_memory='$i_memory'
17516i_mntent='$i_mntent'
17517i_ndbm='$i_ndbm'
17518i_netdb='$i_netdb'
17519i_neterrno='$i_neterrno'
17520i_netinettcp='$i_netinettcp'
17521i_niin='$i_niin'
17522i_poll='$i_poll'
17523i_prot='$i_prot'
17524i_pthread='$i_pthread'
17525i_pwd='$i_pwd'
17526i_rpcsvcdbm='$i_rpcsvcdbm'
17527i_sfio='$i_sfio'
17528i_sgtty='$i_sgtty'
17529i_shadow='$i_shadow'
17530i_socks='$i_socks'
17531i_stdarg='$i_stdarg'
17532i_stddef='$i_stddef'
17533i_stdlib='$i_stdlib'
17534i_string='$i_string'
17535i_sunmath='$i_sunmath'
17536i_sysaccess='$i_sysaccess'
17537i_sysdir='$i_sysdir'
17538i_sysfile='$i_sysfile'
17539i_sysfilio='$i_sysfilio'
17540i_sysin='$i_sysin'
17541i_sysioctl='$i_sysioctl'
17542i_syslog='$i_syslog'
17543i_sysmman='$i_sysmman'
17544i_sysmode='$i_sysmode'
17545i_sysmount='$i_sysmount'
17546i_sysndir='$i_sysndir'
17547i_sysparam='$i_sysparam'
17548i_sysresrc='$i_sysresrc'
17549i_syssecrt='$i_syssecrt'
17550i_sysselct='$i_sysselct'
17551i_syssockio='$i_syssockio'
17552i_sysstat='$i_sysstat'
17553i_sysstatfs='$i_sysstatfs'
17554i_sysstatvfs='$i_sysstatvfs'
17555i_systime='$i_systime'
17556i_systimek='$i_systimek'
17557i_systimes='$i_systimes'
17558i_systypes='$i_systypes'
17559i_sysuio='$i_sysuio'
17560i_sysun='$i_sysun'
17561i_sysutsname='$i_sysutsname'
17562i_sysvfs='$i_sysvfs'
17563i_syswait='$i_syswait'
17564i_termio='$i_termio'
17565i_termios='$i_termios'
17566i_time='$i_time'
17567i_unistd='$i_unistd'
17568i_ustat='$i_ustat'
17569i_utime='$i_utime'
17570i_values='$i_values'
17571i_varargs='$i_varargs'
17572i_varhdr='$i_varhdr'
17573i_vfork='$i_vfork'
5f80c64f 17574ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
17575inc_version_list='$inc_version_list'
17576inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
17577incpath='$incpath'
17578inews='$inews'
b4eb6b3d
JH
17579installarchlib='$installarchlib'
17580installbin='$installbin'
17581installman1dir='$installman1dir'
17582installman3dir='$installman3dir'
17583installprefix='$installprefix'
17584installprefixexp='$installprefixexp'
17585installprivlib='$installprivlib'
17586installscript='$installscript'
17587installsitearch='$installsitearch'
17588installsitebin='$installsitebin'
17589installsitelib='$installsitelib'
17590installstyle='$installstyle'
17591installusrbinperl='$installusrbinperl'
17592installvendorarch='$installvendorarch'
17593installvendorbin='$installvendorbin'
17594installvendorlib='$installvendorlib'
17595intsize='$intsize'
4b661809 17596issymlink='$issymlink'
b4eb6b3d
JH
17597ivdformat='$ivdformat'
17598ivsize='$ivsize'
17599ivtype='$ivtype'
17600known_extensions='$known_extensions'
5f80c64f 17601ksh='$ksh'
5f80c64f
JH
17602ld='$ld'
17603lddlflags='$lddlflags'
17604ldflags='$ldflags'
b4eb6b3d
JH
17605ldflags_uselargefiles='$ldflags_uselargefiles'
17606ldlibpthname='$ldlibpthname'
5f80c64f
JH
17607less='$less'
17608lib_ext='$lib_ext'
17609libc='$libc'
b4eb6b3d 17610libperl='$libperl'
5f80c64f
JH
17611libpth='$libpth'
17612libs='$libs'
43999f95
JH
17613libsdirs='$libsdirs'
17614libsfiles='$libsfiles'
17615libsfound='$libsfound'
13b3f787 17616libspath='$libspath'
5f80c64f 17617libswanted='$libswanted'
b4eb6b3d 17618libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
17619line='$line'
17620lint='$lint'
17621lkflags='$lkflags'
17622ln='$ln'
17623lns='$lns'
17624locincpth='$locincpth'
17625loclibpth='$loclibpth'
b4eb6b3d
JH
17626longdblsize='$longdblsize'
17627longlongsize='$longlongsize'
17628longsize='$longsize'
5f80c64f
JH
17629lp='$lp'
17630lpr='$lpr'
17631ls='$ls'
b4eb6b3d
JH
17632lseeksize='$lseeksize'
17633lseektype='$lseektype'
5f80c64f
JH
17634mail='$mail'
17635mailx='$mailx'
17636make='$make'
17637make_set_make='$make_set_make'
b4eb6b3d
JH
17638mallocobj='$mallocobj'
17639mallocsrc='$mallocsrc'
17640malloctype='$malloctype'
17641man1dir='$man1dir'
17642man1direxp='$man1direxp'
17643man1ext='$man1ext'
17644man3dir='$man3dir'
17645man3direxp='$man3direxp'
17646man3ext='$man3ext'
5f80c64f
JH
17647mips_type='$mips_type'
17648mkdir='$mkdir'
b4eb6b3d
JH
17649mmaptype='$mmaptype'
17650modetype='$modetype'
5f80c64f 17651more='$more'
b4eb6b3d 17652multiarch='$multiarch'
5f80c64f 17653mv='$mv'
b4eb6b3d
JH
17654myarchname='$myarchname'
17655mydomain='$mydomain'
17656myhostname='$myhostname'
5f80c64f
JH
17657myuname='$myuname'
17658n='$n'
2cc61e15 17659need_va_copy='$need_va_copy'
b4eb6b3d
JH
17660netdb_hlen_type='$netdb_hlen_type'
17661netdb_host_type='$netdb_host_type'
17662netdb_name_type='$netdb_name_type'
17663netdb_net_type='$netdb_net_type'
5f80c64f
JH
17664nm='$nm'
17665nm_opt='$nm_opt'
17666nm_so_opt='$nm_so_opt'
b4eb6b3d 17667nonxs_ext='$nonxs_ext'
5f80c64f 17668nroff='$nroff'
b4eb6b3d
JH
17669nvEUformat='$nvEUformat'
17670nvFUformat='$nvFUformat'
17671nvGUformat='$nvGUformat'
17672nveformat='$nveformat'
17673nvfformat='$nvfformat'
17674nvgformat='$nvgformat'
17675nvsize='$nvsize'
17676nvtype='$nvtype'
17677o_nonblock='$o_nonblock'
5f80c64f 17678obj_ext='$obj_ext'
b4eb6b3d 17679old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 17680optimize='$optimize'
b4eb6b3d 17681orderlib='$orderlib'
5f80c64f
JH
17682osname='$osname'
17683osvers='$osvers'
b4eb6b3d 17684otherlibdirs='$otherlibdirs'
5f80c64f 17685package='$package'
b4eb6b3d
JH
17686pager='$pager'
17687passcat='$passcat'
17688patchlevel='$patchlevel'
5f80c64f 17689path_sep='$path_sep'
b4eb6b3d 17690perl5='$perl5'
5f80c64f 17691perl='$perl'
151e6568 17692perl_patchlevel='$perl_patchlevel'
b4eb6b3d 17693perladmin='$perladmin'
9c839522 17694perllibs='$perllibs'
b4eb6b3d 17695perlpath='$perlpath'
5f80c64f 17696pg='$pg'
b4eb6b3d
JH
17697phostname='$phostname'
17698pidtype='$pidtype'
5f80c64f 17699plibpth='$plibpth'
b4eb6b3d 17700pm_apiversion='$pm_apiversion'
5f80c64f
JH
17701pmake='$pmake'
17702pr='$pr'
b4eb6b3d
JH
17703prefix='$prefix'
17704prefixexp='$prefixexp'
17705privlib='$privlib'
17706privlibexp='$privlibexp'
f24dbf84 17707procselfexe='$procselfexe'
b4eb6b3d
JH
17708prototype='$prototype'
17709ptrsize='$ptrsize'
17710quadkind='$quadkind'
17711quadtype='$quadtype'
17712randbits='$randbits'
17713randfunc='$randfunc'
17714randseedtype='$randseedtype'
17715ranlib='$ranlib'
17716rd_nodata='$rd_nodata'
17717revision='$revision'
5f80c64f
JH
17718rm='$rm'
17719rmail='$rmail'
5440bc8e 17720run='$run'
5f80c64f 17721runnm='$runnm'
b4eb6b3d
JH
17722sPRIEUldbl='$sPRIEUldbl'
17723sPRIFUldbl='$sPRIFUldbl'
17724sPRIGUldbl='$sPRIGUldbl'
17725sPRIXU64='$sPRIXU64'
17726sPRId64='$sPRId64'
17727sPRIeldbl='$sPRIeldbl'
17728sPRIfldbl='$sPRIfldbl'
17729sPRIgldbl='$sPRIgldbl'
17730sPRIi64='$sPRIi64'
17731sPRIo64='$sPRIo64'
17732sPRIu64='$sPRIu64'
17733sPRIx64='$sPRIx64'
17734sSCNfldbl='$sSCNfldbl'
17735sched_yield='$sched_yield'
17736scriptdir='$scriptdir'
17737scriptdirexp='$scriptdirexp'
5f80c64f 17738sed='$sed'
b4eb6b3d
JH
17739seedfunc='$seedfunc'
17740selectminbits='$selectminbits'
17741selecttype='$selecttype'
5f80c64f
JH
17742sendmail='$sendmail'
17743sh='$sh'
17744shar='$shar'
17745sharpbang='$sharpbang'
b4eb6b3d
JH
17746shmattype='$shmattype'
17747shortsize='$shortsize'
17748shrpenv='$shrpenv'
5f80c64f 17749shsharp='$shsharp'
b4eb6b3d
JH
17750sig_count='$sig_count'
17751sig_name='$sig_name'
17752sig_name_init='$sig_name_init'
17753sig_num='$sig_num'
17754sig_num_init='$sig_num_init'
76d3c696 17755sig_size='$sig_size'
b4eb6b3d
JH
17756signal_t='$signal_t'
17757sitearch='$sitearch'
17758sitearchexp='$sitearchexp'
17759sitebin='$sitebin'
17760sitebinexp='$sitebinexp'
17761sitelib='$sitelib'
17762sitelib_stem='$sitelib_stem'
17763sitelibexp='$sitelibexp'
17764siteprefix='$siteprefix'
17765siteprefixexp='$siteprefixexp'
17766sizesize='$sizesize'
17767sizetype='$sizetype'
5f80c64f
JH
17768sleep='$sleep'
17769smail='$smail'
5f80c64f 17770so='$so'
b4eb6b3d
JH
17771sockethdr='$sockethdr'
17772socketlib='$socketlib'
17773socksizetype='$socksizetype'
5f80c64f
JH
17774sort='$sort'
17775spackage='$spackage'
17776spitshell='$spitshell'
5f80c64f 17777src='$src'
b4eb6b3d
JH
17778ssizetype='$ssizetype'
17779startperl='$startperl'
5f80c64f 17780startsh='$startsh'
b4eb6b3d
JH
17781static_ext='$static_ext'
17782stdchar='$stdchar'
17783stdio_base='$stdio_base'
17784stdio_bufsiz='$stdio_bufsiz'
17785stdio_cnt='$stdio_cnt'
17786stdio_filbuf='$stdio_filbuf'
17787stdio_ptr='$stdio_ptr'
17788stdio_stream_array='$stdio_stream_array'
17789strings='$strings'
5f80c64f 17790submit='$submit'
b4eb6b3d
JH
17791subversion='$subversion'
17792sysman='$sysman'
5f80c64f
JH
17793tail='$tail'
17794tar='$tar'
5440bc8e 17795targetarch='$targetarch'
5f80c64f
JH
17796tbl='$tbl'
17797tee='$tee'
17798test='$test'
b4eb6b3d
JH
17799timeincl='$timeincl'
17800timetype='$timetype'
5440bc8e 17801to='$to'
5f80c64f
JH
17802touch='$touch'
17803tr='$tr'
17804trnl='$trnl'
17805troff='$troff'
b4eb6b3d
JH
17806u16size='$u16size'
17807u16type='$u16type'
17808u32size='$u32size'
17809u32type='$u32type'
17810u64size='$u64size'
17811u64type='$u64type'
17812u8size='$u8size'
17813u8type='$u8type'
17814uidformat='$uidformat'
17815uidsign='$uidsign'
17816uidsize='$uidsize'
17817uidtype='$uidtype'
5f80c64f
JH
17818uname='$uname'
17819uniq='$uniq'
b4eb6b3d
JH
17820uquadtype='$uquadtype'
17821use5005threads='$use5005threads'
17822use64bitall='$use64bitall'
17823use64bitint='$use64bitint'
5440bc8e 17824usecrosscompile='$usecrosscompile'
5f80c64f 17825usedl='$usedl'
b4eb6b3d
JH
17826useithreads='$useithreads'
17827uselargefiles='$uselargefiles'
17828uselongdouble='$uselongdouble'
17829usemorebits='$usemorebits'
17830usemultiplicity='$usemultiplicity'
17831usemymalloc='$usemymalloc'
5f80c64f 17832usenm='$usenm'
b4eb6b3d
JH
17833useopcode='$useopcode'
17834useperlio='$useperlio'
17835useposix='$useposix'
9514c62b 17836usereentrant='$usereentrant'
b4eb6b3d
JH
17837usesfio='$usesfio'
17838useshrplib='$useshrplib'
29209bc5 17839usesocks='$usesocks'
b4eb6b3d
JH
17840usethreads='$usethreads'
17841usevendorprefix='$usevendorprefix'
17842usevfork='$usevfork'
5f80c64f
JH
17843usrinc='$usrinc'
17844uuname='$uuname'
b4eb6b3d
JH
17845uvXUformat='$uvXUformat'
17846uvoformat='$uvoformat'
17847uvsize='$uvsize'
17848uvtype='$uvtype'
17849uvuformat='$uvuformat'
17850uvxformat='$uvxformat'
17851vendorarch='$vendorarch'
17852vendorarchexp='$vendorarchexp'
17853vendorbin='$vendorbin'
17854vendorbinexp='$vendorbinexp'
17855vendorlib='$vendorlib'
17856vendorlib_stem='$vendorlib_stem'
17857vendorlibexp='$vendorlibexp'
17858vendorprefix='$vendorprefix'
17859vendorprefixexp='$vendorprefixexp'
17860version='$version'
861eb78d 17861version_patchlevel_string='$version_patchlevel_string'
d56c5707 17862versiononly='$versiononly'
5f80c64f 17863vi='$vi'
b4eb6b3d 17864voidflags='$voidflags'
5f80c64f 17865xlibpth='$xlibpth'
b4eb6b3d 17866xs_apiversion='$xs_apiversion'
3659ebf1
JH
17867yacc='$yacc'
17868yaccflags='$yaccflags'
5f80c64f
JH
17869zcat='$zcat'
17870zip='$zip'
17871EOT
17872
17873: Add in command line options if available
17874$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17875
17876: add special variables
17877$test -f $src/patchlevel.h && \
d00b958f 17878awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 17879echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 17880echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
17881
17882: propagate old symbols
17883if $test -f UU/config.sh; then
381aa1ff 17884 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 17885 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 17886 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
17887 set X `cat UU/oldsyms`
17888 shift
17889 case $# in
17890 0) ;;
17891 *)
17892 cat <<EOM
17893Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17894EOM
17895 echo "# Variables propagated from previous config.sh file." >>config.sh
17896 for sym in `cat UU/oldsyms`; do
17897 echo " Propagating $hint variable "'$'"$sym..."
17898 eval 'tmp="$'"${sym}"'"'
17899 echo "$tmp" | \
17900 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17901 done
17902 ;;
17903 esac
17904fi
17905
17906: Finish up by extracting the .SH files
17907case "$alldone" in
17908exit)
17909 $rm -rf UU
24ccb310 17910 echo "Extraction done."
5f80c64f
JH
17911 exit 0
17912 ;;
17913cont)
17914 ;;
17915'')
17916 dflt=''
17917 nostick=true
17918 $cat <<EOM
17919
17920If you'd like to make any changes to the config.sh file before I begin
17921to configure things, do it as a shell escape now (e.g. !vi config.sh).
17922
17923EOM
17924 rp="Press return or use a shell escape to edit config.sh:"
17925 . UU/myread
17926 nostick=''
17927 case "$ans" in
17928 '') ;;
17929 *) : in case they cannot read
17930 sh 1>&4 -c "$ans";;
17931 esac
17932 ;;
17933esac
17934
17935: if this fails, just run all the .SH files by hand
17936. ./config.sh
17937
17938echo " "
17939exec 1>&4
a43e8593 17940pwd=`pwd`
5f80c64f 17941. ./UU/extract
6904989c 17942cd "$pwd"
5f80c64f
JH
17943
17944if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17945 dflt=y
17946 case "$silent" in
17947 true) ;;
17948 *)
17949 $cat <<EOM
17950
17951Now you need to generate make dependencies by running "$make depend".
17952You might prefer to run it in background: "$make depend > makedepend.out &"
17953It can take a while, so you might not want to run it right now.
17954
17955EOM
17956 ;;
17957 esac
17958 rp="Run $make depend now?"
17959 . UU/myread
17960 case "$ans" in
17961 y*)
3d5d58b1 17962 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
17963 ;;
17964 *)
17965 echo "You must run '$make depend' then '$make'."
17966 ;;
17967 esac
17968elif test -f [Mm]akefile; then
17969 echo " "
17970 echo "Now you must run a $make."
17971else
24ccb310 17972 echo "Configure done."
5f80c64f
JH
17973fi
17974
17975if $test -f Policy.sh; then
17976 $cat <<EOM
17977
17978If you compile $package on a different machine or from a different object
17979directory, copy the Policy.sh file from this object directory to the
17980new one before you run Configure -- this will help you with most of
17981the policy defaults.
17982
17983EOM
17984fi
17985if $test -f config.msg; then
17986 echo "Hmm. I also noted the following information while running:"
17987 echo " "
17988 $cat config.msg >&4
17989 $rm -f config.msg
17990fi
17991$rm -f kit*isdone ark*isdone
17992$rm -rf UU
17993
17994: End of Configure
17995