Commit 5a791e6e authored by Alexander Alekhin's avatar Alexander Alekhin Committed by Vadim Pisarevsky

cmake: update reporting of excluded dispatching files (#10711)

* cmake: add ocv_get_smart_file_name() macro

* cmake: avoid adding files for unavailable dispatch modes
parent 61e76e76
...@@ -580,7 +580,8 @@ macro(ocv_compiler_optimization_process_sources SOURCES_VAR_NAME LIBS_VAR_NAME T ...@@ -580,7 +580,8 @@ macro(ocv_compiler_optimization_process_sources SOURCES_VAR_NAME LIBS_VAR_NAME T
list(APPEND __result "${fname}") list(APPEND __result "${fname}")
#continue() #continue()
elseif(CV_DISABLE_OPTIMIZATION OR NOT CV_ENABLE_INTRINSICS) elseif(CV_DISABLE_OPTIMIZATION OR NOT CV_ENABLE_INTRINSICS)
message(STATUS "Excluding from source files list (optimization is disabled): ${fname}") ocv_get_smart_file_name(fname_ "${fname}")
message(STATUS "Excluding from source files list (optimization is disabled): ${fname_}")
#continue() #continue()
else() else()
get_source_file_property(__definitions "${fname}" COMPILE_DEFINITIONS) get_source_file_property(__definitions "${fname}" COMPILE_DEFINITIONS)
...@@ -622,7 +623,8 @@ macro(ocv_compiler_optimization_process_sources SOURCES_VAR_NAME LIBS_VAR_NAME T ...@@ -622,7 +623,8 @@ macro(ocv_compiler_optimization_process_sources SOURCES_VAR_NAME LIBS_VAR_NAME T
endif() endif()
endforeach() endforeach()
if(NOT __opt_found) if(NOT __opt_found)
message(STATUS "Excluding from source files list: ${fname}") ocv_get_smart_file_name(fname_ "${fname}")
message(STATUS "Excluding from source files list: ${fname_}")
endif() endif()
endif() endif()
else() else()
...@@ -702,15 +704,18 @@ macro(ocv_compiler_optimization_fill_cpu_config) ...@@ -702,15 +704,18 @@ macro(ocv_compiler_optimization_fill_cpu_config)
#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_${OPT} #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_${OPT}
# define CV_TRY_${OPT} 1 # define CV_TRY_${OPT} 1
# define CV_CPU_HAS_SUPPORT_${OPT} 1 # define CV_CPU_HAS_SUPPORT_${OPT} 1
# define CV_CPU_CALL_${OPT}(fn, args) return (opt_${OPT}::fn args) # define CV_CPU_CALL_${OPT}(fn, args) return (cpu_baseline::fn args)
# define CV_CPU_CALL_${OPT}_(fn, args) return (opt_${OPT}::fn args)
#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_${OPT} #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_${OPT}
# define CV_TRY_${OPT} 1 # define CV_TRY_${OPT} 1
# define CV_CPU_HAS_SUPPORT_${OPT} (cv::checkHardwareSupport(CV_CPU_${OPT})) # define CV_CPU_HAS_SUPPORT_${OPT} (cv::checkHardwareSupport(CV_CPU_${OPT}))
# define CV_CPU_CALL_${OPT}(fn, args) if (CV_CPU_HAS_SUPPORT_${OPT}) return (opt_${OPT}::fn args) # define CV_CPU_CALL_${OPT}(fn, args) if (CV_CPU_HAS_SUPPORT_${OPT}) return (opt_${OPT}::fn args)
# define CV_CPU_CALL_${OPT}_(fn, args) if (CV_CPU_HAS_SUPPORT_${OPT}) return (opt_${OPT}::fn args)
#else #else
# define CV_TRY_${OPT} 0 # define CV_TRY_${OPT} 0
# define CV_CPU_HAS_SUPPORT_${OPT} 0 # define CV_CPU_HAS_SUPPORT_${OPT} 0
# define CV_CPU_CALL_${OPT}(fn, args) # define CV_CPU_CALL_${OPT}(fn, args)
# define CV_CPU_CALL_${OPT}_(fn, args)
#endif #endif
#define __CV_CPU_DISPATCH_CHAIN_${OPT}(fn, args, mode, ...) CV_CPU_CALL_${OPT}(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) #define __CV_CPU_DISPATCH_CHAIN_${OPT}(fn, args, mode, ...) CV_CPU_CALL_${OPT}(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__))
") ")
...@@ -761,7 +766,10 @@ macro(ocv_add_dispatched_file filename) ...@@ -761,7 +766,10 @@ macro(ocv_add_dispatched_file filename)
else() else()
file(WRITE "${__file}" "${__codestr}") file(WRITE "${__file}" "${__codestr}")
endif() endif()
list(APPEND OPENCV_MODULE_${the_module}_SOURCES_DISPATCHED "${__file}")
if(";${CPU_DISPATCH};" MATCHES "${OPT}" OR __CPU_DISPATCH_INCLUDE_ALL)
list(APPEND OPENCV_MODULE_${the_module}_SOURCES_DISPATCHED "${__file}")
endif()
set(__declarations_str "${__declarations_str} set(__declarations_str "${__declarations_str}
#define CV_CPU_DISPATCH_MODE ${OPT} #define CV_CPU_DISPATCH_MODE ${OPT}
...@@ -786,6 +794,14 @@ macro(ocv_add_dispatched_file filename) ...@@ -786,6 +794,14 @@ macro(ocv_add_dispatched_file filename)
endif() endif()
endmacro() endmacro()
# Workaround to support code which always require all code paths
macro(ocv_add_dispatched_file_force_all)
set(__CPU_DISPATCH_INCLUDE_ALL 1)
ocv_add_dispatched_file(${ARGN})
unset(__CPU_DISPATCH_INCLUDE_ALL)
endmacro()
if(CV_DISABLE_OPTIMIZATION OR CV_ICC) if(CV_DISABLE_OPTIMIZATION OR CV_ICC)
ocv_update(CV_ENABLE_UNROLLED 0) ocv_update(CV_ENABLE_UNROLLED 0)
else() else()
......
...@@ -118,7 +118,7 @@ endmacro() ...@@ -118,7 +118,7 @@ endmacro()
# check if "sub" (file or dir) is below "dir" # check if "sub" (file or dir) is below "dir"
function(is_subdir res dir sub ) function(ocv_is_subdir res dir sub )
get_filename_component(dir "${dir}" ABSOLUTE) get_filename_component(dir "${dir}" ABSOLUTE)
get_filename_component(sub "${sub}" ABSOLUTE) get_filename_component(sub "${sub}" ABSOLUTE)
file(TO_CMAKE_PATH "${dir}" dir) file(TO_CMAKE_PATH "${dir}" dir)
...@@ -140,7 +140,7 @@ endfunction() ...@@ -140,7 +140,7 @@ endfunction()
function(ocv_is_opencv_directory result_var dir) function(ocv_is_opencv_directory result_var dir)
set(result FALSE) set(result FALSE)
foreach(parent ${OpenCV_SOURCE_DIR} ${OpenCV_BINARY_DIR} ${OPENCV_EXTRA_MODULES_PATH}) foreach(parent ${OpenCV_SOURCE_DIR} ${OpenCV_BINARY_DIR} ${OPENCV_EXTRA_MODULES_PATH})
is_subdir(result "${parent}" "${dir}") ocv_is_subdir(result "${parent}" "${dir}")
if(result) if(result)
break() break()
endif() endif()
...@@ -1461,6 +1461,21 @@ macro(ocv_copyfiles_add_target target list_var comment_str) ...@@ -1461,6 +1461,21 @@ macro(ocv_copyfiles_add_target target list_var comment_str)
add_custom_target(${target} DEPENDS "${OPENCV_DEPHELPER}/${target}") add_custom_target(${target} DEPENDS "${OPENCV_DEPHELPER}/${target}")
endmacro() endmacro()
macro(ocv_get_smart_file_name output_var fpath)
ocv_is_subdir(__subir "${OpenCV_BINARY_DIR}" "${fpath}")
if(__subir)
file(RELATIVE_PATH ${output_var} "${OpenCV_BINARY_DIR}" "${fpath}")
set(${output_var} "<BUILD>/${${output_var}}")
else()
ocv_is_subdir(__subir "${OpenCV_SOURCE_DIR}" "${fpath}")
if(__subir)
file(RELATIVE_PATH ${output_var} "${OpenCV_SOURCE_DIR}" "${fpath}")
else()
set(${output_var} "${fpath}")
endif()
endif()
unset(__subir)
endmacro()
# Needed by install(DIRECTORY ...) # Needed by install(DIRECTORY ...)
if(NOT CMAKE_VERSION VERSION_LESS 3.1) if(NOT CMAKE_VERSION VERSION_LESS 3.1)
......
...@@ -3420,7 +3420,7 @@ cvtScaleHalf_( const T* src, size_t sstep, DT* dst, size_t dstep, Size size); ...@@ -3420,7 +3420,7 @@ cvtScaleHalf_( const T* src, size_t sstep, DT* dst, size_t dstep, Size size);
template<> void template<> void
cvtScaleHalf_<float, short>( const float* src, size_t sstep, short* dst, size_t dstep, Size size ) cvtScaleHalf_<float, short>( const float* src, size_t sstep, short* dst, size_t dstep, Size size )
{ {
CV_CPU_CALL_FP16(cvtScaleHalf_SIMD32f16f, (src, sstep, dst, dstep, size)); CV_CPU_CALL_FP16_(cvtScaleHalf_SIMD32f16f, (src, sstep, dst, dstep, size));
#if !defined(CV_CPU_COMPILE_FP16) #if !defined(CV_CPU_COMPILE_FP16)
sstep /= sizeof(src[0]); sstep /= sizeof(src[0]);
...@@ -3439,7 +3439,7 @@ cvtScaleHalf_<float, short>( const float* src, size_t sstep, short* dst, size_t ...@@ -3439,7 +3439,7 @@ cvtScaleHalf_<float, short>( const float* src, size_t sstep, short* dst, size_t
template<> void template<> void
cvtScaleHalf_<short, float>( const short* src, size_t sstep, float* dst, size_t dstep, Size size ) cvtScaleHalf_<short, float>( const short* src, size_t sstep, float* dst, size_t dstep, Size size )
{ {
CV_CPU_CALL_FP16(cvtScaleHalf_SIMD16f32f, (src, sstep, dst, dstep, size)); CV_CPU_CALL_FP16_(cvtScaleHalf_SIMD16f32f, (src, sstep, dst, dstep, size));
#if !defined(CV_CPU_COMPILE_FP16) #if !defined(CV_CPU_COMPILE_FP16)
sstep /= sizeof(src[0]); sstep /= sizeof(src[0]);
......
...@@ -239,7 +239,7 @@ TEST(hal_intrin, float64x2) { ...@@ -239,7 +239,7 @@ TEST(hal_intrin, float64x2) {
TEST(hal_intrin,float16x4) TEST(hal_intrin,float16x4)
{ {
CV_CPU_CALL_FP16(test_hal_intrin_float16x4, ()); CV_CPU_CALL_FP16_(test_hal_intrin_float16x4, ());
throw SkipTestException("Unsupported hardware: FP16 is not available"); throw SkipTestException("Unsupported hardware: FP16 is not available");
} }
......
...@@ -8,7 +8,7 @@ endif() ...@@ -8,7 +8,7 @@ endif()
set(the_description "Deep neural network module. It allows to load models from different frameworks and to make forward pass") set(the_description "Deep neural network module. It allows to load models from different frameworks and to make forward pass")
ocv_add_dispatched_file("layers/layers_common" AVX AVX2 AVX512_SKX) ocv_add_dispatched_file_force_all("layers/layers_common" AVX AVX2 AVX512_SKX)
ocv_add_module(dnn opencv_core opencv_imgproc WRAP python matlab java js) ocv_add_module(dnn opencv_core opencv_imgproc WRAP python matlab java js)
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-shadow -Wno-parentheses -Wmaybe-uninitialized -Wsign-promo ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-shadow -Wno-parentheses -Wmaybe-uninitialized -Wsign-promo
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment