@@ -220,36 +220,51 @@ 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_INSTALL_DIR "${PTHREADPOOL_BINARY_DIR} /install" )
235+ set (PTHREADPOOL_LIBRARY "${PTHREADPOOL_INSTALL_DIR} /lib/libpthreadpool.a" )
236+ get_extra_cmake_args_for_external_project(PTHREADPOOL_EXTRA_CMAKE_ARGS)
237+ ExternalProject_Add(
238+ pthreadpoolExternalProject
239+ SOURCE_DIR "${PTHREADPOOL_SOURCE_DIR} "
240+ BINARY_DIR "${PTHREADPOOL_BINARY_DIR} "
241+ INSTALL_DIR "${PTHREADPOOL_INSTALL_DIR} "
242+ BUILD_BYPRODUCTS "${PTHREADPOOL_LIBRARY} "
243+ CMAKE_ARGS ${PTHREADPOOL_EXTRA_CMAKE_ARGS}
244+ -D
245+ PTHREADPOOL_BUILD_TESTS=OFF
246+ -D
247+ PTHREADPOOL_BUILD_BENCHMARKS=OFF
248+ -D
249+ PTHREADPOOL_LIBRARY_TYPE=static
250+ -D
251+ PTHREADPOOL_ALLOW_DEPRECATED_API=ON
252+ -D
253+ PTHREADPOOL_SYNC_PRIMITVE=${PTHREADPOOL_SYNC_PRIMITIVE}
254+ -D
255+ CMAKE_POSITION_INDEPENDENT_CODE =ON
256+ -D
257+ CMAKE_INSTALL_PREFIX =<INSTALL_DIR>
258+ )
259+ add_library (pthreadpool STATIC IMPORTED )
260+ set_property (
261+ TARGET pthreadpool PROPERTY IMPORTED_LOCATION "${PTHREADPOOL_LIBRARY} "
262+ )
263+ add_dependencies (pthreadpool pthreadpoolExternalProject)
264+ # Trailing slash matters here! "Move everything from the temporary pthreadpool
265+ # install directory to the proper install directory."
266+ install (DIRECTORY "${PTHREADPOOL_INSTALL_DIR} /"
267+ DESTINATION "${CMAKE_INSTALL_PREFIX} "
253268 )
254269endif ()
255270
0 commit comments