Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 1 | |
| 2 | # Copyright (C) Igor Sysoev |
Maxim Konovalov | f8d59e3 | 2012-01-18 15:07:43 +0000 | [diff] [blame] | 3 | # Copyright (C) Nginx, Inc. |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 4 | |
| 5 | |
Igor Sysoev | c157172 | 2005-03-19 12:38:37 +0000 | [diff] [blame] | 6 | # gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2 |
Igor Sysoev | 11d7532 | 2005-03-01 15:20:36 +0000 | [diff] [blame] | 7 | # 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4.0, 3.4.2 |
Igor Sysoev | 7b190b4 | 2005-06-07 15:56:31 +0000 | [diff] [blame] | 8 | # 4.0.0, 4.0.1, 4.1.0 |
Igor Sysoev | c157172 | 2005-03-19 12:38:37 +0000 | [diff] [blame] | 9 | |
| 10 | |
| 11 | NGX_GCC_VER=`$CC -v 2>&1 | grep 'gcc version' 2>&1 \ |
| 12 | | sed -e 's/^.* version \(.*\)/\1/'` |
| 13 | |
| 14 | echo " + gcc version: $NGX_GCC_VER" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 15 | |
Igor Sysoev | 208eed2 | 2005-10-07 13:30:52 +0000 | [diff] [blame] | 16 | have=NGX_COMPILER value="\"gcc $NGX_GCC_VER\"" . auto/define |
| 17 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 18 | |
| 19 | # Solaris 7's /usr/ccs/bin/as does not support "-pipe" |
| 20 | |
| 21 | CC_TEST_FLAGS="-pipe" |
| 22 | |
Igor Sysoev | 0e5dc5c | 2005-11-15 13:30:52 +0000 | [diff] [blame] | 23 | ngx_feature="gcc -pipe switch" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 24 | ngx_feature_name= |
| 25 | ngx_feature_run=no |
| 26 | ngx_feature_incs= |
Igor Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 27 | ngx_feature_path= |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 28 | ngx_feature_libs= |
| 29 | ngx_feature_test= |
| 30 | . auto/feature |
| 31 | |
| 32 | CC_TEST_FLAGS= |
| 33 | |
| 34 | if [ $ngx_found = yes ]; then |
| 35 | PIPE="-pipe" |
| 36 | fi |
| 37 | |
Igor Sysoev | 7845223 | 2005-10-12 13:50:36 +0000 | [diff] [blame] | 38 | |
Igor Sysoev | c31a9bb | 2005-11-26 10:11:11 +0000 | [diff] [blame] | 39 | case "$NGX_MACHINE" in |
Igor Sysoev | 7845223 | 2005-10-12 13:50:36 +0000 | [diff] [blame] | 40 | |
Igor Sysoev | 5245c09 | 2006-10-05 20:03:34 +0000 | [diff] [blame] | 41 | sun4u | sun4v | sparc | sparc64 ) |
Igor Sysoev | c2068d0 | 2005-10-19 12:33:58 +0000 | [diff] [blame] | 42 | # "-mcpu=v9" enables the "casa" assembler instruction |
Igor Sysoev | 7845223 | 2005-10-12 13:50:36 +0000 | [diff] [blame] | 43 | CFLAGS="$CFLAGS -mcpu=v9" |
| 44 | ;; |
| 45 | |
| 46 | esac |
| 47 | |
| 48 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 49 | # optimizations |
| 50 | |
Igor Sysoev | aa82861 | 2005-02-09 14:31:07 +0000 | [diff] [blame] | 51 | #NGX_GCC_OPT="-O2" |
| 52 | #NGX_GCC_OPT="-Os" |
| 53 | NGX_GCC_OPT="-O" |
| 54 | |
Igor Sysoev | aa82861 | 2005-02-09 14:31:07 +0000 | [diff] [blame] | 55 | #CFLAGS="$CFLAGS -fomit-frame-pointer" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 56 | |
| 57 | case $CPU in |
| 58 | pentium) |
| 59 | # optimize for Pentium and Athlon |
| 60 | CPU_OPT="-march=pentium" |
Igor Sysoev | 2402502 | 2005-12-16 15:07:08 +0000 | [diff] [blame] | 61 | NGX_CPU_CACHE_LINE=32 |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 62 | ;; |
| 63 | |
Igor Sysoev | 7845223 | 2005-10-12 13:50:36 +0000 | [diff] [blame] | 64 | pentiumpro | pentium3) |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 65 | # optimize for Pentium Pro, Pentium II and Pentium III |
| 66 | CPU_OPT="-march=pentiumpro" |
Igor Sysoev | 2402502 | 2005-12-16 15:07:08 +0000 | [diff] [blame] | 67 | NGX_CPU_CACHE_LINE=32 |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 68 | ;; |
| 69 | |
| 70 | pentium4) |
| 71 | # optimize for Pentium 4, gcc 3.x |
| 72 | CPU_OPT="-march=pentium4" |
Igor Sysoev | 2402502 | 2005-12-16 15:07:08 +0000 | [diff] [blame] | 73 | NGX_CPU_CACHE_LINE=128 |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 74 | ;; |
| 75 | |
Igor Sysoev | 7b190b4 | 2005-06-07 15:56:31 +0000 | [diff] [blame] | 76 | athlon) |
| 77 | # optimize for Athlon, gcc 3.x |
| 78 | CPU_OPT="-march=athlon" |
Igor Sysoev | 2402502 | 2005-12-16 15:07:08 +0000 | [diff] [blame] | 79 | NGX_CPU_CACHE_LINE=64 |
Igor Sysoev | 7b190b4 | 2005-06-07 15:56:31 +0000 | [diff] [blame] | 80 | ;; |
| 81 | |
Igor Sysoev | 899b44e | 2005-05-12 14:58:06 +0000 | [diff] [blame] | 82 | opteron) |
| 83 | # optimize for Opteron, gcc 3.x |
| 84 | CPU_OPT="-march=opteron" |
Igor Sysoev | 2402502 | 2005-12-16 15:07:08 +0000 | [diff] [blame] | 85 | NGX_CPU_CACHE_LINE=64 |
Igor Sysoev | 899b44e | 2005-05-12 14:58:06 +0000 | [diff] [blame] | 86 | ;; |
| 87 | |
Igor Sysoev | c31a9bb | 2005-11-26 10:11:11 +0000 | [diff] [blame] | 88 | sparc32) |
| 89 | # build 32-bit UltraSparc binary |
| 90 | CPU_OPT="-m32" |
| 91 | CORE_LINK="$CORE_LINK -m32" |
Igor Sysoev | 2402502 | 2005-12-16 15:07:08 +0000 | [diff] [blame] | 92 | NGX_CPU_CACHE_LINE=64 |
Igor Sysoev | c31a9bb | 2005-11-26 10:11:11 +0000 | [diff] [blame] | 93 | ;; |
| 94 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 95 | sparc64) |
| 96 | # build 64-bit UltraSparc binary |
| 97 | CPU_OPT="-m64" |
| 98 | CORE_LINK="$CORE_LINK -m64" |
Igor Sysoev | 2402502 | 2005-12-16 15:07:08 +0000 | [diff] [blame] | 99 | NGX_CPU_CACHE_LINE=64 |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 100 | ;; |
| 101 | |
Igor Sysoev | c2807ec | 2006-02-16 15:26:46 +0000 | [diff] [blame] | 102 | ppc64) |
| 103 | # build 64-bit PowerPC binary |
| 104 | CPU_OPT="-m64" |
| 105 | CPU_OPT="$CPU_OPT -falign-functions=32 -falign-labels=32" |
| 106 | CPU_OPT="$CPU_OPT -falign-loops=32 -falign-jumps=32" |
| 107 | CORE_LINK="$CORE_LINK -m64" |
Igor Sysoev | c2807ec | 2006-02-16 15:26:46 +0000 | [diff] [blame] | 108 | NGX_CPU_CACHE_LINE=128 |
| 109 | ;; |
| 110 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 111 | esac |
| 112 | |
Igor Sysoev | 89d635f | 2009-11-25 17:34:35 +0000 | [diff] [blame] | 113 | CC_AUX_FLAGS="$CC_AUX_FLAGS $CPU_OPT" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 114 | |
Igor Sysoev | c157172 | 2005-03-19 12:38:37 +0000 | [diff] [blame] | 115 | case "$NGX_GCC_VER" in |
| 116 | 2.7*) |
| 117 | # batch build |
| 118 | CPU_OPT= |
| 119 | ;; |
| 120 | esac |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 121 | |
| 122 | |
| 123 | CFLAGS="$CFLAGS $PIPE $CPU_OPT" |
| 124 | |
| 125 | if [ ".$PCRE_OPT" = "." ]; then |
| 126 | PCRE_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT" |
| 127 | else |
| 128 | PCRE_OPT="$PCRE_OPT $PIPE" |
| 129 | fi |
| 130 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 131 | if [ ".$ZLIB_OPT" = "." ]; then |
| 132 | ZLIB_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT" |
| 133 | else |
| 134 | ZLIB_OPT="$ZLIB_OPT $PIPE" |
| 135 | fi |
| 136 | |
| 137 | |
| 138 | # warnings |
| 139 | |
Igor Sysoev | aa82861 | 2005-02-09 14:31:07 +0000 | [diff] [blame] | 140 | # -W requires at least -O |
Igor Sysoev | 21dd4be | 2007-01-11 16:20:18 +0000 | [diff] [blame] | 141 | CFLAGS="$CFLAGS ${NGX_GCC_OPT:--O} -W" |
Igor Sysoev | aa82861 | 2005-02-09 14:31:07 +0000 | [diff] [blame] | 142 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 143 | CFLAGS="$CFLAGS -Wall -Wpointer-arith" |
Igor Sysoev | 0e5dc5c | 2005-11-15 13:30:52 +0000 | [diff] [blame] | 144 | #CFLAGS="$CFLAGS -Wconversion" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 145 | #CFLAGS="$CFLAGS -Winline" |
Ruslan Ermilov | 2d60cd7 | 2012-07-24 15:13:34 +0000 | [diff] [blame] | 146 | #CFLAGS="$CFLAGS -Wmissing-prototypes" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 147 | |
Igor Sysoev | c157172 | 2005-03-19 12:38:37 +0000 | [diff] [blame] | 148 | case "$NGX_GCC_VER" in |
Sergey Kandaurov | 77d46c6 | 2016-06-07 12:15:56 +0300 | [diff] [blame] | 149 | 2.*) |
| 150 | # we have a lot of the unused function arguments |
| 151 | CFLAGS="$CFLAGS -Wno-unused" |
| 152 | ;; |
| 153 | |
| 154 | *) |
Igor Sysoev | c157172 | 2005-03-19 12:38:37 +0000 | [diff] [blame] | 155 | # we have a lot of the unused function arguments |
| 156 | CFLAGS="$CFLAGS -Wno-unused-parameter" |
Igor Sysoev | 03c7794 | 2009-04-24 15:31:13 +0000 | [diff] [blame] | 157 | # 4.2.1 shows the warning in wrong places |
Igor Sysoev | c157172 | 2005-03-19 12:38:37 +0000 | [diff] [blame] | 158 | #CFLAGS="$CFLAGS -Wunreachable-code" |
Maxim Dounin | e9a7011 | 2014-05-28 17:41:44 +0400 | [diff] [blame] | 159 | |
| 160 | # deprecated system OpenSSL library on OS X |
| 161 | if [ "$NGX_SYSTEM" = "Darwin" ]; then |
| 162 | CFLAGS="$CFLAGS -Wno-deprecated-declarations" |
| 163 | fi |
Igor Sysoev | c157172 | 2005-03-19 12:38:37 +0000 | [diff] [blame] | 164 | ;; |
Igor Sysoev | c157172 | 2005-03-19 12:38:37 +0000 | [diff] [blame] | 165 | esac |
| 166 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 167 | |
| 168 | # stop on warning |
| 169 | CFLAGS="$CFLAGS -Werror" |
| 170 | |
| 171 | # debug |
| 172 | CFLAGS="$CFLAGS -g" |
| 173 | |
| 174 | # DragonFly's gcc3 generates DWARF |
| 175 | #CFLAGS="$CFLAGS -g -gstabs" |
| 176 | |
| 177 | if [ ".$CPP" = "." ]; then |
| 178 | CPP="$CC -E" |
| 179 | fi |