function(clickhouse_import_crate) # This is a workaround for Corrosion case sensitive build type matching in # _generator_add_cargo_targets(), that leads to different paths in # IMPORTED_LOCATION and real path of the library. # # It uses CMAKE_CONFIGURATION_TYPES and $, so here we preserve the # case of ${CMAKE_BUILD_TYPE} in ${CMAKE_CONFIGURATION_TYPES}. if ("${CMAKE_BUILD_TYPE_UC}" STREQUAL "DEBUG") set(CMAKE_CONFIGURATION_TYPES "${CMAKE_BUILD_TYPE};release") else() set(CMAKE_CONFIGURATION_TYPES "${CMAKE_BUILD_TYPE};debug") endif() if (CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG") set(profile "") else() if (ENABLE_THINLTO) set(profile "release-thinlto") else() set(profile "release") endif() endif() corrosion_import_crate(${ARGN} NO_STD PROFILE ${profile} LOCKED FLAGS --offline) endfunction() # -Wno-dollar-in-identifier-extension: cxx bridge complies names with '$' # -Wno-unused-macros: unused CXXBRIDGE1_RUST_STRING set(CXXBRIDGE_CXXFLAGS "-Wno-dollar-in-identifier-extension -Wno-unused-macros") set(RUST_CXXFLAGS "${RUST_CXXFLAGS} ${CXXBRIDGE_CXXFLAGS}") message(STATUS "RUST_CXXFLAGS (for skim): ${RUST_CXXFLAGS}") configure_file(".cargo/config.toml.in" ".cargo/config.toml" @ONLY) clickhouse_import_crate(MANIFEST_PATH Cargo.toml) target_include_directories(_ch_rust_prql INTERFACE prql/include) add_library(ch_rust::prql ALIAS _ch_rust_prql) if (OS_FREEBSD) # Right nix/libc requires fspacectl and it had been added only since FreeBSD14. # And since sysroot has older libraries you will got undefined reference for clickhouse binary. # # But likely everything should work without this syscall, however it is not # possible right now to gently override libraries versions for dependencies, # and forking rust modules is a little bit too much for this thing. # # You can take a look at the details in the following issue [1]. # # [1]: https://github.com/rust-lang/cargo/issues/5640 # message(STATUS "skim is disabled for FreeBSD") return() endif() target_include_directories(_ch_rust_skim_rust INTERFACE skim/include) add_library(ch_rust::skim ALIAS _ch_rust_skim_rust)