[pypy-svn] r60202 - in pypy/trunk/pypy: rlib rpython/lltypesystem rpython/module translator/platform
arigo at codespeak.net
arigo at codespeak.net
Fri Nov 28 14:49:52 CET 2008
Author: arigo
Date: Fri Nov 28 14:49:49 2008
New Revision: 60202
Added:
pypy/trunk/pypy/translator/platform/freebsd7.py (contents, props changed)
Modified:
pypy/trunk/pypy/rlib/libffi.py
pypy/trunk/pypy/rpython/lltypesystem/ll2ctypes.py
pypy/trunk/pypy/rpython/module/ll_time.py
pypy/trunk/pypy/translator/platform/__init__.py
Log:
Patch by Gabriel Lavoie for FreeBSD and FreeBSD64 support.
Modified: pypy/trunk/pypy/rlib/libffi.py
==============================================================================
--- pypy/trunk/pypy/rlib/libffi.py (original)
+++ pypy/trunk/pypy/rlib/libffi.py Fri Nov 28 14:49:49 2008
@@ -24,6 +24,7 @@
# maaaybe isinstance here would be better. Think
_MS_WINDOWS = platform.name == "win32"
_MAC_OS = platform.name == "darwin"
+_FREEBSD_7 = platform.name == "freebsd7"
if _MS_WINDOWS:
from pypy.rlib import rwin32
@@ -36,10 +37,16 @@
pre_include_bits = ['#define MACOSX']
else:
pre_include_bits = []
+
+ if _FREEBSD_7:
+ libraries = ['ffi']
+ else:
+ libraries = ['ffi', 'dl']
+
eci = ExternalCompilationInfo(
pre_include_bits = pre_include_bits,
includes = includes,
- libraries = ['ffi', 'dl'],
+ libraries = libraries,
include_dirs = platform.include_dirs_for_libffi(),
library_dirs = platform.library_dirs_for_libffi(),
)
Modified: pypy/trunk/pypy/rpython/lltypesystem/ll2ctypes.py
==============================================================================
--- pypy/trunk/pypy/rpython/lltypesystem/ll2ctypes.py (original)
+++ pypy/trunk/pypy/rpython/lltypesystem/ll2ctypes.py Fri Nov 28 14:49:49 2008
@@ -809,7 +809,7 @@
def _where_is_errno():
return standard_c_lib.__errno_location()
- elif sys.platform == 'darwin':
+ elif sys.platform in ('darwin', 'freebsd7'):
standard_c_lib.__error.restype = ctypes.POINTER(ctypes.c_int)
def _where_is_errno():
return standard_c_lib.__error()
Modified: pypy/trunk/pypy/rpython/module/ll_time.py
==============================================================================
--- pypy/trunk/pypy/rpython/module/ll_time.py (original)
+++ pypy/trunk/pypy/rpython/module/ll_time.py Fri Nov 28 14:49:49 2008
@@ -28,8 +28,17 @@
HAVE_GETTIMEOFDAY = platform.Has('gettimeofday')
HAVE_FTIME = platform.Has('ftime')
+
+if sys.platform == 'freebsd7':
+ libraries = ['compat']
+else:
+ libraries = []
+
class CConfigForFTime:
- _compilation_info_ = ExternalCompilationInfo(includes=['sys/timeb.h'])
+ _compilation_info_ = ExternalCompilationInfo(
+ includes=['sys/time.h', 'sys/timeb.h'],
+ libraries=libraries
+ )
TIMEB = platform.Struct('struct timeb', [('time', rffi.INT),
('millitm', rffi.INT)])
Modified: pypy/trunk/pypy/translator/platform/__init__.py
==============================================================================
--- pypy/trunk/pypy/translator/platform/__init__.py (original)
+++ pypy/trunk/pypy/translator/platform/__init__.py Fri Nov 28 14:49:49 2008
@@ -157,6 +157,13 @@
elif sys.platform == 'darwin':
from pypy.translator.platform.darwin import Darwin
host = Darwin()
+elif sys.platform == 'freebsd7':
+ from pypy.translator.platform.freebsd7 import Freebsd7, Freebsd7_64
+ import platform
+ if platform.architecture()[0] == '32bit':
+ host = Freebsd7()
+ else:
+ host = Freebsd7_64()
elif os.name == 'nt':
from pypy.translator.platform.windows import Windows
host = Windows()
Added: pypy/trunk/pypy/translator/platform/freebsd7.py
==============================================================================
--- (empty file)
+++ pypy/trunk/pypy/translator/platform/freebsd7.py Fri Nov 28 14:49:49 2008
@@ -0,0 +1,24 @@
+
+import py, os
+from pypy.translator.platform import posix
+
+class Freebsd7(posix.BasePosix):
+ name = "freebsd7"
+
+ link_flags = ['-pthread']
+ cflags = ['-O3', '-pthread', '-fomit-frame-pointer']
+ standalone_only = []
+ shared_only = []
+ so_ext = 'so'
+
+ def _args_for_shared(self, args):
+ return ['-shared'] + args
+
+ def include_dirs_for_libffi(self):
+ return ['/usr/local/include']
+
+ def library_dirs_for_libffi(self):
+ return ['/usr/local/lib']
+
+class Freebsd7_64(Freebsd7):
+ shared_only = ['-fPIC']
More information about the Pypy-commit
mailing list