Skip to content

Commit e136252

Browse files
committed
Convert pthreadpool to ExternalProject
As with the previous PR #12425, I think this is needed to get EXPORT to work. ghstack-source-id: 21b7b0b ghstack-comment-id: 3071359023 Pull-Request: #12468
1 parent 487e357 commit e136252

File tree

1 file changed

+39
-24
lines changed

1 file changed

+39
-24
lines changed

CMakeLists.txt

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -220,37 +220,49 @@ endif()
220220

221221
if(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+
set(PTHREADPOOL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/pthreadpool")
234+
set(PTHREADPOOL_LIBRARY
235+
"${PTHREADPOOL_BINARY_DIR}/install/lib/libpthreadpool.a"
236+
)
237+
get_extra_cmake_args_for_external_project(PTHREADPOOL_EXTRA_CMAKE_ARGS)
238+
ExternalProject_Add(
239+
pthreadpoolExternalProject
240+
SOURCE_DIR "${PTHREADPOOL_SOURCE_DIR}"
241+
BINARY_DIR "${PTHREADPOOL_BINARY_DIR}"
242+
INSTALL_DIR "${PTHREADPOOL_BINARY_DIR}/install"
243+
BUILD_BYPRODUCTS "${PTHREADPOOL_LIBRARY}"
244+
CMAKE_ARGS ${PTHREADPOOL_EXTRA_CMAKE_ARGS}
245+
-D
246+
PTHREADPOOL_BUILD_TESTS=OFF
247+
-D
248+
PTHREADPOOL_BUILD_BENCHMARKS=OFF
249+
-D
250+
PTHREADPOOL_LIBRARY_TYPE=static
251+
-D
252+
PTHREADPOOL_ALLOW_DEPRECATED_API=ON
253+
-D
254+
PTHREADPOOL_SYNC_PRIMITVE=${PTHREADPOOL_SYNC_PRIMITIVE}
255+
-D
256+
CMAKE_POSITION_INDEPENDENT_CODE=ON
257+
-D
258+
CMAKE_INSTALL_PREFIX=<INSTALL_DIR>
253259
)
260+
add_library(pthreadpool STATIC IMPORTED)
261+
set_property(
262+
TARGET pthreadpool PROPERTY IMPORTED_LOCATION "${PTHREADPOOL_LIBRARY}"
263+
)
264+
add_dependencies(pthreadpool pthreadpoolExternalProject)
265+
install(FILES ${PTHREADPOOL_LIBRARY} DESTINATION ${CMAKE_INSTALL_LIBDIR})
254266
endif()
255267

256268
# TODO(dbort): Fix these warnings and remove this flag.
@@ -737,7 +749,10 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER)
737749
endif()
738750

739751
set(CMAKE_EXECUTABLE_SUFFIX ".html")
740-
target_link_options(executor_runner PUBLIC -sALLOW_MEMORY_GROWTH --embed-file "${WASM_MODEL_DIR}@/")
752+
target_link_options(
753+
executor_runner PUBLIC -sALLOW_MEMORY_GROWTH --embed-file
754+
"${WASM_MODEL_DIR}@/"
755+
)
741756
endif()
742757
endif()
743758

0 commit comments

Comments
 (0)