from ctypes import c_uint from llvmlite.binding import ffi def initialize(): """ Initialize the LLVM core (deprecated). This function is deprecated and will raise an error when called. LLVM initialization is now handled automatically and no longer requires explicit initialization calls. Raises: RuntimeError: Always raised as this function is no longer needed. """ raise RuntimeError( "llvmlite.binding.initialize() is deprecated and will be removed. " "LLVM initialization is now handled automatically. " "Please remove calls to this function from your code and check for " "other behavioral changes that may have occurred due to LLVM updates." ) 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() # ============================================================================= # Set function FFI 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()