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