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