This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
remove old warning. No need to declare what is in ?RCS
[metaconfig.git] / U / modified / Head.U
CommitLineData
cf070538 1?RCS: $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
959f3c4c 2?RCS:
cf070538 3?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
4c42341b 4?RCS:
65a32477 5?RCS: You may redistribute only under the terms of the Artistic License,
959f3c4c
JH
6?RCS: as specified in the README file that comes with the distribution.
7?RCS: You may reuse parts of this distribution only within the terms of
65a32477 8?RCS: that same Artistic License; a copy of which may be found at the root
cf070538 9?RCS: of the source tree for dist 4.0.
959f3c4c
JH
10?RCS:
11?RCS: $Log: Head.U,v $
12?RCS: Revision 3.0.1.9 1997/02/28 15:02:09 ram
13?RCS: patch61: make sure we unset CDPATH for shells that support this
14?RCS: patch61: improved Korn shell detection and handling
15?RCS:
16?RCS: Revision 3.0.1.8 1995/07/25 13:40:02 ram
17?RCS: patch56: added SVR4-ish /opt directories to path list (ADO)
18?RCS: patch56: OS/2 platforms are using another path separator
19?RCS:
20?RCS: Revision 3.0.1.7 1995/03/21 08:46:15 ram
21?RCS: patch52: definition of paths wrongly added spurious ':' chars
22?RCS:
23?RCS: Revision 3.0.1.6 1994/10/29 15:54:19 ram
24?RCS: patch36: make sure ENV is unset before calling /bin/ksh
25?RCS:
26?RCS: Revision 3.0.1.5 1994/08/29 16:03:44 ram
27?RCS: patch32: now sets PATH only using existing directories
28?RCS:
29?RCS: Revision 3.0.1.4 1994/06/20 06:54:28 ram
30?RCS: patch30: now computes its invocation name into 'me'
31?RCS: patch30: symbol me is made visible to all units read-only
32?RCS:
33?RCS: Revision 3.0.1.3 1993/12/15 08:15:07 ram
34?RCS: patch15: added /sbin:/usr/sbin:/usr/libexec in PATH for BSD/386
35?RCS:
36?RCS: Revision 3.0.1.2 1993/11/10 17:32:35 ram
37?RCS: patch14: ensure PATH is reset to '.' before testing for alias
38?RCS:
39?RCS: Revision 3.0.1.1 1993/08/27 14:38:07 ram
40?RCS: patch7: not all 'test' programs support the -x option
41?RCS:
42?RCS: Revision 3.0 1993/08/18 12:04:58 ram
43?RCS: Baseline for dist 3.0 netwide release.
44?RCS:
4c42341b 45?X:
959f3c4c
JH
46?X: This is the very first unit in the Configure script. It is mostly just
47?X: things to keep people from getting into a tizzy right off the bat.
4c42341b 48?X:
df0bcc5d 49?MAKE:Head:
959f3c4c 50?MAKE: -pick wipe $@ %<
cf070538 51?V:PATH p_ _exe me newsh
7a4180fe 52?T:argv p paths OS2_SHELL DJGPP
959f3c4c 53?T:inksh needksh avoidksh newsh changesh reason
cf070538 54?F:!*
1056f0f3 55?LINT:extern ENV CDPATH SHELL MACHTYPE _exe is_os2
4c42341b 56?LINT:change ENV CDPATH is_os2
cf070538 57?LINT:nocomment
959f3c4c
JH
58#! /bin/sh
59#
60# If these # comments don't work, trim them. Don't worry about any other
61# shell scripts, Configure will trim # comments from them for you.
62#
63# (If you are trying to port this package to a machine without sh,
64# I would suggest you have a look at the prototypical config_h.SH file
65# and edit it to reflect your system. Some packages may include samples
66# of config.h for certain machines, so you might look for one of those.)
67#
68?X:
69?X: NOTE THAT A CONFIGURE SCRIPT IS IN THE PUBLIC DOMAIN (whether or not
70?X: the software which uses it is in the public domain).
71?X:
72# Yes, you may rip this off to use in other distribution packages. This
73# script belongs to the public domain and cannot be copyrighted.
74#
75?X:
76?X: WE ASK YOU NOT TO REMOVE OR ALTER THE FOLLOWING PARAGRAPH, PLEASE:
77?X:
cf070538 78# Note: this Configure script was generated automatically. Rather than
959f3c4c 79# working with this copy of Configure, you may wish to get metaconfig.
cf070538 80# The dist package (which contains metaconfig) is available via SVN:
6b5a47e4 81# svn co https://svn.code.sf.net/p/dist/code/trunk/dist
959f3c4c 82#
434d6b7f 83?X: OK, I'll not alter, but I'll add to it then ...
a54cd560
MB
84# Though this script was generated by metaconfig from metaunits, it is
85# OK to send patches against Configure itself. It's up to the Configure
86# pumpkin to backport the patch to the metaunits if it is accepted.
3f4ac1e0
MB
87# For more information on patching Configure, see pod/perlhack.pod
88#
a54cd560
MB
89# The metaunits are also available from the public git repository:
90# http://perl5.git.perl.org/metaconfig.git/ or
91# $ git clone git://perl5.git.perl.org/metaconfig.git metaconfig
434d6b7f 92#
434d6b7f
MS
93# See Porting/pumpkin.pod for more information on metaconfig.
94#
959f3c4c
JH
95?X:
96?X: NOTA BENE:
97?X: If you develop you own version of metaconfig based on this work,
98?X: you have to add some comments telling that the script was generated
99?X: by your version, not mine: It credits your work.
100?X:
101
959f3c4c
JH
102# Generated on <DATE> [metaconfig <VERSION> PL<PATCHLEVEL>]
103# (with additional metaconfig patches by <MAINTLOC>)
104
7d2a10a8 105cat >c1$$ <<EOF
959f3c4c
JH
106ARGGGHHHH!!!!!
107
108SCO csh still thinks true is false. Write to SCO today and tell them that next
109year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
110
111(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
112we'd have to do is go in and swap the && and || tokens, wherever they are.)
113
114[End of diatribe. We now return you to your regularly scheduled programming...]
115EOF
7d2a10a8 116cat >c2$$ <<EOF
959f3c4c
JH
117
118OOPS! You naughty creature! You didn't run Configure with sh!
119I will attempt to remedy the situation by running sh for you...
120EOF
121
7d2a10a8 122true || cat c1$$ c2$$
959f3c4c
JH
123true || exec sh $0 $argv:q
124
7d2a10a8 125(exit $?0) || cat c2$$
959f3c4c 126(exit $?0) || exec sh $0 $argv:q
7d2a10a8 127rm -f c1$$ c2$$
959f3c4c 128
0d7cd3e2 129if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
d18ebcf6 130 cat <<EOF
c077ffd0
JH
131***
132*** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
133*** Configure that well. (Plan 9 is close to UNIX but not close enough.)
134*** Please read the README.plan9 for further instructions.
135*** Cannot continue, aborting.
136***
137EOF
138 exit 1
139fi
140
e786dad8 141if test ! -c /dev/null ; then
d18ebcf6 142 cat <<EOF
e786dad8
MC
143***
144*** I'm sorry, but /dev/null appears to be a file rather than a device.
145*** Please consult your operating sytem's notes for making a device
146*** in /dev.
147*** Cannot continue, aborting.
148***
149EOF
150 exit 1
151fi
152
959f3c4c
JH
153: compute my invocation name
154me=$0
155case "$0" in
156*/*)
157 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
158 test "$me" || me=$0
159 ;;
160esac
161
162?X:
163?X: To be able to run under OS/2, we must detect that early enough to use
164?X: the proper path separator, stored in $p_. It is : on UNIX and ; on
65a32477 165?X: DOS-ish systems such as OS/2.
959f3c4c
JH
166?X:
167: Proper separator for the PATH environment variable
168p_=:
cf070538 169: On OS/2 this directory should exist if this is not floppy only system ":-]"
1056f0f3 170if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
cf070538 171 if test -n "$OS2_SHELL"; then
959f3c4c
JH
172 p_=\;
173 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
174?X: That's a bug in ksh5.22
175 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
1056f0f3 176 is_os2=yes
959f3c4c 177 elif test -n "$DJGPP"; then
b5f73a83 178 case "X${MACHTYPE:-nonesuchmach}" in
ed5d019e 179 *cygwin|*msys) ;;
b5f73a83
JH
180 *) p_=\; ;;
181 esac
959f3c4c
JH
182 fi
183fi
184
185?X:
186?X: There are two schools of thoughts here. Some people correctly argue that
187?X: the user has a better chance than we do of setting a reasonable PATH and
188?X: others argue that Configure is the best place there is to set up a suitable
65a32477 189?X: PATH. Well, here we try to compromise by keeping the user's PATH and
959f3c4c
JH
190?X: appending some directories which are known to work on some machine or the
191?X: other. The rationale behind this being that a novice user might not have a
192?X: proper environment variable set, and some directories like /etc (where
193?X: chown is located on some BSD systems) may be missing--RAM.
194?X:
195?X: SVR4 adds an /opt directory for optional packages. Some sites use
196?X: various permutations on /opt as opposed to /usr or /usr/local.-- ADO
197?X:
198?X: We only add directories that are not already in the PATH of the
199?X: user and the directories must exist also.
200?X:
604d9ba3
MB
201?X: 20040627, Merijn, HP-UX's ANSI compiler is in /opt/ansic/bin if present
202?X: and should be before /usr/ccs/bin, where the braindead bundled compiler
cf070538 203?X: can be found. The /usr/ccs/bin compiler cannot be used to build perl.
604d9ba3 204?X:
959f3c4c
JH
205: Proper PATH setting
206paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
207paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
208paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
209paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
210paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
604d9ba3 211paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
959f3c4c
JH
212paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
213paths="$paths /sbin /usr/sbin /usr/libexec"
8c387d2d 214paths="$paths /system/gnu_library/bin"
959f3c4c
JH
215
216for p in $paths
217do
218 case "$p_$PATH$p_" in
219 *$p_$p$p_*) ;;
220 *) test -d $p && PATH=$PATH$p_$p ;;
221 esac
222done
223
224PATH=.$p_$PATH
225export PATH
226
227: shall we be using ksh?
228inksh=''
229needksh=''
230avoidksh=''
231newsh=/bin/ksh
232changesh=''
233?X: Use (alias -x) and not (alias) since zsh and bash recognize the alias
234?X: builtin but not the -x option which is typically ksh...
235?X: We need to set up PATH before calling the "alias" built-in since some
236?X: systems like HP-UX have a binary called /bin/alias.
237if (PATH=.; alias -x) >/dev/null 2>&1; then
238 inksh=true
239fi
240?X: On HP-UX, large Configure scripts may exercise a bug in /bin/sh, use ksh
241if test -f /hp-ux -a -f /bin/ksh; then
242 needksh='to avoid sh bug in "here document" expansion'
243fi
244?X: On AIX4, /bin/sh is really ksh and it causes problems, use sh
245if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
246 if test X`/usr/bin/uname -v` = X4; then
247 avoidksh="to avoid AIX 4's /bin/sh"
248 newsh=/usr/bin/bsh
249 fi
250fi
251?X: On Digital UNIX, /bin/sh may start up buggy /bin/ksh, use sh
252if test -f /osf_boot -a -f /usr/sbin/setld; then
253 if test X`/usr/bin/uname -s` = XOSF1; then
cf070538
MB
254 avoidksh="to avoid Digital UNIX' ksh"
255 newsh=/bin/sh
256?X: if BIN_SH is set to 'xpg4', sh will start up ksh
257 unset BIN_SH
959f3c4c
JH
258 fi
259fi
260?X: If we are not in ksh and need it, then feed us back to it
261case "$inksh/$needksh" in
262/[a-z]*)
cf070538
MB
263?X: Clear ENV to avoid any ~/.kshrc that could alias cd or whatever...
264?X: Don't use "unset ENV", that is not portable enough
959f3c4c
JH
265 ENV=''
266 changesh=true
267 reason="$needksh"
268 ;;
269esac
270?X: If we are in ksh and must avoid it, then feed us back to a new shell
271case "$inksh/$avoidksh" in
272true/[a-z]*)
273 changesh=true
274 reason="$avoidksh"
275 ;;
276esac
277?X: Warn them if they use ksh on other systems, which are those where
70e7365a 278?X: we don't need ksh nor want to avoid it explicitly, yet are using it.
959f3c4c
JH
279case "$inksh/$needksh-$avoidksh-" in
280true/--)
281 cat <<EOM
282(I see you are using the Korn shell. Some ksh's blow up on $me,
283mainly on older exotic systems. If yours does, try the Bourne shell instead.)
284EOM
285 ;;
286esac
287case "$changesh" in
288true)
26074dbd 289 export newsh
959f3c4c
JH
290 echo "(Feeding myself to $newsh $reason.)"
291?X: Make sure they didn't say sh <Configure by checking whether $0 ends
292?X: with Configure or not. If they did say sh <../../Configure, then too
293?X: bad for them anyway, since we lost that path indication...
294?X: Otherwise, execing $0 ensures we keep the full remote source dir
295?X: indication for src.U.
296 case "$0" in
297 Configure|*/Configure) exec $newsh $0 "$@";;
298 *) exec $newsh Configure "$@";;
299 esac
300 ;;
301esac
8230624a
MHM
302?X: 2004.06.09 rac
303?X: having $newsh persist as ksh here is bad news if ksh doesn't really
304?X: exist. this causes us to toss away a perfectly good working test in
65a32477 305?X: bash in favor of more exotic external options. see bug 42665.
8230624a 306test -x "${newsh}" || unset newsh
959f3c4c
JH
307
308?X: Unset CDPATH to avoid surprises when using cd under some shells
309?X: Can't unset it because that's not portable to very old shells.
310?X: Can't set it to '' because then bash 2.02 won't do "cd UU" --AD 6/98.
311?X: Don't want to set it to '.' because then ksh prints out the
312?X: name of the directory every time you cd to it. --AD 6/98
313?X: In order to inflict the least harm, change it only if it's set.
cf070538 314: if needed, set CDPATH to a harmless value that is not chatty
959f3c4c
JH
315: avoid bash 2.02 problems with empty CDPATH.
316case "$CDPATH" in
317'') ;;
318*) case "$SHELL" in
cf070538
MB
319 *bash*) CDPATH='.' ;;
320 *) CDPATH='' ;;
959f3c4c
JH
321 esac
322 ;;
323esac
cf070538 324
959f3c4c
JH
325: Configure runs within the UU subdirectory
326test -d UU || mkdir UU
327?X: Use ./* to avoid any confirmation prompts from enhanced shells -- WED
328cd UU && rm -f ./*
329