This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Also the $ccflags is needed for the C compiler check.
[metaconfig.git] / U / perl / Checkcc.U
1 ?RCS:
2 ?RCS: $Id$
3 ?RCS:
4 ?RCS: Copyright (c) 2000, Jarkko Hietaniemi
5 ?RCS: 
6 ?X: 
7 ?X: This unit produces a bit of shell code that must be dotted in order
8 ?X: to make quick check on whether the current C compiler is working.
9 ?X:     
10 ?MAKE:Checkcc ccname ccversion: rm cat test Myread startsh
11 ?MAKE:  -pick add $@ %<
12 ?S:ccname:
13 ?S:     This can set either by hints files or by Configure.  If using
14 ?S:     gcc, this is gcc, and if not, usually equal to cc, unimpressive, no?
15 ?S:     Some platforms, however, make good use of this by storing the
16 ?S:     flavor of the C compiler being used here.  For example if using
17 ?S:     the Sun WorkShop suite, ccname will be 'workshop'.
18 ?S:.
19 ?S:ccversion:
20 ?S:     This can set either by hints files or by Configure.  If using
21 ?S:     a (non-gcc) vendor cc, this variable may contain a version for
22 ?S:     the compiler.
23 ?S:.
24 ?T: trygcc despair
25 ?F:./checkcc
26 ?INIT:ccname=''
27 ?INIT:ccversion=''
28 ?LINT:extern cc
29 ?LINT:change cc
30 ?LINT:extern ccflags
31 ?LINT:change ccflags
32 cat <<EOS >checkcc
33 $startsh
34 EOS
35 cat <<'EOSC' >>checkcc
36 case "$cc" in
37 '') ;;
38 *)  $rm -f try try.*
39     $cat >try.c <<EOM
40 int main(int argc, char *argv[]) {
41   return 0;
42 }
43 EOM
44     if $cc $cflags -o try try.c; then
45        :
46     else
47         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
48         despair=yes
49         trygcc=yes
50         case "$cc" in
51         *gcc*) trygcc=no ;;
52         esac
53         case "`$cc -v -c try.c 2>&1`" in
54         *gcc*) trygcc=no ;;
55         esac
56         if $test X"$trygcc" = Xyes; then
57             if gcc -o try -c try.c; then
58                 echo " "
59                 echo "You seem to have a working gcc, though." >&4
60                 rp="Would you like to use it?"
61                 dflt=y
62                 if $test -f myread; then
63                     . ./myread
64                 else
65                     if $test -f UU/myread; then
66                         . ./UU/myread
67                     else
68                         echo "Cannot find myread, sorry.  Aborting." >&2
69                         exit 1
70                     fi
71                 fi  
72                 case "$ans" in
73                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
74                 esac
75             fi
76         fi
77         if $test X"$despair" = Xyes; then
78             $cat >&4 <<EOM
79 You need to find a working C compiler.
80 Either (purchase and) install the C compiler supplied by your OS vendor,
81 or for a free C compiler try http://gcc.gnu.org/
82 I cannot continue any further, aborting.
83 EOM
84             exit 1
85         fi
86     fi
87     $rm -f try try.*
88     ;;
89 esac
90 EOSC
91