# Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. # Config defining how CMake should find ExecuTorch package. CMake will search # for this file and find ExecuTorch package if it is installed. Typical usage # is: # # find_package(executorch REQUIRED) # ------- # # Finds the ExecuTorch library # # This will define the following variables: # # EXECUTORCH_FOUND -- True if the system has the ExecuTorch library # EXECUTORCH_INCLUDE_DIRS -- The include directories for ExecuTorch # EXECUTORCH_LIBRARIES -- Libraries to link against # cmake_minimum_required(VERSION 3.19) # Find prebuilt _portable_lib..so. This file should be installed under # /executorch/share/cmake # Find python if(DEFINED ENV{CONDA_DEFAULT_ENV} AND NOT $ENV{CONDA_DEFAULT_ENV} STREQUAL "base") set(PYTHON_EXECUTABLE python ) else() set(PYTHON_EXECUTABLE python3 ) endif() # Get the Python version and platform information execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" OUTPUT_VARIABLE EXT_SUFFIX RESULT_VARIABLE SYSCONFIG_RESULT ERROR_VARIABLE SYSCONFIG_ERROR OUTPUT_STRIP_TRAILING_WHITESPACE ) if(SYSCONFIG_RESULT EQUAL 0) message(STATUS "Sysconfig extension suffix: ${EXT_SUFFIX}") else() message(FATAL_ERROR "Failed to retrieve sysconfig config var EXT_SUFFIX: ${SYSCONFIG_ERROR}") endif() find_library( _portable_lib_LIBRARY NAMES _portable_lib${EXT_SUFFIX} PATHS "${CMAKE_CURRENT_LIST_DIR}/../../extension/pybindings/" ) set(EXECUTORCH_LIBRARIES) set(EXECUTORCH_FOUND OFF) if(_portable_lib_LIBRARY) set(EXECUTORCH_FOUND ON) message(STATUS "ExecuTorch portable library is found at ${_portable_lib_LIBRARY}") list(APPEND EXECUTORCH_LIBRARIES _portable_lib) add_library(_portable_lib STATIC IMPORTED) set(EXECUTORCH_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../include) set_target_properties(_portable_lib PROPERTIES IMPORTED_LOCATION "${_portable_lib_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${EXECUTORCH_INCLUDE_DIRS}" CXX_STANDARD 17 ) endif()