Skip to content

Commit e16227b

Browse files
committed
cmake: support multiple CPU targets
1 parent 47ae5f1 commit e16227b

28 files changed

+1440
-394
lines changed

CMakeLists.txt

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ if(POLICY CMP0042)
9191
cmake_policy(SET CMP0042 NEW)
9292
endif()
9393

94+
if(POLICY CMP0051)
95+
cmake_policy(SET CMP0051 NEW)
96+
endif()
97+
9498
include(cmake/OpenCVUtils.cmake)
9599

96100
# must go before the project command
@@ -280,16 +284,6 @@ OCV_OPTION(ENABLE_COVERAGE "Enable coverage collection with GCov"
280284
OCV_OPTION(ENABLE_OMIT_FRAME_POINTER "Enable -fomit-frame-pointer for GCC" ON IF CMAKE_COMPILER_IS_GNUCXX AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX) )
281285
OCV_OPTION(ENABLE_POWERPC "Enable PowerPC for GCC" ON IF (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES powerpc.*) )
282286
OCV_OPTION(ENABLE_FAST_MATH "Enable -ffast-math (not recommended for GCC 4.6.x)" OFF IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
283-
OCV_OPTION(ENABLE_SSE "Enable SSE instructions" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
284-
OCV_OPTION(ENABLE_SSE2 "Enable SSE2 instructions" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
285-
OCV_OPTION(ENABLE_SSE3 "Enable SSE3 instructions" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX OR CV_ICC) AND (X86 OR X86_64)) )
286-
OCV_OPTION(ENABLE_SSSE3 "Enable SSSE3 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
287-
OCV_OPTION(ENABLE_SSE41 "Enable SSE4.1 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX OR CV_ICC) AND (X86 OR X86_64)) )
288-
OCV_OPTION(ENABLE_SSE42 "Enable SSE4.2 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
289-
OCV_OPTION(ENABLE_POPCNT "Enable POPCNT instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
290-
OCV_OPTION(ENABLE_AVX "Enable AVX instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
291-
OCV_OPTION(ENABLE_AVX2 "Enable AVX2 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
292-
OCV_OPTION(ENABLE_FMA3 "Enable FMA3 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
293287
OCV_OPTION(ENABLE_NEON "Enable NEON instructions" "${NEON}" IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )
294288
OCV_OPTION(ENABLE_VFPV3 "Enable VFPv3-D32 instructions" OFF IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )
295289
OCV_OPTION(ENABLE_NOISY_WARNINGS "Show all warnings even if they are too noisy" OFF )
@@ -299,6 +293,9 @@ OCV_OPTION(ENABLE_IMPL_COLLECTION "Collect implementation data on function c
299293
OCV_OPTION(ENABLE_INSTRUMENTATION "Instrument functions to collect calls trace and performance" OFF )
300294
OCV_OPTION(ENABLE_GNU_STL_DEBUG "Enable GNU STL Debug mode (defines _GLIBCXX_DEBUG)" OFF IF ((NOT CMAKE_VERSION VERSION_LESS "2.8.11") AND CMAKE_COMPILER_IS_GNUCXX) )
301295
OCV_OPTION(GENERATE_ABI_DESCRIPTOR "Generate XML file for abi_compliance_checker tool" OFF IF UNIX)
296+
OCV_OPTION(CV_ENABLE_INTRINSICS "Use intrinsic-based optimized code" ON )
297+
OCV_OPTION(CV_DISABLE_OPTIMIZATION "Disable explicit optimized code (dispatched code/intrinsics/loop unrolling/etc)" OFF )
298+
302299

303300
OCV_OPTION(DOWNLOAD_EXTERNAL_TEST_DATA "Download external test data (Python executable and OPENCV_TEST_DATA_PATH environment variable may be required)" OFF )
304301

@@ -499,6 +496,9 @@ if(CMAKE_GENERATOR MATCHES "Makefiles|Ninja" AND "${CMAKE_BUILD_TYPE}" STREQUAL
499496
set(CMAKE_BUILD_TYPE Release)
500497
endif()
501498

499+
# --- Python Support ---
500+
include(cmake/OpenCVDetectPython.cmake)
501+
502502
include(cmake/OpenCVCompilerOptions.cmake)
503503

504504

@@ -576,9 +576,6 @@ else()
576576
unset(DOXYGEN_FOUND CACHE)
577577
endif()
578578

579-
# --- Python Support ---
580-
include(cmake/OpenCVDetectPython.cmake)
581-
582579
# --- Java Support ---
583580
include(cmake/OpenCVDetectApacheAnt.cmake)
584581
if(ANDROID)
@@ -867,6 +864,33 @@ if(NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
867864
status(" Configuration:" ${CMAKE_BUILD_TYPE})
868865
endif()
869866

867+
868+
# ========================= CPU code generation mode =========================
869+
status("")
870+
status(" CPU/HW features:")
871+
status(" Baseline:" "${CPU_BASELINE_FINAL}")
872+
if(NOT CPU_BASELINE STREQUAL CPU_BASELINE_FINAL)
873+
status(" requested:" "${CPU_BASELINE}")
874+
endif()
875+
if(CPU_BASELINE_REQUIRE)
876+
status(" required:" "${CPU_BASELINE_REQUIRE}")
877+
endif()
878+
if(CPU_BASELINE_DISABLE)
879+
status(" disabled:" "${CPU_BASELINE_DISABLE}")
880+
endif()
881+
if(CPU_DISPATCH_FINAL OR CPU_DISPATCH)
882+
status(" Dispatched code generation:" "${CPU_DISPATCH_FINAL}")
883+
if(NOT CPU_DISPATCH STREQUAL CPU_DISPATCH_FINAL)
884+
status(" requested:" "${CPU_DISPATCH}")
885+
endif()
886+
if(CPU_DISPATCH_REQUIRE)
887+
status(" required:" "${CPU_DISPATCH_REQUIRE}")
888+
endif()
889+
foreach(OPT ${CPU_DISPATCH_FINAL})
890+
status(" ${OPT} (${CPU_${OPT}_USAGE_COUNT} files):" "+ ${CPU_DISPATCH_${OPT}_INCLUDED}")
891+
endforeach()
892+
endif()
893+
870894
# ========================== C/C++ options ==========================
871895
if(CMAKE_CXX_COMPILER_VERSION)
872896
set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_CXX_COMPILER_VERSION})")

0 commit comments

Comments
 (0)