@@ -220,37 +220,49 @@ endif()
220220
221221if (EXECUTORCH_BUILD_PTHREADPOOL)
222222 # --- pthreadpool
223- set (ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG
224- ${CMAKE_POSITION_INDEPENDENT_CODE}
225- )
226- set (CMAKE_POSITION_INDEPENDENT_CODE ON )
227- set (PTHREADPOOL_SOURCE_DIR "backends/xnnpack/third-party/pthreadpool" )
228- set (PTHREADPOOL_BUILD_TESTS
229- OFF
230- CACHE BOOL ""
231- )
232- set (PTHREADPOOL_BUILD_BENCHMARKS
233- OFF
234- CACHE BOOL ""
235- )
236- set (PTHREADPOOL_LIBRARY_TYPE
237- "static"
238- CACHE STRING ""
239- )
240- set (PTHREADPOOL_ALLOW_DEPRECATED_API
241- ON
242- CACHE BOOL ""
223+ set (PTHREADPOOL_SOURCE_DIR
224+ "${CMAKE_CURRENT_LIST_DIR} /backends/xnnpack/third-party/pthreadpool"
243225 )
244226 if (APPLE )
245227 set (PTHREADPOOL_SYNC_PRIMITIVE
246228 "condvar"
247229 CACHE STRING ""
248230 )
249231 endif ()
250- add_subdirectory ("${PTHREADPOOL_SOURCE_DIR} " )
251- set (CMAKE_POSITION_INDEPENDENT_CODE
252- ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG}
232+ include (ExternalProject)
233+ set (PTHREADPOOL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /pthreadpool" )
234+ set (PTHREADPOOL_LIBRARY
235+ "${PTHREADPOOL_BINARY_DIR} /install/lib/libpthreadpool.a"
236+ )
237+ get_extra_cmake_args_for_external_project(PTHREADPOOL_EXTRA_CMAKE_ARGS)
238+ ExternalProject_Add(
239+ pthreadpoolExternalProject
240+ SOURCE_DIR "${PTHREADPOOL_SOURCE_DIR} "
241+ BINARY_DIR "${PTHREADPOOL_BINARY_DIR} "
242+ INSTALL_DIR "${PTHREADPOOL_BINARY_DIR} /install"
243+ BUILD_BYPRODUCTS "${PTHREADPOOL_LIBRARY} "
244+ CMAKE_ARGS ${PTHREADPOOL_EXTRA_CMAKE_ARGS}
245+ -D
246+ PTHREADPOOL_BUILD_TESTS=OFF
247+ -D
248+ PTHREADPOOL_BUILD_BENCHMARKS=OFF
249+ -D
250+ PTHREADPOOL_LIBRARY_TYPE=static
251+ -D
252+ PTHREADPOOL_ALLOW_DEPRECATED_API=ON
253+ -D
254+ PTHREADPOOL_SYNC_PRIMITVE=${PTHREADPOOL_SYNC_PRIMITIVE}
255+ -D
256+ CMAKE_POSITION_INDEPENDENT_CODE =ON
257+ -D
258+ CMAKE_INSTALL_PREFIX =<INSTALL_DIR>
253259 )
260+ add_library (pthreadpool STATIC IMPORTED )
261+ set_property (
262+ TARGET pthreadpool PROPERTY IMPORTED_LOCATION "${PTHREADPOOL_LIBRARY} "
263+ )
264+ add_dependencies (pthreadpool pthreadpoolExternalProject)
265+ install (FILES ${PTHREADPOOL_LIBRARY} DESTINATION ${CMAKE_INSTALL_LIBDIR} )
254266endif ()
255267
256268# TODO(dbort): Fix these warnings and remove this flag.
@@ -737,7 +749,10 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER)
737749 endif ()
738750
739751 set (CMAKE_EXECUTABLE_SUFFIX ".html" )
740- target_link_options (executor_runner PUBLIC -sALLOW_MEMORY_GROWTH --embed-file "${WASM_MODEL_DIR} @/" )
752+ target_link_options (
753+ executor_runner PUBLIC -sALLOW_MEMORY_GROWTH --embed-file
754+ "${WASM_MODEL_DIR} @/"
755+ )
741756 endif ()
742757endif ()
743758
0 commit comments