diff --git a/LLVM-C.dll b/LLVM-C.dll new file mode 100644 index 0000000..6393857 Binary files /dev/null and b/LLVM-C.dll differ diff --git a/src/LLVM-C.lib b/src/LLVM-C.lib new file mode 100644 index 0000000..9c11666 Binary files /dev/null and b/src/LLVM-C.lib differ diff --git a/src/llvmc.odin b/src/llvmc.odin new file mode 100644 index 0000000..5a51ab8 --- /dev/null +++ b/src/llvmc.odin @@ -0,0 +1,64 @@ +package main + +foreign import llvmc "LLVM-C.lib" + +LLVMBool :: distinct int +LLVMMemoryBufferRef :: distinct rawptr +LLVMContextRef :: distinct rawptr +LLVMModuleRef :: distinct rawptr +LLVMTypeRef :: distinct rawptr +LLVMValueRef :: distinct rawptr +LLVMBasicBlockRef :: distinct rawptr +LLVMMetadataRef :: distinct rawptr +LLVMNamedMDNodeRef :: distinct rawptr +LLVMBuilderRef :: distinct rawptr +LLVMDIBuilderRef :: distinct rawptr +LLVMModuleProviderRef :: distinct rawptr +LLVMPassManagerRef :: distinct rawptr +LLVMUseRef :: distinct rawptr +LLVMAttributeRef :: distinct rawptr +LLVMDiagnosticInfoRef :: distinct rawptr +LLVMComdatRef :: distinct rawptr +LLVMJITEventListenerRef :: distinct rawptr +LLVMBinaryRef :: distinct rawptr + +@(default_calling_convention = "std") +foreign llvmc { + LLVMContextCreate :: proc() -> LLVMContextRef --- + LLVMModuleCreateWithName :: proc(name: cstring) -> LLVMModuleRef --- + LLVMModuleCreateWithNameInContext :: proc(name: cstring, C: LLVMContextRef) -> LLVMModuleRef --- + + LLVMCreateBuilderInContext :: proc(C: LLVMContextRef) -> LLVMBuilderRef --- + LLVMPositionBuilderAtEnd :: proc(Builder: LLVMBuilderRef, Block: LLVMBasicBlockRef) --- + + LLVMBuildPointerCast :: proc(Builder: LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: cstring) -> LLVMValueRef --- + LLVMBuildGlobalString :: proc(Builder: LLVMBuilderRef, Str: cstring, Name: cstring) -> LLVMValueRef --- + LLVMBuildGlobalStringPtr :: proc(Builder: LLVMBuilderRef, Str: cstring, Name: cstring) -> LLVMValueRef --- + + LLVMBuildCall2 :: proc(Builder: LLVMBuilderRef, Type: LLVMTypeRef, Fn: LLVMValueRef, Args: [^]LLVMValueRef, NumArgs: uint, Name: cstring) -> LLVMValueRef --- + + LLVMBuildRetVoid :: proc(Builder: LLVMBuilderRef) -> LLVMValueRef --- + LLVMBuildRet :: proc(Builder: LLVMBuilderRef, V: LLVMValueRef) -> LLVMValueRef --- + + LLVMInt1TypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- + LLVMInt8TypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- + LLVMInt16TypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- + LLVMInt32TypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- + LLVMInt64TypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- + LLVMIntTypeInContext :: proc(C: LLVMContextRef, n: uint) -> LLVMTypeRef --- + + LLVMPointerType :: proc(ElementType: LLVMTypeRef, AddressSpace: uint) -> LLVMTypeRef --- + + LLVMConstInt :: proc(IntTy: LLVMTypeRef, N: u64, SignExtend: LLVMBool) -> LLVMValueRef --- + + LLVMFunctionType :: proc(ReturnType: LLVMTypeRef, ParamTypes: [^]LLVMTypeRef, ParamCount: uint, IsVarArg: LLVMBool) -> LLVMTypeRef --- + LLVMAddFunction :: proc(M: LLVMModuleRef, Name: cstring, FunctionType: LLVMTypeRef) -> LLVMValueRef --- + + LLVMAppendBasicBlockInContext :: proc(C: LLVMContextRef, Fn: LLVMValueRef, Name: cstring) -> LLVMBasicBlockRef --- + + LLVMPrintModuleToFile :: proc(M: LLVMModuleRef, Filename: cstring, ErrorMessage: ^cstring) -> LLVMBool --- + + LLVMDisposeBuilder :: proc(Builder: LLVMBuilderRef) --- + LLVMDisposeModule :: proc(M: LLVMModuleRef) --- + LLVMContextDispose :: proc(C: LLVMContextRef) --- +}