diff options
| author | KyleMiles <krm504@nyu.edu> | 2022-08-29 12:18:55 -0400 |
|---|---|---|
| committer | KyleMiles <krm504@nyu.edu> | 2022-08-29 12:18:55 -0400 |
| commit | 69f7caca76cf05cfd5d3e48c6cd950aed20d7f97 (patch) | |
| tree | 3c2d3f21a9b117ce4fe118ee75ed8fe1035f5b35 /rust/CMakeLists.txt | |
| parent | ff9f329415aa7b9fac4a089d9b28a77228835adc (diff) | |
Add `cargo check` of API and all examples to CI
Diffstat (limited to 'rust/CMakeLists.txt')
| -rw-r--r-- | rust/CMakeLists.txt | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/rust/CMakeLists.txt b/rust/CMakeLists.txt new file mode 100644 index 00000000..f38b96b1 --- /dev/null +++ b/rust/CMakeLists.txt @@ -0,0 +1,81 @@ +cmake_minimum_required(VERSION 3.13 FATAL_ERROR) + +project(rust_api) + +set(CARGO_API_VERSION stable-2022-04-07) + +file(GLOB RUST_API_SOURCES + ../binaryninjacore.h + binaryninjacore-sys/build.rs + binaryninjacore-sys/Cargo.toml + binaryninjacore-sys/src/* + Cargo.toml + src/*.rs) + +if(CMAKE_BUILD_TYPE MATCHES Debug) + set(CARGO_OPTS --workspace) +else() + set(CARGO_OPTS --workspace --release) +endif() + +add_custom_target(rust_api ALL DEPENDS) +add_dependencies(rust_api binaryninjaapi) + +# 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() + + 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() + + +if(BN_API_BUILD_EXAMPLES) + add_subdirectory(examples/basic_script) +endif() |
