cmake_minimum_required(VERSION 3.15) project(RustupProxy LANGUAGES CXX) set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../cmake" ${CMAKE_MODULE_PATH}) function(_assert_is_rustup_proxy executable_path) execute_process( COMMAND ${CMAKE_COMMAND} -E env RUSTUP_FORCE_ARG0=rustup "${executable_path}" --version OUTPUT_VARIABLE _VERSION_RAW ERROR_VARIABLE _VERSION_STDERR RESULT_VARIABLE _VERSION_RESULT ) if(NOT _VERSION_RESULT EQUAL "0") message(FATAL_ERROR "`${executable_path} --version` failed with ${_VERSION_RESULT}\n" "stderr:\n${_VERSION_STDERR}" ) endif() if (NOT _VERSION_RAW MATCHES "rustup [0-9\\.]+") message(FATAL_ERROR "`${executable_path} --version` output does not match rustup: ${_VERSION_RAW}\n") endif() endfunction() set(Rust_RESOLVE_RUSTUP_TOOLCHAINS OFF CACHE BOOL "" FORCE) find_package(Rust REQUIRED) if (NOT Rust_FOUND) message(FATAL_ERROR "Rustup not found") endif() get_property( RUSTC_EXECUTABLE TARGET Rust::Rustc PROPERTY IMPORTED_LOCATION ) _assert_is_rustup_proxy(${RUSTC_EXECUTABLE}) get_property( CARGO_EXECUTABLE TARGET Rust::Cargo PROPERTY IMPORTED_LOCATION ) _assert_is_rustup_proxy(${CARGO_EXECUTABLE})