diff options
| author | KyleMiles <krm504@nyu.edu> | 2022-08-29 16:25:03 -0400 |
|---|---|---|
| committer | KyleMiles <krm504@nyu.edu> | 2022-08-29 17:50:43 -0400 |
| commit | 3ae2ea8f069a448e4e3344d4467b019f860d2560 (patch) | |
| tree | 4415db642a824e5a90a7b74de5074eafb673e587 | |
| parent | 995ce65e1c59cb276dd9ca77fe216a8b7639db9d (diff) | |
Add Rust docs to CI (see https://dev-rust.binary.ninja 🎉)
| -rw-r--r-- | rust/CMakeLists.txt | 80 | ||||
| -rw-r--r-- | rust/build.rs | 13 | ||||
| -rw-r--r-- | rust/src/lib.rs | 10 |
3 files changed, 53 insertions, 50 deletions
diff --git a/rust/CMakeLists.txt b/rust/CMakeLists.txt index f38b96b1..9f7fd3a5 100644 --- a/rust/CMakeLists.txt +++ b/rust/CMakeLists.txt @@ -13,69 +13,51 @@ file(GLOB RUST_API_SOURCES src/*.rs) if(CMAKE_BUILD_TYPE MATCHES Debug) - set(CARGO_OPTS --workspace) + set(CARGO_CHECK_OPTS --workspace) + set(CARGO_DOC_OPTS --no-deps) else() - set(CARGO_OPTS --workspace --release) + set(CARGO_CHECK_OPTS --workspace --release) + set(CARGO_DOC_OPTS --no-deps --release) endif() +if (BN_BUILD_NUMBER) + set(RUST_DOC_FLAGS "--crate-version ${BN_MAJOR_VERSION}.${BN_MINOR_VERSION}.${BN_BUILD_NUMBER}") +else() + set(RUST_DOC_FLAGS "") +endif() + +# TODO : RUSTDOCFLAGS="--theme binja-dark.css --default-theme=binja-dark" + add_custom_target(rust_api ALL DEPENDS) add_dependencies(rust_api binaryninjaapi) +add_custom_target(rust_docs ALL DEPENDS ${PROJECT_BINARY_DIR}/target/doc) +add_dependencies(rust_docs binaryninjaapi rust_api) + # Get API source directory so we can find BinaryNinjaCore get_target_property(BN_API_SOURCE_DIR binaryninjaapi SOURCE_DIR) message(STATUS "${BN_API_SOURCE_DIR}") list(APPEND CMAKE_MODULE_PATH "${BN_API_SOURCE_DIR}/cmake") find_program(RUSTUP_PATH rustup REQUIRED HINTS ~/.cargo/bin) -set(RUSTUP_COMMAND ${RUSTUP_PATH} run ${CARGO_API_VERSION} cargo check) - -if(APPLE) - if(UNIVERSAL) - if(CMAKE_BUILD_TYPE MATCHES Debug) - set(AARCH64_LIB_PATH ${PROJECT_BINARY_DIR}/target/aarch64-apple-darwin/debug/${OUTPUT_FILE}) - set(X86_64_LIB_PATH ${PROJECT_BINARY_DIR}/target/x86_64-apple-darwin/debug/${OUTPUT_FILE}) - else() - set(AARCH64_LIB_PATH ${PROJECT_BINARY_DIR}/target/aarch64-apple-darwin/release/${OUTPUT_FILE}) - set(X86_64_LIB_PATH ${PROJECT_BINARY_DIR}/target/x86_64-apple-darwin/release/${OUTPUT_FILE}) - endif() +set(RUSTUP_CHECK_COMMAND ${RUSTUP_PATH} run ${CARGO_API_VERSION} cargo check) +set(RUSTUP_DOC_COMMAND ${RUSTUP_PATH} run ${CARGO_API_VERSION} cargo doc) - add_custom_command( - TARGET rust_api - PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E env - MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_INSTALL_BIN_DIR} - ${RUSTUP_COMMAND} --target=aarch64-apple-darwin ${CARGO_OPTS} - COMMAND ${CMAKE_COMMAND} -E env - MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_INSTALL_BIN_DIR} - ${RUSTUP_COMMAND} --target=x86_64-apple-darwin ${CARGO_OPTS} - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}) - else() - add_custom_command( - TARGET rust_api - PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E env - MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_INSTALL_BIN_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS} - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}) - endif() -elseif(WIN32) - add_custom_command( - TARGET rust_api - PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_INSTALL_BIN_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS} - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}) -else() - add_custom_command( - TARGET rust_api - PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_INSTALL_BIN_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS} - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}) -endif() +add_custom_command( + TARGET rust_api + PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_INSTALL_BIN_DIR} ${RUSTUP_CHECK_COMMAND} ${CARGO_CHECK_OPTS} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + DEPENDS ${RUST_API_SOURCES} +) +add_custom_command( + OUTPUT ${PROJECT_BINARY_DIR}/target/doc + COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_INSTALL_BIN_DIR} RUSTDOCFLAGS=${RUST_DOC_FLAGS} ${RUSTUP_DOC_COMMAND} ${CARGO_DOC_OPTS} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + DEPENDS ${RUST_API_SOURCES} +) if(BN_API_BUILD_EXAMPLES) - add_subdirectory(examples/basic_script) + add_subdirectory(examples/basic_script) endif() diff --git a/rust/build.rs b/rust/build.rs new file mode 100644 index 00000000..174cc587 --- /dev/null +++ b/rust/build.rs @@ -0,0 +1,13 @@ +fn main() { + println!("cargo:rerun-if-changed=under_construction.png"); + println!("cargo:rerun-if-changed=../docs/img/favicon.ico"); + println!("cargo:rerun-if-changed=../docs/img/logo.png"); + + let _ = std::fs::create_dir("target/doc"); + let _ = std::fs::copy("../docs/img/favicon.ico", "target/doc/favicon.ico"); + let _ = std::fs::copy( + "under_construction.png", + "target/doc/under_construction.png", + ); + let _ = std::fs::copy("../docs/img/logo.png", "target/doc/logo.png"); +} diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 414d8738..296e6934 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -12,11 +12,20 @@ // See the License for the specific language governing permissions and // limitations under the License. +#![doc(html_favicon_url = "../favicon.ico")] +#![doc(html_logo_url = "../logo.png")] +#![doc(issue_tracker_base_url = "https://github.com/Vector35/binaryninja-api/issues/")] + //! # Warning +//! <img align="right" src="../under_construction.png" width="175" height="175"> +//! //! > ⚠️ **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.** +//! +//! > ⚠️ This project runs on Rust version `stable-2022-04-07` #[macro_use] extern crate log; +#[doc(hidden)] pub extern crate binaryninjacore_sys; extern crate libc; #[cfg(feature = "rayon")] @@ -46,7 +55,6 @@ pub mod callingconvention; pub mod command; pub mod custombinaryview; pub mod databuffer; -pub mod datavariable; pub mod debuginfo; pub mod demangle; pub mod disassembly; |
