@@ -175,8 +175,9 @@ option(EXECUTORCH_BUILD_VULKAN "Build the Vulkan backend" OFF)
175
175
#
176
176
# pthreadpool: build pthreadpool library. Disable on unsupported platforms
177
177
#
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 )
180
181
181
182
#
182
183
# cpuinfo: build cpuinfo library. Disable on unsupported platforms
@@ -186,6 +187,9 @@ cmake_dependent_option(EXECUTORCH_BUILD_CPUINFO "Build cpuinfo library." ON
186
187
187
188
if (EXECUTORCH_BUILD_CPUINFO)
188
189
# --- cpuinfo
190
+ set (ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG
191
+ ${CMAKE_POSITION_INDEPENDENT_CODE} )
192
+ set (CMAKE_POSITION_INDEPENDENT_CODE ON )
189
193
set (CPUINFO_SOURCE_DIR "backends/xnnpack/third-party/cpuinfo" )
190
194
set (CPUINFO_BUILD_TOOLS
191
195
OFF
@@ -207,10 +211,15 @@ if(EXECUTORCH_BUILD_CPUINFO)
207
211
CACHE STRING "" )
208
212
set (CLOG_SOURCE_DIR "${CPUINFO_SOURCE_DIR} /deps/clog" )
209
213
add_subdirectory ("${CPUINFO_SOURCE_DIR} " )
214
+ set (CMAKE_POSITION_INDEPENDENT_CODE
215
+ ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG} )
210
216
endif ()
211
217
212
218
if (EXECUTORCH_BUILD_PTHREADPOOL)
213
219
# --- pthreadpool
220
+ set (ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG
221
+ ${CMAKE_POSITION_INDEPENDENT_CODE} )
222
+ set (CMAKE_POSITION_INDEPENDENT_CODE ON )
214
223
set (PTHREADPOOL_SOURCE_DIR "backends/xnnpack/third-party/pthreadpool" )
215
224
set (PTHREADPOOL_BUILD_TESTS
216
225
OFF
@@ -230,6 +239,8 @@ if(EXECUTORCH_BUILD_PTHREADPOOL)
230
239
CACHE STRING "" )
231
240
endif ()
232
241
add_subdirectory ("${PTHREADPOOL_SOURCE_DIR} " )
242
+ set (CMAKE_POSITION_INDEPENDENT_CODE
243
+ ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG} )
233
244
endif ()
234
245
235
246
if (NOT PYTHON_EXECUTABLE)
@@ -504,25 +515,38 @@ if(EXECUTORCH_BUILD_PYBIND)
504
515
add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /sdk)
505
516
endif ()
506
517
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
+
507
533
if (EXECUTORCH_BUILD_COREML)
508
- set (PYBIND_LINK_COREML " coremldelegate" )
534
+ list ( APPEND _dep_libs coremldelegate)
509
535
endif ()
510
536
511
537
if (EXECUTORCH_BUILD_MPS)
512
- set (PYBIND_LINK_MPS " mpsdelegate" )
538
+ list ( APPEND _dep_libs mpsdelegate)
513
539
endif ()
514
540
515
541
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)
519
545
endif ()
520
546
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 ()
526
550
# compile options for pybind
527
551
528
552
set (_pybind_compile_options -Wno-deprecated-declarations -fPIC -frtti
@@ -544,19 +568,7 @@ if(EXECUTORCH_BUILD_PYBIND)
544
568
PUBLIC EXECUTORCH_PYTHON_MODULE_NAME=portable_lib)
545
569
target_include_directories (portable_lib PRIVATE ${TORCH_INCLUDE_DIRS} )
546
570
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} )
560
572
561
573
install (TARGETS portable_lib
562
574
LIBRARY DESTINATION executorch/extension/pybindings)
0 commit comments