mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 12:54:11 +08:00
Summary:
Running commands:
```bash
shopt -s globstar
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i CMakeLists.txt
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i caffe2/**/CMakeLists.txt
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i torch/**/CMakeLists.txt
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i c10/**/CMakeLists.txt
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i cmake/**/*.cmake
sed -e 's/IF (/if(/g' -e 's/IF(/if(/g' -e 's/if (/if(/g' -e 's/ELSE (/else(/g' -e 's/ELSE(/else(/g' -e 's/else (/else(/g' -e 's/ENDif(/endif(/g' -e 's/ELSEif(/elseif(/g' -i cmake/**/*.cmake.in
```
We may further convert all the commands into lowercase according to the following issue: 77543bde41
.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/35521
Differential Revision: D20704382
Pulled By: malfet
fbshipit-source-id: 42186b9b1660c34428ab7ceb8d3f7a0ced5d2e80
95 lines
4.3 KiB
CMake
95 lines
4.3 KiB
CMake
if(__NNPACK_INCLUDED)
|
|
return()
|
|
endif()
|
|
set(__NNPACK_INCLUDED TRUE)
|
|
|
|
if(NOT USE_NNPACK)
|
|
return()
|
|
endif()
|
|
|
|
##############################################################################
|
|
# NNPACK is built together with Caffe2
|
|
# By default, it builds code from third-party/NNPACK submodule.
|
|
# Define NNPACK_SOURCE_DIR to build with a different version.
|
|
##############################################################################
|
|
|
|
##############################################################################
|
|
# (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)
|
|
|
|
# Directories for NNPACK dependencies submoduled in Caffe2
|
|
set(PYTHON_SIX_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/python-six" CACHE STRING "six (Python package) source directory")
|
|
set(PYTHON_ENUM_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/python-enum" CACHE STRING "enum34 (Python package) source directory")
|
|
set(PYTHON_PEACHPY_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/python-peachpy" CACHE STRING "PeachPy (Python package) source directory")
|
|
if(NOT DEFINED CPUINFO_SOURCE_DIR)
|
|
set(CPUINFO_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/cpuinfo" CACHE STRING "cpuinfo source directory")
|
|
endif()
|
|
set(NNPACK_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/NNPACK" CACHE STRING "NNPACK source directory")
|
|
set(FP16_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/FP16" CACHE STRING "FP16 source directory")
|
|
set(FXDIV_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/FXdiv" CACHE STRING "FXdiv source directory")
|
|
set(PSIMD_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/psimd" CACHE STRING "PSimd source directory")
|
|
set(PTHREADPOOL_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/pthreadpool" CACHE STRING "pthreadpool source directory")
|
|
set(GOOGLETEST_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/googletest" CACHE STRING "Google Test source directory")
|
|
|
|
if(NOT TARGET nnpack)
|
|
set(NNPACK_BUILD_TESTS OFF CACHE BOOL "")
|
|
set(NNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
|
|
set(NNPACK_CUSTOM_THREADPOOL ON CACHE BOOL "")
|
|
set(NNPACK_LIBRARY_TYPE "static" CACHE STRING "")
|
|
set(PTHREADPOOL_LIBRARY_TYPE "static" CACHE STRING "")
|
|
set(CPUINFO_LIBRARY_TYPE "static" CACHE STRING "")
|
|
add_subdirectory(
|
|
"${NNPACK_SOURCE_DIR}"
|
|
"${CONFU_DEPENDENCIES_BINARY_DIR}/NNPACK")
|
|
# 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)
|
|
set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
endif()
|
|
|
|
set(NNPACK_FOUND TRUE)
|
|
if(TARGET nnpack)
|
|
set(NNPACK_INCLUDE_DIRS
|
|
$<TARGET_PROPERTY:nnpack,INCLUDE_DIRECTORIES>
|
|
$<TARGET_PROPERTY:pthreadpool,INCLUDE_DIRECTORIES>)
|
|
set(NNPACK_LIBRARIES $<TARGET_OBJECTS:nnpack> $<TARGET_OBJECTS:cpuinfo>)
|
|
endif()
|
|
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)
|