2026-03-16 01:00:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set(CARGO_BUILD_TYPE "release")
|
|
|
|
|
set(CARGO_BUILD_ARG "--release")
|
|
|
|
|
if(CONFIG_IDF_TARGET_ARCH_RISCV)
|
|
|
|
|
set(CARGO_TARGET "riscv32imc-esp-espidf")
|
|
|
|
|
set(CARGO_FEATURES_ARG "")
|
|
|
|
|
elseif(CONFIG_IDF_TARGET_ARCH_XTENSA)
|
|
|
|
|
set(CARGO_TARGET "xtensa-esp32-espidf")
|
|
|
|
|
set(CARGO_FEATURES_ARG "--features=std")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set(RUST_PROJECT_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
|
|
|
|
set(RUST_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
|
set(RUST_TARGET_DIR "${RUST_BUILD_DIR}/target")
|
|
|
|
|
set(RUST_INCLUDE_DIR "${RUST_TARGET_DIR}")
|
2026-04-02 16:45:47 +01:00
|
|
|
set(RUST_INCLUDE_HEADER "${RUST_INCLUDE_DIR}/drone_controller.h")
|
2026-03-16 01:00:31 +00:00
|
|
|
set(RUST_STATIC_LIBRARY "${RUST_TARGET_DIR}/${CARGO_TARGET}/${CARGO_BUILD_TYPE}/libdrone_controller.a")
|
|
|
|
|
|
|
|
|
|
|
2026-04-02 16:45:47 +01:00
|
|
|
idf_component_register(
|
|
|
|
|
SRCS "placeholder.c"
|
|
|
|
|
INCLUDE_DIRS "" "${RUST_INCLUDE_DIR}"
|
|
|
|
|
PRIV_REQUIRES "${RUST_DEPS}"
|
|
|
|
|
)
|
|
|
|
|
idf_build_get_property(sdkconfig SDKCONFIG)
|
2026-03-16 01:00:31 +00:00
|
|
|
ExternalProject_Add(
|
|
|
|
|
drone_controller_project
|
|
|
|
|
PREFIX "${RUST_PROJECT_DIR}"
|
|
|
|
|
DOWNLOAD_COMMAND ""
|
|
|
|
|
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env
|
|
|
|
|
CARGO_BUILD_TARGET=${CARGO_TARGET}
|
|
|
|
|
CARGO_BUILD_TARGET_DIR=${RUST_TARGET_DIR}
|
|
|
|
|
cargo clean
|
|
|
|
|
BUILD_COMMAND ${CMAKE_COMMAND} -E env
|
|
|
|
|
CARGO_BUILD_TARGET=${CARGO_TARGET}
|
|
|
|
|
CARGO_BUILD_TARGET_DIR=${RUST_TARGET_DIR}
|
|
|
|
|
CARGO_CMAKE_BUILD_INCLUDES=$<TARGET_PROPERTY:${COMPONENT_LIB},INCLUDE_DIRECTORIES>
|
|
|
|
|
CARGO_CMAKE_BUILD_LINK_LIBRARIES=$<TARGET_PROPERTY:${COMPONENT_LIB},LINK_LIBRARIES>
|
|
|
|
|
CARGO_CMAKE_BUILD_SDKCONFIG=${sdkconfig}
|
|
|
|
|
CARGO_CMAKE_BUILD_COMPILER=${CMAKE_C_COMPILER}
|
|
|
|
|
cargo build ${CARGO_BUILD_ARG} ${CARGO_FEATURES_ARG}
|
|
|
|
|
INSTALL_COMMAND ""
|
|
|
|
|
BUILD_ALWAYS TRUE
|
|
|
|
|
TMP_DIR "${RUST_BUILD_DIR}/tmp"
|
|
|
|
|
STAMP_DIR "${RUST_BUILD_DIR}/stamp"
|
|
|
|
|
DOWNLOAD_DIR "${RUST_BUILD_DIR}"
|
|
|
|
|
SOURCE_DIR "${RUST_PROJECT_DIR}"
|
|
|
|
|
BINARY_DIR "${RUST_PROJECT_DIR}"
|
|
|
|
|
INSTALL_DIR "${RUST_BUILD_DIR}"
|
|
|
|
|
BUILD_BYPRODUCTS
|
|
|
|
|
"${RUST_INCLUDE_HEADER}"
|
|
|
|
|
"${RUST_STATIC_LIBRARY}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set_source_files_properties("${RUST_INCLUDE_HEADER}" PROPERTIES GENERATED true)
|
|
|
|
|
|
|
|
|
|
add_prebuilt_library(drone_controller_lib "${RUST_STATIC_LIBRARY}" PRIV_REQUIRES "${RUST_DEPS}")
|
2026-04-02 16:45:47 +01:00
|
|
|
add_dependencies(drone_controller_lib drone_codrone_controllerr_project)
|
2026-03-16 01:00:31 +00:00
|
|
|
|
|
|
|
|
target_include_directories(${COMPONENT_LIB} PUBLIC "${RUST_INCLUDE_DIR}")
|
|
|
|
|
target_link_libraries(${COMPONENT_LIB} PRIVATE drone_controller_lib)
|