diff options
author | Gregory Szorc <gregory.szorc@gmail.com> | 2012-03-09 09:07:35 +0000 |
---|---|---|
committer | Gregory Szorc <gregory.szorc@gmail.com> | 2012-03-09 09:07:35 +0000 |
commit | 5ae04279e0ed16975e1eea012499e8d833aab3c5 (patch) | |
tree | 4a7b8e40d7732e081a2b88baf29103a930df8dc6 /bindings/python/llvm/common.py | |
parent | 1fabd9f85e8ac728c35cb63c70d8aac2c94c92a8 (diff) | |
download | external_llvm-5ae04279e0ed16975e1eea012499e8d833aab3c5.zip external_llvm-5ae04279e0ed16975e1eea012499e8d833aab3c5.tar.gz external_llvm-5ae04279e0ed16975e1eea012499e8d833aab3c5.tar.bz2 |
[llvm.py] Initial skeleton for Python LLVM bindings
This contains a semi-functional skeleton for the implementation of the
LLVM bindings for Python.
The API for the Object.h interface is roughly designed but not
implemented. MemoryBufferRef is implemented and actually appears to
work!
The ObjectFile unit test fails with a segmentation fault because the
LLVM library isn't being properly initialized. The build system doesn't
know about this code yet, so no alerts should fire.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152397 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/python/llvm/common.py')
-rw-r--r-- | bindings/python/llvm/common.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/bindings/python/llvm/common.py b/bindings/python/llvm/common.py new file mode 100644 index 0000000..7818ff4 --- /dev/null +++ b/bindings/python/llvm/common.py @@ -0,0 +1,37 @@ +#===- common.py - Python LLVM Bindings -----------------------*- python -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +from ctypes import cdll + +import ctypes.util +import platform + +__all__ = [ + "find_library", + "get_library", +] + +def find_library(): + # FIXME should probably have build system define absolute path of shared + # library at install time. + for lib in ["LLVM-3.1svn", "LLVM"]: + result = ctypes.util.find_library(lib) + if result: + return result + + # FIXME This is a local hack to ease development. + return "/usr/local/llvm/lib/libLLVM-3.1svn.so" + +def get_library(): + """Obtain a reference to the llvm library.""" + lib = find_library() + if not lib: + raise Exception("LLVM shared library not found!") + + return cdll.LoadLibrary(lib) |