msvc 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. # Copyright (C) Igor Sysoev
  2. # Copyright (C) Nginx, Inc.
  3. # MSVC 6.0 SP2 cl 12.00
  4. # MSVC Toolkit 2003 (7.1) cl 13.10
  5. # MSVC 2005 Express Edition SP1 (8.0) cl 14.00
  6. # MSVC 2008 Express Edition (9.0) cl 15.00
  7. # MSVC 2010 (10.0) cl 16.00
  8. # MSVC 2015 (14.0) cl 19.00
  9. NGX_MSVC_VER=`$NGX_WINE $CC 2>&1 | grep 'C/C++.* [0-9][0-9]*\.[0-9]' 2>&1 \
  10. | sed -e 's/^.* \([0-9][0-9]*\.[0-9].*\)/\1/'`
  11. echo " + cl version: $NGX_MSVC_VER"
  12. have=NGX_COMPILER value="\"cl $NGX_MSVC_VER\"" . auto/define
  13. ngx_msvc_ver=`echo $NGX_MSVC_VER | sed -e 's/^\([0-9]*\).*/\1/'`
  14. # detect x64 builds
  15. case "$NGX_MSVC_VER" in
  16. *ARM64)
  17. NGX_MACHINE=arm64
  18. ;;
  19. *x64)
  20. NGX_MACHINE=amd64
  21. ;;
  22. *)
  23. NGX_MACHINE=i386
  24. ;;
  25. esac
  26. # optimizations
  27. # maximize speed, equivalent to -Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy
  28. CFLAGS="$CFLAGS -O2"
  29. # enable global optimization
  30. #CFLAGS="$CFLAGS -Og"
  31. # enable intrinsic functions
  32. #CFLAGS="$CFLAGS -Oi"
  33. # disable inline expansion
  34. #CFLAGS="$CFLAGS -Ob0"
  35. # explicit inline expansion
  36. #CFLAGS="$CFLAGS -Ob1"
  37. # explicit and implicit inline expansion
  38. #CFLAGS="$CFLAGS -Ob2"
  39. # enable frame pointer omission
  40. #CFLAGS="$CFLAGS -Oy"
  41. # disable stack checking calls
  42. #CFLAGS="$CFLAGS -Gs"
  43. # pools strings as read/write
  44. #CFLAGS="$CFLAGS -Gf"
  45. # pools strings as read-only
  46. #CFLAGS="$CFLAGS -GF"
  47. case $CPU in
  48. pentium)
  49. # optimize for Pentium and Athlon
  50. CPU_OPT="-G5"
  51. ;;
  52. pentiumpro)
  53. # optimize for Pentium Pro, Pentium II and Pentium III
  54. CPU_OPT="-G6"
  55. ;;
  56. pentium4)
  57. # optimize for Pentium 4, MSVC 7
  58. CPU_OPT="-G7"
  59. ;;
  60. esac
  61. # __cdecl, default, must be used with OpenSSL, md5 asm, and sha1 asm
  62. #CPU_OPT="$CPU_OPT -Gd"
  63. # __stdcall
  64. #CPU_OPT="$CPU_OPT -Gz"
  65. # __fastcall
  66. #CPU_OPT="$CPU_OPT -Gr"
  67. CFLAGS="$CFLAGS $CPU_OPT"
  68. # warnings
  69. CFLAGS="$CFLAGS -W4"
  70. # stop on warning
  71. CFLAGS="$CFLAGS -WX"
  72. # disable logo
  73. CFLAGS="$CFLAGS -nologo"
  74. # the link flags
  75. CORE_LINK="$CORE_LINK -link -verbose:lib"
  76. # link with libcmt.lib, multithreaded
  77. LIBC="-MT"
  78. # link with msvcrt.dll
  79. # however, MSVC Toolkit 2003 has no MSVCRT.LIB
  80. #LIBC="-MD"
  81. CFLAGS="$CFLAGS $LIBC"
  82. CORE_LIBS="$CORE_LIBS kernel32.lib user32.lib"
  83. # Win32 GUI mode application
  84. #CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup"
  85. # debug
  86. # msvc under Wine issues
  87. # C1902: Program database manager mismatch; please check your installation
  88. if [ -z "$NGX_WINE" ]; then
  89. CFLAGS="$CFLAGS -Zi -Fd$NGX_OBJS/nginx.pdb"
  90. CORE_LINK="$CORE_LINK -debug"
  91. fi
  92. # MSVC 2005 supports C99 variadic macros
  93. if [ "$ngx_msvc_ver" -ge 14 ]; then
  94. have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
  95. fi
  96. # precompiled headers
  97. CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch"
  98. CORE_LINK="$CORE_LINK $NGX_OBJS/ngx_pch.obj"
  99. NGX_PCH="$NGX_OBJS/ngx_config.pch"
  100. NGX_BUILD_PCH="-Ycngx_config.h -Fp$NGX_OBJS/ngx_config.pch"
  101. NGX_USE_PCH="-Yungx_config.h -Fp$NGX_OBJS/ngx_config.pch"
  102. # the resource file
  103. NGX_RES="$NGX_OBJS/nginx.res"
  104. NGX_RCC="rc -fo$NGX_RES \$(CORE_INCS) $NGX_WIN32_RC"
  105. CORE_LINK="$NGX_RES $CORE_LINK"
  106. # dynamic modules
  107. #MAIN_LINK="-link -def:$NGX_OBJS/nginx.def"
  108. #MODULE_LINK="-LD $NGX_OBJS/nginx.lib"
  109. ngx_pic_opt=
  110. ngx_objout="-Fo"
  111. ngx_binout="-Fe"
  112. ngx_objext="obj"
  113. ngx_long_start='@<<
  114. '
  115. ngx_long_end='<<'
  116. ngx_long_regex_cont=' \
  117. '
  118. ngx_long_cont='
  119. '
  120. # MSVC understand / in path
  121. #ngx_regex_dirsep='\\'
  122. #ngx_dirsep="\\"