From 41b78c42574f7bc96464737aaba193bf86427f42 Mon Sep 17 00:00:00 2001 From: Jos van den Oever Date: Fri, 1 Sep 2017 19:15:13 +0200 Subject: [PATCH] Add cmake modules for finding cargo and rust --- CMakeLists.txt | 11 ++++++++--- cmake/FindCargo.cmake | 10 ++++++++++ cmake/FindRust.cmake | 10 ++++++++++ demo/CMakeLists.txt | 2 +- tests/CMakeLists.txt | 2 +- 5 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 cmake/FindCargo.cmake create mode 100644 cmake/FindRust.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ef6145..6d8f87f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,8 @@ endif() include(FeatureSummary) -find_program(CARGO cargo) +find_package(Cargo) +find_package(Rust) # Find Qt modules find_package(Qt5 ${QT_MIN_VERSION} CONFIG @@ -57,9 +58,13 @@ endif() add_subdirectory(src) enable_testing() -add_subdirectory(tests) -if(Qt5Widgets_FOUND AND Qt5Svg_FOUND) +if(Cargo_FOUND AND Rust_FOUND) + add_subdirectory(tests) +endif() + + +if(Qt5Widgets_FOUND AND Qt5Svg_FOUND AND Cargo_FOUND AND Rust_FOUND) add_subdirectory(demo) endif() diff --git a/cmake/FindCargo.cmake b/cmake/FindCargo.cmake new file mode 100644 index 0000000..6627d86 --- /dev/null +++ b/cmake/FindCargo.cmake @@ -0,0 +1,10 @@ +include(FindPackageHandleStandardArgs) +find_program(Cargo_EXECUTABLE cargo) +execute_process(COMMAND "${Cargo_EXECUTABLE}" --version + OUTPUT_VARIABLE Cargo_VERSION_OUTPUT) +STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" + Cargo_VERSION "${Cargo_VERSION_OUTPUT}") +find_package_handle_standard_args(Cargo + REQUIRED_VARS Cargo_EXECUTABLE + VERSION_VAR Cargo_VERSION) +mark_as_advanced(Cargo_EXECUTABLE) diff --git a/cmake/FindRust.cmake b/cmake/FindRust.cmake new file mode 100644 index 0000000..1b67045 --- /dev/null +++ b/cmake/FindRust.cmake @@ -0,0 +1,10 @@ +include(FindPackageHandleStandardArgs) +find_program(Rust_EXECUTABLE rustc) +execute_process(COMMAND "${Rust_EXECUTABLE}" --version + OUTPUT_VARIABLE Rust_VERSION_OUTPUT) +STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" + Rust_VERSION "${Rust_VERSION_OUTPUT}") +find_package_handle_standard_args(Rust + REQUIRED_VARS Rust_EXECUTABLE + VERSION_VAR Rust_VERSION) +mark_as_advanced(Rust_EXECUTABLE) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 7590ae9..073c9b2 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -13,7 +13,7 @@ add_custom_command( # compile the rust code into a static library add_custom_command( OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/rust/${RUST_TARGET_DIR}/librust.a" - COMMAND ${CARGO} build ${RUST_BUILD_FLAG} + COMMAND ${Cargo_EXECUTABLE} build ${RUST_BUILD_FLAG} DEPENDS rust/src/lib.rs rust/src/implementation/mod.rs rust/src/implementation/time_series.rs diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d8c28d8..a1ebcf2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -21,7 +21,7 @@ function(rust_test NAME DIRECTORY) add_custom_command( OUTPUT "${DIR}/${RUST_TARGET_DIR}/librust.a" - COMMAND ${CARGO} build ${RUST_BUILD_FLAG} + COMMAND ${Cargo_EXECUTABLE} build ${RUST_BUILD_FLAG} DEPENDS "${DIR}/src/lib.rs" "${DIR}/src/implementation.rs" "${DIR}/src/interface.rs"