diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake
index d47909386..b6d129a26 100644
--- a/cmake/OpenCVModule.cmake
+++ b/cmake/OpenCVModule.cmake
@@ -461,6 +461,7 @@ macro(ocv_create_module)
OUTPUT_NAME "${the_module}${OPENCV_DLLVERSION}"
DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
+ LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
INSTALL_NAME_DIR lib
)
diff --git a/modules/java/CMakeLists.txt b/modules/java/CMakeLists.txt
index 4ab68cfd0..55d8153b2 100644
--- a/modules/java/CMakeLists.txt
+++ b/modules/java/CMakeLists.txt
@@ -303,6 +303,12 @@ set_target_properties(${the_module} PROPERTIES
LINK_INTERFACE_LIBRARIES ""
)
+if(ANDROID)
+ set_target_properties(${the_module} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
+else()
+ set_target_properties(${the_module} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
+endif()
+
if(ENABLE_SOLUTION_FOLDERS)
set_target_properties(${the_module} PROPERTIES FOLDER "bindings")
endif()
diff --git a/modules/java/test/CMakeLists.txt b/modules/java/test/CMakeLists.txt
index b2c8d10ae..8f3021991 100644
--- a/modules/java/test/CMakeLists.txt
+++ b/modules/java/test/CMakeLists.txt
@@ -1,80 +1,77 @@
ocv_check_dependencies(opencv_java ${OPENCV_MODULE_opencv_java_OPT_DEPS} ${OPENCV_MODULE_opencv_java_REQ_DEPS})
-if(NOT OCV_DEPENDENCIES_FOUND OR NOT ANT_EXECUTABLE)
+if(NOT OCV_DEPENDENCIES_FOUND)
return()
endif()
-# TODO: This has the same name as the Android test project. That project should
-# probably be renamed.
project(opencv_test_java)
set(opencv_test_java_bin_dir "${CMAKE_CURRENT_BINARY_DIR}/.build")
-
set(android_source_dir "${CMAKE_CURRENT_SOURCE_DIR}/../android_test")
-
set(java_source_dir ${CMAKE_CURRENT_SOURCE_DIR})
# get project sources
-file(GLOB_RECURSE opencv_test_java_files RELATIVE "${android_source_dir}" "${android_source_dir}/res/*" "${android_source_dir}/src/*")
-ocv_list_filterout(opencv_test_java_files ".svn")
-ocv_list_filterout(opencv_test_java_files ".*#.*")
+file(GLOB_RECURSE opencv_test_java_files RELATIVE "${android_source_dir}" "${android_source_dir}/res/*" "${android_source_dir}/src/*.java")
# These are the files that need to be updated for pure Java.
-ocv_list_filterout(opencv_test_java_files ".*OpenCVTestCase.*")
-ocv_list_filterout(opencv_test_java_files ".*OpenCVTestRunner.*")
+ocv_list_filterout(opencv_test_java_files "OpenCVTest(Case|Runner).java")
# These files aren't for desktop Java.
-ocv_list_filterout(opencv_test_java_files ".*android.*")
+ocv_list_filterout(opencv_test_java_files "/android/")
# These are files updated for pure Java.
file(GLOB_RECURSE modified_files RELATIVE "${java_source_dir}" "${java_source_dir}/src/*")
-ocv_list_filterout(modified_files ".svn")
-ocv_list_filterout(modified_files ".*#.*")
# These are extra jars needed to run the tests.
-file(GLOB_RECURSE lib_files RELATIVE "${java_source_dir}" "${java_source_dir}/lib/*")
-ocv_list_filterout(lib_files ".svn")
-ocv_list_filterout(lib_files ".*#.*")
+file(GLOB_RECURSE lib_files RELATIVE "${java_source_dir}" "${java_source_dir}/lib/*.jar")
# copy sources out from the build tree
set(opencv_test_java_file_deps "")
foreach(f ${opencv_test_java_files})
- add_custom_command(
- OUTPUT "${opencv_test_java_bin_dir}/${f}"
- COMMAND ${CMAKE_COMMAND} -E copy "${android_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}"
- MAIN_DEPENDENCY "${android_source_dir}/${f}"
- COMMENT "Copying ${f}")
+ add_custom_command(OUTPUT "${opencv_test_java_bin_dir}/${f}"
+ COMMAND ${CMAKE_COMMAND} -E copy "${android_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}"
+ DEPENDS "${android_source_dir}/${f}"
+ COMMENT "Copying ${f}"
+ )
list(APPEND opencv_test_java_file_deps "${android_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}")
endforeach()
# Overwrite select Android sources with Java-specific sources.
# Also, copy over the libs we'll need for testing.
foreach(f ${modified_files} ${lib_files})
- add_custom_command(
- OUTPUT "${opencv_test_java_bin_dir}/${f}"
- COMMAND ${CMAKE_COMMAND} -E copy "${java_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}"
- MAIN_DEPENDENCY "${java_source_dir}/${f}"
- COMMENT "Copying ${f}")
- list(APPEND opencv_test_java_file_deps "${java_source_dir}/${f}")
+ add_custom_command(OUTPUT "${opencv_test_java_bin_dir}/${f}"
+ COMMAND ${CMAKE_COMMAND} -E copy "${java_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}"
+ DEPENDS "${java_source_dir}/${f}"
+ COMMENT "Copying ${f}"
+ )
+ list(APPEND opencv_test_java_file_deps "${java_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}")
endforeach()
# Copy the OpenCV jar after it has been generated.
-add_custom_command(
- OUTPUT "${opencv_test_java_bin_dir}/bin/${JAR_NAME}"
- COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/bin/${JAR_NAME}" "${opencv_test_java_bin_dir}/bin/${JAR_NAME}"
- COMMENT "Copying the OpenCV jar")
-add_custom_target(copy_opencv_jar ALL SOURCES "${opencv_test_java_bin_dir}/bin/${JAR_NAME}")
-# ${the_module} is the target for the Java jar.
-add_dependencies(copy_opencv_jar ${the_module})
+add_custom_command(OUTPUT "${opencv_test_java_bin_dir}/bin/${JAR_NAME}"
+ COMMAND ${CMAKE_COMMAND} -E copy "${JAR_FILE}" "${opencv_test_java_bin_dir}/bin/${JAR_NAME}"
+ DEPENDS "${JAR_FILE}"
+ COMMENT "Copying the OpenCV jar"
+ )
-# Copy the ant build file.
-file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/build.xml" DESTINATION "${opencv_test_java_bin_dir}")
+add_custom_command(OUTPUT "${opencv_test_java_bin_dir}/build.xml"
+ COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/build.xml" "${opencv_test_java_bin_dir}/build.xml"
+ DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/build.xml"
+ COMMENT "Copying build.xml"
+ )
# Create a script for running the Java tests and place it in build/bin.
-if(WIN32)
- file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java.cmd" "cd ${opencv_test_java_bin_dir}\nset PATH=${EXECUTABLE_OUTPUT_PATH}/Release;%PATH%\nant -DjavaLibraryPath=${EXECUTABLE_OUTPUT_PATH}/Release buildAndTest")
- file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java_D.cmd" "cd ${opencv_test_java_bin_dir}\nset PATH=${EXECUTABLE_OUTPUT_PATH}/Debug;%PATH%\nant -DjavaLibraryPath=${EXECUTABLE_OUTPUT_PATH}/Debug buildAndTest")
-else()
- file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java.sh" "cd ${opencv_test_java_bin_dir};\nant -DjavaLibraryPath=${LIBRARY_OUTPUT_PATH} buildAndTest;\ncd -")
-endif()
+#if(WIN32)
+ #file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java.cmd" "cd ${opencv_test_java_bin_dir}\nset PATH=${EXECUTABLE_OUTPUT_PATH}/Release;%PATH%\nant -DjavaLibraryPath=${EXECUTABLE_OUTPUT_PATH}/Release buildAndTest")
+ #file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java_D.cmd" "cd ${opencv_test_java_bin_dir}\nset PATH=${EXECUTABLE_OUTPUT_PATH}/Debug;%PATH%\nant -DjavaLibraryPath=${EXECUTABLE_OUTPUT_PATH}/Debug buildAndTest")
+#else()
+ #file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java.sh" "cd ${opencv_test_java_bin_dir};\nant -DjavaLibraryPath=${LIBRARY_OUTPUT_PATH} buildAndTest;\ncd -")
+#endif()
-add_custom_target(${PROJECT_NAME} ALL SOURCES ${opencv_test_java_file_deps})
-add_dependencies(opencv_tests ${PROJECT_NAME})
+add_custom_command(OUTPUT "${opencv_test_java_bin_dir}/build/jar/opencv-test.jar"
+ COMMAND "${ANT_EXECUTABLE}" build
+ WORKING_DIRECTORY "${opencv_test_java_bin_dir}"
+ DEPENDS ${opencv_test_java_file_deps} "${opencv_test_java_bin_dir}/build.xml" "${CMAKE_CURRENT_SOURCE_DIR}/build.xml" "${JAR_FILE}" "${opencv_test_java_bin_dir}/bin/${JAR_NAME}"
+ COMMENT "Build Java tests"
+ )
+
+add_custom_target(${PROJECT_NAME} ALL SOURCES "${opencv_test_java_bin_dir}/build/jar/opencv-test.jar")
+add_dependencies(${PROJECT_NAME} ${the_module})
diff --git a/modules/java/test/build.xml b/modules/java/test/build.xml
index 5843f7438..11b25c66f 100644
--- a/modules/java/test/build.xml
+++ b/modules/java/test/build.xml
@@ -16,7 +16,7 @@
-
+
@@ -26,7 +26,7 @@
-
+
@@ -35,6 +35,7 @@
+
@@ -43,13 +44,18 @@
-
-
-
+
+
+
+
+
+
+
+
diff --git a/modules/ts/misc/run.py b/modules/ts/misc/run.py
index d6e61d327..435171371 100755
--- a/modules/ts/misc/run.py
+++ b/modules/ts/misc/run.py
@@ -69,6 +69,8 @@ parse_patterns = (
{'name': "ndk_path", 'default': None, 'pattern': re.compile("^(?:ANDROID_NDK|ANDROID_STANDALONE_TOOLCHAIN)?:PATH=(.*)$")},
{'name': "android_abi", 'default': None, 'pattern': re.compile("^ANDROID_ABI:STRING=(.*)$")},
{'name': "android_executable", 'default': None, 'pattern': re.compile("^ANDROID_EXECUTABLE:FILEPATH=(.*android.*)$")},
+ {'name': "ant_executable", 'default': None, 'pattern': re.compile("^ANT_EXECUTABLE:FILEPATH=(.*ant.*)$")},
+ {'name': "java_test_binary_dir", 'default': None, 'pattern': re.compile("^opencv_test_java_BINARY_DIR:STATIC=(.*)$")},
{'name': "is_x64", 'default': "OFF", 'pattern': re.compile("^CUDA_64_BIT_DEVICE_CODE:BOOL=(ON)$")},#ugly(
{'name': "cmake_generator", 'default': None, 'pattern': re.compile("^CMAKE_GENERATOR:INTERNAL=(.+)$")},
{'name': "cxx_compiler", 'default': None, 'pattern': re.compile("^CMAKE_CXX_COMPILER:FILEPATH=(.+)$")},
@@ -431,6 +433,8 @@ class TestSuite(object):
if self.tests_dir and os.path.isdir(self.tests_dir):
files = glob.glob(os.path.join(self.tests_dir, self.nameprefix + "*"))
files = [f for f in files if self.isTest(f)]
+ if self.ant_executable and self.java_test_binary_dir:
+ files.append("java")
return files
return []
@@ -740,6 +744,16 @@ class TestSuite(object):
if os.path.isfile(hostlogpath):
return hostlogpath
return None
+ elif path == "java":
+ cmd = [self.ant_executable, "-DjavaLibraryPath=" + self.tests_dir, "buildAndTest"]
+
+ print >> _stderr, "Run command:", " ".join(cmd)
+ try:
+ Popen(cmd, stdout=_stdout, stderr=_stderr, cwd = self.java_test_binary_dir + "/.build").wait()
+ except OSError:
+ pass
+
+ return None
else:
cmd = [exe]
if self.options.help: