use llvm_sys::target::{
LLVM_InitializeAllAsmParsers, LLVM_InitializeAllAsmPrinters, LLVM_InitializeAllDisassemblers,
LLVM_InitializeAllTargetInfos, LLVM_InitializeAllTargetMCs, LLVM_InitializeAllTargets,
LLVM_InitializeNativeAsmParser, LLVM_InitializeNativeAsmPrinter,
LLVM_InitializeNativeDisassembler, LLVM_InitializeNativeTarget,
};
use crate::llvm_sys::ToBool;
pub fn llvm_initialize_all_target_infos() {
unsafe {
LLVM_InitializeAllTargetInfos();
}
}
pub fn llvm_initialize_all_targets() {
unsafe {
LLVM_InitializeAllTargets();
}
}
pub fn llvm_initialize_all_target_mcs() {
unsafe {
LLVM_InitializeAllTargetMCs();
}
}
pub fn llvm_initialize_all_asm_printers() {
unsafe {
LLVM_InitializeAllAsmPrinters();
}
}
pub fn llvm_initialize_all_asm_parsers() {
unsafe {
LLVM_InitializeAllAsmParsers();
}
}
pub fn llvm_initialize_all_disassemblers() {
unsafe {
LLVM_InitializeAllDisassemblers();
}
}
pub fn llvm_initialize_native_target() -> Result<(), String> {
if !unsafe { LLVM_InitializeNativeTarget().to_bool() } {
Ok(())
} else {
Err("Failed to initialize native target".to_string())
}
}
pub fn llvm_initialize_native_asm_parser() -> Result<(), String> {
if !unsafe { LLVM_InitializeNativeAsmParser().to_bool() } {
Ok(())
} else {
Err("Failed to initialize native asm parser".to_string())
}
}
pub fn llvm_initialize_native_asm_printer() -> Result<(), String> {
if !unsafe { LLVM_InitializeNativeAsmPrinter().to_bool() } {
Ok(())
} else {
Err("Failed to initialize native asm printer".to_string())
}
}
pub fn llvm_initialize_native_disassembler() -> Result<(), String> {
if !unsafe { LLVM_InitializeNativeDisassembler().to_bool() } {
Ok(())
} else {
Err("Failed to initialize native disassembler".to_string())
}
}
pub fn initialize_native() -> Result<(), String> {
llvm_initialize_native_target()?;
llvm_initialize_native_asm_printer()?;
llvm_initialize_native_asm_parser()?;
llvm_initialize_native_disassembler()?;
Ok(())
}
pub fn initialize_all() {
llvm_initialize_all_target_infos();
llvm_initialize_all_targets();
llvm_initialize_all_target_mcs();
llvm_initialize_all_asm_printers();
llvm_initialize_all_asm_parsers();
llvm_initialize_all_disassemblers();
}