diff --git a/CMakeLists.txt b/CMakeLists.txt index 856a47d..06f5ea9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1040,14 +1040,14 @@ IF(XNNPACK_BUILD_ALL_MICROKERNELS) ENDIF() TARGET_INCLUDE_DIRECTORIES(datatype PRIVATE include src) TARGET_INCLUDE_DIRECTORIES(microkernels-prod PRIVATE include src) -TARGET_INCLUDE_DIRECTORIES(hardware-config PRIVATE include src ${CPUINFO_SOURCE_DIR}/include) +TARGET_INCLUDE_DIRECTORIES(hardware-config PRIVATE include src) TARGET_INCLUDE_DIRECTORIES(indirection PRIVATE include src) TARGET_INCLUDE_DIRECTORIES(microparams-init PRIVATE include src) TARGET_INCLUDE_DIRECTORIES(normalization PRIVATE include src) TARGET_INCLUDE_DIRECTORIES(packing PRIVATE include src) TARGET_INCLUDE_DIRECTORIES(logging PRIVATE include src) IF(XNNPACK_BUILD_LIBRARY) - TARGET_INCLUDE_DIRECTORIES(XNNPACK PUBLIC include) + TARGET_INCLUDE_DIRECTORIES(XNNPACK PUBLIC $ $) TARGET_INCLUDE_DIRECTORIES(XNNPACK PRIVATE src) TARGET_INCLUDE_DIRECTORIES(allocator PRIVATE include src) TARGET_INCLUDE_DIRECTORIES(cache PRIVATE include src) @@ -1085,6 +1085,8 @@ IF(XNNPACK_BUILD_WITH_LIBM) ENDIF() # ---[ Configure cpuinfo +find_package(cpuinfo CONFIG REQUIRED) +add_library(cpuinfo ALIAS cpuinfo::cpuinfo) IF(NOT TARGET cpuinfo) IF(NOT XNNPACK_USE_SYSTEM_LIBS) SET(CPUINFO_BUILD_TOOLS OFF CACHE BOOL "") @@ -1111,6 +1113,8 @@ IF(XNNPACK_BUILD_LIBRARY) ENDIF() # ---[ Configure pthreadpool +find_package(unofficial-pthreadpool CONFIG REQUIRED) +add_library(pthreadpool ALIAS unofficial::pthreadpool) IF(NOT TARGET pthreadpool) IF(NOT XNNPACK_USE_SYSTEM_LIBS) SET(PTHREADPOOL_BUILD_TESTS OFF CACHE BOOL "") @@ -1135,6 +1139,8 @@ ENDIF() TARGET_LINK_LIBRARIES(xnnpack-base INTERFACE pthreadpool) # ---[ Configure FXdiv +find_package(unofficial-fxdiv CONFIG REQUIRED) +add_library(fxdiv ALIAS unofficial::fxdiv::fxdiv) IF(NOT TARGET fxdiv) IF(NOT XNNPACK_USE_SYSTEM_LIBS) SET(FXDIV_BUILD_TESTS OFF CACHE BOOL "") @@ -1162,14 +1168,27 @@ IF(XNNPACK_BUILD_LIBRARY) ENDIF() IF(XNNPACK_BUILD_LIBRARY) - INSTALL(TARGETS XNNPACK microkernels-prod + INSTALL(TARGETS XNNPACK microkernels-prod xnnpack-base allocator cache hardware-config indirection memory microkernel-utils microparams-init mutex normalization operators operator-run operator-utils packing subgraph datatype reference-ukernels logging + EXPORT unofficial-xnnpack-config-targets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + INSTALL(EXPORT unofficial-xnnpack-config-targets NAMESPACE unofficial::xnnpack:: + FILE unofficial-xnnpack-config-targets.cmake + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unofficial-xnnpack) # share/xnnpack + +include(CMakePackageConfigHelpers) +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/unofficial-xnnpack-config.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unofficial-xnnpack) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unofficial-xnnpack-config.cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unofficial-xnnpack) + + ENDIF() # ---[ Configure KleidiAI IF(XNNPACK_ENABLE_KLEIDIAI) + find_package(KleidiAI CONFIG REQUIRED) + add_library(kleidiai ALIAS KleidiAI::kleidiai) IF(NOT TARGET kleidiai) IF(NOT XNNPACK_USE_SYSTEM_LIBS) SET(KLEIDIAI_BUILD_TESTS OFF CACHE BOOL "") diff --git a/Config.cmake.in b/Config.cmake.in new file mode 100644 index 0000000..8dc60b4 --- /dev/null +++ b/Config.cmake.in @@ -0,0 +1,11 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) +find_dependency(unofficial-fxdiv) +find_dependency(cpuinfo) +find_dependency(unofficial-pthreadpool) +if(@XNNPACK_ENABLE_KLEIDIAI@) + find_dependency(KleidiAI) +endif() + +include ( "${CMAKE_CURRENT_LIST_DIR}/unofficial-xnnpack-config-targets.cmake" )