xref: /aosp_15_r20/external/executorch/build/executorch-config.cmake (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker
2*523fa7a6SAndroid Build Coastguard Worker# Copyright (c) Meta Platforms, Inc. and affiliates.
3*523fa7a6SAndroid Build Coastguard Worker# All rights reserved.
4*523fa7a6SAndroid Build Coastguard Worker#
5*523fa7a6SAndroid Build Coastguard Worker# This source code is licensed under the BSD-style license found in the
6*523fa7a6SAndroid Build Coastguard Worker# LICENSE file in the root directory of this source tree.
7*523fa7a6SAndroid Build Coastguard Worker
8*523fa7a6SAndroid Build Coastguard Worker# Config defining how CMake should find ExecuTorch package. CMake will search
9*523fa7a6SAndroid Build Coastguard Worker# for this file and find ExecuTorch package if it is installed. Typical usage
10*523fa7a6SAndroid Build Coastguard Worker# is:
11*523fa7a6SAndroid Build Coastguard Worker#
12*523fa7a6SAndroid Build Coastguard Worker# find_package(executorch REQUIRED)
13*523fa7a6SAndroid Build Coastguard Worker# -------
14*523fa7a6SAndroid Build Coastguard Worker#
15*523fa7a6SAndroid Build Coastguard Worker# Finds the ExecuTorch library
16*523fa7a6SAndroid Build Coastguard Worker#
17*523fa7a6SAndroid Build Coastguard Worker# This will define the following variables:
18*523fa7a6SAndroid Build Coastguard Worker#
19*523fa7a6SAndroid Build Coastguard Worker#   EXECUTORCH_FOUND        -- True if the system has the ExecuTorch library
20*523fa7a6SAndroid Build Coastguard Worker#   EXECUTORCH_INCLUDE_DIRS -- The include directories for ExecuTorch
21*523fa7a6SAndroid Build Coastguard Worker#   EXECUTORCH_LIBRARIES    -- Libraries to link against
22*523fa7a6SAndroid Build Coastguard Worker#
23*523fa7a6SAndroid Build Coastguard Worker# The actual values for these variables will be different from what executorch-config.cmake
24*523fa7a6SAndroid Build Coastguard Worker# in executorch pip package gives, but we wanted to keep the contract of exposing these
25*523fa7a6SAndroid Build Coastguard Worker# CMake variables.
26*523fa7a6SAndroid Build Coastguard Worker
27*523fa7a6SAndroid Build Coastguard Workercmake_minimum_required(VERSION 3.19)
28*523fa7a6SAndroid Build Coastguard Worker
29*523fa7a6SAndroid Build Coastguard Workerset(_root "${CMAKE_CURRENT_LIST_DIR}/../..")
30*523fa7a6SAndroid Build Coastguard Workerset(required_lib_list executorch executorch_core portable_kernels)
31*523fa7a6SAndroid Build Coastguard Workerset(EXECUTORCH_LIBRARIES)
32*523fa7a6SAndroid Build Coastguard Workerset(EXECUTORCH_INCLUDE_DIRS ${_root})
33*523fa7a6SAndroid Build Coastguard Workerforeach(lib ${required_lib_list})
34*523fa7a6SAndroid Build Coastguard Worker  set(lib_var "LIB_${lib}")
35*523fa7a6SAndroid Build Coastguard Worker  add_library(${lib} STATIC IMPORTED)
36*523fa7a6SAndroid Build Coastguard Worker  find_library(
37*523fa7a6SAndroid Build Coastguard Worker    ${lib_var} ${lib}
38*523fa7a6SAndroid Build Coastguard Worker    HINTS "${_root}"
39*523fa7a6SAndroid Build Coastguard Worker    CMAKE_FIND_ROOT_PATH_BOTH
40*523fa7a6SAndroid Build Coastguard Worker  )
41*523fa7a6SAndroid Build Coastguard Worker  set_target_properties(${lib} PROPERTIES IMPORTED_LOCATION "${${lib_var}}")
42*523fa7a6SAndroid Build Coastguard Worker  target_include_directories(${lib} INTERFACE ${_root})
43*523fa7a6SAndroid Build Coastguard Worker  list(APPEND EXECUTORCH_LIBRARIES ${lib})
44*523fa7a6SAndroid Build Coastguard Workerendforeach()
45*523fa7a6SAndroid Build Coastguard Worker
46*523fa7a6SAndroid Build Coastguard Worker# If we reach here, ET required libraries are found.
47*523fa7a6SAndroid Build Coastguard Workerset(EXECUTORCH_FOUND ON)
48*523fa7a6SAndroid Build Coastguard Worker
49*523fa7a6SAndroid Build Coastguard Workertarget_link_libraries(executorch INTERFACE executorch_core)
50*523fa7a6SAndroid Build Coastguard Worker
51*523fa7a6SAndroid Build Coastguard Workerif(CMAKE_BUILD_TYPE MATCHES "Debug")
52*523fa7a6SAndroid Build Coastguard Worker  set(FLATCCRT_LIB flatccrt_d)
53*523fa7a6SAndroid Build Coastguard Workerelse()
54*523fa7a6SAndroid Build Coastguard Worker  set(FLATCCRT_LIB flatccrt)
55*523fa7a6SAndroid Build Coastguard Workerendif()
56*523fa7a6SAndroid Build Coastguard Worker
57*523fa7a6SAndroid Build Coastguard Workerset(lib_list
58*523fa7a6SAndroid Build Coastguard Worker    etdump
59*523fa7a6SAndroid Build Coastguard Worker    bundled_program
60*523fa7a6SAndroid Build Coastguard Worker    extension_data_loader
61*523fa7a6SAndroid Build Coastguard Worker    ${FLATCCRT_LIB}
62*523fa7a6SAndroid Build Coastguard Worker    coremldelegate
63*523fa7a6SAndroid Build Coastguard Worker    mpsdelegate
64*523fa7a6SAndroid Build Coastguard Worker    neuron_backend
65*523fa7a6SAndroid Build Coastguard Worker    qnn_executorch_backend
66*523fa7a6SAndroid Build Coastguard Worker    portable_ops_lib
67*523fa7a6SAndroid Build Coastguard Worker    extension_module
68*523fa7a6SAndroid Build Coastguard Worker    extension_module_static
69*523fa7a6SAndroid Build Coastguard Worker    extension_runner_util
70*523fa7a6SAndroid Build Coastguard Worker    extension_tensor
71*523fa7a6SAndroid Build Coastguard Worker    extension_threadpool
72*523fa7a6SAndroid Build Coastguard Worker    extension_training
73*523fa7a6SAndroid Build Coastguard Worker    xnnpack_backend
74*523fa7a6SAndroid Build Coastguard Worker    # Start XNNPACK Lib Deps
75*523fa7a6SAndroid Build Coastguard Worker    XNNPACK
76*523fa7a6SAndroid Build Coastguard Worker    microkernels-prod
77*523fa7a6SAndroid Build Coastguard Worker    kleidiai
78*523fa7a6SAndroid Build Coastguard Worker    # End XNNPACK Lib Deps
79*523fa7a6SAndroid Build Coastguard Worker    cpuinfo
80*523fa7a6SAndroid Build Coastguard Worker    pthreadpool
81*523fa7a6SAndroid Build Coastguard Worker    vulkan_backend
82*523fa7a6SAndroid Build Coastguard Worker    optimized_kernels
83*523fa7a6SAndroid Build Coastguard Worker    cpublas
84*523fa7a6SAndroid Build Coastguard Worker    eigen_blas
85*523fa7a6SAndroid Build Coastguard Worker    optimized_ops_lib
86*523fa7a6SAndroid Build Coastguard Worker    optimized_native_cpu_ops_lib
87*523fa7a6SAndroid Build Coastguard Worker    quantized_kernels
88*523fa7a6SAndroid Build Coastguard Worker    quantized_ops_lib
89*523fa7a6SAndroid Build Coastguard Worker    quantized_ops_aot_lib
90*523fa7a6SAndroid Build Coastguard Worker)
91*523fa7a6SAndroid Build Coastguard Workerforeach(lib ${lib_list})
92*523fa7a6SAndroid Build Coastguard Worker  # Name of the variable which stores result of the find_library search
93*523fa7a6SAndroid Build Coastguard Worker  set(lib_var "LIB_${lib}")
94*523fa7a6SAndroid Build Coastguard Worker  find_library(
95*523fa7a6SAndroid Build Coastguard Worker    ${lib_var} ${lib}
96*523fa7a6SAndroid Build Coastguard Worker    HINTS "${_root}"
97*523fa7a6SAndroid Build Coastguard Worker    CMAKE_FIND_ROOT_PATH_BOTH
98*523fa7a6SAndroid Build Coastguard Worker  )
99*523fa7a6SAndroid Build Coastguard Worker  if(NOT ${lib_var})
100*523fa7a6SAndroid Build Coastguard Worker    message("${lib} library is not found.
101*523fa7a6SAndroid Build Coastguard Worker            If needed rebuild with the proper options in CMakeLists.txt"
102*523fa7a6SAndroid Build Coastguard Worker    )
103*523fa7a6SAndroid Build Coastguard Worker  else()
104*523fa7a6SAndroid Build Coastguard Worker    if("${lib}" STREQUAL "extension_module" AND (NOT CMAKE_TOOLCHAIN_IOS))
105*523fa7a6SAndroid Build Coastguard Worker      add_library(${lib} SHARED IMPORTED)
106*523fa7a6SAndroid Build Coastguard Worker    else()
107*523fa7a6SAndroid Build Coastguard Worker      # Building a share library on iOS requires code signing, so it's easier to
108*523fa7a6SAndroid Build Coastguard Worker      # keep all libs as static when CMAKE_TOOLCHAIN_IOS is used
109*523fa7a6SAndroid Build Coastguard Worker      add_library(${lib} STATIC IMPORTED)
110*523fa7a6SAndroid Build Coastguard Worker    endif()
111*523fa7a6SAndroid Build Coastguard Worker    set_target_properties(${lib} PROPERTIES IMPORTED_LOCATION "${${lib_var}}")
112*523fa7a6SAndroid Build Coastguard Worker    target_include_directories(${lib} INTERFACE ${_root})
113*523fa7a6SAndroid Build Coastguard Worker    list(APPEND EXECUTORCH_LIBRARIES ${lib})
114*523fa7a6SAndroid Build Coastguard Worker  endif()
115*523fa7a6SAndroid Build Coastguard Workerendforeach()
116