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