summaryrefslogtreecommitdiffstats
path: root/config/gnu-flags
blob: 71de5e36563bb0727c503f9b8c4bcd4616f35d7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#							-*- shell-script -*-
#
# This file should be sourced into configure if the compiler is the
# GNU gcc compiler or a derivative.  It is careful not to do anything
# if the compiler is not GNU; otherwise `cc_flags_set' is set to `yes'
#

# Get the compiler version in a way that works for gcc, egcs, and
# pgcc unless a compiler version is already known
#
#   cc_vendor:    The compiler name: gcc, egcs, or pgcc
#   cc_version:   Version number: 2.91.60, 2.7.2.1
#
if test X = "X$cc_flags_set"; then
    cc_version="`$CC $CFLAGS -v 2>&1 |grep 'gcc version' |\
	        sed 's/.*gcc version \([-a-z0-9\.]*\).*/\1/'`"
    cc_vendor=`echo $cc_version |sed 's/\([a-z]*\).*/\1/'`
    cc_version=`echo $cc_version |sed 's/[-a-z]//g'`
    if test X = "X$cc_vendor" -a X != "X$cc_version"; then
	cc_vendor=gcc
    fi
    if test "-" != "$cc_vendor-$cc_version"; then
	echo "compiler '$CC' is GNU $cc_vendor-$cc_version"
    fi
fi

# Warn about old GNU compilers that don't work right.
case "$cc_vendor-$cc_version" in
    gcc-2.7.*)
	cat <<EOF
    **
    ** This compiler may be unable to properly compile the long long
    ** data type used extensively by hdf5, although specifying
    ** --disable-hsizet for configure may work around those bugs.
    ** There may be other code generation problems also, especially
    ** when optimizations are enabled.  Please upgrade to at least GNU
    ** gcc version 2.8.1 before reporting bugs to the HDF5 team.
    **
EOF
	sleep 5
	;;
	    
    pgcc-2.*)
        v2=`echo $cc_version |cut -f2 -d.`
	v3=`echo $cc_version |cut -f3 -d.`
	v=`expr $v2 '*' 1000 + $v3`
	if test $v -le 91066; then
	    cat <<EOF
    **
    ** This compiler may have problems allocating registers for long
    ** long data types when optimizations are enabled. There may be
    ** other code generation problems as well. We know of no version
    ** of pgcc which is capable of compiling HDF5 in production mode.
    ** Please use gcc-2.8 or egcs-1.1.1 before reporting bugs.
    **
EOF
	    sleep 5
	fi
	;;
esac

# Architecture-specific flags
case "$host_cpu" in
    i686)
	ARCH=${ARCH:="-mcpu=pentiumpro -march=pentiumpro -malign-double"}
	;;
esac

# Compiler flags
case "$cc_vendor-$cc_version" in
    gcc-2.7*)
	# General
	CFLAGS="$CFLAGS -ansi"

	# Production
	PROC_CFLAGS="-O3 $NOFP -finline-functions -Wno-shadow"
	PROD_CPPFLAGS=

	# Debug
	DEBUG_CFLAGS="-g -fverbose-asm -Wno-shadow"
	DEBUG_CPPFLAGS="-DH5F_OPT_SEEK=0 -DH5F_LOW_DFLT=H5F_LOW_SEC2"

	# Profile
	PROFILE_CFLAGS=-pg
	PROFILE_CPPFLAGS=

	# Flags are set
	cc_flags_set=yes
	;;

    gcc-2.8.*)
        # General
        CFLAGS="$CFLAGS -Wsign-compare"

	# Production
	PROD_CFLAGS="$ARCH -O3 $NOFP -finline-functions -fschedule-insns2 -Wno-shadow"
	PROD_CPPFLAGS=

	# Debug
	DEBUG_CFLAGS="-g -fverbose-asm -Wno-shadow"
	DEBUG_CPPFLAGS="-DH5F_OPT_SEEK=0 -DH5F_LOW_DFLT=H5F_LOW_SEC2"

	# Profile
	PROFILE_CFLAGS=-pg
	PROFILE_CPPFLAGS=

	# Flags are set
	cc_flags_set=yes
	;;

    egcs-2.*|pgcc-2.*)
	# General
	CFLAGS="$CFLAGS -Wsign-compare"

	# Production
	PROD_CFLAGS="$ARCH -O6 $NOFP -Wno-shadow"
	PROD_CPPFLAGS=

	# Debug
	DEBUG_CFLAGS="-g -fverbose-asm -Wno-shadow"
	DEBUG_CPPFLAGS="-DH5F_OPT_SEEK=0 -DH5F_LOW_DFLT=H5F_LOW_SEC2"

	# Profile
	PROFILE_CFLAGS=-pg
	PROFILE_CPPFLAGS=

	# Flags are set
	cc_flags_set=yes
	;;

    gcc-*|egcs-*|pgcc-*)
        # This must be some other GNU compiler that we don't know about.
        # Just use fairly generic flags.

	# Production
	PROD_CFLAGS=-O
	PROD_CPPFLAGS=

	# Debug
	DEBUG_CFLAGS=-g
	DEBUG_CPPFLAGS="-DH5F_OPT_SEEK=0 -DH5F_LOW_DFLT=H5F_LOW_SEC2"

	# Profile
	PROFILE_CFLAGS=-pg
	PROFILE_CPPFLAGS=

	# Flags are set
	cc_flags_set=yes
	;;
esac

# Clear cc info if no flags set
if test X = "X$cc_flags_set"; then
    cc_vendor=
    cc_version=
fi