Browse Source

Merge pull request #1064 from leezh/mingw-fixes

MinGW linker command too long
Juan Linietsky 10 years ago
parent
commit
dfa34a66cd
1 changed files with 22 additions and 2 deletions
  1. 22 2
      SConstruct

+ 22 - 2
SConstruct

@@ -133,8 +133,8 @@ Help(opts.GenerateHelpText(env_base)) # generate help
 # add default include paths
 
 env_base.Append(CPPPATH=['#core','#core/math','#tools','#drivers','#'])
-	
-# configure ENV for platform	
+
+# configure ENV for platform
 env_base.platform_exporters=platform_exporters
 
 """
@@ -170,6 +170,26 @@ if selected_platform in platform_list:
 	else:
 		env = env_base.Clone()
 
+	# Workaround for MinGW. See:
+	# http://www.scons.org/wiki/LongCmdLinesOnWin32
+	if (os.name=="nt"):
+		import subprocess
+		def mySpawn(sh, escape, cmd, args, env):
+				newargs = ' '.join(args[1:])
+				cmdline = cmd + " " + newargs
+				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
+		env['SPAWN'] = mySpawn
+
 	env.extra_suffix=""
 
 	CCFLAGS = env.get('CCFLAGS', '')