sunc 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. # Copyright (C) Igor Sysoev
  2. # Copyright (C) Nginx, Inc.
  3. # Sun C 5.7 Patch 117837-04 2005/05/11 Sun Studio 10
  4. # Sun C 5.8 2005/10/13 Sun Studio 11
  5. # Sun C 5.9 SunOS_i386 2007/05/03 Sun Studio 12
  6. # Sun C 5.9 SunOS_sparc 2007/05/03
  7. # Sun C 5.10 SunOS_i386 2009/06/03 Sun Studio 12.1
  8. # Sun C 5.11 SunOS_i386 2010/08/13 Sun Studio 12.2
  9. NGX_SUNC_VER=`$CC -V 2>&1 | grep 'Sun C' 2>&1 \
  10. | sed -e 's/^.* Sun C \(.*\)/\1/'`
  11. echo " + Sun C version: $NGX_SUNC_VER"
  12. have=NGX_COMPILER value="\"Sun C $NGX_SUNC_VER\"" . auto/define
  13. cat << END > $NGX_AUTOTEST.c
  14. int main(void) {
  15. printf("%d", __SUNPRO_C);
  16. return 0;
  17. }
  18. END
  19. eval "$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1"
  20. if [ -x $NGX_AUTOTEST ]; then
  21. ngx_sunc_ver=`$NGX_AUTOTEST`
  22. fi
  23. rm -rf $NGX_AUTOTEST*
  24. # 1424 == 0x590, Sun Studio 12
  25. if [ "$ngx_sunc_ver" -ge 1424 ]; then
  26. ngx_sparc32="-m32"
  27. ngx_sparc64="-m64"
  28. ngx_amd64="-m64"
  29. else
  30. ngx_sparc32="-xarch=v8plus"
  31. ngx_sparc64="-xarch=v9"
  32. ngx_amd64="-xarch=amd64"
  33. fi
  34. case "$NGX_MACHINE" in
  35. i86pc)
  36. NGX_AUX=" src/os/unix/ngx_sunpro_x86.il"
  37. ;;
  38. sun4u | sun4v)
  39. NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il"
  40. ;;
  41. esac
  42. MAIN_LINK=
  43. MODULE_LINK="-G"
  44. # optimizations
  45. # 20736 == 0x5100, Sun Studio 12.1
  46. if [ "$ngx_sunc_ver" -ge 20736 ]; then
  47. ngx_fast="-fast"
  48. else
  49. # older versions had problems with bit-fields
  50. ngx_fast="-fast -xalias_level=any"
  51. fi
  52. IPO=-xipo
  53. CFLAGS="$CFLAGS $ngx_fast $IPO"
  54. CORE_LINK="$CORE_LINK $ngx_fast $IPO"
  55. case $CPU in
  56. pentium)
  57. # optimize for Pentium and Athlon
  58. CPU_OPT="-xchip=pentium"
  59. ;;
  60. pentiumpro)
  61. # optimize for Pentium Pro, Pentium II
  62. CPU_OPT="-xchip=pentium_pro"
  63. ;;
  64. pentium3)
  65. # optimize for Pentium III
  66. CPU_OPT="-xchip=pentium3"
  67. #CPU_OPT="$CPU_OPT -xarch=sse"
  68. CPU_OPT="$CPU_OPT -xcache=16/32/4:256/32/4"
  69. ;;
  70. pentium4)
  71. # optimize for Pentium 4
  72. CPU_OPT="-xchip=pentium4"
  73. #CPU_OPT="$CPU_OPT -xarch=sse2"
  74. CPU_OPT="$CPU_OPT -xcache=8/64/4:256/128/8"
  75. ;;
  76. opteron)
  77. # optimize for Opteron
  78. CPU_OPT="-xchip=opteron"
  79. #CPU_OPT="$CPU_OPT -xarch=sse2"
  80. CPU_OPT="$CPU_OPT -xcache=64/64/2:1024/64/16"
  81. ;;
  82. sparc32)
  83. # build 32-bit UltraSparc binary
  84. CPU_OPT="$ngx_sparc32"
  85. CORE_LINK="$CORE_LINK $ngx_sparc32"
  86. CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc32"
  87. NGX_CPU_CACHE_LINE=64
  88. ;;
  89. sparc64)
  90. # build 64-bit UltraSparc binary
  91. CPU_OPT="$ngx_sparc64"
  92. CORE_LINK="$CORE_LINK $ngx_sparc64"
  93. CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc64"
  94. NGX_CPU_CACHE_LINE=64
  95. ;;
  96. amd64)
  97. # build 64-bit amd64 binary
  98. CPU_OPT="$ngx_amd64"
  99. CORE_LINK="$CORE_LINK $ngx_amd64"
  100. CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_amd64"
  101. NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il"
  102. NGX_CPU_CACHE_LINE=64
  103. ;;
  104. esac
  105. CFLAGS="$CFLAGS $CPU_OPT"
  106. if [ ".$PCRE_OPT" = "." ]; then
  107. PCRE_OPT="$ngx_fast $IPO $CPU_OPT"
  108. fi
  109. if [ ".$ZLIB_OPT" = "." ]; then
  110. ZLIB_OPT="$ngx_fast $IPO $CPU_OPT"
  111. fi
  112. # stop on warning
  113. CFLAGS="$CFLAGS -errwarn=%all"
  114. # debug
  115. CFLAGS="$CFLAGS -g"