diff --git a/3rdparty/kleidicv/CMakeLists.txt b/3rdparty/kleidicv/CMakeLists.txt new file mode 100644 index 000000000000..ac736100ce21 --- /dev/null +++ b/3rdparty/kleidicv/CMakeLists.txt @@ -0,0 +1,21 @@ +project(kleidicv_hal) + +set(KLEIDICV_SOURCE_PATH "" CACHE PATH "Directory containing KleidiCV sources") + +if (KLEIDICV_SOURCE_PATH) + set(THE_ROOT "${KLEIDICV_SOURCE_PATH}") +else() + ocv_download(FILENAME "kleidicv-83a66640a7a2cb2ab112c676fb80f655f44123c5.tar.gz" + HASH "13a5afafe2138c42eb50cff2ba3300d1" + URL + "${OPENCV_KLEIDICV_URL}" + "$ENV{OPENCV_KLEIDICV_URL}" + "https://gitlab.arm.com/kleidi/kleidicv/-/archive/83a66640a7a2cb2ab112c676fb80f655f44123c5/" + DESTINATION_DIR "${OpenCV_BINARY_DIR}/3rdparty/kleidicv/" + ID KLEIDICV + STATUS res + UNPACK RELATIVE_URL) + set(THE_ROOT "${OpenCV_BINARY_DIR}/3rdparty/kleidicv/kleidicv-83a66640a7a2cb2ab112c676fb80f655f44123c5") +endif() + +include("${THE_ROOT}/adapters/opencv/CMakeLists.txt") diff --git a/CMakeLists.txt b/CMakeLists.txt index 9753cf05aaeb..e4e797d1b1ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,6 @@ FATAL: In-source builds are not allowed. ") endif() - include(cmake/OpenCVMinDepVersions.cmake) if(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore) @@ -258,6 +257,8 @@ OCV_OPTION(WITH_CAP_IOS "Enable iOS video capture" ON VERIFY HAVE_CAP_IOS) OCV_OPTION(WITH_CAROTENE "Use NVidia carotene acceleration library for ARM platform" (NOT CV_DISABLE_OPTIMIZATION) VISIBLE_IF (ARM OR AARCH64) AND NOT IOS AND NOT XROS) +OCV_OPTION(WITH_KLEIDICV "Use KleidiCV library for ARM platforms" OFF + VISIBLE_IF (AARCH64)) OCV_OPTION(WITH_CPUFEATURES "Use cpufeatures Android library" ON VISIBLE_IF ANDROID VERIFY HAVE_CPUFEATURES) @@ -966,6 +967,13 @@ if(HAVE_OPENVX) endif() endif() +if(WITH_KLEIDICV) + ocv_debug_message(STATUS "Enable KleidiCV acceleration") + if(NOT ";${OpenCV_HAL};" MATCHES ";kleidicv;") + set(OpenCV_HAL "kleidicv;${OpenCV_HAL}") + endif() +endif() + if(WITH_CAROTENE) ocv_debug_message(STATUS "Enable carotene acceleration") if(NOT ";${OpenCV_HAL};" MATCHES ";carotene;") @@ -990,6 +998,10 @@ foreach(hal ${OpenCV_HAL}) else() message(STATUS "Carotene: NEON is not available, disabling carotene...") endif() + elseif(hal STREQUAL "kleidicv") + add_subdirectory(3rdparty/kleidicv) + ocv_hal_register(KLEIDICV_HAL_LIBRARIES KLEIDICV_HAL_HEADERS KLEIDICV_HAL_INCLUDE_DIRS) + list(APPEND OpenCV_USED_HAL "KleidiCV (ver ${KLEIDICV_HAL_VERSION})") elseif(hal STREQUAL "openvx") add_subdirectory(3rdparty/openvx) ocv_hal_register(OPENVX_HAL_LIBRARIES OPENVX_HAL_HEADERS OPENVX_HAL_INCLUDE_DIRS) diff --git a/doc/tutorials/introduction/config_reference/config_reference.markdown b/doc/tutorials/introduction/config_reference/config_reference.markdown index dba280485fd3..7ced9a2536b1 100644 --- a/doc/tutorials/introduction/config_reference/config_reference.markdown +++ b/doc/tutorials/introduction/config_reference/config_reference.markdown @@ -623,6 +623,7 @@ Following build options are utilized in `opencv_contrib` modules, as stated [pre `CMAKE_TOOLCHAIN_FILE` `WITH_CAROTENE` +`WITH_KLEIDICV` `WITH_CPUFEATURES` `WITH_EIGEN` `WITH_OPENVX`