This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Weed buglets pointed out by
[metaconfig.git] / U / perl / gccvers.U
CommitLineData
fd1a35d0
JH
1?RCS: $Id$
2?RCS:
3?RCS: Copyright (c) 2000, Jarkko Hietaniemi
4?RCS:
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:
5fc71efb
KS
11?MAKE:gccversion gccosandvers: cat cpp rm +cc \
12 Mcc Myread Guess Options Oldconfig Loc osname osvers
fd1a35d0
JH
13?MAKE: -pick add $@ %<
14?S:gccversion:
15?S: If GNU cc (gcc) is used, this variable holds '1' or '2' to
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
KS
19?S:gccosandvers:
20?S: If GNU cc (gcc) is used, this variable the operating system and
fcc4de7b
JH
21?S: version used to compile the gcc. It is set to '' if not gcc,
22?S: or if nothing useful can be parsed as the os version.
5fc71efb 23?S:.
fd1a35d0
JH
24?F:!gccvers
25?D:gccversion=''
26?LINT:change cpp
27?LINT:extern ldflags
28?X: Check if they have gcc in any guise.
29echo " "
30echo "Checking for GNU cc in disguise and/or its version number..." >&4
31$cat >gccvers.c <<EOM
32#include <stdio.h>
33int main() {
34#ifdef __GNUC__
35#ifdef __VERSION__
36 printf("%s\n", __VERSION__);
37#else
38 printf("%s\n", "1");
39#endif
40#endif
41 exit(0);
42}
43EOM
44if $cc $ldflags -o gccvers gccvers.c; then
45 gccversion=`./gccvers`
46 case "$gccversion" in
47 '') echo "You are not using GNU cc." ;;
48 *) echo "You are using GNU cc $gccversion."
49 ;;
50 esac
51else
52 echo " "
53 echo "*** WHOA THERE!!! ***" >&4
54 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
55?X: using -K will prevent aborting--maybe they're cross compiling?
56 case "$knowitall" in
57 '')
58 echo " You'd better start hunting for one and let me know about it." >&4
59 exit 1
60 ;;
61 esac
62fi
63$rm -f gccvers*
64case "$gccversion" in
651*) cpp=`./loc gcc-cpp $cpp $pth` ;;
66esac
5fc71efb
KS
67case "$gccversion" in
68'') gccosandvers='' ;;
36011360 69*) gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed 's!.*/[^-]*-[^-]*-\([^/]*\)/'$gccversion'/specs'$!\1!'`
5fc71efb 70 case "$gccosandvers" in
fcc4de7b
JH
71 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
72 $osname$osvers) ;; # looking good
5fc71efb
KS
73 $osname*) cat <<EOM >&4
74
75*** WHOA THERE!!! ***
76
77 Your gcc has not been compiled for the exact release of
78 your operating system ($gccosandvers versus $osname$osvers).
79
80 In general it is a good idea to keep gcc synchronized with
81 the operating system because otherwise serious problems
82 may ensue when trying to compile software, like Perl.
83
84 I'm trying to be optimistic here, though, and will continue.
85 If later during the configuration and build icky compilation
fcc4de7b
JH
86 problems appear (headerfile conflicts being the most common
87 manifestation), I suggest reinstalling the gcc to match
5fc71efb
KS
88 your operating system release.
89
90EOM
91 ;;
1c7fa146 92 *) gccosandvers='' ;; # failed to parse, better be silent
5fc71efb
KS
93 esac
94 ;;
95esac
96
97
98
fd1a35d0 99