xref: /aosp_15_r20/external/executorch/backends/xnnpack/cmake/Dependencies.cmake (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
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