@@ -5,15 +5,28 @@ set(CMAKE_CXX_STANDARD 17)
55set (CMAKE_CXX_STANDARD_REQUIRED ON )
66set (CMAKE_CXX_EXTENSIONS OFF )
77option (TEMPOCH_BUILD_DOCS "Enable Doxygen documentation target." ON )
8+ option (TEMPOCH_USE_CANONICAL_RUST
9+ "Build/link against ../../../rust/tempoch instead of the vendored snapshot."
10+ OFF )
811
912# Find Cargo for building Rust library
1013find_program (CARGO_BIN cargo REQUIRED )
1114
1215# Paths to tempoch-ffi
13- set (TEMPOCH_SUBMODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /tempoch)
14- set (TEMPOCH_FFI_DIR ${TEMPOCH_SUBMODULE_DIR} /tempoch-ffi)
16+ if (TEMPOCH_USE_CANONICAL_RUST)
17+ set (TEMPOCH_CANONICAL_RUST_DIR
18+ ${CMAKE_CURRENT_SOURCE_DIR} /../../../rust/tempoch
19+ CACHE PATH "Path to the canonical rust/tempoch workspace" )
20+ set (TEMPOCH_SUBMODULE_DIR ${TEMPOCH_CANONICAL_RUST_DIR} )
21+ set (TEMPOCH_ARTIFACT_DIR ${TEMPOCH_CANONICAL_RUST_DIR} /target/release)
22+ set (TEMPOCH_TARGET_DIR ${TEMPOCH_CANONICAL_RUST_DIR} /target)
23+ else ()
24+ set (TEMPOCH_SUBMODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /tempoch)
25+ set (TEMPOCH_ARTIFACT_DIR ${TEMPOCH_SUBMODULE_DIR} /tempoch-ffi/target/release)
26+ set (TEMPOCH_TARGET_DIR ${TEMPOCH_SUBMODULE_DIR} /tempoch-ffi/target)
27+ endif ()
28+ set (TEMPOCH_FFI_DIR ${TEMPOCH_SUBMODULE_DIR} /tempoch-ffi)
1529set (TEMPOCH_FFI_INCLUDE_DIR ${TEMPOCH_FFI_DIR} /include)
16- set (TEMPOCH_ARTIFACT_DIR ${TEMPOCH_FFI_DIR} /target/release)
1730
1831# Allow enabling Cargo features for tempoch-ffi (e.g., serde)
1932set (TEMPOCH_FFI_FEATURES "" CACHE STRING "Cargo features for tempoch-ffi (e.g., 'serde' or empty)" )
@@ -43,7 +56,7 @@ endif()
4356add_custom_target (
4457 build_tempoch_ffi
4558 COMMAND ${CMAKE_COMMAND} -E env
46- CARGO_TARGET_DIR=${TEMPOCH_FFI_DIR}/target
59+ CARGO_TARGET_DIR=${TEMPOCH_TARGET_DIR}
4760 ${CARGO_BIN} build --release ${_TEMPOCH_FEATURES_ARGS}
4861 WORKING_DIRECTORY ${TEMPOCH_FFI_DIR}
4962 BYPRODUCTS ${TEMPOCH_LIBRARY_PATH}
@@ -100,9 +113,17 @@ endif()
100113
101114# Set RPATH for runtime library location
102115if (APPLE )
103- set (_tempoch_rpath "@loader_path/../tempoch/tempoch-ffi/target/release" )
116+ if (TEMPOCH_USE_CANONICAL_RUST)
117+ set (_tempoch_rpath "${TEMPOCH_ARTIFACT_DIR} " )
118+ else ()
119+ set (_tempoch_rpath "@loader_path/../tempoch/tempoch-ffi/target/release" )
120+ endif ()
104121elseif (UNIX )
105- set (_tempoch_rpath "$ORIGIN/../tempoch/tempoch-ffi/target/release" )
122+ if (TEMPOCH_USE_CANONICAL_RUST)
123+ set (_tempoch_rpath "${TEMPOCH_ARTIFACT_DIR} " )
124+ else ()
125+ set (_tempoch_rpath "$ORIGIN/../tempoch/tempoch-ffi/target/release" )
126+ endif ()
106127endif ()
107128
108129# Only build tests, examples, and Google Test when standalone (not as subdirectory)
0 commit comments