Я пытаюсь завершить учебник Kaleidoscope в Rust.
Но мне кажется, что я поражен Codegen.
My build.rs
:
extern crate bindgen;
use std::env;
use std::path::PathBuf;
fn main(){
println!("cargo:rustc-link-lib=llvm");
println!("cargo:rerun-if-changed=wrapper.h");
let bindings = bindgen::Builder::default()
.header("wrapper.h")
.clang_arg("llvm-config --cxxflags --ldflags --system-libs --libs core")
.parse_callbacks(Box::new(bindgen::CargoCallbacks))
.generate()
.expect("unable to generate bindings");
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
bindings
.write_to_file(out_path.join("bindings.rs"))
.expect("couldn't write bindings!");
}
My wrapper.h
:
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Verifier.h"
Я хочу иметь возможность передать следующие флаги clang++ `llvm-config --cxxflags --ldflags --system-libs --libs core`
из учебника.
Текущая ошибка, которую я получаю:
build-script-build` (exit code: 101)
--- stdout
cargo:rustc-link-lib=llvm
cargo:rerun-if-changed=wrapper.h
--- stderr
warning: llvm-config --cxxflags --ldflags --system-libs --libs core: 'linker' input unused [-Wunused-command-line-argument]
/usr/include/llvm/Support/Compiler.h:19:10: fatal error: 'new' file not found
warning: llvm-config --cxxflags --ldflags --system-libs --libs core: 'linker' input unused [-Wunused-command-line-argument], err: false
/usr/include/llvm/Support/Compiler.h:19:10: fatal error: 'new' file not found, err: true
thread 'main' panicked at 'unable to generate bindings: ()', src/libcore/result.rs:1188:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.