From 4560f79e70b41f9b3143115d6cfe684527bf8f48 Mon Sep 17 00:00:00 2001 From: Gregorio Litenstein Date: Sat, 2 Sep 2017 18:26:29 -0300 Subject: [PATCH] Update opencv to 3.3.0 --- src/opencv-1-fixes.patch | 266 +++++++++--------------- src/opencv-2-fixes-cmake.patch | 71 +++---- src/opencv-3-fix-in-bad-dir.patch | 39 ++++ src/opencv-3-fixes-pkgconfig.patch | 156 -------------- src/opencv-4-reverse-deps-sublist.patch | 37 ---- src/opencv-5-fix-in-bad-dir.patch | 65 ------ src/opencv.mk | 17 +- 7 files changed, 184 insertions(+), 467 deletions(-) create mode 100644 src/opencv-3-fix-in-bad-dir.patch delete mode 100644 src/opencv-3-fixes-pkgconfig.patch delete mode 100644 src/opencv-4-reverse-deps-sublist.patch delete mode 100644 src/opencv-5-fix-in-bad-dir.patch diff --git a/src/opencv-1-fixes.patch b/src/opencv-1-fixes.patch index 8cb17b9a..37b08e2a 100644 --- a/src/opencv-1-fixes.patch +++ b/src/opencv-1-fixes.patch @@ -1,142 +1,42 @@ This file is part of MXE. See LICENSE.md for licensing information. +Contains ad hoc patches for cross building. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Gregorio Litenstein +Date: Thu, 31 Aug 2017 18:27:53 -0300 +Subject: [PATCH] Update patch-1 for opencv-3.3.0 + + diff --git a/CMakeLists.txt b/CMakeLists.txt -index 579312d..53e4132 100644 +index 1111111..2222222 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -38,7 +38,7 @@ else(NOT CMAKE_TOOLCHAIN_FILE) - #Android: set output folder to ${CMAKE_BINARY_DIR} - set( LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_BINARY_DIR} CACHE PATH "root for library output, set this to change where android libs are compiled to" ) - # any crosscompiling -- set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory") -+ #set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory") - endif(NOT CMAKE_TOOLCHAIN_FILE) - - # -------------------------------------------------------------- -diff -ur a/modules/core/src/lapack.cpp b/modules/core/src/lapack.cpp ---- a/modules/core/src/lapack.cpp 2013-12-28 04:09:18.000000000 +1100 -+++ b/modules/core/src/lapack.cpp 2014-01-05 21:14:52.869649685 +1100 -@@ -716,7 +716,7 @@ - - static void JacobiSVD(double* At, size_t astep, double* W, double* Vt, size_t vstep, int m, int n, int n1=-1) - { -- JacobiSVDImpl_(At, astep, W, Vt, vstep, m, n, !Vt ? 0 : n1 < 0 ? n : n1, DBL_MIN, DBL_EPSILON*10); -+ JacobiSVDImpl_(At, astep, W, Vt, vstep, m, n, !Vt ? 0 : n1 < 0 ? n : n1, DBL_MIN, DBL_EPSILON*10L); - } - - /* y[0:m,0:n] += diag(a[0:1,0:m]) * x[0:m,0:n] */ -diff -ur a/modules/core/src/precomp.hpp b/modules/core/src/precomp.hpp ---- a/modules/core/src/precomp.hpp 2013-12-28 04:09:18.000000000 +1100 -+++ b/modules/core/src/precomp.hpp 2014-01-05 21:05:08.968467624 +1100 -@@ -51,7 +51,7 @@ - - #include - #include --#include -+#include - #include - #include - #include -diff -ur a/modules/highgui/src/window_w32.cpp b/modules/highgui/src/window_w32.cpp ---- a/modules/highgui/src/window_w32.cpp 2013-12-28 04:09:18.000000000 +1100 -+++ b/modules/highgui/src/window_w32.cpp 2014-01-05 21:23:48.318950096 +1100 -@@ -75,7 +75,7 @@ - #include - #include - #include "opencv2/highgui/highgui.hpp" --#include -+#include - #endif - - static const char* trackbar_text = +@@ -36,7 +36,7 @@ if(NOT DEFINED CMAKE_INSTALL_PREFIX) + if(NOT CMAKE_TOOLCHAIN_FILE) + # it _must_ go before project(OpenCV) in order to work + if(WIN32) +- set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory") ++ #set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory") + else() + set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation Directory") + endif() -diff -ur a/cmake/OpenCVFindLibsVideo.cmake b/cmake/OpenCVFindLibsVideo.cmake ---- a/cmake/OpenCVFindLibsVideo.cmake 2013-12-28 04:09:18.000000000 +1100 -+++ b/cmake/OpenCVFindLibsVideo.cmake 2014-01-07 22:34:22.291927941 +1100 -@@ -228,12 +228,12 @@ +diff --git a/CMakeLists.txt.orig b/CMakeLists.txt +index 1b6b95e5..15d86af2 100644 +--- a/CMakeLists.txt.orig ++++ b/CMakeLists.txt +@@ -44,7 +44,7 @@ if(NOT DEFINED CMAKE_INSTALL_PREFIX) + #Android: set output folder to ${CMAKE_BINARY_DIR} + set( LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_BINARY_DIR} CACHE PATH "root for library output, set this to change where android libs are compiled to" ) + # any crosscompiling +- set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory") ++ #set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory") + endif(NOT CMAKE_TOOLCHAIN_FILE) + endif() - # --- Extra HighGUI libs on Windows --- - if(WIN32) -- list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32 setupapi ws2_32 vfw32) -+ list(APPEND HIGHGUI_LIBRARIES -lcomctl32 -lgdi32 -lole32 -lsetupapi -lws2_32 -lvfw32 -lstrmiids -loleaut32 -luuid) - if(MINGW64) -- list(APPEND HIGHGUI_LIBRARIES avifil32 avicap32 winmm msvfw32) -- list(REMOVE_ITEM HIGHGUI_LIBRARIES vfw32) -+ list(APPEND HIGHGUI_LIBRARIES -lavifil32 -lavicap32 -lwinmm -lmsvfw32) -+ list(REMOVE_ITEM HIGHGUI_LIBRARIES -lvfw32) - elseif(MINGW) -- list(APPEND HIGHGUI_LIBRARIES winmm) -+ list(APPEND HIGHGUI_LIBRARIES -lwinmm) - endif() - endif(WIN32) - ---- a/modules/highgui/CMakeLists.txt -+++ b/modules/highgui/CMakeLists.txt -@@ -262,7 +267,7 @@ set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") - ocv_add_precompiled_headers(${the_module}) - ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations) - --if(WIN32 AND WITH_FFMPEG) -+if(WIN32 AND WITH_FFMPEG AND BUILD_SHARED_LIBS) - #copy ffmpeg dll to the output folder - if(MSVC64 OR MINGW64) - set(FFMPEG_SUFFIX _64) -diff --git a/cmake/OpenCVFindLZMA.cmake b/cmake/OpenCVFindLZMA.cmake -new file mode 100644 -index 0000000..0b46b2c ---- /dev/null -+++ b/cmake/OpenCVFindLZMA.cmake -@@ -0,0 +1,48 @@ -+# - Find lzma and lzmadec -+# Find the native LZMA includes and library -+# -+# LZMA_INCLUDE_DIR - where to find lzma.h, etc. -+# LZMA_LIBRARIES - List of libraries when using liblzma. -+# LZMA_FOUND - True if liblzma found. -+# LZMADEC_INCLUDE_DIR - where to find lzmadec.h, etc. -+# LZMADEC_LIBRARIES - List of libraries when using liblzmadec. -+# LZMADEC_FOUND - True if liblzmadec found. -+ -+IF (LZMA_INCLUDE_DIR) -+ # Already in cache, be silent -+ SET(LZMA_FIND_QUIETLY TRUE) -+ENDIF (LZMA_INCLUDE_DIR) -+ -+FIND_PATH(LZMA_INCLUDE_DIR lzma.h) -+FIND_LIBRARY(LZMA_LIBRARY NAMES lzma liblzma) -+ -+# handle the QUIETLY and REQUIRED arguments and set LZMA_FOUND to TRUE if -+# all listed variables are TRUE -+INCLUDE(FindPackageHandleStandardArgs) -+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZMA DEFAULT_MSG LZMA_LIBRARY LZMA_INCLUDE_DIR) -+ -+IF(LZMA_FOUND) -+ SET( LZMA_LIBRARIES ${LZMA_LIBRARY} ) -+ELSE(LZMA_FOUND) -+ SET( LZMA_LIBRARIES ) -+ -+ IF (LZMADEC_INCLUDE_DIR) -+ # Already in cache, be silent -+ SET(LZMADEC_FIND_QUIETLY TRUE) -+ ENDIF (LZMADEC_INCLUDE_DIR) -+ -+ FIND_PATH(LZMADEC_INCLUDE_DIR lzmadec.h) -+ FIND_LIBRARY(LZMADEC_LIBRARY NAMES lzmadec ) -+ -+ # handle the QUIETLY and REQUIRED arguments and set LZMADEC_FOUND to TRUE if -+ # all listed variables are TRUE -+ INCLUDE(FindPackageHandleStandardArgs) -+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZMADEC DEFAULT_MSG LZMADEC_LIBRARY -+ LZMADEC_INCLUDE_DIR) -+ -+ IF(LZMADEC_FOUND) -+ SET( LZMADEC_LIBRARIES ${LZMADEC_LIBRARY} ) -+ ELSE(LZMADEC_FOUND) -+ SET( LZMADEC_LIBRARIES ) -+ ENDIF(LZMADEC_FOUND) -+ENDIF(LZMA_FOUND) diff --git a/cmake/OpenCVFindLibsGrfmt.cmake b/cmake/OpenCVFindLibsGrfmt.cmake -index 5988169..738e1f3 100644 +index 1111111..2222222 100644 --- a/cmake/OpenCVFindLibsGrfmt.cmake +++ b/cmake/OpenCVFindLibsGrfmt.cmake @@ -2,6 +2,11 @@ @@ -163,45 +63,81 @@ index 5988169..738e1f3 100644 # --- libtiff (optional, should be searched after zlib) --- if(WITH_TIFF) if(BUILD_TIFF) -@@ -114,6 +124,7 @@ if(WITH_PNG) - if(BUILD_PNG) - ocv_clear_vars(PNG_FOUND) - else() -+ include(CheckIncludeFile) - include(FindPNG) - if(PNG_FOUND) - check_include_file("${PNG_PNG_INCLUDE_DIR}/png.h" HAVE_PNG_H) -diff --git a/modules/core/CMakeLists.txt b/modules/core/CMakeLists.txt -index 4c5112e..7411f32 100644 ---- a/modules/core/CMakeLists.txt -+++ b/modules/core/CMakeLists.txt -@@ -1,12 +1,12 @@ - set(the_description "The Core Functionality") +diff --git a/cmake/OpenCVFindLibsVideo.cmake b/cmake/OpenCVFindLibsVideo.cmake +index 1111111..2222222 100644 +--- a/cmake/OpenCVFindLibsVideo.cmake ++++ b/cmake/OpenCVFindLibsVideo.cmake +@@ -272,15 +272,15 @@ endif(WITH_MSMF) - if (NOT HAVE_CUDA OR ENABLE_DYNAMIC_CUDA) -- ocv_add_module(core PRIVATE_REQUIRED ${ZLIB_LIBRARIES}) -+ ocv_add_module(core PRIVATE_REQUIRED ${ZLIB_LIBRARIES} ${LZMA_LIBRARIES} ${LCMS_LIBRARIES}) - else() -- ocv_add_module(core PRIVATE_REQUIRED ${ZLIB_LIBRARIES} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) -+ ocv_add_module(core PRIVATE_REQUIRED ${ZLIB_LIBRARIES} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY} ${LZMA_LIBRARIES} ${LCMS_LIBRARIES}) - endif() + # --- Extra HighGUI and VideoIO libs on Windows --- + if(WIN32) +- list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32 setupapi ws2_32) ++ list(APPEND HIGHGUI_LIBRARIES -lcomctl32 -lcomdlg32 -lgdi32 -lole32 -lsetupapi -lws2_32 -lvfw32 -lstrmiids -loleaut32 -luuid) + if(HAVE_VFW) + list(APPEND VIDEOIO_LIBRARIES vfw32) + endif() + if(MINGW64) +- list(APPEND VIDEOIO_LIBRARIES avifil32 avicap32 winmm msvfw32) +- list(REMOVE_ITEM VIDEOIO_LIBRARIES vfw32) ++ list(APPEND VIDEOIO_LIBRARIES -lavifil32 -lavicap32 -lwinmm -lmsvfw32) ++ list(REMOVE_ITEM VIDEOIO_LIBRARIES -lvfw32) + elseif(MINGW) +- list(APPEND VIDEOIO_LIBRARIES winmm) ++ list(APPEND VIDEOIO_LIBRARIES -lwinmm) + endif() + endif(WIN32) --ocv_module_include_directories("${OpenCV_SOURCE_DIR}/modules/dynamicuda/include/" ${ZLIB_INCLUDE_DIR}) -+ocv_module_include_directories("${OpenCV_SOURCE_DIR}/modules/dynamicuda/include/" ${ZLIB_INCLUDE_DIR} ${LZMA_INCLUDE_DIR} ${LCMS_INCLUDE_DIR}) - - if(HAVE_WINRT_CX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW") - -diff --git a/cmake/templates/opencv-XXX.pc.cmake.in b/cmake/templates/opencv-XXX.pc.cmake.in -index 4f6415c..ea1ed15 100644 +diff --git a/cmake/templates/opencv-XXX.pc.in b/cmake/templates/opencv-XXX.pc.in +index 1111111..2222222 100644 --- a/cmake/templates/opencv-XXX.pc.in +++ b/cmake/templates/opencv-XXX.pc.in -@@ -9,5 +9,7 @@ +@@ -9,6 +9,7 @@ includedir_new=@includedir@ Name: OpenCV Description: Open Source Computer Vision Library - Version: @OPENCV_VERSION@ + Version: @OPENCV_VERSION_PLAIN@ +Requires: OpenEXR libtiff-4 - Libs: @OpenCV_LIB_COMPONENTS@ -+Libs.private: -luuid -loleaut32 + Libs: @OPENCV_PC_LIBS@ +-Libs.private: @OPENCV_PC_LIBS_PRIVATE@ ++Libs.private: @OPENCV_PC_LIBS_PRIVATE@ -luuid -loleaut32 Cflags: -I${includedir_old} -I${includedir_new} - +diff --git a/modules/core/src/lapack.cpp b/modules/core/src/lapack.cpp +index 1111111..2222222 100644 +--- a/modules/core/src/lapack.cpp ++++ b/modules/core/src/lapack.cpp +@@ -608,7 +608,7 @@ void hal::SVD32f(float* At, size_t astep, float* W, float* U, size_t ustep, floa + void hal::SVD64f(double* At, size_t astep, double* W, double* U, size_t ustep, double* Vt, size_t vstep, int m, int n, int n1) + { + CALL_HAL(SVD64f, cv_hal_SVD64f, At, astep, W, U, ustep, Vt, vstep, m, n, decodeSVDParameters(U, Vt, m, n, n1)) +- JacobiSVDImpl_(At, astep, W, Vt, vstep, m, n, !Vt ? 0 : n1 < 0 ? n : n1, DBL_MIN, DBL_EPSILON*10); ++ JacobiSVDImpl_(At, astep, W, Vt, vstep, m, n, !Vt ? 0 : n1 < 0 ? n : n1, DBL_MIN, DBL_EPSILON*10L); + } + + /* y[0:m,0:n] += diag(a[0:1,0:m]) * x[0:m,0:n] */ +diff --git a/modules/core/src/precomp.hpp b/modules/core/src/precomp.hpp +index 1111111..2222222 100644 +--- a/modules/core/src/precomp.hpp ++++ b/modules/core/src/precomp.hpp +@@ -60,7 +60,7 @@ + + #include + #include +-#include ++#include + #include + #include + #include +diff --git a/modules/videoio/CMakeLists.txt b/modules/videoio/CMakeLists.txt +index 1111111..2222222 100644 +--- a/modules/videoio/CMakeLists.txt ++++ b/modules/videoio/CMakeLists.txt +@@ -231,6 +231,10 @@ if(WIN32) + include_directories(AFTER SYSTEM "${OpenCV_SOURCE_DIR}/3rdparty/include/ffmpeg_") # for tests + endif() + ++if(WIN32) ++ add_definitions(-DSTRSAFE_NO_DEPRECATE) ++endif() ++ + if(UNIX) + #these variables are set by CHECK_MODULE macro + foreach(P ${VIDEOIO_INCLUDE_DIRS}) diff --git a/src/opencv-2-fixes-cmake.patch b/src/opencv-2-fixes-cmake.patch index baad1b14..2b07b8cd 100644 --- a/src/opencv-2-fixes-cmake.patch +++ b/src/opencv-2-fixes-cmake.patch @@ -1,57 +1,52 @@ This file is part of MXE. See LICENSE.md for licensing information. -diff -ru a/cmake/OpenCVGenConfig.cmake b/cmake/OpenCVGenConfig.cmake ---- a/cmake/OpenCVGenConfig.cmake 2014-10-01 08:33:36.000000000 +0100 -+++ b/cmake/OpenCVGenConfig.cmake 2015-01-06 22:41:05.094464515 +0000 -@@ -137,8 +137,8 @@ - install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${OpenCV_INSTALL_BINARIES_PREFIX}lib" COMPONENT dev) - install(EXPORT OpenCVModules DESTINATION "${OpenCV_INSTALL_BINARIES_PREFIX}lib" FILE OpenCVModules${modules_file_suffix}.cmake COMPONENT dev) - else() -- install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib" COMPONENT dev) -- install(EXPORT OpenCVModules DESTINATION "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib" FILE OpenCVModules${modules_file_suffix}.cmake COMPONENT dev) -+ install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${OpenCV_INSTALL_BINARIES_PREFIX}lib" COMPONENT dev) -+ install(EXPORT OpenCVModules DESTINATION "${OpenCV_INSTALL_BINARIES_PREFIX}lib" FILE OpenCVModules${modules_file_suffix}.cmake COMPONENT dev) - endif() - install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig-version.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}" COMPONENT dev) - install(FILES "${OpenCV_SOURCE_DIR}/cmake/OpenCVConfig.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/" COMPONENT dev) -diff -ru a/CMakeLists.txt b/CMakeLists.txt ---- a/CMakeLists.txt 2014-10-01 08:33:36.000000000 +0100 -+++ b/CMakeLists.txt 2015-01-06 22:31:50.118454434 +0000 -@@ -269,14 +269,7 @@ - set(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc) +Contains ad hoc patches for cross building. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Gregorio Litenstein +Date: Thu, 31 Aug 2017 18:32:39 -0300 +Subject: [PATCH] Update patch 2 for opencv-3.3.0 + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1111111..2222222 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -360,14 +360,7 @@ else() + ocv_update(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc) endif() --if(WIN32) +-if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows) - if(DEFINED OpenCV_RUNTIME AND DEFINED OpenCV_ARCH) -- set(OpenCV_INSTALL_BINARIES_PREFIX "${OpenCV_ARCH}/${OpenCV_RUNTIME}/") +- ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "${OpenCV_ARCH}/${OpenCV_RUNTIME}/") - else() - message(STATUS "Can't detect runtime and/or arch") -- set(OpenCV_INSTALL_BINARIES_PREFIX "") +- ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "") - endif() -elseif(ANDROID) +if(ANDROID) - set(OpenCV_INSTALL_BINARIES_PREFIX "sdk/native/") + ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "sdk/native/") else() - set(OpenCV_INSTALL_BINARIES_PREFIX "") -@@ -310,12 +303,8 @@ - set(LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/lib") - set(3P_LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/3rdparty/lib${LIB_SUFFIX}") - if(WIN32) + ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "") +@@ -415,12 +408,8 @@ else() + ocv_update(3P_LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/3rdparty/lib${LIB_SUFFIX}") + + if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows) - if(OpenCV_STATIC) -- set(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}") +- ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}") - else() -- set(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}") +- ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}") - endif() -- set(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}") -+ set(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}") -+ set(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}") - set(OPENCV_SAMPLES_SRC_INSTALL_PATH samples/native) - else() - set(OPENCV_LIB_INSTALL_PATH lib${LIB_SUFFIX}) -@@ -339,15 +328,9 @@ - set(OPENCV_INCLUDE_INSTALL_PATH ${OPENCV_INCLUDE_INSTALL_PATH}/opencv-${OPENCV_VERSION}) +- ocv_update(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}") ++ ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}") ++ ocv_update(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}") + ocv_update(OPENCV_SAMPLES_SRC_INSTALL_PATH samples/native) + ocv_update(OPENCV_JAR_INSTALL_PATH java) + ocv_update(OPENCV_OTHER_INSTALL_PATH etc) +@@ -464,15 +453,9 @@ if(INSTALL_TO_MANGLED_PATHS) endif() + -if(WIN32) - # Postfix of DLLs: - set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}") diff --git a/src/opencv-3-fix-in-bad-dir.patch b/src/opencv-3-fix-in-bad-dir.patch new file mode 100644 index 00000000..794c8e6b --- /dev/null +++ b/src/opencv-3-fix-in-bad-dir.patch @@ -0,0 +1,39 @@ +This file is part of MXE. See LICENSE.md for licensing information. + +Contains ad hoc patches for cross building. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Gregorio Litenstein +Date: Thu, 31 Aug 2017 18:35:23 -0300 +Subject: [PATCH] Update patch-3 for opencv-3.3.0 + +Originally From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Boris Nagaev +Date: Sun, 20 Dec 2015 18:14:56 +0300 +Subject: [PATCH] fix CMake error if a directory contains ++ + +See https://github.com/mxe/mxe/issues/1091 + +diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake +index 1111111..2222222 100644 +--- a/cmake/OpenCVModule.cmake ++++ b/cmake/OpenCVModule.cmake +@@ -491,12 +491,16 @@ function(__ocv_resolve_dependencies) + # process private deps + foreach(m ${OPENCV_MODULES_BUILD}) + foreach(d ${OPENCV_MODULE_${m}_PRIVATE_REQ_DEPS}) +- if(NOT (";${deps_${m}};" MATCHES ";${d};")) ++ # can't use MATCH because file paths can include regexp special chars ++ string(FIND ";${deps_${m}};" ";${d};" d_offset) ++ if(${d_offset} EQUAL -1) + list(APPEND deps_${m} ${d}) + endif() + endforeach() + foreach(d ${OPENCV_MODULE_${m}_PRIVATE_OPT_DEPS}) +- if(NOT (";${deps_${m}};" MATCHES ";${d};")) ++ # can't use MATCH because file paths can include regexp special chars ++ string(FIND ";${deps_${m}};" ";${d};" d_offset) ++ if(${d_offset} EQUAL -1) + if(HAVE_${d} OR TARGET ${d}) + list(APPEND deps_${m} ${d}) + endif() diff --git a/src/opencv-3-fixes-pkgconfig.patch b/src/opencv-3-fixes-pkgconfig.patch deleted file mode 100644 index 6ca97618..00000000 --- a/src/opencv-3-fixes-pkgconfig.patch +++ /dev/null @@ -1,156 +0,0 @@ -This file is part of MXE. See LICENSE.md for licensing information. - -This patch was committed to OpenCV's 2.4 branch and we should be able to drop -it in the next point release. - -commit eceada586bbf18fc267e437522ec4f1f23ddc656 -Author: Samuel Martin -Date: Fri Oct 3 00:32:40 2014 +0200 - - cmake/OpenCVGenPkgconfig.cmake: rework opencv.pc generation - - Using absolute path to locate the components in the "Libs:" field of the - *.pc can badly break cross-compilation, especially when building - statically linked objects. - - Indeed, pkg-config automatically replaces the '-I...' and '-L...' paths - when the PKG_CONFIG_SYSROOT_DIR and PKG_CONFIG_LIBDIR environment - variables are set [1]. This feature is very helpful and common in - cross-compilation framework like Buildroot [2,3]. - - When there are absolute paths in the *.pc files, pkg-config won't be - able to do the path substitions for these paths when the afromentioned - environment variables are set. - In such case, since the prefix is the target one, not the sysroot one, - these libraries' abolute paths will point to: - - in the best case: a non-existing file (i.e. these files do not exists - on the host system; - - at worst: the host system's libraries. This will make the linking - failed because these host system's libraries will most likely not be - build for the target architecture [4]. - - So, this patch replace the components' absolute paths by the form: - -L -l - - This way, the linker will be able to resolve each dependency path, - whatever the kind of objects/build (shared object or static build) it - is dealing with. - - Note that for static link, the library order does matter [5]. The order - of the opencv components has been carefully chosen to comply with this - requirement. - - Fixes #3931 - - [1] http://linux.die.net/man/1/pkg-config - [2] http://buildroot.org/ - [3] http://git.buildroot.net/buildroot/tree/package/pkgconf/pkg-config.in - [4] http://autobuild.buildroot.net/results/e8a/e8a859276db34aff87ef181b0cce98916b0afc90/build-end.log - [5] http://stackoverflow.com/questions/45135/linker-order-gcc - - Signed-off-by: Samuel Martin - - --- - Note: this patch properly applies on top of the master branch, though it - has been written on top of the 2.4 branch. - -diff --git a/cmake/OpenCVGenPkgconfig.cmake b/cmake/OpenCVGenPkgconfig.cmake -index fa57db9..183c56d 100644 ---- a/cmake/OpenCVGenPkgconfig.cmake -+++ b/cmake/OpenCVGenPkgconfig.cmake -@@ -8,10 +8,6 @@ - # - # ${BIN_DIR}/unix-install/opencv.pc -> For use *with* "make install" - # ------------------------------------------------------------------------------------------- --set(prefix "${CMAKE_INSTALL_PREFIX}") --set(exec_prefix "\${prefix}") --set(libdir "") #TODO: need link paths for OpenCV_EXTRA_COMPONENTS --set(includedir "\${prefix}/${OPENCV_INCLUDE_INSTALL_PATH}") - - if(CMAKE_BUILD_TYPE MATCHES "Release") - set(ocv_optkind OPT) -@@ -35,42 +31,66 @@ ocv_list_reverse(OpenCV_LIB_COMPONENTS) - ocv_list_reverse(OpenCV_EXTRA_COMPONENTS) - - #build the list of components --set(OpenCV_LIB_COMPONENTS_ "") --foreach(CVLib ${OpenCV_LIB_COMPONENTS}) -- get_target_property(libpath ${CVLib} LOCATION_${CMAKE_BUILD_TYPE}) -- get_filename_component(libname "${libpath}" NAME) - -- if(INSTALL_TO_MANGLED_PATHS) -- set(libname "${libname}.${OPENCV_VERSION}") -- endif() -+# Note: -+# when linking against static libraries, if libfoo depends on libbar, then -+# libfoo must come first in the linker flags. -+ -+# world is a special target whose library should come first, especially for -+# static link. -+if(OpenCV_LIB_COMPONENTS MATCHES "opencv_world") -+ list(REMOVE_ITEM OpenCV_LIB_COMPONENTS "opencv_world") -+ list(INSERT OpenCV_LIB_COMPONENTS 0 "opencv_world") -+endif() -+ -+set(OpenCV_LIB_COMPONENTS_) -+foreach(CVLib ${OpenCV_LIB_COMPONENTS}) - -- #need better solution.... -- if(libpath MATCHES "3rdparty") -- set(installDir "share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH}") -+ get_target_property(libloc ${CVLib} LOCATION_${CMAKE_BUILD_TYPE}) -+ if(libloc MATCHES "3rdparty") -+ set(libpath "\${exec_prefix}/share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH}") - else() -- set(installDir "${OPENCV_LIB_INSTALL_PATH}") -+ set(libpath "\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}") - endif() -+ list(APPEND OpenCV_LIB_COMPONENTS_ "-L${libpath}") -+ -+ get_filename_component(libname ${CVLib} NAME_WE) -+ string(REGEX REPLACE "^lib" "" libname "${libname}") -+ list(APPEND OpenCV_LIB_COMPONENTS_ "-l${libname}") - -- set(OpenCV_LIB_COMPONENTS_ "${OpenCV_LIB_COMPONENTS_} \${exec_prefix}/${installDir}/${libname}") - endforeach() - - # add extra dependencies required for OpenCV --set(OpenCV_LIB_COMPONENTS ${OpenCV_LIB_COMPONENTS_}) - if(OpenCV_EXTRA_COMPONENTS) - foreach(extra_component ${OpenCV_EXTRA_COMPONENTS}) - -- if(extra_component MATCHES "^-[lL]" OR extra_component MATCHES "[\\/]") -- set(maybe_l_prefix "") -+ if(extra_component MATCHES "^-[lL]") -+ set(libprefix "") -+ set(libname "${extra_component}") -+ elseif(extra_component MATCHES "[\\/]") -+ get_filename_component(libdir "${extra_component}" PATH) -+ list(APPEND OpenCV_LIB_COMPONENTS_ "-L${libdir}") -+ get_filename_component(libname "${extra_component}" NAME_WE) -+ string(REGEX REPLACE "^lib" "" libname "${libname}") -+ set(libprefix "-l") - else() -- set(maybe_l_prefix "-l") -+ set(libprefix "-l") -+ set(libname "${extra_component}") - endif() -- -- set(OpenCV_LIB_COMPONENTS "${OpenCV_LIB_COMPONENTS} ${maybe_l_prefix}${extra_component}") -+ list(APPEND OpenCV_LIB_COMPONENTS_ "${libprefix}${libname}") - - endforeach() - endif() - -+list(REMOVE_DUPLICATES OpenCV_LIB_COMPONENTS_) -+string(REPLACE ";" " " OpenCV_LIB_COMPONENTS "${OpenCV_LIB_COMPONENTS_}") -+ - #generate the .pc file -+set(prefix "${CMAKE_INSTALL_PREFIX}") -+set(exec_prefix "\${prefix}") -+set(libdir "\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}") -+set(includedir "\${prefix}/${OPENCV_INCLUDE_INSTALL_PATH}") -+ - if(INSTALL_TO_MANGLED_PATHS) - set(OPENCV_PC_FILE_NAME "opencv-${OPENCV_VERSION}.pc") - else() diff --git a/src/opencv-4-reverse-deps-sublist.patch b/src/opencv-4-reverse-deps-sublist.patch deleted file mode 100644 index fbd36dcc..00000000 --- a/src/opencv-4-reverse-deps-sublist.patch +++ /dev/null @@ -1,37 +0,0 @@ -This file is part of MXE. See LICENSE.md for licensing information. - -From 20cf852345e364f7e18c8721561d7c4d1ebd1d6e Mon Sep 17 00:00:00 2001 -From: Boris Nagaev -Date: Sun, 6 Sep 2015 00:53:13 +0100 -Subject: [PATCH] reverse deps list before inserting to another list - -Order of items in ${m}_EXTRA_DEPS_${ocv_optkind} corresponds -to the order in which a linker expects items to appear: -a depender before a dependee. - -But the order of items of OpenCV_EXTRA_COMPONENTS is -reversed (afterwards this list is unique'ed and reversed). -That is why sub-lists must be inserted in reversed form. ---- - cmake/OpenCVGenPkgconfig.cmake | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/cmake/OpenCVGenPkgconfig.cmake b/cmake/OpenCVGenPkgconfig.cmake -index 183c56d..180210d 100644 ---- a/cmake/OpenCVGenPkgconfig.cmake -+++ b/cmake/OpenCVGenPkgconfig.cmake -@@ -19,9 +19,11 @@ endif() - set(OpenCV_LIB_COMPONENTS "") - set(OpenCV_EXTRA_COMPONENTS "") - foreach(m ${OPENCV_MODULES_PUBLIC}) - list(INSERT OpenCV_LIB_COMPONENTS 0 ${${m}_MODULE_DEPS_${ocv_optkind}} ${m}) - if(${m}_EXTRA_DEPS_${ocv_optkind}) -+ ocv_list_reverse(${m}_EXTRA_DEPS_${ocv_optkind}) - list(INSERT OpenCV_EXTRA_COMPONENTS 0 ${${m}_EXTRA_DEPS_${ocv_optkind}}) -+ ocv_list_reverse(${m}_EXTRA_DEPS_${ocv_optkind}) - endif() - endforeach() - --- -2.1.4 - diff --git a/src/opencv-5-fix-in-bad-dir.patch b/src/opencv-5-fix-in-bad-dir.patch deleted file mode 100644 index 3d28d246..00000000 --- a/src/opencv-5-fix-in-bad-dir.patch +++ /dev/null @@ -1,65 +0,0 @@ -This file is part of MXE. See LICENSE.md for licensing information. - -Contains ad hoc patches for cross building. - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Boris Nagaev -Date: Sun, 20 Dec 2015 18:14:56 +0300 -Subject: [PATCH] fix CMake error if a directory contains ++ - -See https://github.com/mxe/mxe/issues/1091 - -diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake -index 1111111..2222222 100644 ---- a/cmake/OpenCVModule.cmake -+++ b/cmake/OpenCVModule.cmake -@@ -364,12 +364,16 @@ function(__ocv_resolve_dependencies) - # process private deps - foreach(m ${OPENCV_MODULES_BUILD}) - foreach(d ${OPENCV_MODULE_${m}_PRIVATE_REQ_DEPS}) -- if(NOT (";${deps_${m}};" MATCHES ";${d};")) -+ # can't use MATCH because file paths can include regexp special chars -+ string(FIND ";${deps_${m}};" ";${d};" d_offset) -+ if(${d_offset} EQUAL -1) - list(APPEND deps_${m} ${d}) - endif() - endforeach() - foreach(d ${OPENCV_MODULE_${m}_PRIVATE_OPT_DEPS}) -- if(NOT (";${deps_${m}};" MATCHES ";${d};")) -+ # can't use MATCH because file paths can include regexp special chars -+ string(FIND ";${deps_${m}};" ";${d};" d_offset) -+ if(${d_offset} EQUAL -1) - if(HAVE_${d} OR TARGET ${d}) - list(APPEND deps_${m} ${d}) - endif() -diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake -index 1111111..2222222 100644 ---- a/cmake/OpenCVPCHSupport.cmake -+++ b/cmake/OpenCVPCHSupport.cmake -@@ -54,7 +54,9 @@ MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags) - - GET_DIRECTORY_PROPERTY(DIRINC INCLUDE_DIRECTORIES ) - FOREACH(item ${DIRINC}) -- if(item MATCHES "^${OpenCV_SOURCE_DIR}/modules/") -+ # can't use MATCH because file paths can include regexp special chars -+ string(FIND "${item}" "${OpenCV_SOURCE_DIR}/modules/" modules_offset) -+ if(${modules_offset} EQUAL 0) - LIST(APPEND ${_out_compile_flags} "${_PCH_include_prefix}\"${item}\"") - else() - LIST(APPEND ${_out_compile_flags} "${_PCH_isystem_prefix}\"${item}\"") -diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake -index 1111111..2222222 100644 ---- a/cmake/OpenCVUtils.cmake -+++ b/cmake/OpenCVUtils.cmake -@@ -39,7 +39,10 @@ function(ocv_include_directories) - set(__add_before "") - foreach(dir ${ARGN}) - get_filename_component(__abs_dir "${dir}" ABSOLUTE) -- if("${__abs_dir}" MATCHES "^${OpenCV_SOURCE_DIR}" OR "${__abs_dir}" MATCHES "^${OpenCV_BINARY_DIR}") -+ # can't use MATCH because file paths can include regexp special chars -+ string(FIND "${__abs_dir}" "${OpenCV_SOURCE_DIR}" OpenCV_SOURCE_DIR_offset) -+ string(FIND "${__abs_dir}" "${OpenCV_BINARY_DIR}" OpenCV_BINARY_DIR_offset) -+ if($OpenCV_BINARY_DIR_offset} EQUAL 0 OR ${OpenCV_BINARY_DIR_offset} EQUAL 0) - list(APPEND __add_before "${dir}") - else() - include_directories(AFTER SYSTEM "${dir}") diff --git a/src/opencv.mk b/src/opencv.mk index f847d5bc..e7a6b77e 100644 --- a/src/opencv.mk +++ b/src/opencv.mk @@ -4,13 +4,13 @@ PKG := opencv $(PKG)_WEBSITE := http://opencv.org/ $(PKG)_DESCR := OpenCV $(PKG)_IGNORE := -$(PKG)_VERSION := 2.4.10 -$(PKG)_CHECKSUM := 1bf4cb87283797fd91669d4f90b622a677a903c20b4a577b7958a2164f7596c6 +$(PKG)_VERSION := 3.3.0 +$(PKG)_CHECKSUM := 3546c3837f88177c898e4172942da7a3ca6c4e8e98a33d0cbccb2b499167c5ba $(PKG)_SUBDIR := $(PKG)-$($(PKG)_VERSION) $(PKG)_FILE := opencv-$($(PKG)_VERSION).zip $(PKG)_URL := https://$(SOURCEFORGE_MIRROR)/project/$(PKG)library/$(PKG)-unix/$($(PKG)_VERSION)/$($(PKG)_FILE) $(PKG)_URL_2 := https://distfiles.macports.org/opencv/$($(PKG)_FILE) -$(PKG)_DEPS := gcc eigen ffmpeg jasper jpeg lcms1 libpng openexr tiff xz zlib +$(PKG)_DEPS := gcc eigen ffmpeg jasper jpeg lcms1 libpng libwebp openexr protobuf tiff xz zlib define $(PKG)_UPDATE $(WGET) -q -O- 'https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/' | \ @@ -39,10 +39,13 @@ define $(PKG)_BUILD -DBUILD_TIFF=OFF \ -DBUILD_JASPER=OFF \ -DBUILD_JPEG=OFF \ + -DBUILD_WEBP=OFF \ + -DBUILD_PROTOBUF=OFF \ + -DPROTOBUF_UPDATE_FILES=ON \ -DBUILD_PNG=OFF \ -DBUILD_OPENEXR=OFF \ -DCMAKE_VERBOSE=ON \ - -DCMAKE_CXX_FLAGS='-D_WIN32_WINNT=0x0500 -D__STDC_LIMIT_MACROS' + -DCMAKE_CXX_FLAGS='-D_WIN32_WINNT=0x0500' # install $(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' VERBOSE=1 @@ -53,11 +56,13 @@ define $(PKG)_BUILD # opencv builds it's own libIlmImf.a $(if $(findstring x86_64-w64-mingw32,$(TARGET)),\ $(SED) -i 's/OpenEXR//' '$(BUILD_DIR)/unix-install/opencv.pc') + $(SED) -i 's,share/OpenCV/3rdparty/,,g' '$(BUILD_DIR)/unix-install/opencv.pc' + $(INSTALL) -m755 '$(BUILD_DIR)/unix-install/opencv.pc' '$(PREFIX)/$(TARGET)/lib/pkgconfig' '$(TARGET)-g++' \ - -W -Wall -Werror -ansi -pedantic \ - '$(1)/samples/c/fback_c.c' -o '$(PREFIX)/$(TARGET)/bin/test-opencv.exe' \ + -W -Wall -Werror -ansi \ + '$(SOURCE_DIR)/samples/cpp/fback.cpp' -o '$(PREFIX)/$(TARGET)/bin/test-opencv.exe' \ `'$(TARGET)-pkg-config' opencv --cflags --libs` endef