mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-11 08:52:06 +00:00
2fa1aebe51
The `CMAKE_TOOLCHAIN_FILE` variable is used for cross-compilation. Currently, the build is blocked when it's unset. Keep the default Rust target toolchain variable unless the CMake toolchain variable is set.
48 lines
2.1 KiB
CMake
48 lines
2.1 KiB
CMake
if (NOT ENABLE_LIBRARIES)
|
|
set(DEFAULT_ENABLE_RUST FALSE)
|
|
else()
|
|
list (APPEND CMAKE_MODULE_PATH "${ClickHouse_SOURCE_DIR}/contrib/corrosion/cmake")
|
|
find_package(Rust)
|
|
set(DEFAULT_ENABLE_RUST ${Rust_FOUND})
|
|
endif()
|
|
|
|
option(ENABLE_RUST "Enable rust" ${DEFAULT_ENABLE_RUST})
|
|
if(NOT ENABLE_RUST)
|
|
message(STATUS "Not using rust")
|
|
return()
|
|
endif()
|
|
|
|
message(STATUS "Checking Rust toolchain for current target")
|
|
|
|
# See https://doc.rust-lang.org/nightly/rustc/platform-support.html
|
|
|
|
if(DEFINED CMAKE_TOOLCHAIN_FILE)
|
|
if(CMAKE_TOOLCHAIN_FILE MATCHES "ppc64le")
|
|
set(Rust_CARGO_TARGET "powerpc64le-unknown-linux-gnu")
|
|
elseif((CMAKE_TOOLCHAIN_FILE MATCHES "linux/toolchain-x86_64") AND (CMAKE_TOOLCHAIN_FILE MATCHES "musl"))
|
|
set(Rust_CARGO_TARGET "x86_64-unknown-linux-musl")
|
|
elseif(CMAKE_TOOLCHAIN_FILE MATCHES "linux/toolchain-x86_64")
|
|
set(Rust_CARGO_TARGET "x86_64-unknown-linux-gnu")
|
|
elseif((CMAKE_TOOLCHAIN_FILE MATCHES "linux/toolchain-aarch64") AND (CMAKE_TOOLCHAIN_FILE MATCHES "musl"))
|
|
set(Rust_CARGO_TARGET "aarch64-unknown-linux-musl")
|
|
elseif(CMAKE_TOOLCHAIN_FILE MATCHES "linux/toolchain-aarch64")
|
|
set(Rust_CARGO_TARGET "aarch64-unknown-linux-gnu")
|
|
elseif((CMAKE_TOOLCHAIN_FILE MATCHES "darwin") AND (CMAKE_TOOLCHAIN_FILE MATCHES "x86_64"))
|
|
set(Rust_CARGO_TARGET "x86_64-apple-darwin")
|
|
elseif((CMAKE_TOOLCHAIN_FILE MATCHES "darwin") AND (CMAKE_TOOLCHAIN_FILE MATCHES "aarch64"))
|
|
set(Rust_CARGO_TARGET "aarch64-apple-darwin")
|
|
elseif((CMAKE_TOOLCHAIN_FILE MATCHES "freebsd") AND (CMAKE_TOOLCHAIN_FILE MATCHES "x86_64"))
|
|
set(Rust_CARGO_TARGET "x86_64-unknown-freebsd")
|
|
elseif(CMAKE_TOOLCHAIN_FILE MATCHES "linux/toolchain-riscv64")
|
|
set(Rust_CARGO_TARGET "riscv64gc-unknown-linux-gnu")
|
|
else()
|
|
message(FATAL_ERROR "Unsupported rust target")
|
|
endif()
|
|
message(STATUS "Switched Rust target to ${Rust_CARGO_TARGET}")
|
|
endif ()
|
|
|
|
# FindRust.cmake
|
|
list(APPEND CMAKE_MODULE_PATH "${ClickHouse_SOURCE_DIR}/contrib/corrosion/cmake")
|
|
# Define function corrosion_import_crate()
|
|
include ("${ClickHouse_SOURCE_DIR}/contrib/corrosion/cmake/Corrosion.cmake")
|