[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