解剖 Nginx·自動腳本篇(6)編譯器名稱變量腳本 auto/cc/name
- Author: Poechant
- Blog: blog.CSDN.net/Poechant
- Email: zhongchao.ustc#gmail.com (#->@)
- Date: March 12th, 2012
- Copyright © 柳大·Poechant
回顧變量 CC
最初是在auto/options
腳本中初始化的:
CC=${CC:-gcc}
1 C Compiler 的 feature
Windows 平臺的編譯器叫做MSVC
,其他平臺的都統稱爲C
Compiler
。
1.1 獲取編譯器參數
該腳本並不複雜,首先通過NGX_PLATFORM
變量來判斷是否是win32
(該變量是在auto/options
中初始化的),如果是,則:
ngx_feature="C compiler"
ngx_feature_name=
ngx_feature_run=yes
ngx_feature_incs=
ngx_feature_path=
ngx_feature_libs=
ngx_feature_test=
. auto/feature
其中,ngx_feature
變量爲C
compiler
,然後初始化其他一些與 feature 相關的變量,再引用auto/feature
腳本。
1.2 無法找到編譯器則退出
ngx_found
表示編譯器是否存在,判斷ngx_found
變量如果是no
(該變量是在auto/feature
腳本中被置值的),則:
echo
echo $0: error: C compiler $CC is not found
echo
exit 1
即如果編譯器不存在,就退出自動腳本運行。
2 根據不同編譯器設置名稱
2.1 msvc
if `$NGX_WINE $CC -v 2>&1 \
| grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16' \
>/dev/null 2>&1`; then
NGX_CC_NAME=msvc10
echo " + using Microsoft Visual C++ 10 compiler"
else if `$NGX_WINE $CC -v 2>&1 \
| grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14' \
>/dev/null 2>&1`; then
NGX_CC_NAME=msvc8
echo " + using Microsoft Visual C++ 8 compiler"
else if `$NGX_WINE $CC -v 2>&1 \
| grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13' \
>/dev/null 2>&1`; then
NGX_CC_NAME=msvc7
echo " + using Microsoft Visual C++ 7 compiler"
else
NGX_CC_NAME=msvc
echo " + using Microsoft Visual C++ compiler"
fi
fi
fi
2.2 owc
else
if [ "$CC" = wcl386 ]; then
NGX_CC_NAME=owc
echo " + using Open Watcom C compiler"
2.3 bcc
else
if [ "$CC" = bcc32 ]; then
NGX_CC_NAME=bcc
echo " + using Borland C++ compiler"
2.4 gcc
else
if `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then
NGX_CC_NAME=gcc
echo " + using GNU C compiler"
2.5 icc
else
if `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then
NGX_CC_NAME=icc
echo " + using Intel C++ compiler"
2.6 sunc
else
if `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then
NGX_CC_NAME=sunc
echo " + using Sun C compiler"
2.7 ccc
else
if `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then
NGX_CC_NAME=ccc
echo " + using Compaq C compiler"
2.8 acc
else
if `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then
NGX_CC_NAME=acc
echo " + using HP aC++ compiler"
2.9 Unknown
else
NGX_CC_NAME=unknown
-
轉載請註明來自“柳大·Poechant的CSDN博客”:Blog.CSDN.net/Poechant