From ffaf15d0d95c4e40649e3be4bb1d455b5e5fb22b Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Fri, 24 Jan 2020 15:23:50 +0300 Subject: [PATCH] cmake: reuse OpenCV NEON detection in carotene - use carotene if NEON available only --- 3rdparty/carotene/hal/CMakeLists.txt | 16 ---------------- CMakeLists.txt | 10 +++++++--- 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/3rdparty/carotene/hal/CMakeLists.txt b/3rdparty/carotene/hal/CMakeLists.txt index 556adf978c..a87f7a0949 100644 --- a/3rdparty/carotene/hal/CMakeLists.txt +++ b/3rdparty/carotene/hal/CMakeLists.txt @@ -58,22 +58,6 @@ function(compile_carotene) endif() add_subdirectory("${CAROTENE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/carotene") - - if(ARM OR AARCH64) - if(CMAKE_BUILD_TYPE) - set(CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE}) - endif() - check_cxx_compiler_flag("-mfpu=neon" CXX_HAS_MFPU_NEON) - check_c_compiler_flag("-mfpu=neon" C_HAS_MFPU_NEON) - if(${CXX_HAS_MFPU_NEON} AND ${C_HAS_MFPU_NEON} AND NOT "${CMAKE_CXX_FLAGS} " MATCHES "-mfpu=neon[^ ]*") - get_target_property(old_flags "carotene_objs" COMPILE_FLAGS) - if(old_flags) - set_target_properties("carotene_objs" PROPERTIES COMPILE_FLAGS "${old_flags} -mfpu=neon") - else() - set_target_properties("carotene_objs" PROPERTIES COMPILE_FLAGS "-mfpu=neon") - endif() - endif() - endif() endfunction() compile_carotene() diff --git a/CMakeLists.txt b/CMakeLists.txt index f4a2568db6..3a7a6f1d7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -797,9 +797,13 @@ endif() foreach(hal ${OpenCV_HAL}) if(hal STREQUAL "carotene") - add_subdirectory(3rdparty/carotene/hal) - ocv_hal_register(CAROTENE_HAL_LIBRARIES CAROTENE_HAL_HEADERS CAROTENE_HAL_INCLUDE_DIRS) - list(APPEND OpenCV_USED_HAL "carotene (ver ${CAROTENE_HAL_VERSION})") + if(";${CPU_BASELINE_FINAL};" MATCHES ";NEON;") + add_subdirectory(3rdparty/carotene/hal) + ocv_hal_register(CAROTENE_HAL_LIBRARIES CAROTENE_HAL_HEADERS CAROTENE_HAL_INCLUDE_DIRS) + list(APPEND OpenCV_USED_HAL "carotene (ver ${CAROTENE_HAL_VERSION})") + else() + message(STATUS "Carotene: NEON is not available, disabling carotene...") + endif() elseif(hal STREQUAL "openvx") add_subdirectory(3rdparty/openvx) ocv_hal_register(OPENVX_HAL_LIBRARIES OPENVX_HAL_HEADERS OPENVX_HAL_INCLUDE_DIRS)