diff options
Diffstat (limited to 'pywrap')
-rw-r--r-- | pywrap/Makefile | 9 | ||||
-rw-r--r-- | pywrap/build.py | 54 | ||||
-rw-r--r-- | pywrap/pywrap.c | 6 |
3 files changed, 69 insertions, 0 deletions
diff --git a/pywrap/Makefile b/pywrap/Makefile new file mode 100644 index 00000000..7c37faab --- /dev/null +++ b/pywrap/Makefile @@ -0,0 +1,9 @@ +# $Id$ + +all: pywrap + +pywrap: pywrap.c + python build.py + +clean: + rm -f *.o pywrap diff --git a/pywrap/build.py b/pywrap/build.py new file mode 100644 index 00000000..23bd4cdf --- /dev/null +++ b/pywrap/build.py @@ -0,0 +1,54 @@ +""" +Hack to build our Python wrapper. Basic problem here is that we need +a bunch of arguments that were given to ./configure when Python itself +was built, and there appears to be no real consistancy about how +different unix-like distributions use the various parameters, so even +the standard python-config script is not smart enough to figure out +which arguments we need on every platform. Feh. + +This script is an attempt to pull the relevant information out of the +distutils.sysconfig module. If I understood distutils better, I could +probably figure out some way to wrap this whole thing up nicely in the +distutils framework; if you understand how to do this, please do so +and send me the code. + +As it is, this is a minimal hack to get the job done, and probably a +bit fragile. Much of the code is taken from python-config. If +there's any real documentation on how to do this sort of thing, I have +not found it yet. YMMV. Beware Of Dog. + +$Id$ +""" + +import os, subprocess, sys + +from distutils.sysconfig import (get_config_var as getvar, + get_python_inc as getinc) + +openssl_dir = os.path.realpath(os.path.join(os.getcwd(), "../openssl/openssl")) + +cmd = getvar("CC").split() + +cmd.append("-o") +cmd.append("pywrap") +cmd.append("pywrap.c") + +cmd.append("-Wl,-rpath,%s" % openssl_dir) +cmd.append("-L%s" % openssl_dir) +cmd.append("-lcrypto") +cmd.append("-lssl") + +cmd.append("-I%s" % getinc(plat_specific = False)) +cmd.append("-I%s" % getinc(plat_specific = True)) + +if not getvar("Py_ENABLE_SHARED"): + cmd.append("-L%s" % getvar("LIBPL")) + +for var in ("CFLAGS", "LIBS", "SYSLIBS", "LDFLAGS"): + cmd.extend(getvar(var).split()) + +cmd.append("-lpython%s" % getvar("VERSION")) + +print " ".join(cmd) + +sys.exit(subprocess.call(cmd)) diff --git a/pywrap/pywrap.c b/pywrap/pywrap.c new file mode 100644 index 00000000..10638721 --- /dev/null +++ b/pywrap/pywrap.c @@ -0,0 +1,6 @@ +#include <Python.h> + +int main(int argc, char **argv) +{ + return Py_Main(argc, argv); +} |