Skip to content

Commit 2eb3c02

Browse files
committed
Merge pull request opencv#9431 from alalek:cmake_compiler_version
2 parents 179ef0a + f694192 commit 2eb3c02

File tree

6 files changed

+19
-76
lines changed

6 files changed

+19
-76
lines changed

3rdparty/tbb/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ if(HAVE_PTHREAD)
7171
add_definitions(-DUSE_PTHREAD) #required for Unix
7272
endif()
7373

74-
if (CMAKE_COMPILER_IS_GNUCXX)
74+
if(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_COMPILER_IS_CLANGCXX)
7575
add_definitions(-DTBB_USE_GCC_BUILTINS=1) #required for ARM GCC
76-
if (NOT CMAKE_OPENCV_GCC_VERSION_NUM LESS 600)
76+
if(NOT CMAKE_CXX_COMPILER_VERSION LESS 6.0)
7777
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flifetime-dse=1") # workaround for GCC 6.x
7878
endif()
7979
endif()

CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -943,10 +943,6 @@ endif()
943943
# ========================== C/C++ options ==========================
944944
if(CMAKE_CXX_COMPILER_VERSION)
945945
set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_CXX_COMPILER_VERSION})")
946-
elseif(CMAKE_COMPILER_IS_CLANGCXX)
947-
set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_CLANG_REGEX_VERSION})")
948-
elseif(CMAKE_COMPILER_IS_GNUCXX)
949-
set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_GCC_REGEX_VERSION})")
950946
else()
951947
set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}")
952948
endif()

cmake/OpenCVCompilerOptions.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,9 @@ set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEA
279279
set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "Extra linker flags for Debug build")
280280

281281
# set default visibility to hidden
282-
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_OPENCV_GCC_VERSION_NUM GREATER 399)
282+
if((CMAKE_COMPILER_ID STREQUAL "GNU" OR CMAKE_COMPILER_ID STREQUAL "Clang")
283+
AND NOT OPENCV_SKIP_VISIBILITY_HIDDEN
284+
AND NOT CMAKE_CXX_FLAGS MATCHES "-fvisibility")
283285
add_extra_compiler_option(-fvisibility=hidden)
284286
add_extra_compiler_option(-fvisibility-inlines-hidden)
285287
endif()

cmake/OpenCVDetectCUDA.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ if(CUDA_FOUND)
220220
endif()
221221

222222
# disabled because of multiple warnings during building nvcc auto generated files
223-
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_GCC_REGEX_VERSION VERSION_GREATER "4.6.0")
223+
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.6.0")
224224
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wunused-but-set-variable)
225225
endif()
226226

cmake/OpenCVDetectCXXCompiler.cmake

Lines changed: 4 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -45,59 +45,11 @@ if(MSVC AND CMAKE_C_COMPILER MATCHES "icc|icl")
4545
set(CV_ICC __INTEL_COMPILER_FOR_WINDOWS)
4646
endif()
4747

48-
# ----------------------------------------------------------------------------
49-
# Detect GNU version:
50-
# ----------------------------------------------------------------------------
51-
if(CMAKE_COMPILER_IS_CLANGCXX)
52-
set(CMAKE_GCC_REGEX_VERSION "4.2.1")
53-
set(CMAKE_OPENCV_GCC_VERSION_MAJOR 4)
54-
set(CMAKE_OPENCV_GCC_VERSION_MINOR 2)
55-
set(CMAKE_OPENCV_GCC_VERSION 42)
56-
set(CMAKE_OPENCV_GCC_VERSION_NUM 402)
57-
58-
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -v
59-
ERROR_VARIABLE CMAKE_OPENCV_CLANG_VERSION_FULL
60-
ERROR_STRIP_TRAILING_WHITESPACE)
61-
62-
string(REGEX MATCH "version.*$" CMAKE_OPENCV_CLANG_VERSION_FULL "${CMAKE_OPENCV_CLANG_VERSION_FULL}")
63-
string(REGEX MATCH "[0-9]+\\.[0-9]+" CMAKE_CLANG_REGEX_VERSION "${CMAKE_OPENCV_CLANG_VERSION_FULL}")
64-
65-
elseif(CMAKE_COMPILER_IS_GNUCXX)
66-
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
67-
OUTPUT_VARIABLE CMAKE_OPENCV_GCC_VERSION_FULL
68-
OUTPUT_STRIP_TRAILING_WHITESPACE)
69-
70-
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -v
71-
ERROR_VARIABLE CMAKE_OPENCV_GCC_INFO_FULL
72-
OUTPUT_STRIP_TRAILING_WHITESPACE)
73-
74-
# Typical output in CMAKE_OPENCV_GCC_VERSION_FULL: "c+//0 (whatever) 4.2.3 (...)"
75-
# Look for the version number, major.minor.build
76-
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")
77-
if(NOT CMAKE_GCC_REGEX_VERSION)#major.minor
78-
string(REGEX MATCH "[0-9]+\\.[0-9]+" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")
79-
endif()
80-
81-
if(CMAKE_GCC_REGEX_VERSION)
82-
# Split the parts:
83-
string(REGEX MATCHALL "[0-9]+" CMAKE_OPENCV_GCC_VERSIONS "${CMAKE_GCC_REGEX_VERSION}")
84-
85-
list(GET CMAKE_OPENCV_GCC_VERSIONS 0 CMAKE_OPENCV_GCC_VERSION_MAJOR)
86-
list(GET CMAKE_OPENCV_GCC_VERSIONS 1 CMAKE_OPENCV_GCC_VERSION_MINOR)
87-
else()#compiler returned just the major version number
88-
string(REGEX MATCH "[0-9]+" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")
89-
if(NOT CMAKE_GCC_REGEX_VERSION)#compiler did not return anything reasonable
90-
set(CMAKE_GCC_REGEX_VERSION "0")
91-
message(WARNING "GCC version not detected!")
92-
endif()
93-
set(CMAKE_OPENCV_GCC_VERSION_MAJOR ${CMAKE_GCC_REGEX_VERSION})
94-
set(CMAKE_OPENCV_GCC_VERSION_MINOR 0)
95-
endif()
96-
97-
set(CMAKE_OPENCV_GCC_VERSION ${CMAKE_OPENCV_GCC_VERSION_MAJOR}${CMAKE_OPENCV_GCC_VERSION_MINOR})
98-
math(EXPR CMAKE_OPENCV_GCC_VERSION_NUM "${CMAKE_OPENCV_GCC_VERSION_MAJOR}*100 + ${CMAKE_OPENCV_GCC_VERSION_MINOR}")
99-
message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION} (${CMAKE_OPENCV_GCC_VERSION_NUM})")
48+
if(NOT DEFINED CMAKE_CXX_COMPILER_VERSION)
49+
message(WARNING "Compiler version is not available: CMAKE_CXX_COMPILER_VERSION is not set")
50+
endif()
10051

52+
if(CMAKE_COMPILER_IS_GNUCXX)
10153
if(WIN32)
10254
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
10355
OUTPUT_VARIABLE OPENCV_GCC_TARGET_MACHINE

cmake/OpenCVFindLibsVideo.cmake

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -89,23 +89,16 @@ if(WITH_PVAPI)
8989
set(PVAPI_SDK_SUBDIR arm)
9090
endif()
9191

92-
get_filename_component(_PVAPI_LIBRARY "${PVAPI_INCLUDE_PATH}/../lib-pc" ABSOLUTE)
93-
if(PVAPI_SDK_SUBDIR)
94-
set(_PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${PVAPI_SDK_SUBDIR}")
95-
endif()
96-
if(NOT WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
97-
set(_PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${CMAKE_OPENCV_GCC_VERSION_MAJOR}.${CMAKE_OPENCV_GCC_VERSION_MINOR}")
98-
endif()
92+
get_filename_component(_PVAPI_LIBRARY_HINT "${PVAPI_INCLUDE_PATH}/../lib-pc" ABSOLUTE)
9993

100-
if(WIN32)
101-
if(MINGW)
102-
set(PVAPI_DEFINITIONS "-DPVDECL=__stdcall")
103-
endif(MINGW)
104-
set(PVAPI_LIBRARY "${_PVAPI_LIBRARY}/PvAPI.lib" CACHE PATH "The PvAPI library")
105-
else(WIN32)
106-
set(PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${CMAKE_STATIC_LIBRARY_PREFIX}PvAPI${CMAKE_STATIC_LIBRARY_SUFFIX}" CACHE PATH "The PvAPI library")
107-
endif(WIN32)
108-
if(EXISTS "${PVAPI_LIBRARY}")
94+
find_library(PVAPI_LIBRARY NAMES "PvAPI" PATHS "${_PVAPI_LIBRARY_HINT}")
95+
96+
if(PVAPI_LIBRARY)
97+
if(WIN32)
98+
if(MINGW)
99+
set(PVAPI_DEFINITIONS "-DPVDECL=__stdcall")
100+
endif(MINGW)
101+
endif()
109102
set(HAVE_PVAPI TRUE)
110103
endif()
111104
endif(PVAPI_INCLUDE_PATH)

0 commit comments

Comments
 (0)