From 2e86cedef276d0955fff614f76f4970e2ad96a77 Mon Sep 17 00:00:00 2001 From: Alexander Nitsch Date: Mon, 23 Feb 2015 15:01:00 +0100 Subject: [PATCH 1/5] Fix MinGW detection on x86 MinGW-w64 always uses "w64" as vendor key which the previously used check for "64" anywhere in the target triplet matched. This would lead to MinGW-w64 setups always being treated as x64. Turns out we do not even need this additional check since the architecture has been correctly determined earlier in this file. No need to do it again. --- cmake/OpenCVDetectCXXCompiler.cmake | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake index 72d939917a..361178be05 100644 --- a/cmake/OpenCVDetectCXXCompiler.cmake +++ b/cmake/OpenCVDetectCXXCompiler.cmake @@ -147,11 +147,7 @@ if(MSVC) elseif(MINGW) set(OpenCV_RUNTIME mingw) - execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine - OUTPUT_VARIABLE OPENCV_GCC_TARGET_MACHINE - OUTPUT_STRIP_TRAILING_WHITESPACE) - if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "64") - set(MINGW64 1) + if(MINGW64) set(OpenCV_ARCH x64) else() set(OpenCV_ARCH x86) From 8f84a73b821d3edad445d29478d2ab31b03d0381 Mon Sep 17 00:00:00 2001 From: Alexander Nitsch Date: Sat, 7 Mar 2015 15:37:21 +0100 Subject: [PATCH 2/5] Fix MinGW architecture detection Fix typo that would always lead to detection of x86 for MinGW builds in the OpenCVConfig.cmake file. --- cmake/OpenCVConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/OpenCVConfig.cmake b/cmake/OpenCVConfig.cmake index dfd7e8f268..b69b60ff5b 100644 --- a/cmake/OpenCVConfig.cmake +++ b/cmake/OpenCVConfig.cmake @@ -87,7 +87,7 @@ elseif(MINGW) set(OpenCV_RUNTIME mingw) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine - OUTPUT_VARIABLE OPENCV_GCC_TARGET_MACHINE + OUTPUT_VARIABLE CMAKE_OPENCV_GCC_TARGET_MACHINE OUTPUT_STRIP_TRAILING_WHITESPACE) if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "64") set(MINGW64 1) From 3fff0e5b3c771c3b8f6b78ca9ccb803b3b16ed6b Mon Sep 17 00:00:00 2001 From: Alexander Nitsch Date: Sat, 7 Mar 2015 15:49:48 +0100 Subject: [PATCH 3/5] Fix MinGW detection on x86 Make detection of x64 using the gcc's target triplet identical to the one used in cmake/OpenCVDetectCXXCompiler.cmake. Otherwise, MinGW-w64 setups will always be treated as x64 since they contain "w64" as vendor key. --- cmake/OpenCVConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/OpenCVConfig.cmake b/cmake/OpenCVConfig.cmake index b69b60ff5b..cf45eb6bad 100644 --- a/cmake/OpenCVConfig.cmake +++ b/cmake/OpenCVConfig.cmake @@ -89,7 +89,7 @@ elseif(MINGW) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine OUTPUT_VARIABLE CMAKE_OPENCV_GCC_TARGET_MACHINE OUTPUT_STRIP_TRAILING_WHITESPACE) - if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "64") + if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64") set(MINGW64 1) set(OpenCV_ARCH x64) else() From 66e653d24d4f2c773f57d37d0705b86720cfe6d4 Mon Sep 17 00:00:00 2001 From: Alexander Nitsch Date: Tue, 17 Mar 2015 13:52:59 +0100 Subject: [PATCH 4/5] Remove local variables from CMAKE namespace --- cmake/OpenCVConfig.cmake | 4 ++-- cmake/OpenCVDetectCXXCompiler.cmake | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/OpenCVConfig.cmake b/cmake/OpenCVConfig.cmake index cf45eb6bad..4f0e398586 100644 --- a/cmake/OpenCVConfig.cmake +++ b/cmake/OpenCVConfig.cmake @@ -87,9 +87,9 @@ elseif(MINGW) set(OpenCV_RUNTIME mingw) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine - OUTPUT_VARIABLE CMAKE_OPENCV_GCC_TARGET_MACHINE + OUTPUT_VARIABLE OPENCV_GCC_TARGET_MACHINE OUTPUT_STRIP_TRAILING_WHITESPACE) - if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64") + if(OPENCV_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64") set(MINGW64 1) set(OpenCV_ARCH x64) else() diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake index 361178be05..871331883c 100644 --- a/cmake/OpenCVDetectCXXCompiler.cmake +++ b/cmake/OpenCVDetectCXXCompiler.cmake @@ -91,9 +91,9 @@ elseif(CMAKE_COMPILER_IS_GNUCXX) if(WIN32) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine - OUTPUT_VARIABLE CMAKE_OPENCV_GCC_TARGET_MACHINE + OUTPUT_VARIABLE OPENCV_GCC_TARGET_MACHINE OUTPUT_STRIP_TRAILING_WHITESPACE) - if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64") + if(OPENCV_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64") set(MINGW64 1) endif() endif() From afd9de6f1bb51094c73ee8dfb1a3592243f9c4df Mon Sep 17 00:00:00 2001 From: Alexander Nitsch Date: Mon, 30 Mar 2015 23:38:43 +0200 Subject: [PATCH 5/5] Fix static/shared lib detection The check for BUILD_SHARED_LIBS had its logic backwards. If this variable is not defined we must assume a build of static libs. --- cmake/OpenCVConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/OpenCVConfig.cmake b/cmake/OpenCVConfig.cmake index 4f0e398586..09174b02fe 100644 --- a/cmake/OpenCVConfig.cmake +++ b/cmake/OpenCVConfig.cmake @@ -47,7 +47,7 @@ endif() if(NOT DEFINED OpenCV_STATIC) # look for global setting - if(NOT DEFINED BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS) + if(BUILD_SHARED_LIBS) set(OpenCV_STATIC OFF) else() set(OpenCV_STATIC ON)