summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2016-01-25 00:21:04 -0300
committerJuan Linietsky <reduzio@gmail.com>2016-01-25 00:21:04 -0300
commitcaddcca4f468399e81fc703aa6e002e41250fdda (patch)
tree074af928719eb261296a93214f2f890e41b0b889
parentcaff4000a253130169c984d51c2be097fe50705f (diff)
-Many fixes to windows build system with Mingw on Windows. Fixes #2690
-rw-r--r--SConstruct5
-rw-r--r--drivers/SCsub2
-rwxr-xr-xmethods.py45
-rw-r--r--platform/windows/detect.py36
4 files changed, 51 insertions, 37 deletions
diff --git a/SConstruct b/SConstruct
index b047e961f2..bbc8c7d587 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1,5 +1,6 @@
EnsureSConsVersion(0,14);
+
import string
import os
import os.path
@@ -77,6 +78,9 @@ env_base.android_permission_chunk=""
env_base.android_appattributes_chunk=""
env_base.disabled_modules=[]
+env_base.split_drivers=False
+
+
env_base.__class__.android_add_maven_repository=methods.android_add_maven_repository
env_base.__class__.android_add_dependency=methods.android_add_dependency
@@ -90,6 +94,7 @@ env_base.__class__.android_add_to_attributes = methods.android_add_to_attributes
env_base.__class__.disable_module = methods.disable_module
env_base.__class__.add_source_files = methods.add_source_files
+env_base.__class__.use_windows_spawn_fix = methods.use_windows_spawn_fix
env_base["x86_opt_gcc"]=False
env_base["x86_opt_vc"]=False
diff --git a/drivers/SCsub b/drivers/SCsub
index a00d7fc3f9..701738c9f8 100644
--- a/drivers/SCsub
+++ b/drivers/SCsub
@@ -63,7 +63,7 @@ import string
if env['vsproj']=="yes":
env.AddToVSProject(env.drivers_sources)
-if (False): #split drivers, this used to be needed for windows until separate builders for windows were created
+if (env.split_drivers): #split drivers, this used to be needed for windows until separate builders for windows were created
for f in env.drivers_sources:
fname = ""
diff --git a/methods.py b/methods.py
index e8de4696cd..e3cf51be84 100755
--- a/methods.py
+++ b/methods.py
@@ -1309,7 +1309,50 @@ def android_add_to_attributes(self,file):
def disable_module(self):
self.disabled_modules.append(self.current_module)
-
+
+def use_windows_spawn_fix(self):
+
+ if (os.name!="nt"):
+ return #not needed, only for windows
+
+ self.split_drivers=True
+
+ import subprocess
+
+ def mySubProcess(cmdline,env):
+ #print "SPAWNED : " + cmdline
+ startupinfo = subprocess.STARTUPINFO()
+ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
+ proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False, env = env)
+ data, err = proc.communicate()
+ rv = proc.wait()
+ if rv:
+ print "====="
+ print err
+ print "====="
+ return rv
+
+ def mySpawn(sh, escape, cmd, args, env):
+
+ newargs = ' '.join(args[1:])
+ cmdline = cmd + " " + newargs
+
+ rv=0
+ if len(cmdline) > 32000 and cmd.endswith("ar") :
+ cmdline = cmd + " " + args[1] + " " + args[2] + " "
+ for i in range(3,len(args)) :
+ rv = mySubProcess( cmdline + args[i], env )
+ if rv :
+ break
+ else:
+ rv = mySubProcess( cmdline, env )
+
+ return rv
+
+ self['SPAWN'] = mySpawn
+
+
def save_active_platforms(apnames,ap):
for x in ap:
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
index 81247db388..0d7ee64d80 100644
--- a/platform/windows/detect.py
+++ b/platform/windows/detect.py
@@ -267,41 +267,7 @@ def configure(env):
# Workaround for MinGW. See:
# http://www.scons.org/wiki/LongCmdLinesOnWin32
- if (os.name=="nt"):
- import subprocess
-
- def mySubProcess(cmdline,env):
- #print "SPAWNED : " + cmdline
- startupinfo = subprocess.STARTUPINFO()
- startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
- proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
- stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False, env = env)
- data, err = proc.communicate()
- rv = proc.wait()
- if rv:
- print "====="
- print err
- print "====="
- return rv
-
- def mySpawn(sh, escape, cmd, args, env):
-
- newargs = ' '.join(args[1:])
- cmdline = cmd + " " + newargs
-
- rv=0
- if len(cmdline) > 32000 and cmd.endswith("ar") :
- cmdline = cmd + " " + args[1] + " " + args[2] + " "
- for i in range(3,len(args)) :
- rv = mySubProcess( cmdline + args[i], env )
- if rv :
- break
- else:
- rv = mySubProcess( cmdline, env )
-
- return rv
-
- env['SPAWN'] = mySpawn
+ env.use_windows_spawn_fix()
#build using mingw
if (os.name=="nt"):