Author: Amaury Forgeot d'Arc <[email protected]>
Branch:
Changeset: r78096:b31cf2e51d1b
Date: 2015-06-14 22:25 +0200
http://bitbucket.org/pypy/pypy/changeset/b31cf2e51d1b/
Log: Cffi Tweaks in tklib_build until we get access to TK_HEX_VERSION,
before we build the real library.
diff --git a/lib_pypy/_tkinter/tklib_build.py b/lib_pypy/_tkinter/tklib_build.py
--- a/lib_pypy/_tkinter/tklib_build.py
+++ b/lib_pypy/_tkinter/tklib_build.py
@@ -3,6 +3,54 @@
from cffi import FFI
import sys, os
+# XXX find a better way to detect paths
+# XXX pick up CPPFLAGS and LDFLAGS and add to these paths?
+if sys.platform.startswith("openbsd"):
+ incdirs = ['/usr/local/include/tcl8.5', '/usr/local/include/tk8.5',
'/usr/X11R6/include']
+ linklibs = ['tk85', 'tcl85']
+ libdirs = ['/usr/local/lib', '/usr/X11R6/lib']
+elif sys.platform.startswith("freebsd"):
+ incdirs = ['/usr/local/include/tcl8.6', '/usr/local/include/tk8.6',
'/usr/local/include/X11', '/usr/local/include']
+ linklibs = ['tk86', 'tcl86']
+ libdirs = ['/usr/local/lib']
+elif sys.platform == 'win32':
+ incdirs = []
+ linklibs = ['tcl85', 'tk85']
+ libdirs = []
+elif sys.platform == 'darwin':
+ incdirs =
['/System/Library/Frameworks/Tk.framework/Versions/Current/Headers/']
+ linklibs = ['tcl', 'tk']
+ libdirs = []
+else:
+ for _ver in ['', '8.6', '8.5', '']:
+ incdirs = ['/usr/include/tcl' + _ver]
+ linklibs = ['tcl' + _ver, 'tk' + _ver]
+ libdirs = []
+ if os.path.isdir(incdirs[0]):
+ break
+
+config_ffi = FFI()
+config_ffi.cdef(
+"#define TK_HEX_VERSION ...")
+config_lib = config_ffi.set_source("_tkinter.config_cffi", """
+#include <tk.h>
+#define TK_HEX_VERSION ((TK_MAJOR_VERSION << 24) | \
+ (TK_MINOR_VERSION << 16) | \
+ (TK_RELEASE_LEVEL << 8) | \
+ (TK_RELEASE_SERIAL << 0))
+""",
+include_dirs=incdirs,
+libraries=linklibs,
+library_dirs = libdirs
+)
+
+config_ffi.compile(os.path.dirname(os.path.dirname(sys.argv[0])))
+from _tkinter.config_cffi import lib as config_lib
+TK_HEX_VERSION = config_lib.TK_HEX_VERSION
+
+HAVE_LIBTOMMATH = ((0x08050208 <= TK_HEX_VERSION < 0x08060000) or
+ (0x08060200 <= TK_HEX_VERSION))
+
tkffi = FFI()
tkffi.cdef("""
@@ -116,32 +164,6 @@
void Tcl_FindExecutable(char *argv0);
""")
-# XXX find a better way to detect paths
-# XXX pick up CPPFLAGS and LDFLAGS and add to these paths?
-if sys.platform.startswith("openbsd"):
- incdirs = ['/usr/local/include/tcl8.5', '/usr/local/include/tk8.5',
'/usr/X11R6/include']
- linklibs = ['tk85', 'tcl85']
- libdirs = ['/usr/local/lib', '/usr/X11R6/lib']
-elif sys.platform.startswith("freebsd"):
- incdirs = ['/usr/local/include/tcl8.6', '/usr/local/include/tk8.6',
'/usr/local/include/X11', '/usr/local/include']
- linklibs = ['tk86', 'tcl86']
- libdirs = ['/usr/local/lib']
-elif sys.platform == 'win32':
- incdirs = []
- linklibs = ['tcl85', 'tk85']
- libdirs = []
-elif sys.platform == 'darwin':
- incdirs =
['/System/Library/Frameworks/Tk.framework/Versions/Current/Headers/']
- linklibs = ['tcl', 'tk']
- libdirs = []
-else:
- for _ver in ['', '8.6', '8.5', '']:
- incdirs = ['/usr/include/tcl' + _ver]
- linklibs = ['tcl' + _ver, 'tk' + _ver]
- libdirs = []
- if os.path.isdir(incdirs[0]):
- break
-
tkffi.set_source("_tkinter.tklib_cffi", """
#include <tcl.h>
#include <tk.h>
@@ -155,4 +177,4 @@
)
if __name__ == "__main__":
- tkffi.compile()
+ print tkffi.compile(os.path.dirname(os.path.dirname(sys.argv[0])))
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit