File: clang-flags

package info (click to toggle)
libhdf4 4.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 29,892 kB
  • sloc: ansic: 128,688; sh: 14,969; fortran: 12,444; java: 5,864; xml: 1,305; makefile: 900; yacc: 678; pascal: 418; perl: 360; javascript: 203; lex: 163; csh: 41
file content (95 lines) | stat: -rw-r--r-- 3,173 bytes parent folder | download | duplicates (3)
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
#                                                   -*- shell-script -*-
#
# This file is part of the HDF4 build script. It is processed shortly
# after configure starts and defines, among other things, flags for
# the various compilation modes.

#
# Prepend `$srcdir/config/clang-warnings/` to the filename suffix(es) given as
# subroutine argument(s), remove comments starting with # and ending
# at EOL, replace spans of whitespace (including newlines) with spaces,
# and re-emit the file(s) thus filtered on the standard output stream.
#
load_clang_arguments()
{
    set -- $(for arg; do
        sed 's,#.*$,,' $srcdir/config/clang-warnings/${arg}
    done)
    IFS=' ' echo "$*"
}
# Get the compiler version in a way that works for clang
# unless a compiler version is already known
#
#   cc_vendor:    The compiler name: clang
#   cc_version:   Version number: 6.0.0, 7.3.0, ... 10.0.1
#
if test "X-" = "X-$cc_flags_set"; then
    # clang -v will return version number following "clang" on Linux machines,
    # but on Xcode the version number will follow "Apple LLVM version"
    # Note that the Xcode reported LLVM version doesn't match the canonical
    # LLVM version, so you'll need to do different version checks for
    # Xcode.
    cc_version="`$CC $CFLAGS -v 2>&1 |\
        grep 'clang version' | sed 's/.*clang version \([-a-z0-9\.]*\).*/\1/'`"
    if test -n "$cc_version"; then
        cc_vendor="clang"
    else
        cc_version="`$CC $CFLAGS $H4_CFLAGS -v 2>&1 |\
            grep 'Apple LLVM version' | sed 's/.*Apple LLVM version \([-a-z0-9\.]*\).*/\1/'`"
        if test -n "$cc_version"; then
            cc_vendor="Apple LLVM"
        fi
    fi
    if test "X-" != "X-$cc_version"; then

        # Get the compiler version numbers
        cc_vers_major=`echo $cc_version | cut -f1 -d.`
        cc_vers_minor=`echo $cc_version | cut -f2 -d.`
        cc_vers_patch=`echo $cc_version | cut -f3 -d.`
        test -n "$cc_vers_major" || cc_vers_major=0
        test -n "$cc_vers_minor" || cc_vers_minor=0
        test -n "$cc_vers_patch" || cc_vers_patch=0
    fi
fi

if test "X-clang" = "X-$cc_vendor" -o "X-Apple LLVM" = "X-$cc_vendor"; then
    echo "compiler '$CC' is $cc_vendor-$cc_version"

    CFLAGS="$CFLAGS -Wno-error=implicit-function-declaration"
    CFLAGS="$CFLAGS -std=c99"

    DEBUG_CFLAGS="-g -ftrapv -fno-common"
    # -Og is only understood by clang 4+ and Xcode 9+
    # Otherwise use -O1 (which is what -Og usually equates to)
    if test "X-clang" = "X-$cc_vendor" -a $cc_vers_major -ge 4 -o "X-Apple LLVM" = "X-$cc_vendor" -a $cc_vers_major -ge 9; then
        DEBUG_CFLAGS="$DEBUG_CFLAGS -Og"
    else
        DEBUG_CFLAGS="$DEBUG_CFLAGS -O1"
    fi
    DEBUG_CPPFLAGS=

    PROD_CFLAGS="-O3"
    PROD_CPPFLAGS=

    PROFILE_CFLAGS="-pg"
    PROFILE_CPPFLAGS=

    ###########
    # General #
    ###########

    CFLAGS="$CFLAGS $(load_clang_arguments general)"
    CFLAGS="$CFLAGS $(load_clang_arguments no-developer-general)"

    #################
    # Flags are set #
    #################
    cc_flags_set=yes
fi

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