diff --git a/newbinding/Makefile b/newbinding/Makefile index ba902e3..0db1f29 100644 --- a/newbinding/Makefile +++ b/newbinding/Makefile @@ -5,14 +5,14 @@ all: _api.so _capsule.so _api.so _capsule.so: api.cpp capsule.cpp python setup.py build_ext --inplace - -api.cpp api.py: binding/*.py include/llvm_binding/*.h - cd binding; python gen.py api $(PYMODS) - mv binding/api.cpp api.cpp - mv binding/api.py api.py +api.cpp api.py: src/*.py include/llvm_binding/*.h + python gen.py api src $(PYMODS) clean: rm -f _api.so _capsule.so rm -f api.cpp api.py +check: _api.so api.py + python test2.py +@PHONY: all clean check diff --git a/newbinding/binding/binding.py b/newbinding/binding.py similarity index 100% rename from newbinding/binding/binding.py rename to newbinding/binding.py diff --git a/newbinding/binding/gen.py b/newbinding/gen.py similarity index 92% rename from newbinding/binding/gen.py rename to newbinding/gen.py index f662979..c2126ab 100644 --- a/newbinding/binding/gen.py +++ b/newbinding/gen.py @@ -136,8 +136,7 @@ class Context(object): println('') - def add_module(self, modname): - module = __import__(modname) + def add_module(self, module): allsyms = [(k, v) for k, v in vars(module).items() if isinstance(v, Binding)] symtab = sorted(allsyms, key=lambda x: x[1].rank) @@ -190,17 +189,29 @@ def wrap_println(f): return println if __name__ == '__main__': + outputfilename = sys.argv[1] + srcdir = sys.argv[2] + modnames = sys.argv[3:] + + modules = [] + for m in modnames: + path = '%s.%s' % (srcdir, m) + print path + module = __import__(path) + for token in path.split('.')[1:]: + module = getattr(module, token) + modules.append(module) context = Context() - for mod in sys.argv[2:]: + + for mod in modules: context.add_module(mod) - filename = sys.argv[1] - with open('%s.cpp' % filename, 'w') as outfile: + with open('%s.cpp' % outputfilename, 'w') as outfile: println = wrap_println(outfile) populate_headers(println) context.generate_cpp(println) - with open('%s.py' % filename, 'w') as outfile: + with open('%s.py' % outputfilename, 'w') as outfile: println = wrap_println(outfile) context.generate_py(println) diff --git a/newbinding/binding/AssemblyAnnotationWriter.py b/newbinding/src/AssemblyAnnotationWriter.py similarity index 100% rename from newbinding/binding/AssemblyAnnotationWriter.py rename to newbinding/src/AssemblyAnnotationWriter.py diff --git a/newbinding/binding/DerivedTypes.py b/newbinding/src/DerivedTypes.py similarity index 100% rename from newbinding/binding/DerivedTypes.py rename to newbinding/src/DerivedTypes.py diff --git a/newbinding/binding/LLVMContext.py b/newbinding/src/LLVMContext.py similarity index 100% rename from newbinding/binding/LLVMContext.py rename to newbinding/src/LLVMContext.py diff --git a/newbinding/binding/Module.py b/newbinding/src/Module.py similarity index 100% rename from newbinding/binding/Module.py rename to newbinding/src/Module.py diff --git a/newbinding/binding/StringRef.py b/newbinding/src/StringRef.py similarity index 100% rename from newbinding/binding/StringRef.py rename to newbinding/src/StringRef.py diff --git a/newbinding/binding/Type.py b/newbinding/src/Type.py similarity index 100% rename from newbinding/binding/Type.py rename to newbinding/src/Type.py diff --git a/newbinding/binding/_Debug.py b/newbinding/src/_Debug.py similarity index 100% rename from newbinding/binding/_Debug.py rename to newbinding/src/_Debug.py diff --git a/newbinding/src/__init__.py b/newbinding/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/newbinding/binding/namespace.py b/newbinding/src/namespace.py similarity index 100% rename from newbinding/binding/namespace.py rename to newbinding/src/namespace.py diff --git a/newbinding/binding/raw_ostream.py b/newbinding/src/raw_ostream.py similarity index 100% rename from newbinding/binding/raw_ostream.py rename to newbinding/src/raw_ostream.py diff --git a/newbinding/binding/utils.py b/newbinding/utils.py similarity index 100% rename from newbinding/binding/utils.py rename to newbinding/utils.py