build: cmake: avoid referencing CMAKE_BUILD_TYPE

use generator-expresion instead, so that the value can be evaluated
when generating the build system. this prepares for the multi-config
support.

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>

Closes scylladb/scylladb#15942
This commit is contained in:
Kefu Chai
2023-11-03 14:19:52 +08:00
committed by Nadav Har'El
parent 7c7baf71d5
commit f2693752f1

View File

@@ -3,19 +3,19 @@ find_program(CARGO cargo
function(add_rust_library name)
# use for profiles defined in Cargo.toml
set(mode ${CMAKE_BUILD_TYPE})
string(TOLOWER ${CMAKE_BUILD_TYPE} mode)
set(mode $<LOWER_CASE:$<CONFIG>>)
set(target_dir ${CMAKE_CURRENT_BINARY_DIR})
set(profile "rust-${mode}")
set(library ${target_dir}/${profile}/lib${name}.a)
set(library ${target_dir}/lib${name}.a)
add_custom_command(
OUTPUT ${library}
COMMAND ${CMAKE_COMMAND} -E env CARGO_BUILD_DEP_INFO_BASEDIR=. ${CARGO} build --locked --target-dir=${target_dir} --profile=rust-${mode}
COMMAND ${CMAKE_COMMAND} -E copy ${target_dir}/${profile}/lib${name}.a ${library}
DEPENDS Cargo.lock
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Building Rust library: ${library}")
add_custom_target(rust-${name}
DEPENDS ${library})
DEPENDS ${target_dir}/lib${name}.a)
add_library(Rust::${name} STATIC IMPORTED)
add_dependencies(Rust::${name} rust-${name})
set_target_properties(Rust::${name} PROPERTIES