@@ -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}
223
+ set (PTHREADPOOL_SOURCE_DIR
224
+ " ${CMAKE_CURRENT_LIST_DIR} /backends/xnnpack/third-party/pthreadpool"
225
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 ""
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"
243
232
)
233
+ get_extra_cmake_args_for_external_project (PTHREADPOOL_EXTRA_CMAKE_ARGS )
244
234
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
248
237
)
249
238
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} "
253
268
)
254
269
endif ()
255
270
0 commit comments