giscanner/sourcescanner.py: Update for Visual C++ usage
authorChun-wei Fan <fanchunwei@src.gnome.org>
Tue, 14 Aug 2012 07:37:14 +0000 (15:37 +0800)
committerColin Walters <walters@verbum.org>
Sat, 27 Oct 2012 16:06:10 +0000 (12:06 -0400)
Since the Visual C++ (cl.exe) preprocessor does not accept source input
from stdin (the '-' preprocessor flag, we need to use the GCC preprocessor
as a helper here.

Note that the generated dumper program is still compiled and run by
Visual C++.

https://bugzilla.gnome.org/show_bug.cgi?id=681820

giscanner/sourcescanner.py

index db282f8..9eb4ab4 100644 (file)
@@ -274,7 +274,16 @@ class SourceScanner(object):
 
         defines = ['__GI_SCANNER__']
         undefs = []
-        cpp_args = os.environ.get('CC', 'cc').split()
+        cpp_exec = os.environ.get('CC', 'cc').split()
+        # The Microsoft compiler/preprocessor (cl) does not accept
+        # source input from stdin (the '-' flag), so we need
+        # some help from gcc from MinGW/Cygwin or so.
+        # Note that the generated dumper program is
+        # still built and linked by Visual C++.
+        if 'cl' in cpp_exec:
+            cpp_args = 'gcc'.split()
+        else:
+            cpp_args = cpp_exec
         cpp_args += ['-E', '-C', '-I.', '-']
 
         cpp_args += self._cpp_options