summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyleMiles <krm504@nyu.edu>2021-07-24 13:20:26 -0400
committerKyleMiles <krm504@nyu.edu>2021-08-10 19:28:09 -0400
commit1b3faeb689b75491a9701e98cf0a9123ddba32cb (patch)
tree5f72a9857e485311dd16b44db958f600c36b0db6
parentb9dc0db6462d87833f9bb0fb6cef0f8049b2f74e (diff)
Rust API : Remove nightly requirement; Remove custom Clang args to simplify getting bindgen to work
-rw-r--r--CMakeLists.txt2
-rw-r--r--rust/.cargo/config.toml2
-rw-r--r--rust/README.md4
-rw-r--r--rust/binaryninjacore-sys/build.rs29
-rw-r--r--rust/examples/basic_script/CMakeLists.txt20
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})