diff options
Diffstat (limited to 'auto/cc')
-rw-r--r-- | auto/cc/test | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/auto/cc/test b/auto/cc/test new file mode 100644 index 00000000..9c9602db --- /dev/null +++ b/auto/cc/test @@ -0,0 +1,209 @@ + +# 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 +if `/bin/sh -c "($CC -V)" 2>&1 | grep "Sun C" >> $NXT_AUTOCONF_ERR 2>&1` +then + NXT_CC_NAME=SunC + $echo " + using Sun C compiler" + NXT_CC_VERSION=`/bin/sh -c "($CC -V)" 2>&1 | grep "Sun C" 2>&1` + $echo " + $NXT_CC_VERSION" + +else +if `/bin/sh -c "($CC -qversion)" 2>&1 \ + | grep "^IBM XL" >> $NXT_AUTOCONF_ERR 2>&1` +then + NXT_CC_NAME=xlC + $echo " + using AIX xlC compiler" + NXT_CC_VERSION=`/bin/sh -c "($CC -qversion)" 2>&1 | grep "IBM XL" 2>&1` + $echo " + $NXT_CC_VERSION" + +else +if `/bin/sh -c "($CC -V)" 2>&1 | grep "Intel(R) C" >> $NXT_AUTOCONF_ERR 2>&1` +then + NXT_CC_NAME=ICC + $echo " + using Intel C++ compiler" + NXT_CC_VERSION=ICC + +else +if `/bin/sh -c "($CC -v)" 2>&1 \ + | grep "Microsoft (R) 32-bit C/C" >> $NXT_AUTOCONF_ERR 2>&1` +then + NXT_CC_NAME=MSVC + $echo " + using MS Visual C++ compiler" + NXT_CC_VERSION=MSVC + +else + NXT_CC_NAME=cc + NXT_CC_VERSION=cc + +fi # MSVC +fi # ICC +fi # xlC +fi # SunC +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" + + # c99/gnu99 conflict with Solaris XOPEN. + #NXT_CFLAGS="$NXT_CFLAGS -std=gnu99" + + NXT_CFLAGS="$NXT_CFLAGS -O" + #NXT_CFLAGS="$NXT_CFLAGS -O0" + NXT_CFLAGS="$NXT_CFLAGS -W -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 -Wno-strict-aliasing" + + #NXT_CFLAGS="$NXT_CFLAGS -fomit-frame-pointer" + #NXT_CFLAGS="$NXT_CFLAGS -momit-leaf-frame-pointer" + + # -Wstrict-overflow is supported by GCC 4.2+. + #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 -O" + #NXT_CFLAGS="$NXT_CFLAGS -O0" + NXT_CFLAGS="$NXT_CFLAGS -W -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" + #NXT_CFLAGS="$NXT_CFLAGS -fomit-frame-pointer" + NXT_CFLAGS="$NXT_CFLAGS -fstrict-aliasing" + 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 + ;; + + SunC) + nxt_have=NXT_SUNC . auto/have + + NXT_CFLAGS="$NXT_CFLAGS -fPIC" + # Optimization. + NXT_CFLAGS="$NXT_CFLAGS -O -fast" + # Stop on warning. + NXT_CFLAGS="$NXT_CFLAGS -errwarn=%all" + # Debug. + NXT_CFLAGS="$NXT_CFLAGS -g" + ;; + + xlC) + nxt_have=NXT_XLC . auto/have + + #NXT_CFLAGS="$NXT_CFLAGS -qalloca" + # alloca support. + NXT_CFLAGS="$NXT_CFLAGS -qlanglvl=extc99" + # __thread support. + NXT_CFLAGS="$NXT_CFLAGS -qtls" + # Suppress warning + # 1506-159 (E) Bit field type specified for XXX is not valid. + # Type unsigned assumed. + NXT_CFLAGS="$NXT_CFLAGS -qsuppress=1506-159" + ;; + + ICC) + ;; + + MSVC) + ;; + + *) + ;; + +esac + +# Stop on error exit status again. +set -e |