aboutsummaryrefslogtreecommitdiffhomepage
path: root/ext/llvm-sys.rs/src/target_machine.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ext/llvm-sys.rs/src/target_machine.rs')
-rw-r--r--ext/llvm-sys.rs/src/target_machine.rs111
1 files changed, 111 insertions, 0 deletions
diff --git a/ext/llvm-sys.rs/src/target_machine.rs b/ext/llvm-sys.rs/src/target_machine.rs
new file mode 100644
index 0000000..6189db2
--- /dev/null
+++ b/ext/llvm-sys.rs/src/target_machine.rs
@@ -0,0 +1,111 @@
+//! Target machine information, to generate assembly or object files.
+
+use super::prelude::*;
+use super::target::LLVMTargetDataRef;
+
+#[derive(Debug)]
+pub enum LLVMOpaqueTargetMachine {}
+
+pub type LLVMTargetMachineRef = *mut LLVMOpaqueTargetMachine;
+
+#[derive(Debug)]
+pub enum LLVMTarget {}
+
+pub type LLVMTargetRef = *mut LLVMTarget;
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug, PartialEq)]
+pub enum LLVMCodeGenOptLevel {
+ LLVMCodeGenLevelNone = 0,
+ LLVMCodeGenLevelLess = 1,
+ LLVMCodeGenLevelDefault = 2,
+ LLVMCodeGenLevelAggressive = 3,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug, PartialEq)]
+pub enum LLVMRelocMode {
+ LLVMRelocDefault = 0,
+ LLVMRelocStatic = 1,
+ LLVMRelocPIC = 2,
+ LLVMRelocDynamicNoPic = 3,
+ LLVMRelocROPI = 4,
+ LLVMRelocRWPI = 5,
+ LLVMRelocROPI_RWPI = 6,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug, PartialEq)]
+pub enum LLVMCodeModel {
+ LLVMCodeModelDefault = 0,
+ LLVMCodeModelJITDefault = 1,
+ LLVMCodeModelTiny = 2,
+ LLVMCodeModelSmall = 3,
+ LLVMCodeModelKernel = 4,
+ LLVMCodeModelMedium = 5,
+ LLVMCodeModelLarge = 6,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug, PartialEq)]
+pub enum LLVMCodeGenFileType {
+ LLVMAssemblyFile = 0,
+ LLVMObjectFile = 1,
+}
+
+extern "C" {
+ pub fn LLVMGetFirstTarget() -> LLVMTargetRef;
+ pub fn LLVMGetNextTarget(T: LLVMTargetRef) -> LLVMTargetRef;
+ pub fn LLVMGetTargetFromName(Name: *const ::libc::c_char) -> LLVMTargetRef;
+ pub fn LLVMGetTargetFromTriple(
+ Triple: *const ::libc::c_char,
+ T: *mut LLVMTargetRef,
+ ErrorMessage: *mut *mut ::libc::c_char,
+ ) -> LLVMBool;
+ pub fn LLVMGetTargetName(T: LLVMTargetRef) -> *const ::libc::c_char;
+ pub fn LLVMGetTargetDescription(T: LLVMTargetRef) -> *const ::libc::c_char;
+ pub fn LLVMTargetHasJIT(T: LLVMTargetRef) -> LLVMBool;
+ pub fn LLVMTargetHasTargetMachine(T: LLVMTargetRef) -> LLVMBool;
+ pub fn LLVMTargetHasAsmBackend(T: LLVMTargetRef) -> LLVMBool;
+ pub fn LLVMCreateTargetMachine(
+ T: LLVMTargetRef,
+ Triple: *const ::libc::c_char,
+ CPU: *const ::libc::c_char,
+ Features: *const ::libc::c_char,
+ Level: LLVMCodeGenOptLevel,
+ Reloc: LLVMRelocMode,
+ CodeModel: LLVMCodeModel,
+ ) -> LLVMTargetMachineRef;
+ pub fn LLVMDisposeTargetMachine(T: LLVMTargetMachineRef);
+ pub fn LLVMGetTargetMachineTarget(T: LLVMTargetMachineRef) -> LLVMTargetRef;
+ pub fn LLVMGetTargetMachineTriple(T: LLVMTargetMachineRef) -> *mut ::libc::c_char;
+ pub fn LLVMGetTargetMachineCPU(T: LLVMTargetMachineRef) -> *mut ::libc::c_char;
+ pub fn LLVMGetTargetMachineFeatureString(T: LLVMTargetMachineRef) -> *mut ::libc::c_char;
+ /// Create a DataLayout based on the target machine.
+ pub fn LLVMCreateTargetDataLayout(T: LLVMTargetMachineRef) -> LLVMTargetDataRef;
+ pub fn LLVMSetTargetMachineAsmVerbosity(T: LLVMTargetMachineRef, VerboseAsm: LLVMBool);
+ pub fn LLVMTargetMachineEmitToFile(
+ T: LLVMTargetMachineRef,
+ M: LLVMModuleRef,
+ Filename: *mut ::libc::c_char,
+ codegen: LLVMCodeGenFileType,
+ ErrorMessage: *mut *mut ::libc::c_char,
+ ) -> LLVMBool;
+ pub fn LLVMTargetMachineEmitToMemoryBuffer(
+ T: LLVMTargetMachineRef,
+ M: LLVMModuleRef,
+ codegen: LLVMCodeGenFileType,
+ ErrorMessage: *mut *mut ::libc::c_char,
+ OutMemBuf: *mut LLVMMemoryBufferRef,
+ ) -> LLVMBool;
+
+ pub fn LLVMGetDefaultTargetTriple() -> *mut ::libc::c_char;
+ /// Normalize a target triple. The result needs to be disposed with LLVMDisposeMessage.
+ pub fn LLVMNormalizeTargetTriple(triple: *const ::libc::c_char) -> *mut ::libc::c_char;
+ /// Get the host CPU as a string. The result needs to be disposed with LLVMDisposeMessage.
+ pub fn LLVMGetHostCPUName() -> *mut ::libc::c_char;
+ /// Get the host CPU's features as a string. The result needs to be disposed with LLVMDisposeMessage.
+ pub fn LLVMGetHostCPUFeatures() -> *mut ::libc::c_char;
+
+ pub fn LLVMAddAnalysisPasses(T: LLVMTargetMachineRef, PM: LLVMPassManagerRef);
+}