Skip to content

Commit 68c6318

Browse files
committed
Merge pull request opencv#6683 from alalek:cmake_hal
2 parents e3844e0 + f4ebc50 commit 68c6318

File tree

4 files changed

+34
-17
lines changed

4 files changed

+34
-17
lines changed

CMakeLists.txt

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -602,26 +602,42 @@ endif()
602602

603603
include(cmake/OpenCVDetectVTK.cmake)
604604

605-
# -- Custom HAL replacement --
606-
# Package config in: OpenCV_HALConfig.cmake or opencv_hal-config.cmake
607-
# Use variables: OpenCV_HAL_LIBRARIES, OpenCV_HAL_HEADERS and OpenCV_HAL_INCLUDE_DIRS variables
608-
find_package(OpenCV_HAL NO_MODULE QUIET)
609-
set(_includes "")
610-
if (OpenCV_HAL_FOUND)
605+
606+
# ----------------------------------------------------------------------------
607+
# OpenCV HAL
608+
# ----------------------------------------------------------------------------
609+
set(_hal_includes "")
610+
macro(ocv_hal_register HAL_LIBRARIES_VAR HAL_HEADERS_VAR HAL_INCLUDE_DIRS_VAR)
611611
# 1. libraries
612-
foreach (l ${OpenCV_HAL_LIBRARIES})
613-
get_filename_component(l "${l}" ABSOLUTE)
614-
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${l})
612+
foreach (l ${${HAL_LIBRARIES_VAR}})
613+
if(NOT TARGET ${l})
614+
get_filename_component(l "${l}" ABSOLUTE)
615+
endif()
616+
list(APPEND OPENCV_HAL_LINKER_LIBS ${l})
615617
endforeach()
616618
# 2. headers
617-
foreach (h ${OpenCV_HAL_HEADERS})
618-
set(_includes "${_includes}\n#include \"${h}\"")
619+
foreach (h ${${HAL_HEADERS_VAR}})
620+
set(_hal_includes "${_hal_includes}\n#include \"${h}\"")
619621
endforeach()
620622
# 3. include paths
621-
ocv_include_directories(${OpenCV_HAL_INCLUDE_DIRS})
622-
endif()
623+
ocv_include_directories(${${HAL_INCLUDE_DIRS_VAR}})
624+
endmacro()
625+
626+
if(NOT DEFINED OpenCV_HAL)
627+
set(OpenCV_HAL "OpenCV_HAL")
628+
endif()
629+
foreach(hal ${OpenCV_HAL})
630+
ocv_debug_message(STATUS "OpenCV HAL: ${hal} ...")
631+
ocv_clear_vars(OpenCV_HAL_LIBRARIES OpenCV_HAL_HEADERS OpenCV_HAL_INCLUDE_DIRS)
632+
find_package(${hal} NO_MODULE QUIET)
633+
if(${hal}_FOUND)
634+
ocv_hal_register(OpenCV_HAL_LIBRARIES OpenCV_HAL_HEADERS OpenCV_HAL_INCLUDE_DIRS)
635+
list(APPEND OpenCV_USED_HAL "${hal} (ver ${${hal}_VERSION})")
636+
endif()
637+
endforeach()
623638
configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/custom_hal.hpp.in" "${CMAKE_BINARY_DIR}/custom_hal.hpp" @ONLY)
624-
unset(_includes)
639+
unset(_hal_includes)
640+
625641

626642
# ----------------------------------------------------------------------------
627643
# Add CUDA libraries (needed for apps/tools, samples)
@@ -1160,7 +1176,7 @@ endif(DEFINED WITH_VA_INTEL)
11601176
status(" Use Eigen:" HAVE_EIGEN THEN "YES (ver ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})" ELSE NO)
11611177
status(" Use Cuda:" HAVE_CUDA THEN "YES (ver ${CUDA_VERSION_STRING})" ELSE NO)
11621178
status(" Use OpenCL:" HAVE_OPENCL THEN YES ELSE NO)
1163-
status(" Use custom HAL:" OpenCV_HAL_FOUND THEN "YES (ver ${OpenCV_HAL_VERSION}, ${OpenCV_HAL_CONFIG})" ELSE "NO")
1179+
status(" Use custom HAL:" OpenCV_USED_HAL THEN "YES (${OpenCV_USED_HAL})" ELSE "NO")
11641180

11651181
if(HAVE_CUDA)
11661182
status("")

cmake/OpenCVUtils.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ endfunction()
126126
# clears all passed variables
127127
macro(ocv_clear_vars)
128128
foreach(_var ${ARGN})
129+
unset(${_var})
129130
unset(${_var} CACHE)
130131
endforeach()
131132
endmacro()

cmake/templates/custom_hal.hpp.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#ifndef _CUSTOM_HAL_INCLUDED_
22
#define _CUSTOM_HAL_INCLUDED_
33

4-
@_includes@
4+
@_hal_includes@
55

66
#endif

modules/core/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
set(the_description "The Core Functionality")
22
ocv_add_module(core
3-
PRIVATE_REQUIRED ${ZLIB_LIBRARIES} "${OPENCL_LIBRARIES}" "${VA_LIBRARIES}"
3+
PRIVATE_REQUIRED ${ZLIB_LIBRARIES} "${OPENCL_LIBRARIES}" "${VA_LIBRARIES}" "${OPENCV_HAL_LINKER_LIBS}"
44
OPTIONAL opencv_cudev
55
WRAP java python)
66

0 commit comments

Comments
 (0)