Slight modification, the last patch broke build under Linux.

Gabriel

2008/11/26 Gabriel Lavoie <[EMAIL PROTECTED]>

> Hello,
>      I made some modifications to trunk so it translates under FreeBSD 7,
> 64 bits. Here is the diff. I know it's not perfect but at least it builds.
>
> Gabriel
>
> --
> Gabriel Lavoie
> [EMAIL PROTECTED]
>



-- 
Gabriel Lavoie
[EMAIL PROTECTED]
Index: pypy/rlib/libffi.py
===================================================================
--- pypy/rlib/libffi.py (révision 60169)
+++ pypy/rlib/libffi.py (copie de travail)
@@ -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(),
     )
Index: pypy/translator/platform/__init__.py
===================================================================
--- pypy/translator/platform/__init__.py        (révision 60169)
+++ pypy/translator/platform/__init__.py        (copie de travail)
@@ -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()
Index: pypy/translator/platform/freebsd7.py
===================================================================
--- pypy/translator/platform/freebsd7.py        (révision 0)
+++ pypy/translator/platform/freebsd7.py        (révision 0)
@@ -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']
Index: pypy/rpython/lltypesystem/ll2ctypes.py
===================================================================
--- pypy/rpython/lltypesystem/ll2ctypes.py      (révision 60169)
+++ pypy/rpython/lltypesystem/ll2ctypes.py      (copie de travail)
@@ -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()
Index: pypy/rpython/module/ll_time.py
===================================================================
--- pypy/rpython/module/ll_time.py      (révision 60169)
+++ pypy/rpython/module/ll_time.py      (copie de travail)
@@ -29,7 +29,10 @@
     HAVE_FTIME = platform.Has('ftime')
 
 class CConfigForFTime:
-    _compilation_info_ = ExternalCompilationInfo(includes=['sys/timeb.h'])
+    _compilation_info_ = ExternalCompilationInfo(
+        includes=['sys/time.h', 'sys/timeb.h'],
+        libraries=['compat']
+    )
     TIMEB = platform.Struct('struct timeb', [('time', rffi.INT),
                                              ('millitm', rffi.INT)])
 
Index: pypy/rlib/libffi.py
===================================================================
--- pypy/rlib/libffi.py (révision 60192)
+++ pypy/rlib/libffi.py (copie de travail)
@@ -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(),
     )
Index: pypy/translator/platform/__init__.py
===================================================================
--- pypy/translator/platform/__init__.py        (révision 60192)
+++ pypy/translator/platform/__init__.py        (copie de travail)
@@ -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()
Index: pypy/translator/platform/freebsd7.py
===================================================================
--- pypy/translator/platform/freebsd7.py        (révision 0)
+++ pypy/translator/platform/freebsd7.py        (révision 0)
@@ -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']
Index: pypy/rpython/lltypesystem/ll2ctypes.py
===================================================================
--- pypy/rpython/lltypesystem/ll2ctypes.py      (révision 60192)
+++ pypy/rpython/lltypesystem/ll2ctypes.py      (copie de travail)
@@ -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()
Index: pypy/rpython/module/ll_time.py
===================================================================
--- pypy/rpython/module/ll_time.py      (révision 60192)
+++ pypy/rpython/module/ll_time.py      (copie de travail)
@@ -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)])
 
_______________________________________________
[email protected]
http://codespeak.net/mailman/listinfo/pypy-dev

Reply via email to