Moved vduimpl.c from util-python, import common pybuild infrastructure
[util-vserver.git] / python / setup.py
1 #!/usr/bin/python
2
3 import re
4 import sys
5
6 from distutils.core import setup, Extension
7
8 MODULE_NAME_RE = "[A-Za-z_]+"
9
10 if __name__ == "__main__":
11
12     build_arg_re = re.compile(r"^([A-Z_]+)= *(.*)")
13     def split_args((build_args, argv), arg):
14         m = build_arg_re.match(arg)
15         if m:
16             (k, v) = m.groups()
17             build_args[k] = v
18         else:
19             argv += [arg]
20         return (build_args, argv)
21
22     (build_args, argv) = reduce(split_args, sys.argv[1:], ({}, []))
23     sys.argv[1:] = argv
24     extension_args = { "extra_compile_args": ["-Wall"] }
25     if "INCLUDES" in build_args:
26         extension_args["include_dirs"] = re.findall(r"-I([^ ]+)",
27                                                     build_args["INCLUDES"])
28     lib_args = build_args.get("LIBS", "")
29     if lib_args:
30         extension_args["library_dirs"] = re.findall(r"-L([^ ]+)", lib_args)
31         extension_args["libraries"] = re.findall(r"-l([^ ]+)", lib_args)
32     modules = re.findall("(%s).py" % MODULE_NAME_RE,
33                          build_args.get("PY_MODS", ""))
34     extensions = map(lambda modname: Extension(modname,
35                                                [modname + ".c"],
36                                                **extension_args),
37                      re.findall("(%s).so" % MODULE_NAME_RE,
38                                 build_args.get("PY_EXT_MODS", "")))
39
40     setup(py_modules = modules, ext_modules = extensions)