c373b9641e711a28ac23b10df8108c65771ac656
[platform/core/ml/nnfw.git] / onert-micro / luci-interpreter / pal / linux / pal.cmake
1 macro(initialize_pal)
2     nnas_find_package(TensorFlowSource EXACT 2.6.0 QUIET)
3     nnas_find_package(TensorFlowGEMMLowpSource EXACT 2.6.0 QUIET)
4     nnas_find_package(TensorFlowEigenSource EXACT 2.6.0 QUIET)
5     nnas_find_package(TensorFlowRuySource EXACT 2.6.0 QUIET)
6
7     if (NOT TensorFlowSource_FOUND)
8         message(STATUS "Skipping luci-interpreter: TensorFlow not found")
9         return()
10     endif ()
11
12     if (NOT TensorFlowGEMMLowpSource_FOUND)
13         message(STATUS "Skipping luci-interpreter: gemmlowp not found")
14         return()
15     endif ()
16
17     if (NOT TensorFlowEigenSource_FOUND)
18         message(STATUS "Skipping luci-interpreter: Eigen not found")
19         return()
20     endif ()
21
22     if (NOT TensorFlowRuySource_FOUND)
23         message(STATUS "Skipping luci-interpreter: Ruy not found")
24         return()
25     endif ()
26
27     find_package(Threads REQUIRED)
28
29     set(PAL_INITIALIZED TRUE)
30 endmacro()
31
32 macro(add_pal_to_target TGT)
33     target_include_directories(${TGT} PRIVATE "${PAL}")
34     target_include_directories(${TGT} SYSTEM PRIVATE
35             "${TensorFlowRuySource_DIR}"
36             "${TensorFlowGEMMLowpSource_DIR}"
37             "${TensorFlowEigenSource_DIR}"
38             "${TensorFlowSource_DIR}")
39     target_include_directories(${TGT} PRIVATE ${LUCI_INTERPRETER_PAL_DIR})
40
41     # TODO put it back, I changed my mind.
42     # instead add sources with visitors in this library
43     set(PAL_SOURCES ${TensorFlowSource_DIR}/tensorflow/lite/kernels/internal/tensor_utils.cc
44             ${TensorFlowSource_DIR}/tensorflow/lite/kernels/internal/reference/portable_tensor_utils.cc
45             ${TensorFlowSource_DIR}/tensorflow/lite/kernels/internal/quantization_util.cc)
46
47     if(BUILD_ARM32_NEON)
48         # NOTE may need to revise this list for version upgrade
49         set(PAL_SOURCES ${PAL_SOURCES}
50                 ${TensorFlowSource_DIR}/tensorflow/lite/kernels/internal/optimized/neon_tensor_utils.cc
51                 ${TensorFlowSource_DIR}/tensorflow/lite/kernels/internal/optimized/cpu_check.cc
52                 ${TensorFlowRuySource_DIR}/ruy/allocator.cc
53                 ${TensorFlowRuySource_DIR}/ruy/block_map.cc
54                 ${TensorFlowRuySource_DIR}/ruy/blocking_counter.cc
55                 ${TensorFlowRuySource_DIR}/ruy/context_get_ctx.cc
56                 ${TensorFlowRuySource_DIR}/ruy/cpuinfo.cc
57                 ${TensorFlowRuySource_DIR}/ruy/ctx.cc
58                 ${TensorFlowRuySource_DIR}/ruy/denormal.cc
59                 ${TensorFlowRuySource_DIR}/ruy/frontend.cc
60                 ${TensorFlowRuySource_DIR}/ruy/pack_arm.cc
61                 ${TensorFlowRuySource_DIR}/ruy/prepacked_cache.cc
62                 ${TensorFlowRuySource_DIR}/ruy/prepare_packed_matrices.cc
63                 ${TensorFlowRuySource_DIR}/ruy/system_aligned_alloc.cc
64                 ${TensorFlowRuySource_DIR}/ruy/thread_pool.cc
65                 ${TensorFlowRuySource_DIR}/ruy/trmul.cc
66                 ${TensorFlowRuySource_DIR}/ruy/tune.cc
67                 ${TensorFlowRuySource_DIR}/ruy/wait.cc
68                 ${TensorFlowRuySource_DIR}/ruy/kernel_arm32.cc
69                 )
70     endif(BUILD_ARM32_NEON)
71
72     add_library(luci_interpreter_linux_pal_micro STATIC ${PAL_SOURCES})
73     set_target_properties(luci_interpreter_linux_pal_micro PROPERTIES POSITION_INDEPENDENT_CODE ON)
74     target_include_directories(luci_interpreter_linux_pal_micro SYSTEM PRIVATE
75             "${TensorFlowRuySource_DIR}"
76             "${TensorFlowGEMMLowpSource_DIR}"
77             "${TensorFlowEigenSource_DIR}"
78             "${TensorFlowSource_DIR}"
79     )
80
81     target_link_libraries(${TGT} PRIVATE Threads::Threads luci_interpreter_linux_pal_micro)
82 endmacro()