diff --git a/modules/java/CMakeLists.txt b/modules/java/CMakeLists.txt
index 11628d40ce..74bc0ef041 100644
--- a/modules/java/CMakeLists.txt
+++ b/modules/java/CMakeLists.txt
@@ -18,6 +18,12 @@ if(EXISTS ${CMAKE_BINARY_DIR}/gen)
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_BINARY_DIR}/gen")
endif()
+if(ANDROID)
+ set(LIB_NAME_SUFIX "${OPENCV_VERSION_MAJOR}")
+else()
+ set(LIB_NAME_SUFIX "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
+endif()
+
ocv_module_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/generator/src/cpp")
ocv_module_include_directories("${OpenCV_SOURCE_DIR}/include")
@@ -69,7 +75,7 @@ macro(glob_more_specific_sources _type _root _output)
elseif(${_type} STREQUAL "CPP")
set(_masks "${_root}/src/cpp/*.cpp")
elseif(${_type} STREQUAL "JAVA")
- set(_masks "${_root}/src/java/*.java")
+ set(_masks "${_root}/src/java/*.java" "${_root}/src/java/*.java.in")
elseif(${_type} STREQUAL "AIDL")
set(_masks "${_root}/src/java/*.aidl")
endif()
@@ -257,22 +263,49 @@ endforeach()
# step 3: copy files to destination
set(step3_input_files ${generated_java_sources} ${handwritten_java_sources} ${handwritten_aidl_sources})
set(copied_files "")
+set(java_src_dir "${OpenCV_BINARY_DIR}/src")
foreach(java_file ${step3_input_files})
get_filename_component(java_file_name "${java_file}" NAME)
+ set(__configure 0)
+ if (java_file_name MATCHES "\\.in$")
+ string(REGEX REPLACE "\\.in$" "" java_file_name "${java_file_name}")
+ set(__configure 1)
+ endif()
string(REPLACE "-jdoc.java" ".java" java_file_name "${java_file_name}")
- string(REPLACE "+" "/" java_file_name "${java_file_name}")
- set(output_name "${OpenCV_BINARY_DIR}/src/org/opencv/${java_file_name}")
- add_custom_command(OUTPUT "${output_name}"
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${java_file}" "${output_name}"
- MAIN_DEPENDENCY "${java_file}"
- DEPENDS ${step1_depends} ${generated_java_sources} ${handwritten_java_sources}
- COMMENT "Generating src/org/opencv/${java_file_name}"
- )
- list(APPEND copied_files "${output_name}")
+ if(EXISTS "${java_file}")
+ file(STRINGS "${java_file}" PACKAGE_STR LIMIT_COUNT 1 REGEX "package.*;$")
+ else()
+ set(PACKAGE_STR "")
+ endif()
+ if(PACKAGE_STR)
+ list(GET PACKAGE_STR 0 package_name)
+ string(REGEX REPLACE "^package[ ]+" "" package_name "${package_name}")
+ string(REGEX REPLACE ";$" "" package_name "${package_name}")
+
+ string(REGEX REPLACE ".*\\+" "" java_file_name "${java_file_name}")
+ string(REPLACE "." "/" package_path "${package_name}")
+ set(output_name "${package_path}/${java_file_name}")
+ else()
+ string(REPLACE "+" "/" java_file_name "${java_file_name}")
+ set(output_name "org/opencv/${java_file_name}")
+ endif()
+ if(__configure)
+ configure_file("${java_file}" "${java_src_dir}/${output_name}" @ONLY)
+ elseif(NOT "${java_file}" MATCHES "${OpenCV_BINARY_DIR}/")
+ configure_file("${java_file}" "${java_src_dir}/${output_name}" COPYONLY)
+ else()
+ add_custom_command(OUTPUT "${java_src_dir}/${output_name}"
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different "${java_file}" "${java_src_dir}/${output_name}"
+ MAIN_DEPENDENCY "${java_file}"
+ DEPENDS "${java_file}"
+ COMMENT "Generating src/${output_name}"
+ )
+ endif()
+ list(APPEND copied_files "${java_src_dir}/${output_name}")
if(ANDROID)
- get_filename_component(install_subdir "${java_file_name}" PATH)
- install(FILES "${output_name}" DESTINATION "${JAVA_INSTALL_ROOT}/src/org/opencv/${install_subdir}" COMPONENT java)
+ get_filename_component(install_subdir "${output_name}" PATH)
+ install(FILES "${java_src_dir}/${output_name}" DESTINATION "${JAVA_INSTALL_ROOT}/src/${install_subdir}" COMPONENT java)
endif()
endforeach()
@@ -334,12 +367,6 @@ endif(ANDROID AND ANDROID_EXECUTABLE)
set(step3_depends ${step2_depends} ${step3_input_files} ${copied_files})
-if(ANDROID)
- set(LIB_NAME_SUFIX "${OPENCV_VERSION_MAJOR}")
-else()
- set(LIB_NAME_SUFIX "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
-endif()
-
file(MAKE_DIRECTORY "${OpenCV_BINARY_DIR}/bin")
# step 4: build jar
diff --git a/modules/java/android_test/src/org/opencv/test/OpenCVTestRunner.java b/modules/java/android_test/src/org/opencv/test/OpenCVTestRunner.java
index 22f1229284..d5c1ecd206 100644
--- a/modules/java/android_test/src/org/opencv/test/OpenCVTestRunner.java
+++ b/modules/java/android_test/src/org/opencv/test/OpenCVTestRunner.java
@@ -82,7 +82,7 @@ public class OpenCVTestRunner extends InstrumentationTestRunner {
// Using OpenCV Manager for initialization;
Log("Internal OpenCV library not found. Using OpenCV Manager for initialization");
- OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, getContext(), mLoaderCallback);
+ OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, getContext(), mLoaderCallback);
synchronized (this) {
try {
diff --git a/modules/java/generator/src/java/android+OpenCVLoader.java b/modules/java/generator/src/java/android+OpenCVLoader.java.in
similarity index 91%
rename from modules/java/generator/src/java/android+OpenCVLoader.java
rename to modules/java/generator/src/java/android+OpenCVLoader.java.in
index a84a49e6b4..8f8cd05012 100644
--- a/modules/java/generator/src/java/android+OpenCVLoader.java
+++ b/modules/java/generator/src/java/android+OpenCVLoader.java.in
@@ -82,6 +82,17 @@ public class OpenCVLoader
*/
public static final String OPENCV_VERSION_3_2_0 = "3.2.0";
+ /**
+ * OpenCV Library version 3.3.0.
+ */
+ public static final String OPENCV_VERSION_3_3_0 = "3.3.0";
+
+ /**
+ * Current OpenCV Library version
+ */
+ public static final String OPENCV_VERSION = "@OPENCV_VERSION_MAJOR@.@OPENCV_VERSION_MINOR@.@OPENCV_VERSION_PATCH@";
+
+
/**
* Loads and initializes OpenCV library from current application package. Roughly, it's an analog of system.loadLibrary("opencv_java").
* @return Returns true is initialization of OpenCV was successful.
diff --git a/modules/java/generator/src/java/android+sync.py b/modules/java/generator/src/java/android+sync.py
deleted file mode 100755
index ed78537f08..0000000000
--- a/modules/java/generator/src/java/android+sync.py
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/python
-
-import os
-import shutil
-
-for f in os.listdir("."):
- shutil.copyfile(f, os.path.join("../../../../../../modules/java/generator/src/java/", "android+" + f));
diff --git a/modules/java/generator/src/java/osgi+OpenCVNativeLoader.java b/modules/java/generator/src/java/osgi+OpenCVNativeLoader.java.in
similarity index 90%
rename from modules/java/generator/src/java/osgi+OpenCVNativeLoader.java
rename to modules/java/generator/src/java/osgi+OpenCVNativeLoader.java.in
index 5ab9847e4f..77e290b1be 100644
--- a/modules/java/generator/src/java/osgi+OpenCVNativeLoader.java
+++ b/modules/java/generator/src/java/osgi+OpenCVNativeLoader.java.in
@@ -12,7 +12,7 @@ import java.util.logging.Logger;
public class OpenCVNativeLoader implements OpenCVInterface {
public void init() {
- System.loadLibrary("opencv_java320");
+ System.loadLibrary("opencv_java@LIB_NAME_SUFIX@");
Logger.getLogger("org.opencv.osgi").log(Level.INFO, "Successfully loaded OpenCV native library.");
}
}
diff --git a/platforms/maven/opencv-it/pom.xml b/platforms/maven/opencv-it/pom.xml
index caeaa7b21f..c1522a2a47 100644
--- a/platforms/maven/opencv-it/pom.xml
+++ b/platforms/maven/opencv-it/pom.xml
@@ -4,7 +4,7 @@
org.opencv
opencv-parent
- 3.2.0
+ 3.3.0
org.opencv
opencv-it
diff --git a/platforms/maven/opencv-it/src/test/java/org/opencv/osgi/DeployOpenCVTest.java b/platforms/maven/opencv-it/src/test/java/org/opencv/osgi/DeployOpenCVTest.java
index 71c1f3b8a9..be05ba63dd 100644
--- a/platforms/maven/opencv-it/src/test/java/org/opencv/osgi/DeployOpenCVTest.java
+++ b/platforms/maven/opencv-it/src/test/java/org/opencv/osgi/DeployOpenCVTest.java
@@ -32,7 +32,7 @@ public class DeployOpenCVTest {
/*
The expected string in Karaf logs when the bundle has deployed and native library loaded.
*/
- private static final String OPEN_CV_SUCCESSFUL_LOAD_STRING = "Successfully loaded OpenCV native library.";
+ private static final String OPENCV_SUCCESSFUL_LOAD_STRING = "Successfully loaded OpenCV native library.";
private static final String KARAF_VERSION = "4.0.6";
@@ -65,7 +65,7 @@ public class DeployOpenCVTest {
mavenBundle()
.groupId("org.opencv")
.artifactId("opencv")
- .version("3.2.0"),
+ .version("3.3.0"),
logLevel(LogLevelOption.LogLevel.INFO)
};
}
@@ -78,7 +78,7 @@ public class DeployOpenCVTest {
public void testOpenCVNativeLibraryLoadSuccess() {
Iterable loggingEvents = logService.getEvents();
- boolean loadSuccessful = logsContainsMessage(loggingEvents, OPEN_CV_SUCCESSFUL_LOAD_STRING);
+ boolean loadSuccessful = logsContainsMessage(loggingEvents, OPENCV_SUCCESSFUL_LOAD_STRING);
TestCase.assertTrue("Could not determine if OpenCV library successfully loaded from the logs.", loadSuccessful);
diff --git a/platforms/maven/opencv/pom.xml b/platforms/maven/opencv/pom.xml
index 23b65c2fd1..e3e424bd4c 100644
--- a/platforms/maven/opencv/pom.xml
+++ b/platforms/maven/opencv/pom.xml
@@ -4,7 +4,7 @@
org.opencv
opencv-parent
- 3.2.0
+ 3.3.0
org.opencv
opencv
@@ -89,21 +89,6 @@
-
- execstack
- process-classes
-
- exec
-
-
- ${build.directory}/lib
- execstack
-
- -c
- libopencv_java320.so
-
-
-
check-execstack
process-classes
@@ -115,7 +100,7 @@
bash
execstack_check
- ${build.directory}/lib/libopencv_java320.so
+ ${build.directory}/lib/libopencv_java${lib.version.string}.so
@@ -190,10 +175,12 @@
+ WARN
ANT_HOME
$ANT_HOME is not set. Build may fail.
+ WARN
JAVA_HOME
$JAVA_HOME is not set. Build WILL fail.
@@ -245,6 +232,7 @@
3.4.1-b2
+ generate-sources
cmake-generate
generate
@@ -255,15 +243,18 @@
Unix Makefiles
+
+ generate-sources
cmake-compile
compile
+ opencv_java
../../../build
diff --git a/platforms/maven/opencv/scripts/execstack_check b/platforms/maven/opencv/scripts/execstack_check
index f40db09c7b..04faeff4c4 100755
--- a/platforms/maven/opencv/scripts/execstack_check
+++ b/platforms/maven/opencv/scripts/execstack_check
@@ -20,8 +20,10 @@ red=$'\e[1;31m'
green=$'\e[1;32m'
end=$'\e[0m'
echo "${green}[INFO] Checking that the native library executable stack flag is NOT set.${end}"
-execstack -c $1
-execstack -q $1 | grep -o ^-
+BINARY=execstack
+$BINARY --help > /dev/null || BINARY=/usr/sbin/execstack
+$BINARY -c $1
+$BINARY -q $1 | grep -o ^-
if [ $? -ne 0 ]; then
echo
echo "${red}[ERROR] The Executable Flag could not be cleared on the library $1.${end}"
diff --git a/platforms/maven/pom.xml b/platforms/maven/pom.xml
index 15aba5fbb1..dd8c8246bf 100644
--- a/platforms/maven/pom.xml
+++ b/platforms/maven/pom.xml
@@ -3,13 +3,13 @@
4.0.0
org.opencv
opencv-parent
- 3.2.0
+ 3.3.0
pom
OpenCV Parent POM
License Agreement For Open Source Computer Vision Library (3-clause BSD License)
-
+ http://opencv.org/license.html
http://opencv.org/
@@ -29,8 +29,8 @@
libopencv_java${lib.version.string}.so
4.8.0
- 1.8
- 1.8
+ 1.7
+ 1.7