Imported Upstream version 1.4.0
[platform/core/ml/nnfw.git] / infra / cmake / packages / NNPACKConfig.cmake
1 function(_NNPACK_Import)
2     nnas_find_package(NNPACKSource QUIET)
3
4     if(NOT NNPACK_SOURCE_FOUND)
5         set(NNPACK_FOUND FALSE PARENT_SCOPE)
6         message(STATUS "NNPACK not found")
7         return()
8     endif(NOT NNPACK_SOURCE_FOUND)
9
10     nnas_find_package(CpuinfoSource REQUIRED)
11     nnas_find_package(FP16Source REQUIRED)
12     nnas_find_package(FXdivSource REQUIRED)
13     nnas_find_package(PSIMDSource REQUIRED)
14     nnas_find_package(PthreadpoolSource REQUIRED)
15     nnas_find_package(SixSource REQUIRED)
16     nnas_find_package(Enum34Source REQUIRED)
17     nnas_find_package(OpcodesSource REQUIRED)
18     nnas_find_package(PeachpySource QUIET)
19
20     if(NOT PYTHON_PEACHPY_SOURCE_FOUND)
21         set(NNPACK_FOUND FALSE PARENT_SCOPE)
22         return()
23     endif(NOT PYTHON_PEACHPY_SOURCE_FOUND)
24
25     # workaround for CI
26     set(THREADS_PTHREAD_ARG "2" CACHE STRING "Forcibly set by CMakeLists.txt." FORCE)
27     if(NOT TARGET nnpack)
28         # Allows us to build nnpack at build time
29         set(NNPACK_BUILD_TESTS OFF CACHE BOOL "")
30         set(NNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
31         set(NNPACK_LIBRARY_TYPE "static" CACHE STRING "")
32         set(PTHREADPOOL_LIBRARY_TYPE "static" CACHE STRING "")
33         set(CPUINFO_LIBRARY_TYPE "static" CACHE STRING "")
34         nnas_include(ExternalProjectTools)
35         add_extdirectory("${NNPACK_SOURCE_DIR}" nnpack EXCLUDE_FROM_ALL)
36         # We build static versions of nnpack and pthreadpool but link
37         # them into a shared library (high-perf-backend), so they need PIC.
38         set_property(TARGET nnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
39         set_property(TARGET pthreadpool PROPERTY POSITION_INDEPENDENT_CODE ON)
40         set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
41     endif()
42
43     set(NNPACK_FOUND TRUE PARENT_SCOPE)
44     set(NNPACK_INCLUDE_DIRS
45             $<TARGET_PROPERTY:nnpack,INCLUDE_DIRECTORIES>
46             $<TARGET_PROPERTY:pthreadpool,INCLUDE_DIRECTORIES> PARENT_SCOPE)
47     set(NNPACK_LIBRARIES $<TARGET_FILE:nnpack> $<TARGET_FILE:cpuinfo> PARENT_SCOPE)
48
49 endfunction(_NNPACK_Import)
50
51 _NNPACK_Import()