[pypy-commit] pypy win64-stage1: begin to revive mingw support, allow --cc <arbitrary exe name>
mattip
noreply at buildbot.pypy.org
Mon Mar 19 22:47:50 CET 2012
Author: mattip
Branch: win64-stage1
Changeset: r53820:87e86cdaa9c3
Date: 2012-03-19 23:47 +0200
http://bitbucket.org/pypy/pypy/changeset/87e86cdaa9c3/
Log: begin to revive mingw support, allow --cc <arbitrary exe name>
diff --git a/pypy/rlib/_rffi_stacklet.py b/pypy/rlib/_rffi_stacklet.py
--- a/pypy/rlib/_rffi_stacklet.py
+++ b/pypy/rlib/_rffi_stacklet.py
@@ -14,7 +14,7 @@
includes = ['src/stacklet/stacklet.h'],
separate_module_sources = ['#include "src/stacklet/stacklet.c"\n'],
)
-if sys.platform == 'win32':
+if 'masm' in dir(eci.platform): # Microsoft compiler
if is_emulated_long:
asmsrc = 'switch_x64_msvc.asm'
else:
diff --git a/pypy/translator/platform/__init__.py b/pypy/translator/platform/__init__.py
--- a/pypy/translator/platform/__init__.py
+++ b/pypy/translator/platform/__init__.py
@@ -301,6 +301,8 @@
global platform
log.msg("Setting platform to %r cc=%s" % (new_platform,cc))
platform = pick_platform(new_platform, cc)
+ if not platform:
+ raise ValueError("pick_platform failed")
if new_platform == 'host':
global host
diff --git a/pypy/translator/platform/windows.py b/pypy/translator/platform/windows.py
--- a/pypy/translator/platform/windows.py
+++ b/pypy/translator/platform/windows.py
@@ -8,14 +8,31 @@
from pypy.translator.platform import Platform, posix
def Windows(cc=None):
- if cc == 'mingw32':
+ import subprocess
+ if not cc:
+ return MsvcPlatform(cc=cc, x64=False)
+ elif cc.startswith('mingw'):
return MingwPlatform(cc)
- else:
- return MsvcPlatform(cc, False)
+ try:
+ subprocess.check_output([cc, '--version'])
+ except:
+ log.error("Unknown cc option '%s'"%cc)
+ return None
+ return MingwPlatform(cc)
+
+def Windows_x64(cc=None):
+ import subprocess
+ if not cc:
+ return MsvcPlatform(cc=cc, x64=True)
+ elif cc.startswith('mingw'):
+ return MingwPlatform(cc)
+ try:
+ subprocess.check_output([cc, '--version'])
+ except:
+ log.error("Unknown cc option '%s'"%cc)
+ return None
+ return MingwPlatform(cc)
-def Windows_x64(cc=None):
- return MsvcPlatform(cc, True)
-
def _get_msvc_env(vsver, x64flag):
try:
toolsdir = os.environ['VS%sCOMNTOOLS' % vsver]
@@ -31,14 +48,16 @@
vcvars = os.path.join(toolsdir, 'vsvars32.bat')
import subprocess
- popen = subprocess.Popen('"%s" & set' % (vcvars,),
+ try:
+ popen = subprocess.Popen('"%s" & set' % (vcvars,),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
- stdout, stderr = popen.communicate()
- if popen.wait() != 0:
- return
-
+ stdout, stderr = popen.communicate()
+ if popen.wait() != 0:
+ return None
+ except:
+ return None
env = {}
stdout = stdout.replace("\r\n", "\n")
@@ -395,7 +414,9 @@
so_ext = 'dll'
def __init__(self, cc=None):
- Platform.__init__(self, 'gcc')
+ if not cc:
+ cc = 'gcc'
+ Platform.__init__(self, cc)
def _args_for_shared(self, args):
return ['-shared'] + args
diff --git a/pypy/translator/tool/cbuild.py b/pypy/translator/tool/cbuild.py
--- a/pypy/translator/tool/cbuild.py
+++ b/pypy/translator/tool/cbuild.py
@@ -321,12 +321,14 @@
/* Windows: winsock/winsock2 mess */
#define WIN32_LEAN_AND_MEAN
#ifdef _WIN64
- typedef __int64 Signed;
- typedef unsigned __int64 Unsigned;
+ typedef long long Signed;
+ typedef unsigned long long Unsigned;
+#warning 64 bit build
# define SIGNED_MIN LLONG_MIN
#else
typedef long Signed;
typedef unsigned long Unsigned;
+#warning 32 bit build
# define SIGNED_MIN LONG_MIN
#endif
'''
More information about the pypy-commit
mailing list