@@ -220,36 +220,51 @@ endif()
220
220
221
221
if (EXECUTORCH_BUILD_PTHREADPOOL )
222
222
# --- 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"
243
225
)
244
226
if (APPLE )
245
227
set (PTHREADPOOL_SYNC_PRIMITIVE
246
228
"condvar"
247
229
CACHE STRING ""
248
230
)
249
231
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} "
253
268
)
254
269
endif ()
255
270
0 commit comments