@@ -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}
223+ set (PTHREADPOOL_SOURCE_DIR
224+ " ${CMAKE_CURRENT_LIST_DIR} /backends/xnnpack/third-party/pthreadpool"
225225 )
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 ""
226+ include (ExternalProject)
227+ include (GNUInstallDirs)
228+ set (PTHREADPOOL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /pthreadpool" )
229+ set (PTHREADPOOL_INSTALL_DIR "${PTHREADPOOL_BINARY_DIR} /install" )
230+ set (PTHREADPOOL_LIBRARY
231+ "${PTHREADPOOL_INSTALL_DIR} /${CMAKE_INSTALL_LIBDIR} /libpthreadpool.a"
243232 )
233+ get_extra_cmake_args_for_external_project(PTHREADPOOL_EXTRA_CMAKE_ARGS)
244234 if (APPLE )
245- set (PTHREADPOOL_SYNC_PRIMITIVE
246- "condvar"
247- CACHE STRING ""
235+ list (APPEND PTHREADPOOL_EXTRA_CMAKE_ARGS -D
236+ PTHREADPOOL_SYNC_PRIMITIVE=condvar
248237 )
249238 endif ()
250- add_subdirectory ("${PTHREADPOOL_SOURCE_DIR} " )
251- set (CMAKE_POSITION_INDEPENDENT_CODE
252- ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG}
239+ ExternalProject_Add(
240+ pthreadpoolExternalProject
241+ SOURCE_DIR "${PTHREADPOOL_SOURCE_DIR} "
242+ BINARY_DIR "${PTHREADPOOL_BINARY_DIR} "
243+ INSTALL_DIR "${PTHREADPOOL_INSTALL_DIR} "
244+ BUILD_BYPRODUCTS "${PTHREADPOOL_LIBRARY} "
245+ CMAKE_ARGS ${PTHREADPOOL_EXTRA_CMAKE_ARGS}
246+ -D
247+ PTHREADPOOL_BUILD_TESTS=OFF
248+ -D
249+ PTHREADPOOL_BUILD_BENCHMARKS=OFF
250+ -D
251+ PTHREADPOOL_LIBRARY_TYPE=static
252+ -D
253+ PTHREADPOOL_ALLOW_DEPRECATED_API=ON
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