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