Skip to main content

pliron_llvm/llvm_sys/
target.rs

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