Compilation error when using mingw+scons
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 17 Jan 2012 10:32:17 +0000 (10:32 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Tue, 17 Jan 2012 10:32:17 +0000 (10:32 +0000)
Error was caused by boost library (which doesn't seem to be working with Cycles too
when compiling with mingw). Switched mingw to use TR1 unordered collections. Also,
there was re-declaration of strcasecmp when mingw is used.

Additional changes are related on using own process spawning when BF_TOOLSET is set to
mingw. Seems to be working fine now (i've got too long command line error) and no
warning are supressing now (as it was told in comment for commented own process spawning).

SConstruct
build_files/scons/tools/btools.py
extern/carve/SConscript
extern/carve/include/carve/win32.h
intern/boolop/SConscript

index ee43015cf6ec1897ee2bc77f4284b6c4fd8dfb76..0dd59add019121803da410849541c73d8a0baf7b 100644 (file)
@@ -147,9 +147,8 @@ if toolset:
         env.Tool('mstoolkit', [toolpath])
     else:
         env = BlenderEnvironment(tools=[toolset], ENV = os.environ)
-        # xxx commented out, as was supressing warnings under mingw..
-        #if env:
-        #    btools.SetupSpawn(env)
+        if env:
+            btools.SetupSpawn(env)
 else:
     if bitness==64 and platform=='win32':
         env = BlenderEnvironment(ENV = os.environ, MSVS_ARCH='amd64')
index 296d518596a67923662a6575a77e3bde683ccd01..a71ab04b8885b940ef329c98dce4668293cfc550 100644 (file)
@@ -222,15 +222,15 @@ class ourSpawn:
         newargs = string.join(args[1:], ' ')
         cmdline = cmd + " " + newargs
         startupinfo = subprocess.STARTUPINFO()
-        startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
+        #startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
         proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
             stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False)
         data, err = proc.communicate()
         rv = proc.wait()
-        if rv:
-            print "====="
-            print err
-            print "====="
+        if data:
+            print(data)
+        if err:
+            print(err)
         return rv
 
 def SetupSpawn( env ):
index 4a87b825186f5fe1287414af23dfe45fe83a5ecd..e2f3c814e2eb741cecd04d5ac8e1a63c6db2d8b5 100644 (file)
@@ -14,7 +14,8 @@ incs = ['include']
 if env['WITH_BF_BOOST']:
     if env['OURPLATFORM'] not in ('win32-vc', 'win64-vc'):
         # Boost is setting as preferred collections library in the Carve code when using MSVC compiler
-        defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS')
+        if env['OURPLATFORM'] != 'win32-mingw':
+            defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS')
 
     defs.append('CARVE_SYSTEM_BOOST')
     incs.append(env['BF_BOOST_INC'])
index b73c9535f520bff9f660c918fc264afa23f83754..5f8ce3b3bf6cb2fd352d22e335fbc81594aaca87 100755 (executable)
@@ -8,9 +8,11 @@
 #include <string.h>
 #include <stdlib.h>
 
+#if !defined(__MINGW32__)
 inline int strcasecmp(const char *a, const char *b) {
   return _stricmp(a,b);
 }
+#endif
 
 inline void srandom(unsigned long input) {
   srand(input);
index 4012b0fca391fb87723ab6e67be3863fb48d1258..0efed532cb90326d40290969fa4166316deb103c 100644 (file)
@@ -17,7 +17,8 @@ else:
     if env['WITH_BF_BOOST']:
         if env['OURPLATFORM'] not in ('win32-vc', 'win64-vc'):
             # Boost is setting as preferred collections library in the Carve code when using MSVC compiler
-            defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS')
+            if env['OURPLATFORM'] != 'win32-mingw':
+                defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS')
 
         defs.append('CARVE_SYSTEM_BOOST')
         incs +=  ' ' + env['BF_BOOST_INC']