Skip to main content

pliron_llvm/llvm_sys/
target.rs

1//! Safe(r) wrappers around llvm_sys::target
2
3use llvm_sys::target::{
4    LLVM_InitializeAllAsmParsers, LLVM_InitializeAllAsmPrinters, LLVM_InitializeAllDisassemblers,
5    LLVM_InitializeAllTargetInfos, LLVM_InitializeAllTargetMCs, LLVM_InitializeAllTargets,
6    LLVM_InitializeNativeAsmParser, LLVM_InitializeNativeAsmPrinter,
7    LLVM_InitializeNativeDisassembler, LLVM_InitializeNativeTarget,
8};
9
10use crate::llvm_sys::ToBool;
11
12/// LLVM_InitializeAllTargetInfos
13pub fn llvm_initialize_all_target_infos() {
14    unsafe {
15        LLVM_InitializeAllTargetInfos();
16    }
17}
18
19/// LLVM_InitializeAllTargets
20pub fn llvm_initialize_all_targets() {
21    unsafe {
22        LLVM_InitializeAllTargets();
23    }
24}
25
26/// LLVM_InitializeAllTargetMCs
27pub fn llvm_initialize_all_target_mcs() {
28    unsafe {
29        LLVM_InitializeAllTargetMCs();
30    }
31}
32
33/// LLVM_InitializeAllAsmPrinters
34pub fn llvm_initialize_all_asm_printers() {
35    unsafe {
36        LLVM_InitializeAllAsmPrinters();
37    }
38}
39
40/// LLVM_InitializeAllAsmParsers
41pub fn llvm_initialize_all_asm_parsers() {
42    unsafe {
43        LLVM_InitializeAllAsmParsers();
44    }
45}
46
47/// LLVM_InitializeAllDisassemblers
48pub fn llvm_initialize_all_disassemblers() {
49    unsafe {
50        LLVM_InitializeAllDisassemblers();
51    }
52}
53
54/// LLVM_InitializeNativeTarget
55pub fn llvm_initialize_native_target() -> Result<(), String> {
56    if !unsafe { LLVM_InitializeNativeTarget().to_bool() } {
57        Ok(())
58    } else {
59        Err("Failed to initialize native target".to_string())
60    }
61}
62
63/// LLVM_InitializeNativeAsmParser
64pub fn llvm_initialize_native_asm_parser() -> Result<(), String> {
65    if !unsafe { LLVM_InitializeNativeAsmParser().to_bool() } {
66        Ok(())
67    } else {
68        Err("Failed to initialize native asm parser".to_string())
69    }
70}
71
72/// LLVM_InitializeNativeAsmParser
73pub fn llvm_initialize_native_asm_printer() -> Result<(), String> {
74    if !unsafe { LLVM_InitializeNativeAsmPrinter().to_bool() } {
75        Ok(())
76    } else {
77        Err("Failed to initialize native asm printer".to_string())
78    }
79}
80
81/// LLVM_InitializeNativeDisassembler
82pub fn llvm_initialize_native_disassembler() -> Result<(), String> {
83    if !unsafe { LLVM_InitializeNativeDisassembler().to_bool() } {
84        Ok(())
85    } else {
86        Err("Failed to initialize native disassembler".to_string())
87    }
88}
89
90/// Initialize native everything.
91pub fn initialize_native() -> Result<(), String> {
92    llvm_initialize_native_target()?;
93    llvm_initialize_native_asm_printer()?;
94    llvm_initialize_native_asm_parser()?;
95    llvm_initialize_native_disassembler()?;
96    Ok(())
97}
98
99/// Initialize all targets everything.
100pub fn initialize_all() {
101    llvm_initialize_all_target_infos();
102    llvm_initialize_all_targets();
103    llvm_initialize_all_target_mcs();
104    llvm_initialize_all_asm_printers();
105    llvm_initialize_all_asm_parsers();
106    llvm_initialize_all_disassemblers();
107}