import sys, os from os.path import abspath, exists import shutil from distutils.sysconfig import get_python_lib from distutils.core import setup, Extension FILES_TO_BE_COPIED = ("_prelude.c", "prelude.py") def split_args(s): import re return re.split("\s+", s.strip()) def get_root(): try: return sys.argv[sys.argv.index("--root") + 1] except ValueError: return "" def is_system_wide_install(): return os.access(get_python_lib(), os.W_OK) def builddir_is_srcdir(): return abspath("@top_srcdir@") == abspath("@top_builddir@") def pre_install(): if not is_system_wide_install(): sys.argv.extend(["--prefix", "@prefix@"]) def pre_build(): if not builddir_is_srcdir(): for file in FILES_TO_BE_COPIED: src = "@top_srcdir@/bindings/python/" + file dst = "@top_builddir@/bindings/python/" + file if not exists(dst): shutil.copy(src, dst) def pre_clean(): if not builddir_is_srcdir(): for file in FILES_TO_BE_COPIED: exists(file) and os.remove(file) def uninstall(): if is_system_wide_install(): prefix = None else: prefix = "@prefix@" for f in "prelude.py", "prelude.pyc", "_prelude.so": file = get_root() + "/" + get_python_lib(prefix=prefix) + "/" + f exists(file) and os.remove(file) file = get_root() + "/" + get_python_lib(plat_specific=True, prefix=prefix) + "/" + f exists(file) and os.remove(file) sys.exit(0) commands = { "install": pre_install, "build": pre_build, "clean": pre_clean, "uninstall": uninstall, } if len(sys.argv) > 1 and commands.has_key(sys.argv[1]): commands[sys.argv[1]]() setup(name="prelude", package_dir={'prelude': '@top_srcdir@/bindings/python'}, py_modules=["prelude"], ext_modules=[Extension("_prelude", ["_prelude.c"], extra_compile_args=split_args("-DHAVE_CONFIG_H -I@top_builddir@ -I@top_srcdir@/src/include -I@top_builddir@/src/include -I@top_builddir@/src/libprelude-error -I@top_srcdir@/bindings @PTHREAD_CFLAGS@"), library_dirs=[ "@top_builddir@/src/.libs/" ], extra_link_args=split_args("-lprelude @PTHREAD_CFLAGS@ @libprelude_libs@"))])