You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

DoraTargets.cmake 4.1 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. set(DORA_ROOT_DIR "" CACHE FILEPATH "Path to the root of dora")
  2. set(dora_c_include_dir "${CMAKE_CURRENT_BINARY_DIR}/include/c")
  3. set(dora_cxx_include_dir "${CMAKE_CURRENT_BINARY_DIR}/include/cxx")
  4. set(node_bridge "${CMAKE_CURRENT_BINARY_DIR}/node_bridge.cc")
  5. set(operator_bridge "${CMAKE_CURRENT_BINARY_DIR}/operator_bridge.cc")
  6. if(DORA_ROOT_DIR)
  7. include(ExternalProject)
  8. ExternalProject_Add(Dora
  9. SOURCE_DIR ${DORA_ROOT_DIR}
  10. BUILD_IN_SOURCE True
  11. CONFIGURE_COMMAND ""
  12. BUILD_COMMAND
  13. cargo build
  14. --package dora-node-api-c
  15. &&
  16. cargo build
  17. --package dora-operator-api-c
  18. &&
  19. cargo build
  20. --package dora-node-api-cxx
  21. &&
  22. cargo build
  23. --package dora-operator-api-cxx
  24. INSTALL_COMMAND ""
  25. )
  26. add_custom_command(OUTPUT ${node_bridge} ${dora_cxx_include_dir} ${operator_bridge} ${dora_c_include_dir}
  27. WORKING_DIRECTORY ${DORA_ROOT_DIR}
  28. DEPENDS Dora
  29. COMMAND
  30. mkdir ${dora_cxx_include_dir} -p
  31. &&
  32. mkdir ${CMAKE_CURRENT_BINARY_DIR}/include/c -p
  33. &&
  34. cp target/cxxbridge/dora-node-api-cxx/src/lib.rs.cc ${node_bridge}
  35. &&
  36. cp target/cxxbridge/dora-node-api-cxx/src/lib.rs.h ${dora_cxx_include_dir}/dora-node-api.h
  37. &&
  38. cp target/cxxbridge/dora-operator-api-cxx/src/lib.rs.cc ${operator_bridge}
  39. &&
  40. cp target/cxxbridge/dora-operator-api-cxx/src/lib.rs.h ${dora_cxx_include_dir}/dora-operator-api.h
  41. &&
  42. cp apis/c/node ${CMAKE_CURRENT_BINARY_DIR}/include/c -r
  43. &&
  44. cp apis/c/operator ${CMAKE_CURRENT_BINARY_DIR}/include/c -r
  45. )
  46. add_custom_target(Dora_c DEPENDS ${dora_c_include_dir})
  47. add_custom_target(Dora_cxx DEPENDS ${node_bridge} ${operator_bridge} ${dora_cxx_include_dir})
  48. set(dora_link_dirs ${DORA_ROOT_DIR}/target/debug)
  49. else()
  50. include(ExternalProject)
  51. ExternalProject_Add(Dora
  52. PREFIX ${CMAKE_CURRENT_BINARY_DIR}/dora
  53. GIT_REPOSITORY https://github.com/dora-rs/dora.git
  54. GIT_TAG main
  55. BUILD_IN_SOURCE True
  56. CONFIGURE_COMMAND ""
  57. BUILD_COMMAND
  58. cargo build
  59. --package dora-node-api-c
  60. --target-dir ${CMAKE_CURRENT_BINARY_DIR}/dora/src/Dora/target
  61. &&
  62. cargo build
  63. --package dora-operator-api-c
  64. --target-dir ${CMAKE_CURRENT_BINARY_DIR}/dora/src/Dora/target
  65. &&
  66. cargo build
  67. --package dora-node-api-cxx
  68. --target-dir ${CMAKE_CURRENT_BINARY_DIR}/dora/src/Dora/target
  69. &&
  70. cargo build
  71. --package dora-operator-api-cxx
  72. --target-dir ${CMAKE_CURRENT_BINARY_DIR}/dora/src/Dora/target
  73. INSTALL_COMMAND ""
  74. )
  75. add_custom_command(OUTPUT ${node_bridge} ${dora_cxx_include_dir} ${operator_bridge} ${dora_c_include_dir}
  76. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/dora/src/Dora/target
  77. DEPENDS Dora
  78. COMMAND
  79. mkdir ${CMAKE_CURRENT_BINARY_DIR}/include/c -p
  80. &&
  81. mkdir ${dora_cxx_include_dir} -p
  82. &&
  83. cp cxxbridge/dora-node-api-cxx/src/lib.rs.cc ${node_bridge}
  84. &&
  85. cp cxxbridge/dora-node-api-cxx/src/lib.rs.h ${dora_cxx_include_dir}/dora-node-api.h
  86. &&
  87. cp cxxbridge/dora-operator-api-cxx/src/lib.rs.cc ${operator_bridge}
  88. &&
  89. cp cxxbridge/dora-operator-api-cxx/src/lib.rs.h ${dora_cxx_include_dir}/dora-operator-api.h
  90. &&
  91. cp ../apis/c/node ${CMAKE_CURRENT_BINARY_DIR}/include/c -r
  92. &&
  93. cp ../apis/c/operator ${CMAKE_CURRENT_BINARY_DIR}/include/c -r
  94. )
  95. set(dora_link_dirs ${CMAKE_CURRENT_BINARY_DIR}/dora/src/Dora/target/debug)
  96. add_custom_target(Dora_c DEPENDS ${dora_c_include_dir})
  97. add_custom_target(Dora_cxx DEPENDS ${node_bridge} ${operator_bridge} ${dora_cxx_include_dir})
  98. endif()