16050
|
1 |
cmake_minimum_required(VERSION 3.15)
|
|
2 |
project(RustupProxy LANGUAGES CXX)
|
|
3 |
|
|
4 |
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../cmake" ${CMAKE_MODULE_PATH})
|
|
5 |
|
|
6 |
function(_assert_is_rustup_proxy executable_path)
|
|
7 |
execute_process(
|
|
8 |
COMMAND
|
|
9 |
${CMAKE_COMMAND} -E env
|
|
10 |
RUSTUP_FORCE_ARG0=rustup
|
|
11 |
"${executable_path}" --version
|
|
12 |
OUTPUT_VARIABLE _VERSION_RAW
|
|
13 |
ERROR_VARIABLE _VERSION_STDERR
|
|
14 |
RESULT_VARIABLE _VERSION_RESULT
|
|
15 |
)
|
|
16 |
|
|
17 |
if(NOT _VERSION_RESULT EQUAL "0")
|
|
18 |
message(FATAL_ERROR "`${executable_path} --version` failed with ${_VERSION_RESULT}\n"
|
|
19 |
"stderr:\n${_VERSION_STDERR}"
|
|
20 |
)
|
|
21 |
endif()
|
|
22 |
|
|
23 |
if (NOT _VERSION_RAW MATCHES "rustup [0-9\\.]+")
|
|
24 |
message(FATAL_ERROR "`${executable_path} --version` output does not match rustup: ${_VERSION_RAW}\n")
|
|
25 |
endif()
|
|
26 |
endfunction()
|
|
27 |
|
|
28 |
set(Rust_RESOLVE_RUSTUP_TOOLCHAINS OFF CACHE BOOL "" FORCE)
|
|
29 |
find_package(Rust REQUIRED)
|
|
30 |
|
|
31 |
if (NOT Rust_FOUND)
|
|
32 |
message(FATAL_ERROR "Rustup not found")
|
|
33 |
endif()
|
|
34 |
|
|
35 |
get_property(
|
|
36 |
RUSTC_EXECUTABLE
|
|
37 |
TARGET Rust::Rustc PROPERTY IMPORTED_LOCATION
|
|
38 |
)
|
|
39 |
|
|
40 |
_assert_is_rustup_proxy(${RUSTC_EXECUTABLE})
|
|
41 |
|
|
42 |
get_property(
|
|
43 |
CARGO_EXECUTABLE
|
|
44 |
TARGET Rust::Cargo PROPERTY IMPORTED_LOCATION
|
|
45 |
)
|
|
46 |
|
|
47 |
_assert_is_rustup_proxy(${CARGO_EXECUTABLE})
|