mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
Summary: Few people complained in NNPACK repo about broken build on PPC64, as it specifically whitelists supported architecture in its CMakeLists.txt, and refuses to build on unsupported platforms. This commit explicitly disables NNPACK build (as part of Caffe2 build) on unsupported architectures. Closes https://github.com/caffe2/caffe2/pull/1439 Differential Revision: D6288999 Pulled By: Maratyszcza fbshipit-source-id: 76c40e9ce882356944b63968df8fd853f21ecd35
92 lines
3.4 KiB
CMake
92 lines
3.4 KiB
CMake
if (__NNPACK_INCLUDED)
|
|
return()
|
|
endif()
|
|
set(__NNPACK_INCLUDED TRUE)
|
|
|
|
if (NOT USE_NNPACK)
|
|
return()
|
|
endif()
|
|
|
|
# try any external nnpack first
|
|
find_package(NNPACK)
|
|
|
|
if (NNPACK_FOUND)
|
|
message(INFO "Found external NNPACK installation.")
|
|
return()
|
|
endif()
|
|
|
|
##############################################################################
|
|
# Custom build rules to build nnpack, if external dependency is not found
|
|
##############################################################################
|
|
|
|
set(NNPACK_PREFIX ${PROJECT_SOURCE_DIR}/third_party/NNPACK)
|
|
|
|
##############################################################################
|
|
# (1) MSVC - unsupported
|
|
##############################################################################
|
|
|
|
if (MSVC)
|
|
message(WARNING "NNPACK not supported on MSVC yet. Turn this warning off by USE_NNPACK=OFF.")
|
|
set(USE_NNPACK OFF)
|
|
return()
|
|
endif()
|
|
|
|
##############################################################################
|
|
# (2) Anything but x86, x86-64, ARM, ARM64 - unsupported
|
|
##############################################################################
|
|
if(CMAKE_SYSTEM_PROCESSOR)
|
|
if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64|armv5te|armv7-a|armv7l|aarch64)$")
|
|
message(WARNING "NNPACK is not supported on ${CMAKE_SYSTEM_PROCESSOR} processors. "
|
|
"The only supported architectures are x86, x86-64, ARM, and ARM64. "
|
|
"Turn this warning off by USE_NNPACK=OFF.")
|
|
set(USE_NNPACK OFF)
|
|
return()
|
|
endif()
|
|
endif()
|
|
|
|
##############################################################################
|
|
# (3) Android, iOS, Linux, macOS - supported
|
|
##############################################################################
|
|
|
|
if (ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
|
message(STATUS "Brace yourself, we are building NNPACK")
|
|
set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
|
|
|
|
# Directory where NNPACK will download and build all dependencies
|
|
set(CONFU_DEPENDENCIES_SOURCE_DIR ${PROJECT_BINARY_DIR}/confu-srcs
|
|
CACHE PATH "Confu-style dependencies source directory")
|
|
set(CONFU_DEPENDENCIES_BINARY_DIR ${PROJECT_BINARY_DIR}/confu-deps
|
|
CACHE PATH "Confu-style dependencies binary directory")
|
|
|
|
if(NOT TARGET nnpack)
|
|
set(NNPACK_BUILD_TESTS OFF CACHE BOOL "")
|
|
set(NNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
|
|
set(NNPACK_LIBRARY_TYPE "static" CACHE STRING "")
|
|
set(PTHREADPOOL_LIBRARY_TYPE "static" CACHE STRING "")
|
|
add_subdirectory(
|
|
"${NNPACK_PREFIX}"
|
|
"${CONFU_DEPENDENCIES_BINARY_DIR}")
|
|
# We build static versions of nnpack and pthreadpool but link
|
|
# them into a shared library for Caffe2, so they need PIC.
|
|
set_property(TARGET nnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
set_property(TARGET pthreadpool PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
endif()
|
|
|
|
set(NNPACK_FOUND TRUE)
|
|
set(NNPACK_INCLUDE_DIRS
|
|
$<TARGET_PROPERTY:nnpack,INCLUDE_DIRECTORIES>
|
|
$<TARGET_PROPERTY:pthreadpool,INCLUDE_DIRECTORIES>)
|
|
set(NNPACK_LIBRARIES
|
|
$<TARGET_FILE:nnpack>
|
|
$<TARGET_FILE:pthreadpool>)
|
|
return()
|
|
endif()
|
|
|
|
##############################################################################
|
|
# (4) Catch-all: not supported.
|
|
##############################################################################
|
|
|
|
message(WARNING "Unknown platform - I don't know how to build NNPACK. "
|
|
"See cmake/External/nnpack.cmake for details.")
|
|
set(USE_NNPACK OFF)
|