configure: Separate commonalities in msvc and icl flags
authorAlex Smith <alex.smith@warpsharp.info>
Thu, 30 May 2013 20:11:20 +0000 (20:11 +0000)
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>
Fri, 31 May 2013 18:39:14 +0000 (14:39 -0400)
Allows for easier handling of flags that may be specific to icl or msvc.
Furthermore, simplify the handling of warnings and remarks thanks to
icl's support of -Wall on Windows.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
configure

index 48b405f..897e1ed 100755 (executable)
--- a/configure
+++ b/configure
@@ -2340,16 +2340,17 @@ ccc_flags(){
    done
 }
 
-msvc_flags(){
+msvc_common_flags(){
     for flag; do
         case $flag in
+            # In addition to specifying certain flags under the compiler
+            # specific filters, they must be specified here as well or else the
+            # generic catch all at the bottom will print the original flag.
+            -Wall)                ;;
+            -std=c99)             ;;
+            # Common flags
             -fomit-frame-pointer) echo -Oy ;;
             -g)                   echo -Z7 ;;
-            -Wall)                echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
-                                       -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
-                                       -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
-                                       -wd4996 -wd4273 ;;
-            -std=c99)             ;;
             -fno-math-errno)      ;;
             -fno-common)          ;;
             -fno-signed-zeros)    ;;
@@ -2365,6 +2366,30 @@ msvc_flags(){
     done
 }
 
+msvc_flags(){
+    msvc_common_flags "$@"
+    for flag; do
+        case $flag in
+            -Wall)                echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
+                                       -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
+                                       -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
+                                       -wd4996 -wd4273 ;;
+        esac
+    done
+}
+
+icl_flags(){
+    msvc_common_flags "$@"
+    for flag; do
+        case $flag in
+            # Despite what Intel's documentation says -Wall, which is supported
+            # on Windows, does enable remarks so disable them here.
+            -Wall)                echo $flag -Qdiag-disable:remark ;;
+            -std=c99)             echo -Qstd=c99 ;;
+        esac
+    done
+}
+
 pgi_flags(){
     for flag; do
         case $flag in
@@ -2590,13 +2615,13 @@ probe_cc(){
         fi
         _cc_o='-Fo $@'
         _cc_e='-P'
-        _flags_filter=msvc_flags
+        _flags_filter=icl_flags
         _ld_lib='lib%.a'
         _ld_path='-libpath:'
         # -Qdiag-error to make icl error when presented with certain unknown arguments
         _flags='-nologo -Qdiag-error:10157 -Qdiag-error:4044'
         # -Qvec- -Qsimd- to prevent miscompilation, -GS for consistency with msvc which enables it by default
-        _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64 -Qstd=c99 -Qms0 -Qvec- -Qsimd- -GS'
+        _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64 -Qms0 -Qvec- -Qsimd- -GS'
         if [ $pfx = hostcc ]; then
             append _cflags -Dsnprintf=_snprintf
         fi
@@ -3916,7 +3941,6 @@ elif enabled msvc; then
     enabled x86_32 && disable aligned_stack
 elif enabled icl; then
     enabled x86_32 && disable aligned_stack
-    check_cflags -W1 # Just warnings, no remark spam
     # basically -fstrict-aliasing for icl that doesn't work (correctly) on 13.x+
     check_cpp_condition "windows.h" "__ICL < 1300" && add_cflags -Qansi-alias
     # icl will pass the inline asm tests but inline asm is currently not supported (build will fail)