@@ -175,8 +175,9 @@ option(EXECUTORCH_BUILD_VULKAN "Build the Vulkan backend" OFF)
175175#
176176# pthreadpool: build pthreadpool library. Disable on unsupported platforms
177177#
178- cmake_dependent_option(EXECUTORCH_BUILD_PTHREADPOOL "Build pthreadpool library."
179- ON "NOT EXECUTORCH_BUILD_ARM_BAREMETAL" OFF )
178+ cmake_dependent_option(
179+ EXECUTORCH_BUILD_PTHREADPOOL "Build pthreadpool library." ON
180+ "NOT EXECUTORCH_BUILD_ARM_BAREMETAL" OFF )
180181
181182#
182183# cpuinfo: build cpuinfo library. Disable on unsupported platforms
@@ -186,6 +187,9 @@ cmake_dependent_option(EXECUTORCH_BUILD_CPUINFO "Build cpuinfo library." ON
186187
187188if (EXECUTORCH_BUILD_CPUINFO)
188189 # --- cpuinfo
190+ set (ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG
191+ ${CMAKE_POSITION_INDEPENDENT_CODE} )
192+ set (CMAKE_POSITION_INDEPENDENT_CODE ON )
189193 set (CPUINFO_SOURCE_DIR "backends/xnnpack/third-party/cpuinfo" )
190194 set (CPUINFO_BUILD_TOOLS
191195 OFF
@@ -207,10 +211,15 @@ if(EXECUTORCH_BUILD_CPUINFO)
207211 CACHE STRING "" )
208212 set (CLOG_SOURCE_DIR "${CPUINFO_SOURCE_DIR} /deps/clog" )
209213 add_subdirectory ("${CPUINFO_SOURCE_DIR} " )
214+ set (CMAKE_POSITION_INDEPENDENT_CODE
215+ ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG} )
210216endif ()
211217
212218if (EXECUTORCH_BUILD_PTHREADPOOL)
213219 # --- pthreadpool
220+ set (ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG
221+ ${CMAKE_POSITION_INDEPENDENT_CODE} )
222+ set (CMAKE_POSITION_INDEPENDENT_CODE ON )
214223 set (PTHREADPOOL_SOURCE_DIR "backends/xnnpack/third-party/pthreadpool" )
215224 set (PTHREADPOOL_BUILD_TESTS
216225 OFF
@@ -230,6 +239,8 @@ if(EXECUTORCH_BUILD_PTHREADPOOL)
230239 CACHE STRING "" )
231240 endif ()
232241 add_subdirectory ("${PTHREADPOOL_SOURCE_DIR} " )
242+ set (CMAKE_POSITION_INDEPENDENT_CODE
243+ ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG} )
233244endif ()
234245
235246if (NOT PYTHON_EXECUTABLE)
@@ -504,25 +515,38 @@ if(EXECUTORCH_BUILD_PYBIND)
504515 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /sdk)
505516 endif ()
506517
518+ # find pytorch lib, to allow pybind to take at::Tensor as input/output
519+ find_package (Torch CONFIG REQUIRED)
520+ find_library (TORCH_PYTHON_LIBRARY torch_python
521+ PATHS "${TORCH_INSTALL_PREFIX} /lib" )
522+
523+ set (_dep_libs
524+ ${TORCH_PYTHON_LIBRARY}
525+ bundled_program
526+ etdump
527+ executorch
528+ extension_data_loader
529+ portable_ops_lib
530+ util
531+ torch)
532+
507533 if (EXECUTORCH_BUILD_COREML)
508- set (PYBIND_LINK_COREML " coremldelegate" )
534+ list ( APPEND _dep_libs coremldelegate)
509535 endif ()
510536
511537 if (EXECUTORCH_BUILD_MPS)
512- set (PYBIND_LINK_MPS " mpsdelegate" )
538+ list ( APPEND _dep_libs mpsdelegate)
513539 endif ()
514540
515541 if (EXECUTORCH_BUILD_XNNPACK)
516- # need to explicitly specify XNNPACK here
517- # otherwise uses XNNPACK symbols from libtorch_cpu
518- set (PYBIND_LINK_XNNPACK xnnpack_backend XNNPACK)
542+ # need to explicitly specify XNNPACK here otherwise uses XNNPACK symbols
543+ # from libtorch_cpu
544+ list ( APPEND _dep_libs xnnpack_backend XNNPACK)
519545 endif ()
520546
521- # find pytorch lib, to allow pybind to take at::Tensor as input/output
522- find_package (Torch CONFIG REQUIRED)
523- find_library (TORCH_PYTHON_LIBRARY torch_python
524- PATHS "${TORCH_INSTALL_PREFIX} /lib" )
525-
547+ if (EXECUTORCH_BUILD_CUSTOM)
548+ list (APPEND _dep_libs custom_ops custom_ops_aot_lib)
549+ endif ()
526550 # compile options for pybind
527551
528552 set (_pybind_compile_options -Wno-deprecated-declarations -fPIC -frtti
@@ -544,19 +568,7 @@ if(EXECUTORCH_BUILD_PYBIND)
544568 PUBLIC EXECUTORCH_PYTHON_MODULE_NAME=portable_lib)
545569 target_include_directories (portable_lib PRIVATE ${TORCH_INCLUDE_DIRS} )
546570 target_compile_options (portable_lib PUBLIC ${_pybind_compile_options} )
547- target_link_libraries (
548- portable_lib
549- PUBLIC ${TORCH_PYTHON_LIBRARY}
550- bundled_program
551- etdump
552- executorch
553- extension_data_loader
554- portable_ops_lib
555- util
556- torch
557- ${PYBIND_LINK_COREML}
558- ${PYBIND_LINK_MPS}
559- ${PYBIND_LINK_XNNPACK} )
571+ target_link_libraries (portable_lib PUBLIC ${_dep_libs} )
560572
561573 install (TARGETS portable_lib
562574 LIBRARY DESTINATION executorch/extension/pybindings)
0 commit comments