6 from distutils.core import setup, Extension
8 MODULE_NAME_RE = "[A-Za-z_]+"
10 if __name__ == "__main__":
12 build_arg_re = re.compile(r"^([A-Z_]+)= *(.*)")
13 def split_args((build_args, argv), arg):
14 m = build_arg_re.match(arg)
20 return (build_args, argv)
22 (build_args, argv) = reduce(split_args, sys.argv[1:], ({}, []))
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", "")
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,
37 re.findall("(%s).so" % MODULE_NAME_RE,
38 build_args.get("PY_EXT_MODS", "")))
40 setup(py_modules = modules, ext_modules = extensions)