[pypy-svn] r55349 - in pypy/branch/build-external/pypy: rlib translator/tool

afa at codespeak.net afa at codespeak.net
Wed May 28 15:44:13 CEST 2008


Author: afa
Date: Wed May 28 15:44:10 2008
New Revision: 55349

Modified:
   pypy/branch/build-external/pypy/rlib/rzlib.py
   pypy/branch/build-external/pypy/translator/tool/cbuild.py
Log:
pypy may build from sources the external zlib library


Modified: pypy/branch/build-external/pypy/rlib/rzlib.py
==============================================================================
--- pypy/branch/build-external/pypy/rlib/rzlib.py	(original)
+++ pypy/branch/build-external/pypy/rlib/rzlib.py	Wed May 28 15:44:10 2008
@@ -1,13 +1,35 @@
 import sys
 from pypy.rpython.lltypesystem import rffi, lltype
 from pypy.rpython.tool import rffi_platform
-from pypy.translator.tool.cbuild import ExternalCompilationInfo
+from pypy.translator.tool.cbuild import ExternalCompilationInfo, external_dir
 
-includes = ['zlib.h']
-if sys.platform == "win32":
-    libraries = ['zlib']
+# Get source:
+# In the dist/external directory, run
+# svn export http://svn.python.org/projects/external/zlib-1.2.3
+zlib_home = external_dir.join("zlib-1.2.3")
+
+if zlib_home.check(dir=True):
+    # Build from sources
+    libraries = []
+    include_dirs = [zlib_home]
+    separate_module_files = [zlib_home.join(s)
+                             for s in ("crc32.c", "adler32.c",
+                                       "deflate.c", "inflate.c", "compress.c",
+                                       "trees.c", "inftrees.c", "inffast.c",
+                                       "zutil.c")]
 else:
-    libraries = ['z']
+    # Find a precompiled library
+    if sys.platform == "win32":
+        libraries = ['zlib']
+    else:
+        libraries = ['z']
+    include_dirs = []
+    separate_module_files = []
+
+includes = ['zlib.h']
+export_symbols = ['crc32', 'adler32', 'deflate', 'inflate',
+                  'deflateInit2_', 'deflateEnd',
+                  'inflateInit2_', 'inflateEnd',]
 
 
 constantnames = '''
@@ -102,7 +124,10 @@
 def zlib_external(*a, **kw):
     kw['compilation_info'] = ExternalCompilationInfo(
         libraries=libraries,
-        includes=includes
+        includes=includes,
+        include_dirs=include_dirs,
+        separate_module_files=separate_module_files,
+        export_symbols=export_symbols,
     )
     return rffi.llexternal(*a, **kw)
 

Modified: pypy/branch/build-external/pypy/translator/tool/cbuild.py
==============================================================================
--- pypy/branch/build-external/pypy/translator/tool/cbuild.py	(original)
+++ pypy/branch/build-external/pypy/translator/tool/cbuild.py	Wed May 28 15:44:10 2008
@@ -12,6 +12,8 @@
 
 debug = 0
 
+external_dir = py.path.local(pypydir).join('..', 'external')
+
 class ExternalCompilationInfo(object):
 
     _ATTRIBUTES = ['pre_include_lines', 'includes', 'include_dirs',



More information about the Pypy-commit mailing list