[pypy-svn] r57720 - in pypy/branch/cross-compilation/pypy: config rlib translator/c translator/tool translator/tool/test
fijal at codespeak.net
fijal at codespeak.net
Mon Sep 1 14:35:25 CEST 2008
Author: fijal
Date: Mon Sep 1 14:35:23 2008
New Revision: 57720
Modified:
pypy/branch/cross-compilation/pypy/config/translationoption.py
pypy/branch/cross-compilation/pypy/rlib/pyplatform.py
pypy/branch/cross-compilation/pypy/translator/c/genc.py
pypy/branch/cross-compilation/pypy/translator/tool/cbuild.py
pypy/branch/cross-compilation/pypy/translator/tool/test/test_cbuild.py
Log:
Refactor platform dependencies a bit. Now there is a global
in rlib.pyplatform.platform which should contain all platform-dependent
configuration details.
cbuild.py now uses cc from translation config (needs a test)
Modified: pypy/branch/cross-compilation/pypy/config/translationoption.py
==============================================================================
--- pypy/branch/cross-compilation/pypy/config/translationoption.py (original)
+++ pypy/branch/cross-compilation/pypy/config/translationoption.py Mon Sep 1 14:35:23 2008
@@ -346,7 +346,8 @@
]
def set_platform(config, platform):
- from pypy.rlib.pyplatform import Platform, Maemo
+ from pypy.rlib.pyplatform import Platform, Maemo, OverloadCompilerPlatform
+ from pypy.rlib import pyplatform
from pypy.translator.tool.cbuild import ExternalCompilationInfo
if isinstance(platform, str):
if platform == 'maemo':
@@ -356,9 +357,8 @@
else:
raise NotImplementedError('Platform = %s' % (platform,))
assert isinstance(platform, Platform)
- # XXX evil hackery
- func_defs = list(ExternalCompilationInfo.__init__.func_defaults)
- func_defs[-1] = platform
- ExternalCompilationInfo.__init__.im_func.func_defaults = tuple(func_defs)
+ pyplatform.platform = platform
+ if config.translation.cc:
+ pyplatform.platform = OverloadCompilerPlatform(platform,
+ config.translation.cc)
-
Modified: pypy/branch/cross-compilation/pypy/rlib/pyplatform.py
==============================================================================
--- pypy/branch/cross-compilation/pypy/rlib/pyplatform.py (original)
+++ pypy/branch/cross-compilation/pypy/rlib/pyplatform.py Mon Sep 1 14:35:23 2008
@@ -25,7 +25,22 @@
class Maemo(Platform):
def get_compiler(self):
+ # XXX how to make this reliable???
return '/scratchbox/compilers/cs2005q3.2-glibc-arm/bin/sbox-arm-linux-gcc'
def execute(self, cmd):
return py.process.cmdexec('/scratchbox/login ' + cmd)
+
+class OverloadCompilerPlatform(Platform):
+ def __init__(self, previous_platform, cc):
+ self.previous_platform = previous_platform
+ self.cc = cc
+
+ def get_compiler(self):
+ return self.cc
+
+ def execute(self, cmd):
+ return self.previous_platform.execute(cmd)
+
+platform = Platform()
+
Modified: pypy/branch/cross-compilation/pypy/translator/c/genc.py
==============================================================================
--- pypy/branch/cross-compilation/pypy/translator/c/genc.py (original)
+++ pypy/branch/cross-compilation/pypy/translator/c/genc.py Mon Sep 1 14:35:23 2008
@@ -313,9 +313,6 @@
return getfunctionptr(bk.getdesc(self.entrypoint).getuniquegraph())
def getccompiler(self):
- # XXX note that overwritten cc here will not affect already
- # performed steps in cbuild.py
- # completely unsure how to get rid of this inconsistency
cc = self.config.translation.cc
# Copy extrafiles to target directory, if needed
extrafiles = []
Modified: pypy/branch/cross-compilation/pypy/translator/tool/cbuild.py
==============================================================================
--- pypy/branch/cross-compilation/pypy/translator/tool/cbuild.py (original)
+++ pypy/branch/cross-compilation/pypy/translator/tool/cbuild.py Mon Sep 1 14:35:23 2008
@@ -9,7 +9,6 @@
log = py.log.Producer("cbuild")
py.log.setconsumer("cbuild", ansi_log)
from pypy.tool.udir import udir
-from pypy.rlib.pyplatform import Platform
debug = 0
@@ -41,7 +40,7 @@
compile_extra = [],
link_extra = [],
frameworks = [],
- platform = Platform()):
+ platform = None):
"""
pre_include_bits: list of pieces of text that should be put at the top
of the generated .c files, before any #include. They shouldn't
@@ -89,6 +88,9 @@
value = locals()[name]
assert isinstance(value, (list, tuple))
setattr(self, name, tuple(value))
+ if platform is None:
+ from pypy.rlib import pyplatform
+ platform = pyplatform.platform
self.platform = platform
def from_compiler_flags(cls, flags):
Modified: pypy/branch/cross-compilation/pypy/translator/tool/test/test_cbuild.py
==============================================================================
--- pypy/branch/cross-compilation/pypy/translator/tool/test/test_cbuild.py (original)
+++ pypy/branch/cross-compilation/pypy/translator/tool/test/test_cbuild.py Mon Sep 1 14:35:23 2008
@@ -213,3 +213,4 @@
py.test.raises(py.process.cmdexec.Error, py.process.cmdexec, output)
result = eci.platform.execute(output)
assert result.startswith('4.0')
+
More information about the Pypy-commit
mailing list