summaryrefslogblamecommitdiffhomepage
path: root/auto/cc/test
blob: 34e4379eabab9ed7257c5edc4b66c5889cda1cab (plain) (tree)















































                                                                                


                     















                                                                         

                                                     
                                           

                                   
                                              







                                                              
                                                     



                                                           


                                                           



















                                                                         

                                                     

                                           
                                   
                                              





                                                      


                                                               
                                                      















                                                                       






                                  

# Copyright (C) Igor Sysoev
# Copyright (C) NGINX, Inc.


$echo checking for C compiler: $CC
cat << END >> $NXT_AUTOCONF_ERR
----------------------------------------
checking for C compiler: $CC
END


# Allow error exit status.
set +e

if [ -z `which $CC` ]; then
    $echo
    $echo $0: error: $CC not found.
    $echo
    exit 1;
fi


if `/bin/sh -c "($CC -v)" 2>&1 | grep "gcc version" >> $NXT_AUTOCONF_ERR 2>&1`
then
    NXT_CC_NAME=gcc
    $echo " + using GNU C compiler"
    NXT_CC_VERSION=`/bin/sh -c "($CC -v)" 2>&1 | grep "gcc version" 2>&1`
    $echo " + $NXT_CC_VERSION"

else
if `/bin/sh -c "($CC -v)" 2>&1 | grep "clang version" >> $NXT_AUTOCONF_ERR 2>&1`
then
    NXT_CC_NAME=clang
    $echo " + using Clang C compiler"
    NXT_CC_VERSION=`/bin/sh -c "($CC -v)" 2>&1 | grep "clang version" 2>&1`
    $echo " + $NXT_CC_VERSION"

else
if `/bin/sh -c "($CC -v)" 2>&1 \
                 | grep "Apple LLVM version" >> $NXT_AUTOCONF_ERR 2>&1`
then
    NXT_CC_NAME=clang
    $echo " + using Clang C compiler"
    NXT_CC_VERSION=`/bin/sh -c "($CC -v)" 2>&1 | grep "Apple LLVM version" 2>&1`
    $echo " + $NXT_CC_VERSION"

else
    NXT_CC_NAME=cc
    NXT_CC_VERSION=cc

fi # Apple LLVM clang
fi # clang
fi # gcc


case $NXT_CC_NAME in

    gcc)
        nxt_have=NXT_GCC . auto/have

        NXT_CFLAGS="$NXT_CFLAGS -pipe"
        NXT_CFLAGS="$NXT_CFLAGS -fPIC"

        # Do not export symbols except explicitly marked with NXT_EXPORT.
        NXT_CFLAGS="$NXT_CFLAGS -fvisibility=hidden"

        NXT_CFLAGS="$NXT_CFLAGS -fno-strict-overflow"

        NXT_CFLAGS="$NXT_CFLAGS -std=gnu11"

        NXT_CFLAGS="$NXT_CFLAGS -O"
        NXT_CFLAGS="$NXT_CFLAGS -Wall -Wextra"

        #NXT_CFLAGS="$NXT_CFLAGS -Wunused-result"
        NXT_CFLAGS="$NXT_CFLAGS -Wno-unused-parameter"
        #NXT_CFLAGS="$NXT_CFLAGS -Wshorten-64-to-32"
        NXT_CFLAGS="$NXT_CFLAGS -Wwrite-strings"

        # -O2 enables -fstrict-aliasing and -fstrict-overflow.
        #NXT_CFLAGS="$NXT_CFLAGS -O2"
        NXT_CFLAGS="$NXT_CFLAGS -fno-strict-aliasing"

        #NXT_CFLAGS="$NXT_CFLAGS -fomit-frame-pointer"
        #NXT_CFLAGS="$NXT_CFLAGS -momit-leaf-frame-pointer"

        # While -Wstrict-overflow is supported by GCC 4.2+,
        # at level 3 and above it is prone to give false
        # positives.
        #NXT_CFLAGS="$NXT_CFLAGS -Wstrict-overflow=5"

        NXT_CFLAGS="$NXT_CFLAGS -Wmissing-prototypes"

        # Stop on warning.
        NXT_CFLAGS="$NXT_CFLAGS -Werror"

        # Debug.
        NXT_CFLAGS="$NXT_CFLAGS -g"
    ;;

    clang)
        nxt_have=NXT_CLANG . auto/have

        NXT_CFLAGS="$NXT_CFLAGS -pipe"
        NXT_CFLAGS="$NXT_CFLAGS -fPIC"

        # Do not export symbols except explicitly marked with NXT_EXPORT.
        NXT_CFLAGS="$NXT_CFLAGS -fvisibility=hidden"

        NXT_CFLAGS="$NXT_CFLAGS -fno-strict-overflow"

        NXT_CFLAGS="$NXT_CFLAGS -std=gnu11"

        NXT_CFLAGS="$NXT_CFLAGS -O"
        NXT_CFLAGS="$NXT_CFLAGS -Wall -Wextra"

        #NXT_CFLAGS="$NXT_CFLAGS -Wunused-result"
        NXT_CFLAGS="$NXT_CFLAGS -Wno-unused-parameter"
        #NXT_CFLAGS="$NXT_CFLAGS -Wshorten-64-to-32"
        NXT_CFLAGS="$NXT_CFLAGS -Wwrite-strings"
        #NXT_CFLAGS="$NXT_CFLAGS -O2"
        # strict-aliasing is always enabled by default in clang
        NXT_CFLAGS="$NXT_CFLAGS -fno-strict-aliasing"

        #NXT_CFLAGS="$NXT_CFLAGS -fomit-frame-pointer"
        NXT_CFLAGS="$NXT_CFLAGS -Wstrict-overflow=5"

        NXT_CFLAGS="$NXT_CFLAGS -Wmissing-prototypes"

        # Stop on warning.
        NXT_CFLAGS="$NXT_CFLAGS -Werror"

        # Debug.

        if [ "$NXT_SYSTEM_PLATFORM" != "powerpc" ]; then
            # "-g" flag causes the "unknown pseudo-op: `.cfi_sections'"
            # error on PowerPC Clang.
            NXT_CFLAGS="$NXT_CFLAGS -g"
        fi
    ;;

    *)
    ;;

esac

# Stop on error exit status again.
set -e