This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove spurious LINT: directives
[metaconfig.git] / U / perl / gccvers.U
CommitLineData
fd1a35d0
JH
1?RCS: $Id$
2?RCS:
3?RCS: Copyright (c) 2000, Jarkko Hietaniemi
5dcc3580 4?RCS:
fd1a35d0
JH
5?RCS: You may redistribute only under the terms of the Artistic Licence,
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
8?RCS: that same Artistic Licence; a copy of which may be found at the root
9?RCS: of the source tree for dist 3.0.
10?RCS:
4087c32b 11?MAKE:gccversion gccosandvers gccansipedantic: cat cpp rm +cc \
0f00356b 12 Mcc Myread Guess Options Oldconfig Loc osname osvers run
fd1a35d0
JH
13?MAKE: -pick add $@ %<
14?S:gccversion:
5c7d75a6 15?S: If GNU cc (gcc) is used, this variable holds '1' or '2' to
fd1a35d0
JH
16?S: indicate whether the compiler is version 1 or 2. This is used in
17?S: setting some of the default cflags. It is set to '' if not gcc.
18?S:.
5fc71efb 19?S:gccosandvers:
4087c32b
MB
20?S: If GNU cc (gcc) is used, this variable holds the operating system
21?S: and version used to compile gcc. It is set to '' if not gcc,
fcc4de7b 22?S: or if nothing useful can be parsed as the os version.
5fc71efb 23?S:.
4087c32b
MB
24?S:gccansipedantic:
25?S: If GNU cc (gcc) is used, this variable will enable (if set) the
26?S: -ansi and -pedantic ccflags for building core files (through
27?S: cflags script). (See Porting/pumpkin.pod for full description).
28?S:.
0065f4af
MB
29?D:gccversion=''
30?D:gccansipedantic=''
559accf2 31?T:gccshortvers
b2fa012f 32?T:incdir
bf7497fb 33?T:warn
0065f4af 34?F:!try
fd1a35d0 35?LINT:change cpp
77506990 36?LINT:extern ccflags
fd1a35d0 37?LINT:extern ldflags
b2fa012f 38?LINT:extern locincpth
3bb42500 39?LINT:extern ccname
b2fa012f
JH
40?LINT:change ccname
41?LINT:change locincpth
5c7d75a6 42?X: Check if they have gcc in any guise.
0065f4af 43: Check if we are using GNU gcc and what its version is
fd1a35d0
JH
44echo " "
45echo "Checking for GNU cc in disguise and/or its version number..." >&4
0f00356b 46$cat >try.c <<EOM
fd1a35d0
JH
47#include <stdio.h>
48int main() {
a9c4d48e 49#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
fd1a35d0
JH
50#ifdef __VERSION__
51 printf("%s\n", __VERSION__);
52#else
53 printf("%s\n", "1");
54#endif
55#endif
a4ad2925 56 return(0);
fd1a35d0
JH
57}
58EOM
0f00356b
JH
59if $cc -o try $ccflags $ldflags try.c; then
60 gccversion=`$run ./try`
fd1a35d0
JH
61 case "$gccversion" in
62 '') echo "You are not using GNU cc." ;;
63 *) echo "You are using GNU cc $gccversion."
5c7d75a6 64 ccname=gcc
fd1a35d0
JH
65 ;;
66 esac
67else
68 echo " "
69 echo "*** WHOA THERE!!! ***" >&4
70 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
71?X: using -K will prevent aborting--maybe they're cross compiling?
72 case "$knowitall" in
73 '')
74 echo " You'd better start hunting for one and let me know about it." >&4
75 exit 1
76 ;;
77 esac
78fi
0f00356b 79$rm -f try try.*
fd1a35d0
JH
80case "$gccversion" in
811*) cpp=`./loc gcc-cpp $cpp $pth` ;;
82esac
5fc71efb
KS
83case "$gccversion" in
84'') gccosandvers='' ;;
559accf2
JH
85*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
86 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
87 gccshortvers=''
5fc71efb 88 case "$gccosandvers" in
fcc4de7b
JH
89 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
90 $osname$osvers) ;; # looking good
5fc71efb
KS
91 $osname*) cat <<EOM >&4
92
93*** WHOA THERE!!! ***
94
95 Your gcc has not been compiled for the exact release of
96 your operating system ($gccosandvers versus $osname$osvers).
97
98 In general it is a good idea to keep gcc synchronized with
99 the operating system because otherwise serious problems
100 may ensue when trying to compile software, like Perl.
101
102 I'm trying to be optimistic here, though, and will continue.
103 If later during the configuration and build icky compilation
fcc4de7b
JH
104 problems appear (headerfile conflicts being the most common
105 manifestation), I suggest reinstalling the gcc to match
5fc71efb
KS
106 your operating system release.
107
108EOM
109 ;;
1c7fa146 110 *) gccosandvers='' ;; # failed to parse, better be silent
5fc71efb
KS
111 esac
112 ;;
113esac
05c8895a
JH
114case "$ccname" in
115'') ccname="$cc" ;;
116esac
fd1a35d0 117
a7eb1db8 118# gcc 3.* complain about adding -Idirectories that they already know about,
d6872425
JH
119# so we will take those off from locincpth.
120case "$gccversion" in
1213*)
122 echo "main(){}">try.c
a7eb1db8
MB
123 for incdir in $locincpth; do
124 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
5c7d75a6 125 grep '^c[cp]p*[01]: warning: changing search order '`
a7eb1db8
MB
126 if test "X$warn" != X; then
127 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
128 fi
d6872425
JH
129 done
130 $rm -f try try.*
131esac
7ab230d2 132