wasi_nn.cmake 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
  4. #
  5. # wasi-nn general
  6. set(WASI_NN_ROOT ${CMAKE_CURRENT_LIST_DIR}/..)
  7. set(WASI_NN_SOURCES
  8. ${WASI_NN_ROOT}/src/wasi_nn.c
  9. ${WASI_NN_ROOT}/src/utils/wasi_nn_app_native.c
  10. )
  11. include_directories(${WASI_NN_ROOT}/include)
  12. add_compile_definitions(
  13. $<$<CONFIG:Debug>:NN_LOG_LEVEL=0>
  14. $<$<CONFIG:Release>:NN_LOG_LEVEL=2>
  15. )
  16. #
  17. # wasi-nn backends
  18. #
  19. # - tflite
  20. if(WAMR_BUILD_WASI_NN_TFLITE EQUAL 1)
  21. find_package(tensorflow_lite REQUIRED)
  22. enable_language(CXX)
  23. add_library(
  24. wasi_nn_tflite
  25. SHARED
  26. ${WASI_NN_ROOT}/src/wasi_nn_tensorflowlite.cpp
  27. )
  28. target_include_directories(
  29. wasi_nn_tflite
  30. PUBLIC
  31. ${tensorflow_lite_SOURCE_DIR}
  32. )
  33. target_link_libraries(
  34. wasi_nn_tflite
  35. PUBLIC
  36. vmlib
  37. tensorflow-lite
  38. )
  39. install(TARGETS wasi_nn_tflite DESTINATION lib)
  40. endif()
  41. # - openvino
  42. if(WAMR_BUILD_WASI_NN_OPENVINO EQUAL 1)
  43. if(NOT DEFINED ENV{OpenVINO_DIR})
  44. message(FATAL_ERROR
  45. "OpenVINO_DIR is not defined. "
  46. "Please follow https://docs.openvino.ai/2024/get-started/install-openvino.html,"
  47. "install openvino, and set environment variable OpenVINO_DIR."
  48. "Like OpenVINO_DIR=/usr/lib/openvino-2023.2/ cmake ..."
  49. "Or OpenVINO_DIR=/opt/intel/openvino/ cmake ..."
  50. )
  51. endif()
  52. list(APPEND CMAKE_MODULE_PATH $ENV{OpenVINO_DIR})
  53. # Find OpenVINO
  54. find_package(OpenVINO REQUIRED COMPONENTS Runtime)
  55. add_library(
  56. wasi_nn_openvino
  57. SHARED
  58. ${WASI_NN_ROOT}/src/wasi_nn_openvino.c
  59. )
  60. target_link_libraries(
  61. wasi_nn_openvino
  62. PUBLIC
  63. vmlib
  64. openvino::runtime
  65. openvino::runtime::c
  66. )
  67. install(TARGETS wasi_nn_openvino DESTINATION lib)
  68. endif()
  69. # - llamacpp
  70. if(WAMR_BUILD_WASI_NN_LLAMACPP EQUAL 1)
  71. find_package(cjson REQUIRED)
  72. find_package(llamacpp REQUIRED)
  73. add_library(
  74. wasi_nn_llamacpp
  75. SHARED
  76. ${WASI_NN_ROOT}/src/wasi_nn_llamacpp.c
  77. )
  78. target_include_directories(
  79. wasi_nn_llamacpp
  80. PUBLIC
  81. ${cjson_SOURCE_DIR}
  82. )
  83. target_link_libraries(
  84. wasi_nn_llamacpp
  85. PUBLIC
  86. vmlib
  87. cjson
  88. common
  89. ggml
  90. llama
  91. )
  92. install(TARGETS wasi_nn_llamacpp DESTINATION lib)
  93. endif()
  94. # - onnx
  95. if(WAMR_BUILD_WASI_NN_ONNX EQUAL 1)
  96. find_package(onnxruntime REQUIRED)
  97. enable_language(CXX)
  98. add_library(
  99. wasi_nn_onnx
  100. SHARED
  101. ${WASI_NN_ROOT}/src/wasi_nn_onnx.cpp
  102. )
  103. target_link_libraries(
  104. wasi_nn_onnx
  105. PUBLIC
  106. vmlib
  107. onnxruntime::onnxruntime
  108. )
  109. install(TARGETS wasi_nn_onnx DESTINATION lib)
  110. endif()