cmake: Add USE_SYSTEM_LIBS option.
This could be helpful for linux distro developers.
Tested on Debian sid.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c17617b..3956060 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,6 +17,7 @@
OPTION(XNNPACK_ENABLE_ASSEMBLY "Build XNNPACK with assembly micro-kernels" ON)
OPTION(XNNPACK_BUILD_TESTS "Build XNNPACK unit tests" ON)
OPTION(XNNPACK_BUILD_BENCHMARKS "Build XNNPACK benchmarks" ON)
+OPTION(XNNPACK_USE_SYSTEM_LIBS "Use system-provided dependency libraries" OFF)
# ---[ CMake options
INCLUDE(GNUInstallDirs)
@@ -61,84 +62,86 @@
ENDIF()
# ---[ Download deps
-IF(NOT DEFINED CLOG_SOURCE_DIR)
- MESSAGE(STATUS "Downloading clog to ${CMAKE_BINARY_DIR}/clog-source (define CLOG_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadCLog.cmake "${CMAKE_BINARY_DIR}/clog-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/clog-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/clog-download")
- SET(CLOG_SOURCE_DIR "${CMAKE_BINARY_DIR}/clog-source" CACHE STRING "clog source directory")
-ENDIF()
+IF(NOT XNNPACK_USE_SYSTEM_LIBS)
+ IF(NOT DEFINED CLOG_SOURCE_DIR)
+ MESSAGE(STATUS "Downloading clog to ${CMAKE_BINARY_DIR}/clog-source (define CLOG_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadCLog.cmake "${CMAKE_BINARY_DIR}/clog-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/clog-download")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/clog-download")
+ SET(CLOG_SOURCE_DIR "${CMAKE_BINARY_DIR}/clog-source" CACHE STRING "clog source directory")
+ ENDIF()
-IF(NOT DEFINED CPUINFO_SOURCE_DIR)
- MESSAGE(STATUS "Downloading cpuinfo to ${CMAKE_BINARY_DIR}/cpuinfo-source (define CPUINFO_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadCpuinfo.cmake "${CMAKE_BINARY_DIR}/cpuinfo-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/cpuinfo-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/cpuinfo-download")
- SET(CPUINFO_SOURCE_DIR "${CMAKE_BINARY_DIR}/cpuinfo-source" CACHE STRING "cpuinfo source directory")
-ENDIF()
+ IF(NOT DEFINED CPUINFO_SOURCE_DIR)
+ MESSAGE(STATUS "Downloading cpuinfo to ${CMAKE_BINARY_DIR}/cpuinfo-source (define CPUINFO_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadCpuinfo.cmake "${CMAKE_BINARY_DIR}/cpuinfo-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/cpuinfo-download")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/cpuinfo-download")
+ SET(CPUINFO_SOURCE_DIR "${CMAKE_BINARY_DIR}/cpuinfo-source" CACHE STRING "cpuinfo source directory")
+ ENDIF()
-IF(NOT DEFINED FP16_SOURCE_DIR)
- MESSAGE(STATUS "Downloading FP16 to ${CMAKE_BINARY_DIR}/FP16-source (define FP16_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadFP16.cmake "${CMAKE_BINARY_DIR}/FP16-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/FP16-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/FP16-download")
- SET(FP16_SOURCE_DIR "${CMAKE_BINARY_DIR}/FP16-source" CACHE STRING "FP16 source directory")
-ENDIF()
+ IF(NOT DEFINED FP16_SOURCE_DIR)
+ MESSAGE(STATUS "Downloading FP16 to ${CMAKE_BINARY_DIR}/FP16-source (define FP16_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadFP16.cmake "${CMAKE_BINARY_DIR}/FP16-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/FP16-download")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/FP16-download")
+ SET(FP16_SOURCE_DIR "${CMAKE_BINARY_DIR}/FP16-source" CACHE STRING "FP16 source directory")
+ ENDIF()
-IF(NOT DEFINED FXDIV_SOURCE_DIR)
- MESSAGE(STATUS "Downloading FXdiv to ${CMAKE_BINARY_DIR}/FXdiv-source (define FXDIV_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadFXdiv.cmake "${CMAKE_BINARY_DIR}/FXdiv-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/FXdiv-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/FXdiv-download")
- SET(FXDIV_SOURCE_DIR "${CMAKE_BINARY_DIR}/FXdiv-source" CACHE STRING "FXdiv source directory")
-ENDIF()
+ IF(NOT DEFINED FXDIV_SOURCE_DIR)
+ MESSAGE(STATUS "Downloading FXdiv to ${CMAKE_BINARY_DIR}/FXdiv-source (define FXDIV_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadFXdiv.cmake "${CMAKE_BINARY_DIR}/FXdiv-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/FXdiv-download")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/FXdiv-download")
+ SET(FXDIV_SOURCE_DIR "${CMAKE_BINARY_DIR}/FXdiv-source" CACHE STRING "FXdiv source directory")
+ ENDIF()
-IF(NOT DEFINED PSIMD_SOURCE_DIR)
- MESSAGE(STATUS "Downloading PSimd to ${CMAKE_BINARY_DIR}/psimd-source (define PSIMD_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadPSimd.cmake "${CMAKE_BINARY_DIR}/psimd-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/psimd-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/psimd-download")
- SET(PSIMD_SOURCE_DIR "${CMAKE_BINARY_DIR}/psimd-source" CACHE STRING "PSimd source directory")
-ENDIF()
+ IF(NOT DEFINED PSIMD_SOURCE_DIR)
+ MESSAGE(STATUS "Downloading PSimd to ${CMAKE_BINARY_DIR}/psimd-source (define PSIMD_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadPSimd.cmake "${CMAKE_BINARY_DIR}/psimd-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/psimd-download")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/psimd-download")
+ SET(PSIMD_SOURCE_DIR "${CMAKE_BINARY_DIR}/psimd-source" CACHE STRING "PSimd source directory")
+ ENDIF()
-IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR)
- MESSAGE(STATUS "Downloading pthreadpool to ${CMAKE_BINARY_DIR}/pthreadpool-source (define PTHREADPOOL_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadPThreadPool.cmake "${CMAKE_BINARY_DIR}/pthreadpool-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/pthreadpool-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/pthreadpool-download")
- SET(PTHREADPOOL_SOURCE_DIR "${CMAKE_BINARY_DIR}/pthreadpool-source" CACHE STRING "pthreadpool source directory")
-ENDIF()
+ IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR)
+ MESSAGE(STATUS "Downloading pthreadpool to ${CMAKE_BINARY_DIR}/pthreadpool-source (define PTHREADPOOL_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadPThreadPool.cmake "${CMAKE_BINARY_DIR}/pthreadpool-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/pthreadpool-download")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/pthreadpool-download")
+ SET(PTHREADPOOL_SOURCE_DIR "${CMAKE_BINARY_DIR}/pthreadpool-source" CACHE STRING "pthreadpool source directory")
+ ENDIF()
-IF(XNNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
- MESSAGE(STATUS "Downloading Google Test to ${CMAKE_BINARY_DIR}/googletest-source (define GOOGLETEST_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googletest-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googletest-download")
- SET(GOOGLETEST_SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-source" CACHE STRING "Google Test source directory")
-ENDIF()
+ IF(XNNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
+ MESSAGE(STATUS "Downloading Google Test to ${CMAKE_BINARY_DIR}/googletest-source (define GOOGLETEST_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googletest-download")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googletest-download")
+ SET(GOOGLETEST_SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-source" CACHE STRING "Google Test source directory")
+ ENDIF()
-IF(XNNPACK_BUILD_BENCHMARKS AND NOT DEFINED GOOGLEBENCHMARK_SOURCE_DIR)
- MESSAGE(STATUS "Downloading Google Benchmark to ${CMAKE_BINARY_DIR}/googlebenchmark-source (define GOOGLEBENCHMARK_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake "${CMAKE_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googlebenchmark-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googlebenchmark-download")
- SET(GOOGLEBENCHMARK_SOURCE_DIR "${CMAKE_BINARY_DIR}/googlebenchmark-source" CACHE STRING "Google Benchmark source directory")
+ IF(XNNPACK_BUILD_BENCHMARKS AND NOT DEFINED GOOGLEBENCHMARK_SOURCE_DIR)
+ MESSAGE(STATUS "Downloading Google Benchmark to ${CMAKE_BINARY_DIR}/googlebenchmark-source (define GOOGLEBENCHMARK_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake "${CMAKE_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googlebenchmark-download")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googlebenchmark-download")
+ SET(GOOGLEBENCHMARK_SOURCE_DIR "${CMAKE_BINARY_DIR}/googlebenchmark-source" CACHE STRING "Google Benchmark source directory")
+ ENDIF()
ENDIF()
# ---[ XNNPACK library
@@ -1661,64 +1664,118 @@
# ---[ Configure clog
IF(NOT TARGET clog)
- SET(CLOG_BUILD_TESTS OFF CACHE BOOL "")
- SET(CLOG_RUNTIME_TYPE "${CPUINFO_RUNTIME_TYPE}" CACHE STRING "")
- ADD_SUBDIRECTORY(
- "${CLOG_SOURCE_DIR}/deps/clog"
- "${CMAKE_BINARY_DIR}/clog")
- # We build static version of clog but a dynamic library may indirectly depend on it
- SET_PROPERTY(TARGET clog PROPERTY POSITION_INDEPENDENT_CODE ON)
+ IF(NOT XNNPACK_USE_SYSTEM_LIBS)
+ SET(CLOG_BUILD_TESTS OFF CACHE BOOL "")
+ SET(CLOG_RUNTIME_TYPE "${CPUINFO_RUNTIME_TYPE}" CACHE STRING "")
+ ADD_SUBDIRECTORY(
+ "${CLOG_SOURCE_DIR}/deps/clog"
+ "${CMAKE_BINARY_DIR}/clog")
+ # We build static version of clog but a dynamic library may indirectly depend on it
+ SET_PROPERTY(TARGET clog PROPERTY POSITION_INDEPENDENT_CODE ON)
+ ELSE()
+ ADD_LIBRARY(clog STATIC IMPORTED)
+ FIND_LIBRARY(CLOG_LIBRARY clog)
+ IF(NOT CLOG_LIBRARY)
+ MESSAGE(FATAL_ERROR "Cannot find clog")
+ ENDIF()
+ SET_PROPERTY(TARGET clog PROPERTY IMPORTED_LOCATION "${CLOG_LIBRARY}")
+ ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(XNNPACK PRIVATE clog)
# ---[ Configure cpuinfo
IF(NOT TARGET cpuinfo)
- SET(CPUINFO_BUILD_TOOLS OFF CACHE BOOL "")
- SET(CPUINFO_BUILD_UNIT_TESTS OFF CACHE BOOL "")
- SET(CPUINFO_BUILD_MOCK_TESTS OFF CACHE BOOL "")
- SET(CPUINFO_BUILD_BENCHMARKS OFF CACHE BOOL "")
- ADD_SUBDIRECTORY(
- "${CPUINFO_SOURCE_DIR}"
- "${CMAKE_BINARY_DIR}/cpuinfo")
+ IF(NOT XNNPACK_USE_SYSTEM_LIBS)
+ SET(CPUINFO_BUILD_TOOLS OFF CACHE BOOL "")
+ SET(CPUINFO_BUILD_UNIT_TESTS OFF CACHE BOOL "")
+ SET(CPUINFO_BUILD_MOCK_TESTS OFF CACHE BOOL "")
+ SET(CPUINFO_BUILD_BENCHMARKS OFF CACHE BOOL "")
+ ADD_SUBDIRECTORY(
+ "${CPUINFO_SOURCE_DIR}"
+ "${CMAKE_BINARY_DIR}/cpuinfo")
+ ELSE()
+ ADD_LIBRARY(cpuinfo SHARED IMPORTED)
+ FIND_LIBRARY(CPUINFO_LIBRARY cpuinfo)
+ IF(NOT CPUINFO_LIBRARY)
+ MESSAGE(FATAL_ERROR "Cannot find cpuinfo")
+ ENDIF()
+ SET_PROPERTY(TARGET cpuinfo PROPERTY IMPORTED_LOCATION "${CPUINFO_LIBRARY}")
+ ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(XNNPACK PRIVATE cpuinfo)
# ---[ Configure pthreadpool
IF(NOT TARGET pthreadpool)
- SET(PTHREADPOOL_BUILD_TESTS OFF CACHE BOOL "")
- SET(PTHREADPOOL_BUILD_BENCHMARKS OFF CACHE BOOL "")
- SET(PTHREADPOOL_ALLOW_DEPRECATED_API OFF CACHE BOOL "")
- ADD_SUBDIRECTORY(
- "${PTHREADPOOL_SOURCE_DIR}"
- "${CMAKE_BINARY_DIR}/pthreadpool")
+ IF(NOT XNNPACK_USE_SYSTEM_LIBS)
+ SET(PTHREADPOOL_BUILD_TESTS OFF CACHE BOOL "")
+ SET(PTHREADPOOL_BUILD_BENCHMARKS OFF CACHE BOOL "")
+ SET(PTHREADPOOL_ALLOW_DEPRECATED_API OFF CACHE BOOL "")
+ ADD_SUBDIRECTORY(
+ "${PTHREADPOOL_SOURCE_DIR}"
+ "${CMAKE_BINARY_DIR}/pthreadpool")
+ ELSE()
+ ADD_LIBRARY(pthreadpool SHARED IMPORTED)
+ FIND_LIBRARY(PTHREADPOOL_LIBRARY pthreadpool)
+ IF(NOT PTHREADPOOL_LIBRARY)
+ MESSAGE(FATAL_ERROR "Cannot find pthreadpool")
+ ENDIF()
+ SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_LOCATION "${PTHREADPOOL_LIBRARY}")
+ ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
# ---[ Configure FXdiv
IF(NOT TARGET fxdiv)
- SET(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
- SET(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
- ADD_SUBDIRECTORY(
- "${FXDIV_SOURCE_DIR}"
- "${CMAKE_BINARY_DIR}/FXdiv")
+ IF(NOT XNNPACK_USE_SYSTEM_LIBS)
+ SET(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+ SET(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+ ADD_SUBDIRECTORY(
+ "${FXDIV_SOURCE_DIR}"
+ "${CMAKE_BINARY_DIR}/FXdiv")
+ ELSE()
+ FIND_FILE(FXDIV_HDR fxdiv.h PATH_SUFFIXES include)
+ IF(NOT FXDIV_HDR)
+ MESSAGE(FATAL_ERROR "Cannot find fxdiv")
+ ENDIF()
+ ADD_LIBRARY(fxdiv STATIC "${FXDIV_HDR}")
+ SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C)
+ ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
# ---[ Configure psimd
IF(NOT TARGET psimd)
- ADD_SUBDIRECTORY(
- "${PSIMD_SOURCE_DIR}"
- "${CMAKE_BINARY_DIR}/psimd")
+ IF(NOT XNNPACK_USE_SYSTEM_LIBS)
+ ADD_SUBDIRECTORY(
+ "${PSIMD_SOURCE_DIR}"
+ "${CMAKE_BINARY_DIR}/psimd")
+ ELSE()
+ FIND_FILE(PSIMD_HDR psimd.h PATH_SUFFIXES include)
+ IF(NOT PSIMD_HDR)
+ MESSAGE(FATAL_ERROR "Cannot find psimd")
+ ENDIF()
+ ADD_LIBRARY(psimd STATIC "${PSIMD_HDR}")
+ SET_PROPERTY(TARGET psimd PROPERTY LINKER_LANGUAGE C)
+ ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(XNNPACK PRIVATE psimd)
# ---[ Configure FP16
IF(NOT TARGET fp16)
- SET(FP16_BUILD_TESTS OFF CACHE BOOL "")
- SET(FP16_BUILD_BENCHMARKS OFF CACHE BOOL "")
- ADD_SUBDIRECTORY(
- "${FP16_SOURCE_DIR}"
- "${CMAKE_BINARY_DIR}/FP16")
+ IF(NOT XNNPACK_USE_SYSTEM_LIBS)
+ SET(FP16_BUILD_TESTS OFF CACHE BOOL "")
+ SET(FP16_BUILD_BENCHMARKS OFF CACHE BOOL "")
+ ADD_SUBDIRECTORY(
+ "${FP16_SOURCE_DIR}"
+ "${CMAKE_BINARY_DIR}/FP16")
+ ELSE()
+ FIND_FILE(FP16_HDR fp16.h PATH_SUFFIXES include)
+ IF(NOT FP16_HDR)
+ MESSAGE(FATAL_ERROR "Cannot find fp16")
+ ENDIF()
+ ADD_LIBRARY(fp16 STATIC "${FP16_HDR}")
+ SET_PROPERTY(TARGET fp16 PROPERTY LINKER_LANGUAGE C)
+ ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)