1 function(_NNPACK_Import)
2 nnas_find_package(NNPACKSource QUIET)
4 if(NOT NNPACK_SOURCE_FOUND)
5 set(NNPACK_FOUND FALSE PARENT_SCOPE)
6 message(STATUS "NNPACK not found")
8 endif(NOT NNPACK_SOURCE_FOUND)
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)
20 if(NOT PYTHON_PEACHPY_SOURCE_FOUND)
21 set(NNPACK_FOUND FALSE PARENT_SCOPE)
23 endif(NOT PYTHON_PEACHPY_SOURCE_FOUND)
26 set(THREADS_PTHREAD_ARG "2" CACHE STRING "Forcibly set by CMakeLists.txt." FORCE)
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)
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)
49 endfunction(_NNPACK_Import)