diff options
| author | KyleMiles <krm504@nyu.edu> | 2021-07-24 13:20:26 -0400 |
|---|---|---|
| committer | KyleMiles <krm504@nyu.edu> | 2021-08-10 19:28:09 -0400 |
| commit | 1b3faeb689b75491a9701e98cf0a9123ddba32cb (patch) | |
| tree | 5f72a9857e485311dd16b44db958f600c36b0db6 | |
| parent | b9dc0db6462d87833f9bb0fb6cef0f8049b2f74e (diff) | |
Rust API : Remove nightly requirement; Remove custom Clang args to simplify getting bindgen to work
| -rw-r--r-- | CMakeLists.txt | 2 | ||||
| -rw-r--r-- | rust/.cargo/config.toml | 2 | ||||
| -rw-r--r-- | rust/README.md | 4 | ||||
| -rw-r--r-- | rust/binaryninjacore-sys/build.rs | 29 | ||||
| -rw-r--r-- | rust/examples/basic_script/CMakeLists.txt | 20 |
5 files changed, 13 insertions, 44 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index bcc2bab1..33dd0635 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ project(binaryninjaapi) option(BN_API_BUILD_EXAMPLES "Builds example plugins" OFF) -set(CARGO_API_VERSION nightly-2021-06-27) +set(CARGO_API_VERSION stable-2021-06-17) if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) if (MSVC) diff --git a/rust/.cargo/config.toml b/rust/.cargo/config.toml deleted file mode 100644 index ac01e73c..00000000 --- a/rust/.cargo/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[unstable] -extra-link-arg = true diff --git a/rust/README.md b/rust/README.md index 815b449b..713f71c0 100644 --- a/rust/README.md +++ b/rust/README.md @@ -4,14 +4,14 @@ > :warning: **These bindings are in a very early beta, only have partial support for the core APIs and are still actively under development. Compatibility _will_ break and conventions _will_ change! They are being used for core Binary Ninja features however, so we expect much of what is already there to be reliable enough to build on, just don't be surprised if your plugins/scripts need to hit a moving target.** -> :warning: This project requires **Rust Nightly** to build with those fancy linker arguments - most recent tested version: `cargo 1.55.0-nightly (9233aa06c 2021-06-22)` +> :warning: This project runs on Rust version `stable-2021-06-17` ## Dependencies Having BinaryNinja installed (and your license registered) Clang -Rust **Nightly** +Rust ## How to use diff --git a/rust/binaryninjacore-sys/build.rs b/rust/binaryninjacore-sys/build.rs index bbecc88c..d666c53f 100644 --- a/rust/binaryninjacore-sys/build.rs +++ b/rust/binaryninjacore-sys/build.rs @@ -89,7 +89,7 @@ fn main() { } } - let mut bindings = bindgen::builder() + bindgen::builder() .header("../../binaryninjacore.h") .clang_arg("-std=c++17") .clang_arg("-x") @@ -107,32 +107,7 @@ fn main() { "pub const BN_MINIMUM_UI_ABI_VERSION: u32 = {};", minimum_version )) - .rustified_enum("BN.*"); - - // Difference between global LLVM/Clang install and custom LLVM/Clang install... - // First option is for the build server, second option is being nice to our dev who have `LLVM_INSTALL_DIR` set, default is for people with "normal" setups (and Macs) - #[cfg(not(target_os = "macos"))] - { - // Detect for custom Clang or LLVM installations (BN devs/build server) - let llvm_dir = env::var("LIBCLANG_PATH"); - let llvm_version = env::var("LLVM_VERSION"); - let llvm_install_dir = env::var("LLVM_INSTALL_DIR"); - let build_server = env::var("BUILD_SERVER"); - - if let (Ok(llvm_dir), Ok(llvm_version), Ok(build_server)) = (llvm_dir, llvm_version, build_server) { - if build_server == "ON" { - let llvm_include_path = format!("-I{}/clang/{}/include", llvm_dir, llvm_version); - bindings = bindings.clang_arg(llvm_include_path); - } - } else if let Ok(llvm_install_dir) = llvm_install_dir { - let llvm_include_path = - format!("-I{}/12.0.0/lib/clang/12.0.0/include", llvm_install_dir); - env::set_var("LIBCLANG_PATH", format!("{}/12.0.0/lib", llvm_install_dir)); - bindings = bindings.clang_arg(llvm_include_path); - } - } - - bindings + .rustified_enum("BN.*") .generate() .expect("Unable to generate bindings") .write_to_file(PathBuf::from(out_dir).join("bindings.rs")) diff --git a/rust/examples/basic_script/CMakeLists.txt b/rust/examples/basic_script/CMakeLists.txt index 3156595f..a8b8e443 100644 --- a/rust/examples/basic_script/CMakeLists.txt +++ b/rust/examples/basic_script/CMakeLists.txt @@ -44,11 +44,11 @@ if(APPLE) add_custom_command( OUTPUT ${OUTPUT_PATH} COMMAND ${CMAKE_COMMAND} -E env - MACOSX_DEPLOYMENT_TARGET=10.14 LIBCLANG_PATH=${LLVM_PATH}/lib LLVM_VERSION=${LLVM_VERSION} BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} - BUILD_SERVER=${BUILD_SERVER} ${RUSTUP_COMMAND} --target=aarch64-apple-darwin ${CARGO_OPTS} + MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} + ${RUSTUP_COMMAND} --target=aarch64-apple-darwin ${CARGO_OPTS} COMMAND ${CMAKE_COMMAND} -E env - MACOSX_DEPLOYMENT_TARGET=10.14 LIBCLANG_PATH=${LLVM_PATH}/lib LLVM_VERSION=${LLVM_VERSION} BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} - BUILD_SERVER=${BUILD_SERVER} ${RUSTUP_COMMAND} --target=x86_64-apple-darwin ${CARGO_OPTS} + MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} + ${RUSTUP_COMMAND} --target=x86_64-apple-darwin ${CARGO_OPTS} COMMAND cp ${AARCH64_LIB_PATH} ${OUTPUT_PATH}-aarch COMMAND cp ${X86_64_LIB_PATH} ${OUTPUT_PATH} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} @@ -63,8 +63,8 @@ if(APPLE) add_custom_command( OUTPUT ${OUTPUT_PATH} COMMAND ${CMAKE_COMMAND} -E env - MACOSX_DEPLOYMENT_TARGET=10.14 LIBCLANG_PATH=${LLVM_PATH}/lib LLVM_VERSION=${LLVM_VERSION} BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} - BUILD_SERVER=${BUILD_SERVER} ${RUSTUP_COMMAND} ${CARGO_OPTS} + MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} + ${RUSTUP_COMMAND} ${CARGO_OPTS} COMMAND cp ${LIB_PATH} ${OUTPUT_PATH} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}) @@ -72,18 +72,14 @@ if(APPLE) elseif(WIN32) add_custom_command( OUTPUT ${OUTPUT_PATH} - COMMAND ${CMAKE_COMMAND} -E env - LIBCLANG_PATH=${LLVM_PATH}/lib LLVM_VERSION=${LLVM_VERSION} BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} - BUILD_SERVER=${BUILD_SERVER} ${RUSTUP_COMMAND} ${CARGO_OPTS} + COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS} COMMAND cp ${TARGET_DIR}/${OUTPUT_FILE} ${OUTPUT_PATH} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}) else() add_custom_command( OUTPUT ${OUTPUT_PATH} - COMMAND ${CMAKE_COMMAND} -E env - LIBCLANG_PATH=${LLVM_PATH}/lib LLVM_VERSION=${LLVM_VERSION} BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} - BUILD_SERVER=${BUILD_SERVER} ${RUSTUP_COMMAND} ${CARGO_OPTS} + COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS} COMMAND cp ${TARGET_DIR}/${OUTPUT_FILE} ${OUTPUT_PATH} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}) |
