1# Copyright (c) Meta Platforms, Inc. and affiliates. 2# All rights reserved. 3# 4# This source code is licensed under the BSD-style license found in the 5# LICENSE file in the root directory of this source tree. 6 7# The logic is copied from 8# https://github.com/pytorch/pytorch/blob/main/cmake/Dependencies.cmake 9set(THIRD_PARTY_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/third-party") 10 11# --- XNNPACK 12 13# Setting this global PIC flag for all XNNPACK targets. This is needed for 14# Object libraries within XNNPACK which must be PIC to successfully link this 15# static libXNNPACK 16set(ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG 17 ${CMAKE_POSITION_INDEPENDENT_CODE} 18) 19set(CMAKE_POSITION_INDEPENDENT_CODE ON) 20 21set(XNNPACK_SOURCE_DIR "${THIRD_PARTY_ROOT}/XNNPACK") 22set(XNNPACK_INCLUDE_DIR "${XNNPACK_SOURCE_DIR}/include") 23set(XNNPACK_LIBRARY_TYPE 24 "static" 25 CACHE STRING "" 26) 27set(XNNPACK_BUILD_BENCHMARKS 28 OFF 29 CACHE BOOL "" 30) 31set(XNNPACK_BUILD_TESTS 32 OFF 33 CACHE BOOL "" 34) 35set(XNNPACK_ENABLE_AVXVNNI 36 OFF 37 CACHE BOOL "" 38) 39 40if(EXECUTORCH_XNNPACK_ENABLE_KLEIDI) 41 set(XNNPACK_ENABLE_KLEIDIAI 42 ON 43 CACHE BOOL "" 44 ) 45else() 46 set(XNNPACK_ENABLE_KLEIDIAI 47 OFF 48 CACHE BOOL "" 49 ) 50endif() 51 52 53set(XNNPACK_BUILD_ALL_MICROKERNELS 54 OFF 55 CACHE BOOL "" 56) 57add_subdirectory("${XNNPACK_SOURCE_DIR}") 58include_directories(SYSTEM ${XNNPACK_INCLUDE_DIR}) 59list(APPEND xnnpack_third_party XNNPACK) 60install(TARGETS microkernels-prod 61 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 62 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 63 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) 64 65 66if(EXECUTORCH_XNNPACK_ENABLE_KLEIDI) 67 install(TARGETS kleidiai 68 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 69 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 70 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) 71endif() 72 73# Revert PIC Flag to what it originally was 74set(CMAKE_POSITION_INDEPENDENT_CODE 75 ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG} 76) 77