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