@@ -220,36 +220,54 @@ 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
+ 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} "
253
271
)
254
272
endif ()
255
273
0 commit comments