/ llvm.scm
llvm.scm
 1  (define-module (llvm)
 2    #:use-module (llvm raw)
 3    #:export (init-llvm!))
 4  
 5  (define* (init-llvm! #:optional (target %host-type))
 6    (cond ((string-prefix? "x86" target)
 7           (begin (LLVMInitializeX86Target)
 8                  (LLVMInitializeX86TargetInfo)
 9                  (LLVMInitializeX86TargetMC)
10                  (LLVMInitializeX86Disassembler)
11                  (LLVMInitializeX86AsmPrinter)
12                  (LLVMInitializeX86AsmParser)))
13          ((string-prefix? "riscv" target)
14           (begin (LLVMInitializeRISCVTarget)
15                  (LLVMInitializeRISCVTargetInfo)
16                  (LLVMInitializeRISCVTargetMC)
17                  (LLVMInitializeRISCVDisassembler)
18                  (LLVMInitializeRISCVAsmPrinter)
19                  (LLVMInitializeRISCVAsmParser)))
20          ((string-prefix? "arm" target)
21           (begin (LLVMInitializeARMTarget)
22                  (LLVMInitializeARMTargetInfo)
23                  (LLVMInitializeARMTargetMC)
24                  (LLVMInitializeARMDisassembler)
25                  (LLVMInitializeARMAsmPrinter)
26                  (LLVMInitializeARMAsmParser)))))