2323# CARGO_HOME - Cargo home folder
2424# CARGO_EXECUTABLE - Cargo package manager executable path
2525# RUSTC_EXECUTABLE - Rust compiler executable path
26+ # RUSTC_SYSROOT - Rust compiler root location (includes binaries and libraries)
27+ # RUSTC_LIBRARIES - Rust compiler runtime library list
2628# RUSTDOC_EXECUTABLE - Rust doc executable plath
2729# RUSTUP_EXECUTABLE - Rustup executable path
2830# RUST_GDB_EXECUTABLE - Rust GDB debugger executable path
@@ -42,6 +44,8 @@ if(NOT DEFINED CARGO_HOME)
4244 endif ()
4345endif ()
4446
47+ set (CARGO_HOME "${CARGO_HOME} " CACHE PATH "Rust Cargo Home" )
48+
4549set (RUST_PATHS
4650 /usr
4751 /usr/local
@@ -78,28 +82,40 @@ find_program(RUST_LLDB_EXECUTABLE rust-lldb
7882 PATH_SUFFIXES "bin"
7983)
8084
81- if (CARGO_EXECUTABLE AND RUSTC_EXECUTABLE AND RUSTDOC_EXECUTABLE)
82- set (CARGO_HOME "${CARGO_HOME} " CACHE PATH "Rust Cargo Home" )
85+ if (RUSTC_EXECUTABLE)
8386 execute_process (
8487 COMMAND ${RUSTC_EXECUTABLE} --version
8588 OUTPUT_VARIABLE RUSTC_VERSION
8689 OUTPUT_STRIP_TRAILING_WHITESPACE
8790 )
8891 string (REGEX REPLACE "rustc ([^ ]+) .*" "\\ 1" RUSTC_VERSION "${RUSTC_VERSION} " )
92+
93+ execute_process (
94+ COMMAND ${RUSTC_EXECUTABLE} --print sysroot
95+ OUTPUT_VARIABLE RUSTC_SYSROOT
96+ OUTPUT_STRIP_TRAILING_WHITESPACE
97+ )
98+
99+ file (
100+ GLOB RUSTC_LIBRARIES
101+ ${RUSTC_SYSROOT} /lib/*${CMAKE_SHARED_LIBRARY_SUFFIX}
102+ )
89103endif ()
90104
91105include (FindPackageHandleStandardArgs)
92106
93107find_package_handle_standard_args(Rust
94108 FOUND_VAR RUST_FOUND
95- REQUIRED_VARS CARGO_EXECUTABLE RUSTC_EXECUTABLE
109+ REQUIRED_VARS CARGO_EXECUTABLE RUSTC_EXECUTABLE RUSTC_LIBRARIES
96110 VERSION_VAR RUSTC_VERSION
97111)
98112
99113mark_as_advanced (
100114 RUST_FOUND
101115 CARGO_EXECUTABLE
102116 RUSTC_EXECUTABLE
117+ RUSTC_SYSROOT
118+ RUSTC_LIBRARIES
103119 RUSTUP_EXECUTABLE
104120 RUSTDOC_EXECUTABLE
105121 RUST_GDB_EXECUTABLE
0 commit comments