1 cmake_minimum_required(VERSION 3.14)
2 project(onde_inference LANGUAGES CXX)
3
4 set(PLUGIN_NAME "onde_inference_plugin")
5 set(RUST_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../rust")
6
7 # -- Rust build step ----------------------------------------------------------
8 set(RUST_LIB_OUTPUT "${RUST_DIR}/target/release/libonde_inference_dart.so")
9
10 add_custom_command(
11 OUTPUT "${RUST_LIB_OUTPUT}"
12 COMMAND cargo build
13 --release
14 --manifest-path "${RUST_DIR}/Cargo.toml"
15 WORKING_DIRECTORY "${RUST_DIR}"
16 COMMENT "Building onde_inference_dart Rust bridge for Linux..."
17 VERBATIM
18 )
19
20 add_custom_target(onde_inference_rust_build ALL
21 DEPENDS "${RUST_LIB_OUTPUT}"
22 )
23
24 # -- Flutter plugin stub ------------------------------------------------------
25 add_library(${PLUGIN_NAME} SHARED
26 "onde_inference_plugin.cc"
27 )
28
29 apply_standard_settings(${PLUGIN_NAME})
30
31 set_target_properties(${PLUGIN_NAME} PROPERTIES
32 CXX_VISIBILITY_PRESET hidden
33 )
34
35 target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL)
36
37 target_include_directories(${PLUGIN_NAME} INTERFACE
38 "${CMAKE_CURRENT_SOURCE_DIR}/include"
39 )
40
41 target_link_libraries(${PLUGIN_NAME} PRIVATE flutter)
42 target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::GTK)
43
44 add_dependencies(${PLUGIN_NAME} onde_inference_rust_build)
45
46 # -- Installation -------------------------------------------------------------
47 install(FILES "${RUST_LIB_OUTPUT}"
48 DESTINATION "${CMAKE_INSTALL_PREFIX}"
49 )
50
51 set(onde_inference_plugin_bundled_libraries
52 "${RUST_LIB_OUTPUT}"
53 PARENT_SCOPE
54 )