Skip to content

Commit fe00174

Browse files
committed
Improve pip package build (#5965)
Summary: Addressing comments in #5961. * Separate out `executorch-wheel-config.cmake` from `executorch-config.cmake`. * Hardcode the envrionment variable `SETUPTOOLS_EXT_SUFFIX` in `setup.py`. Pull Request resolved: #5965 Reviewed By: dbort Differential Revision: D64017947 Pulled By: larryliu0820 fbshipit-source-id: 0bdff5e2d2ec5873540d1b701595c7a316e84e80
1 parent 26c59fb commit fe00174

File tree

5 files changed

+48
-11
lines changed

5 files changed

+48
-11
lines changed

build/executorch-config.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
# Copyright (c) Meta Platforms, Inc. and affiliates.
23
# All rights reserved.
34
#

build/executorch-wheel-config.cmake

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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+
# Config defining how CMake should find ExecuTorch package. CMake will search
8+
# for this file and find ExecuTorch package if it is installed. Typical usage
9+
# is:
10+
#
11+
# find_package(executorch REQUIRED)
12+
# -------
13+
#
14+
# Finds the ExecuTorch library
15+
#
16+
# This will define the following variables:
17+
#
18+
# EXECUTORCH_FOUND -- True if the system has the ExecuTorch library
19+
# EXECUTORCH_INCLUDE_DIRS -- The include directories for ExecuTorch
20+
# EXECUTORCH_LIBRARIES -- Libraries to link against
21+
#
22+
cmake_minimum_required(VERSION 3.19)
23+
24+
# Find prebuilt _portable_lib.so. This file should be installed under
25+
# <site-packages>/executorch/share/cmake
26+
find_library(_portable_lib_LIBRARY _portable_lib.so PATHS "${CMAKE_CURRENT_LIST_DIR}/../../extension/pybindings/")
27+
set(EXECUTORCH_LIBRARIES)
28+
set(EXECUTORCH_FOUND OFF)
29+
if(_portable_lib_LIBRARY)
30+
set(EXECUTORCH_FOUND ON)
31+
message(STATUS "ExecuTorch portable library is found at ${_portable_lib_LIBRARY}")
32+
list(APPEND EXECUTORCH_LIBRARIES _portable_lib)
33+
add_library(_portable_lib STATIC IMPORTED)
34+
set(EXECUTORCH_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/include)
35+
set_target_properties(_portable_lib PROPERTIES
36+
IMPORTED_LOCATION "${_portable_lib_LIBRARY}"
37+
INTERFACE_INCLUDE_DIRECTORIES "${EXECUTORCH_INCLUDE_DIRS}"
38+
CXX_STANDARD 17
39+
)
40+
endif()

build/packaging/env_var_script_linux.sh

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@
1111
# Enable pybindings so that users can execute ExecuTorch programs from python.
1212
export EXECUTORCH_BUILD_PYBIND=1
1313

14-
# Override extension suffix to be ".so", skipping package info such as
15-
# "cpython-311-x86_64-linux-gnu"
16-
export SETUPTOOLS_EXT_SUFFIX=".so"
17-
1814
# Ensure that CMAKE_ARGS is defined before referencing it. Defaults to empty
1915
# if not defined.
2016
export CMAKE_ARGS="${CMAKE_ARGS:-}"

build/packaging/env_var_script_m1.sh

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@
1111
# Enable pybindings so that users can execute ExecuTorch programs from python.
1212
export EXECUTORCH_BUILD_PYBIND=1
1313

14-
# Override extension suffix to be ".so", skipping package info such as
15-
# "cpython-311-darwin"
16-
export SETUPTOOLS_EXT_SUFFIX=".so"
17-
1814
# Ensure that CMAKE_ARGS is defined before referencing it. Defaults to empty
1915
# if not defined.
2016
export CMAKE_ARGS="${CMAKE_ARGS:-}"

setup.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -423,10 +423,10 @@ def run(self):
423423
"devtools/bundled_program/schema/scalar_type.fbs",
424424
"devtools/bundled_program/serialize/scalar_type.fbs",
425425
),
426-
# Install executorch-config.cmake to the root of the package.
426+
# Install executorch-wheel-config.cmake to pip package.
427427
(
428-
"build/executorch-config.cmake",
429-
"executorch-config.cmake",
428+
"build/executorch-wheel-config.cmake",
429+
"share/cmake/executorch-config.cmake",
430430
),
431431
]
432432
for src, dst in src_to_dst:
@@ -668,6 +668,10 @@ def get_ext_modules() -> List[Extension]:
668668
return ext_modules
669669

670670

671+
# Override extension suffix to be ".so", skipping package info such as
672+
# "cpython-311-darwin"
673+
os.environ["SETUPTOOLS_EXT_SUFFIX"] = ".so"
674+
671675
setup(
672676
version=Version.string(),
673677
# TODO(dbort): Could use py_modules to restrict the set of modules we

0 commit comments

Comments
 (0)