Skip to content

Commit f42211f

Browse files
committed
Add ENV list parameter to cargo_build()
Allow callers to pass additional environment variables to the cargo process. This will be used to pass OPENSSL_STATIC, OPENSSL_LIB_DIR, and OPENSSL_INCLUDE_DIR for controlling how openssl-sys locates and links OpenSSL.
1 parent 22ed240 commit f42211f

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

cmake/CMakeCargo.cmake

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,10 @@
115115
# <crate_name>_<crate_type>_target — custom target driving the cargo build
116116
#
117117
# The caller controls Rust compiler flags via CMAKE_Rust_FLAGS (passed as
118-
# RUSTFLAGS) and the build profile via CMAKE_BUILD_TYPE.
118+
# RUSTFLAGS) and the build profile via CMAKE_BUILD_TYPE. Additional
119+
# environment variables for the cargo process can be passed via ENV.
119120
function(cargo_build)
120-
cmake_parse_arguments(CARGO "" "NAME;CRATE_TYPE" "FEATURES" ${ARGN})
121+
cmake_parse_arguments(CARGO "" "NAME;CRATE_TYPE" "FEATURES;ENV" ${ARGN})
121122
string(REPLACE "-" "_" LIB_NAME ${CARGO_NAME})
122123

123124
if(NOT CARGO_CRATE_TYPE)
@@ -236,7 +237,10 @@ function(cargo_build)
236237
)
237238

238239
# Set CARGO_TARGET_DIR and RUSTFLAGS in the cargo process environment.
239-
set(CARGO_ENV_COMMAND ${CMAKE_COMMAND} -E env "CARGO_TARGET_DIR=${CARGO_TARGET_DIR}" "RUSTFLAGS=${CMAKE_Rust_FLAGS}")
240+
set(CARGO_ENV_COMMAND ${CMAKE_COMMAND} -E env
241+
"CARGO_TARGET_DIR=${CARGO_TARGET_DIR}"
242+
"RUSTFLAGS=${CMAKE_Rust_FLAGS}"
243+
${CARGO_ENV})
240244

241245
add_custom_command(
242246
OUTPUT ${LIB_OUTPUTS}

0 commit comments

Comments
 (0)