initial commit
This commit is contained in:
63
CMakeLists.txt
Normal file
63
CMakeLists.txt
Normal file
@@ -0,0 +1,63 @@
|
||||
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
|
||||
|
||||
project(rust_api)
|
||||
|
||||
set(CARGO_API_VERSION stable-2022-12-15)
|
||||
|
||||
file(GLOB RUST_API_SOURCES CONFIGURE_DEPENDS
|
||||
../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_CHECK_OPTS --workspace)
|
||||
set(CARGO_DOC_OPTS --no-deps)
|
||||
else()
|
||||
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_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 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)
|
||||
endif()
|
||||
Reference in New Issue
Block a user