diff --git a/cmake/Corrosion.cmake b/cmake/Corrosion.cmake index bb4c06ae..d352cb34 100644 --- a/cmake/Corrosion.cmake +++ b/cmake/Corrosion.cmake @@ -512,8 +512,8 @@ set(_CORROSION_RUSTC "${RUSTC_EXECUTABLE}" CACHE INTERNAL "Path to rustc used b set(_CORROSION_CARGO "${CARGO_EXECUTABLE}" CACHE INTERNAL "Path to cargo used by corrosion") string(REPLACE "-" "_" _CORROSION_RUST_CARGO_TARGET_UNDERSCORE "${Rust_CARGO_TARGET}") +set(_CORROSION_RUST_CARGO_TARGET_UNDERSCORE "${_CORROSION_RUST_CARGO_TARGET_UNDERSCORE}" CACHE INTERNAL "lowercase target triple with underscores") string(TOUPPER "${_CORROSION_RUST_CARGO_TARGET_UNDERSCORE}" _CORROSION_TARGET_TRIPLE_UPPER) -set(_CORROSION_RUST_CARGO_TARGET_UNDERSCORE ${Rust_CARGO_TARGET} CACHE INTERNAL "lowercase target triple with underscores") set(_CORROSION_RUST_CARGO_TARGET_UPPER "${_CORROSION_TARGET_TRIPLE_UPPER}" CACHE INTERNAL @@ -676,13 +676,22 @@ function(_add_cargo_build out_cargo_build_out_dir) set(corrosion_cc_rs_flags) if(CMAKE_C_COMPILER) + set(_CORROSION_C_COMPILER "${CMAKE_C_COMPILER}") + if(CMAKE_C_COMPILER_LAUNCHER) + set(_CORROSION_C_COMPILER "${CMAKE_C_COMPILER_LAUNCHER} ${_CORROSION_C_COMPILER}") + endif() + # This variable is read by cc-rs (often used in build scripts) to determine the c-compiler. # It can still be overridden if the user sets the non underscore variant via the environment variables # on the target. - list(APPEND corrosion_cc_rs_flags "CC_${_CORROSION_RUST_CARGO_TARGET_UNDERSCORE}=${CMAKE_C_COMPILER}") + list(APPEND corrosion_cc_rs_flags "CC_${_CORROSION_RUST_CARGO_TARGET_UNDERSCORE}=${_CORROSION_C_COMPILER}") endif() if(CMAKE_CXX_COMPILER) - list(APPEND corrosion_cc_rs_flags "CXX_${_CORROSION_RUST_CARGO_TARGET_UNDERSCORE}=${CMAKE_CXX_COMPILER}") + set(_CORROSION_CXX_COMPILER "${CMAKE_CXX_COMPILER}") + if(CMAKE_CXX_COMPILER_LAUNCHER) + set(_CORROSION_CXX_COMPILER "${CMAKE_CXX_COMPILER_LAUNCHER} ${_CORROSION_CXX_COMPILER}") + endif() + list(APPEND corrosion_cc_rs_flags "CXX_${_CORROSION_RUST_CARGO_TARGET_UNDERSCORE}=${_CORROSION_CXX_COMPILER}") endif() # cc-rs doesn't seem to support `llvm-ar` (commandline syntax), wo we might as well just use # the default AR.