|
from ctypes import c_uint |
|
|
|
from llvmlite.binding import ffi |
|
|
|
|
|
def initialize(): |
|
""" |
|
Initialize the LLVM core. |
|
""" |
|
ffi.lib.LLVMPY_InitializeCore() |
|
|
|
|
|
def initialize_all_targets(): |
|
""" |
|
Initialize all targets. Necessary before targets can be looked up |
|
via the :class:`Target` class. |
|
""" |
|
ffi.lib.LLVMPY_InitializeAllTargetInfos() |
|
ffi.lib.LLVMPY_InitializeAllTargets() |
|
ffi.lib.LLVMPY_InitializeAllTargetMCs() |
|
|
|
|
|
def initialize_all_asmprinters(): |
|
""" |
|
Initialize all code generators. Necessary before generating |
|
any assembly or machine code via the :meth:`TargetMachine.emit_object` |
|
and :meth:`TargetMachine.emit_assembly` methods. |
|
""" |
|
ffi.lib.LLVMPY_InitializeAllAsmPrinters() |
|
|
|
|
|
def initialize_native_target(): |
|
""" |
|
Initialize the native (host) target. Necessary before doing any |
|
code generation. |
|
""" |
|
ffi.lib.LLVMPY_InitializeNativeTarget() |
|
|
|
|
|
def initialize_native_asmprinter(): |
|
""" |
|
Initialize the native ASM printer. |
|
""" |
|
ffi.lib.LLVMPY_InitializeNativeAsmPrinter() |
|
|
|
|
|
def initialize_native_asmparser(): |
|
""" |
|
Initialize the native ASM parser. |
|
""" |
|
ffi.lib.LLVMPY_InitializeNativeAsmParser() |
|
|
|
|
|
def shutdown(): |
|
ffi.lib.LLVMPY_Shutdown() |
|
|
|
|
|
|
|
|
|
|
|
ffi.lib.LLVMPY_GetVersionInfo.restype = c_uint |
|
|
|
|
|
def _version_info(): |
|
v = [] |
|
x = ffi.lib.LLVMPY_GetVersionInfo() |
|
while x: |
|
v.append(x & 0xff) |
|
x >>= 8 |
|
return tuple(reversed(v)) |
|
|
|
|
|
llvm_version_info = _version_info() |
|
|