Skip to content

Commit 421fe3e

Browse files
committed
Build cpuinfo as ExternalProject
Yet another (and hopefully the last) needed ExternalProject to get EXPORT working. ghstack-source-id: 9f21946 ghstack-comment-id: 3075548875 Pull-Request: #12513
1 parent 1894e7f commit 421fe3e

File tree

1 file changed

+40
-30
lines changed

1 file changed

+40
-30
lines changed

CMakeLists.txt

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -182,39 +182,49 @@ endif()
182182

183183
if(EXECUTORCH_BUILD_CPUINFO)
184184
# --- cpuinfo
185-
set(ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG
186-
${CMAKE_POSITION_INDEPENDENT_CODE}
187-
)
188-
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
189-
set(CPUINFO_SOURCE_DIR "backends/xnnpack/third-party/cpuinfo")
190-
set(CPUINFO_BUILD_TOOLS
191-
OFF
192-
CACHE BOOL ""
193-
)
194-
set(CPUINFO_BUILD_UNIT_TESTS
195-
OFF
196-
CACHE BOOL ""
197-
)
198-
set(CPUINFO_BUILD_MOCK_TESTS
199-
OFF
200-
CACHE BOOL ""
201-
)
202-
set(CPUINFO_BUILD_BENCHMARKS
203-
OFF
204-
CACHE BOOL ""
185+
set(CPUINFO_SOURCE_DIR
186+
"${CMAKE_CURRENT_LIST_DIR}/backends/xnnpack/third-party/cpuinfo"
205187
)
206-
set(CPUINFO_LIBRARY_TYPE
207-
"static"
208-
CACHE STRING ""
188+
set(CPUINFO_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/cpuinfo")
189+
set(CPUINFO_INSTALL_DIR "${CPUINFO_BINARY_DIR}/install")
190+
set(CPUINFO_LIBRARY
191+
"${CPUINFO_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libcpuinfo.a"
209192
)
210-
set(CPUINFO_LOG_LEVEL
211-
"error"
212-
CACHE STRING ""
193+
194+
get_extra_cmake_args_for_external_project(CPUINFO_EXTRA_CMAKE_ARGS)
195+
ExternalProject_Add(
196+
cpuinfoExternalProject
197+
SOURCE_DIR "${CPUINFO_SOURCE_DIR}"
198+
BINARY_DIR "${CPUINFO_BINARY_DIR}"
199+
INSTALL_DIR "${CPUINFO_INSTALL_DIR}"
200+
BUILD_BYPRODUCTS "${CPUINFO_LIBRARY}"
201+
CMAKE_ARGS "${CPUINFO_EXTRA_CMAKE_ARGS}"
202+
-D
203+
CMAKE_POSITION_INDEPENDENT_CODE=ON
204+
-D
205+
CPUINFO_BUILD_TOOLS=OFF
206+
-D
207+
CPUINFO_BUILD_UNIT_TESTS=OFF
208+
-D
209+
CPUINFO_BUILD_MOCK_TESTS=OFF
210+
-D
211+
CPUINFO_BUILD_BENCHMARKS=OFF
212+
-D
213+
CPUINFO_LIBRARY_TYPE=static
214+
-D
215+
CPUINFO_LOG_LEVEL=error
216+
-D
217+
CMAKE_INSTALL_PREFIX=<INSTALL_DIR>
218+
-D
219+
CLOG_SOURCE_DIR="${CPUINFO_SOURCE_DIR}/deps/clog"
213220
)
214-
set(CLOG_SOURCE_DIR "${CPUINFO_SOURCE_DIR}/deps/clog")
215-
add_subdirectory("${CPUINFO_SOURCE_DIR}")
216-
set(CMAKE_POSITION_INDEPENDENT_CODE
217-
${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG}
221+
add_library(cpuinfo STATIC IMPORTED)
222+
set_property(TARGET cpuinfo PROPERTY IMPORTED_LOCATION "${CPUINFO_LIBRARY}")
223+
add_dependencies(cpuinfo cpuinfoExternalProject)
224+
# Trailing slash matters here! "Move everything from the temporary pthreadpool
225+
# install directory to the proper install directory."
226+
install(DIRECTORY "${CPUINFO_INSTALL_DIR}/"
227+
DESTINATION "${CMAKE_INSTALL_PREFIX}"
218228
)
219229
endif()
220230

0 commit comments

Comments
 (0)