Skip to content

Commit 9e12b7c

Browse files
author
Andrey Kamaev
committed
Merge release 2.4.4
2 parents 52a45ed + facab40 commit 9e12b7c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+11513
-3107
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ OCV_OPTION(INSTALL_TO_MANGLED_PATHS "Enables mangled install paths, that help wi
184184
OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers" ON IF (NOT IOS) )
185185
OCV_OPTION(ENABLE_SOLUTION_FOLDERS "Solution folder in Visual Studio or in other IDEs" (MSVC_IDE OR CMAKE_GENERATOR MATCHES Xcode) IF (CMAKE_VERSION VERSION_GREATER "2.8.0") )
186186
OCV_OPTION(ENABLE_PROFILING "Enable profiling in the GCC compiler (Add flags: -g -pg)" OFF IF CMAKE_COMPILER_IS_GNUCXX )
187-
OCV_OPTION(ENABLE_OMIT_FRAME_POINTER "Enable -fomit-frame-pointer for GCC" ON IF CMAKE_COMPILER_IS_GNUCXX )
187+
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) )
188188
OCV_OPTION(ENABLE_POWERPC "Enable PowerPC for GCC" ON IF (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES powerpc.*) )
189189
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)) )
190190
OCV_OPTION(ENABLE_SSE "Enable SSE instructions" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )

android/libinfo/info.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const char* GetLibraryList(void);
77
JNIEXPORT jstring JNICALL Java_org_opencv_android_StaticHelper_getLibraryList(JNIEnv *, jclass);
88

99
#define PACKAGE_NAME "org.opencv.lib_v" CVAUX_STR(CV_VERSION_EPOCH) CVAUX_STR(CV_VERSION_MAJOR) "_" ANDROID_PACKAGE_PLATFORM
10-
#define PACKAGE_REVISION CVAUX_STR(CV_VERSION_MINOR) "." CVAUX_STR(ANDROID_PACKAGE_RELEASE)
10+
#define PACKAGE_REVISION CVAUX_STR(CV_VERSION_MINOR) "." CVAUX_STR(CV_VERSION_REVISION) "." CVAUX_STR(ANDROID_PACKAGE_RELEASE)
1111

1212
const char* GetPackageName(void)
1313
{

android/package/AndroidManifest.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
package="org.opencv.lib_v@OPENCV_VERSION_MAJOR@@OPENCV_VERSION_MINOR@_@ANDROID_PACKAGE_PLATFORM@"
4-
android:versionCode="@OPENCV_VERSION_PATCH@@ANDROID_PACKAGE_RELEASE@"
5-
android:versionName="@OPENCV_VERSION_PATCH@.@ANDROID_PACKAGE_RELEASE@" >
4+
android:versionCode="@OPENCV_VERSION_PATCH@@OPENCV_VERSION_TWEAK@@ANDROID_PACKAGE_RELEASE@"
5+
android:versionName="@OPENCV_VERSION_PATCH@.@OPENCV_VERSION_TWEAK@.@ANDROID_PACKAGE_RELEASE@" >
66

77
<uses-sdk android:minSdkVersion="@ANDROID_SDK_VERSION@" />
88
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>

android/service/engine/jni/NativeService/PackageInfo.cpp

+15-5
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,17 @@ inline int SplitVersion(const vector<string>& features, const string& package_ve
136136

137137
// Taking release and build number from package revision
138138
vector<string> tmp2 = SplitStringVector(package_version, '.');
139-
result += atoi(tmp2[0].c_str())*100 + atoi(tmp2[1].c_str());
139+
if (tmp2.size() == 2)
140+
{
141+
// the 2nd digit is revision
142+
result += atoi(tmp2[0].c_str())*100 + 00;
143+
}
144+
else
145+
{
146+
// the 2nd digit is part of library version
147+
// the 3rd digit is revision
148+
result += atoi(tmp2[0].c_str())*100 + atoi(tmp2[1].c_str());
149+
}
140150
}
141151
else
142152
{
@@ -194,10 +204,10 @@ inline int SplitPlatfrom(const vector<string>& features)
194204
* Example: armv7_neon
195205
*/
196206
PackageInfo::PackageInfo(int version, int platform, int cpu_id, std::string install_path):
197-
Version(version),
198-
Platform(platform),
199-
CpuID(cpu_id),
200-
InstallPath("")
207+
Version(version),
208+
Platform(platform),
209+
CpuID(cpu_id),
210+
InstallPath("")
201211
{
202212
#ifndef __SUPPORT_TEGRA3
203213
Platform = PLATFORM_UNKNOWN;

android/service/engine/jni/Tests/PackageInfoTest.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,20 @@ TEST(PackageInfo, MipsFromFullName)
157157
}
158158
#endif
159159

160+
TEST(PackageInfo, Check2DigitRevision)
161+
{
162+
PackageInfo info("org.opencv.lib_v23_armv7a_neon", "/data/data/org.opencv.lib_v23_armv7_neon", "4.1");
163+
EXPECT_EQ(2030400, info.GetVersion());
164+
EXPECT_EQ(ARCH_ARMv7 | FEATURES_HAS_NEON, info.GetCpuID());
165+
}
166+
167+
TEST(PackageInfo, Check3DigitRevision)
168+
{
169+
PackageInfo info("org.opencv.lib_v23_armv7a_neon", "/data/data/org.opencv.lib_v23_armv7_neon", "4.1.5");
170+
EXPECT_EQ(2030401, info.GetVersion());
171+
EXPECT_EQ(ARCH_ARMv7 | FEATURES_HAS_NEON, info.GetCpuID());
172+
}
173+
160174
TEST(PackageInfo, Comparator1)
161175
{
162176
PackageInfo info1(2040000, PLATFORM_UNKNOWN, ARCH_X86);

android/service/engine/src/org/opencv/engine/manager/ManagerActivity.java

+16-10
Original file line numberDiff line numberDiff line change
@@ -299,10 +299,9 @@ synchronized protected void FillPackageList()
299299
else
300300
NativeLibDir = "/data/data/" + mInstalledPackageInfo[i].packageName + "/lib";
301301

302-
OpenCVLibraryInfo NativeInfo = new OpenCVLibraryInfo(NativeLibDir);
303-
304302
if (PackageName.equals("org.opencv.engine"))
305303
{
304+
OpenCVLibraryInfo NativeInfo = new OpenCVLibraryInfo(NativeLibDir);
306305
if (NativeInfo.status())
307306
{
308307
PublicName = "Built-in OpenCV library";
@@ -348,9 +347,7 @@ else if (idx >= 2)
348347

349348
if (null != ActivePackagePath)
350349
{
351-
int start = ActivePackagePath.indexOf(mInstalledPackageInfo[i].packageName);
352-
int stop = start + mInstalledPackageInfo[i].packageName.length();
353-
if (start >= 0 && ActivePackagePath.charAt(stop) == '/')
350+
if (ActivePackagePath.equals(NativeLibDir))
354351
{
355352
temp.put("Activity", "y");
356353
Tags = "active";
@@ -405,13 +402,22 @@ protected String NormalizeVersion(String OpenCVersion, String PackageVersion)
405402
if (OpenCVersion == null || PackageVersion == null)
406403
return "unknown";
407404

408-
int dot = PackageVersion.indexOf(".");
409-
if (dot == -1 || OpenCVersion.length() == 0)
405+
String[] revisions = PackageVersion.split("\\.");
406+
407+
if (revisions.length <= 1 || OpenCVersion.length() == 0)
410408
return "unknown";
411409
else
412-
return OpenCVersion.substring(0, OpenCVersion.length()-1) + "." +
413-
OpenCVersion.toCharArray()[OpenCVersion.length()-1] + "." +
414-
PackageVersion.substring(0, dot) + " rev " + PackageVersion.substring(dot+1);
410+
if (revisions.length == 2)
411+
// the 2nd digit is revision
412+
return OpenCVersion.substring(0, OpenCVersion.length()-1) + "." +
413+
OpenCVersion.toCharArray()[OpenCVersion.length()-1] + "." +
414+
revisions[0] + " rev " + revisions[1];
415+
else
416+
// the 2nd digit is part of library version
417+
// the 3rd digit is revision
418+
return OpenCVersion.substring(0, OpenCVersion.length()-1) + "." +
419+
OpenCVersion.toCharArray()[OpenCVersion.length()-1] + "." +
420+
revisions[0] + "." + revisions[1] + " rev " + revisions[2];
415421
}
416422

417423
protected String ConvertPackageName(String Name, String Version)

cmake/OpenCVCompilerOptions.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ if(CMAKE_COMPILER_IS_GNUCXX)
9191
endif()
9292

9393
# We need pthread's
94-
if(UNIX AND NOT ANDROID)
94+
if(UNIX AND NOT ANDROID AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX))
9595
add_extra_compiler_option(-pthread)
9696
endif()
9797

cmake/OpenCVDetectCXXCompiler.cmake

+11-11
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ if(CMAKE_CL_64)
55
set(MSVC64 1)
66
endif()
77

8-
if(NOT APPLE)
9-
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
10-
set(CMAKE_COMPILER_IS_GNUCXX 1)
11-
set(CMAKE_COMPILER_IS_CLANGCXX 1)
12-
set(ENABLE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE)
13-
endif()
14-
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
15-
set(CMAKE_COMPILER_IS_GNUCC 1)
16-
set(CMAKE_COMPILER_IS_CLANGCC 1)
17-
set(ENABLE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE)
18-
endif()
8+
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
9+
set(CMAKE_COMPILER_IS_GNUCXX 1)
10+
set(CMAKE_COMPILER_IS_CLANGCXX 1)
11+
endif()
12+
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
13+
set(CMAKE_COMPILER_IS_GNUCC 1)
14+
set(CMAKE_COMPILER_IS_CLANGCC 1)
15+
endif()
16+
17+
if((CMAKE_COMPILER_IS_CLANGCXX OR CMAKE_COMPILER_IS_CLANGCC) AND NOT CMAKE_GENERATOR MATCHES "Xcode")
18+
set(ENABLE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE)
1919
endif()
2020

2121
# ----------------------------------------------------------------------------

cmake/OpenCVDetectPython.cmake

+10-3
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,25 @@ unset(HAVE_SPHINX CACHE)
1919
if(PYTHON_EXECUTABLE)
2020
if(PYTHON_VERSION_STRING)
2121
set(PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}")
22-
string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" PYTHON_VERSION_FULL "${PYTHON_VERSION_STRING}")
22+
set(PYTHON_VERSION_FULL "${PYTHON_VERSION_STRING}")
2323
else()
2424
execute_process(COMMAND ${PYTHON_EXECUTABLE} --version
2525
ERROR_VARIABLE PYTHON_VERSION_FULL
2626
ERROR_STRIP_TRAILING_WHITESPACE)
2727

2828
string(REGEX MATCH "[0-9]+.[0-9]+" PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_FULL}")
29-
string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" PYTHON_VERSION_FULL "${PYTHON_VERSION_FULL}")
29+
endif()
30+
31+
if("${PYTHON_VERSION_FULL}" MATCHES "[0-9]+.[0-9]+.[0-9]+")
32+
set(PYTHON_VERSION_FULL "${CMAKE_MATCH_0}")
33+
elseif("${PYTHON_VERSION_FULL}" MATCHES "[0-9]+.[0-9]+")
34+
set(PYTHON_VERSION_FULL "${CMAKE_MATCH_0}")
35+
else()
36+
unset(PYTHON_VERSION_FULL)
3037
endif()
3138

3239
if(NOT ANDROID AND NOT IOS)
33-
if(CMAKE_VERSION VERSION_GREATER 2.8.8)
40+
if(CMAKE_VERSION VERSION_GREATER 2.8.8 AND PYTHON_VERSION_FULL)
3441
find_host_package(PythonLibs ${PYTHON_VERSION_FULL} EXACT)
3542
else()
3643
find_host_package(PythonLibs ${PYTHON_VERSION_FULL})

cmake/OpenCVGenConfig.cmake

+11-2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ if(OpenCV_LIB_COMPONENTS)
5353
list(REMOVE_ITEM OPENCV_MODULES_CONFIGCMAKE ${OpenCV_LIB_COMPONENTS})
5454
endif()
5555

56+
if(BUILD_FAT_JAVA_LIB AND HAVE_opencv_java)
57+
list(APPEND OPENCV_MODULES_CONFIGCMAKE opencv_java)
58+
endif()
59+
5660
macro(ocv_generate_dependencies_map_configcmake suffix configuration)
5761
set(OPENCV_DEPENDENCIES_MAP_${suffix} "")
5862
set(OPENCV_PROCESSED_LIBS "")
@@ -126,8 +130,13 @@ configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig-version.cmake.
126130
set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_INCLUDE_INSTALL_PATH}/opencv" "\${OpenCV_INSTALL_PATH}/${OPENCV_INCLUDE_INSTALL_PATH}\"")
127131

128132
set(OpenCV2_INCLUDE_DIRS_CONFIGCMAKE "\"\"")
129-
set(OpenCV_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_LIB_INSTALL_PATH}\"")
130-
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_3P_LIB_INSTALL_PATH}\"")
133+
if(ANDROID)
134+
set(OpenCV_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/sdk/native/libs/\${ANDROID_NDK_ABI_NAME}\"")
135+
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/sdk/native/3rdparty/libs/\${ANDROID_NDK_ABI_NAME}\"")
136+
else()
137+
set(OpenCV_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_LIB_INSTALL_PATH}\"")
138+
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_3P_LIB_INSTALL_PATH}\"")
139+
endif()
131140
if(INSTALL_TO_MANGLED_PATHS)
132141
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "${OPENCV_3P_LIB_INSTALL_PATH}")
133142
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE}\"")

cmake/templates/OpenCV.mk.in

+2-2
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ define add_opencv_camera_module
9292
include $(PREBUILT_SHARED_LIBRARY)
9393
endef
9494

95-
ifeq ($(OPENCV_MK_ALREADY_INCLUDED),)
95+
ifeq ($(OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED),)
9696
ifeq ($(OPENCV_INSTALL_MODULES),on)
9797
$(foreach module,$(OPENCV_LIBS),$(eval $(call add_opencv_module,$(module))))
9898
endif
@@ -105,7 +105,7 @@ ifeq ($(OPENCV_MK_ALREADY_INCLUDED),)
105105
endif
106106

107107
#turn off module installation to prevent their redefinition
108-
OPENCV_MK_ALREADY_INCLUDED:=on
108+
OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED:=on
109109
endif
110110

111111
ifeq ($(OPENCV_LOCAL_CFLAGS),)

cmake/templates/OpenCVConfig.cmake.in

+11-2
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ endif()
150150
# ==============================================================
151151
if(NOT OpenCV_FIND_COMPONENTS)
152152
set(OpenCV_FIND_COMPONENTS ${OpenCV_LIB_COMPONENTS})
153+
list(REMOVE_ITEM OpenCV_FIND_COMPONENTS opencv_java)
153154
if(GTest_FOUND OR GTEST_FOUND)
154155
list(REMOVE_ITEM OpenCV_FIND_COMPONENTS opencv_ts)
155156
endif()
@@ -200,7 +201,7 @@ foreach(__opttype OPT DBG)
200201
#indicate that this module is also found
201202
string(TOUPPER "${__cvdep}" __cvdep)
202203
set(${__cvdep}_FOUND 1)
203-
else()
204+
elseif(EXISTS "${OpenCV_3RDPARTY_LIB_DIR_${__opttype}}/${OpenCV_${__cvdep}_LIBNAME_${__opttype}}")
204205
list(APPEND OpenCV_LIBS_${__opttype} "${OpenCV_3RDPARTY_LIB_DIR_${__opttype}}/${OpenCV_${__cvdep}_LIBNAME_${__opttype}}")
205206
endif()
206207
endforeach()
@@ -220,7 +221,7 @@ foreach(__opttype OPT DBG)
220221
endif()
221222

222223
# CUDA
223-
if(OpenCV_CUDA_VERSION AND WIN32 AND NOT OpenCV_SHARED)
224+
if(OpenCV_CUDA_VERSION AND (CMAKE_CROSSCOMPILING OR (WIN32 AND NOT OpenCV_SHARED)))
224225
if(NOT CUDA_FOUND)
225226
find_package(CUDA ${OpenCV_CUDA_VERSION} EXACT REQUIRED)
226227
else()
@@ -303,3 +304,11 @@ else()
303304
SET(OpenCV_LIB_DIR ${OpenCV_LIB_DIR_OPT} ${OpenCV_3RDPARTY_LIB_DIR_OPT})
304305
endif()
305306
set(OpenCV_LIBRARIES ${OpenCV_LIBS})
307+
308+
if(CMAKE_CROSSCOMPILING AND OpenCV_SHARED AND (CMAKE_SYSTEM_NAME MATCHES "Linux"))
309+
foreach(dir ${OpenCV_LIB_DIR})
310+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath-link,${dir}")
311+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath-link,${dir}")
312+
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-rpath-link,${dir}")
313+
endforeach()
314+
endif()

0 commit comments

Comments
 (0)