scons: Ensure inttypes.h is always pre-included on MSVC.
authorJose Fonseca <jfonseca@vmware.com>
Fri, 20 Mar 2015 06:53:09 +0000 (06:53 +0000)
committerJose Fonseca <jfonseca@vmware.com>
Sun, 22 Mar 2015 08:23:24 +0000 (08:23 +0000)
It's a bit hackish couldn't find another solution.  See code comment
for details.   The warning is useful, so universally disabling doesn't
sound a good idea.

Fixes

   warning C4005: 'xxx' : macro redefinition

Reviewed-by: Brian Paul <brianp@vmware.com>
scons/gallium.py

index 7050412..b4df145 100755 (executable)
@@ -642,6 +642,13 @@ def generate(env):
             # disable all MSVC extensions.
             '-DYY_USE_CONST=',
         ])
+        # Flex relies on __STDC_VERSION__>=199901L to decide when to include
+        # C99 inttypes.h.  We always have inttypes.h available with MSVC
+        # (either the one bundled with MSVC 2013, or the one we bundle
+        # ourselves), but we can't just define __STDC_VERSION__ without
+        # breaking stuff, as MSVC doesn't fully support C99.  There's also no
+        # way to premptively include stdint.
+        env.Append(CCFLAGS = ['-FIinttypes.h'])
     if host_platform.system() == 'Windows':
         # Prefer winflexbison binaries, as not only they are easier to install
         # (no additional dependencies), but also better Windows support.