################################################
# Mission code in rust
# exports code as static library `mission_rust`
################################################



#TODO look into corrosion cmake plugin

if(${ROMEO_LOW_LEVEL_TESTS})
    set(FEATURES "--features=\"low_level_tests\"")
endif()

if (${CMAKE_CROSSCOMPILING})

    add_custom_target(
        mission_rust_internal
        COMMAND cargo build -Zbuild-std=core --target=${CMAKE_SYSTEM_PROCESSOR} $<$<CONFIG:Release>:--release> ${FEATURES}
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    )

    set_directory_properties(PROPERTIES ADDITIONAL_CLEAN_FILES ${CMAKE_CURRENT_SOURCE_DIR}/target/${CMAKE_SYSTEM_PROCESSOR}/$<IF:$<CONFIG:Release>,release,debug>/)

    add_library(mission_rust INTERFACE)

    add_dependencies(mission_rust mission_rust_internal)

    target_link_libraries(mission_rust INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/target/${CMAKE_SYSTEM_PROCESSOR}/$<IF:$<CONFIG:Release>,release,debug>/libmission_rust.a)

else()

    add_custom_target(
        mission_rust_internal
        COMMAND cargo build $<$<CONFIG:Release>:--release> ${FEATURES}
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    )

    set_directory_properties(PROPERTIES ADDITIONAL_CLEAN_FILES ${CMAKE_CURRENT_SOURCE_DIR}/target/$<IF:$<CONFIG:Release>,release,debug>/)

    add_library(mission_rust INTERFACE)

    add_dependencies(mission_rust mission_rust_internal)

    target_link_libraries(mission_rust INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/target/$<IF:$<CONFIG:Release>,release,debug>/libmission_rust.a)


endif()