From af415085d891781072b017f63c67c9d1a8ea875b Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Tue, 4 Sep 2012 13:26:08 +0400 Subject: [PATCH] Fix Android build with CMake 2.6.3-2.8.3 --- cmake/OpenCVDetectAndroidSDK.cmake | 10 +++++++--- modules/java/CMakeLists.txt | 2 +- modules/java/android_test/CMakeLists.txt | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/cmake/OpenCVDetectAndroidSDK.cmake b/cmake/OpenCVDetectAndroidSDK.cmake index 7d69cc2950..5c2761fb5a 100644 --- a/cmake/OpenCVDetectAndroidSDK.cmake +++ b/cmake/OpenCVDetectAndroidSDK.cmake @@ -290,7 +290,7 @@ macro(add_android_project target path) COMMAND ${CMAKE_COMMAND} -E touch "${android_proj_bin_dir}/bin/${target}-debug.apk" # needed because ant does not update the timestamp of updated apk WORKING_DIRECTORY "${android_proj_bin_dir}" MAIN_DEPENDENCY "${android_proj_bin_dir}/${ANDROID_MANIFEST_FILE}" - DEPENDS ${android_proj_file_deps} ${JNI_LIB_NAME} ${__android_project_chain}) + DEPENDS ${android_proj_file_deps} ${JNI_LIB_NAME}) else() add_custom_command( OUTPUT "${android_proj_bin_dir}/bin/${target}-debug.apk" @@ -299,9 +299,8 @@ macro(add_android_project target path) WORKING_DIRECTORY "${android_proj_bin_dir}" MAIN_DEPENDENCY "${android_proj_bin_dir}/${ANDROID_MANIFEST_FILE}" DEPENDS "${OpenCV_BINARY_DIR}/bin/.classes.jar.dephelper" opencv_java # as we are part of OpenCV we can just force this dependency - DEPENDS ${android_proj_file_deps} ${JNI_LIB_NAME} ${__android_project_chain}) + DEPENDS ${android_proj_file_deps} ${JNI_LIB_NAME}) endif() - set(__android_project_chain ${target} CACHE INTERNAL "auxiliary variable used for Android progects chaining") unset(JNI_LIB_NAME) @@ -313,6 +312,11 @@ macro(add_android_project target path) add_dependencies(${target} ${android_proj_native_deps}) endif() + if(__android_project_chain) + add_dependencies(${target} ${__android_project_chain}) + endif() + set(__android_project_chain ${target} CACHE INTERNAL "auxiliary variable used for Android progects chaining") + # put the final .apk to the OpenCV's bin folder add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${android_proj_bin_dir}/bin/${target}-debug.apk" "${OpenCV_BINARY_DIR}/bin/${target}.apk") if(INSTALL_ANDROID_EXAMPLES AND "${target}" MATCHES "^example-") diff --git a/modules/java/CMakeLists.txt b/modules/java/CMakeLists.txt index 39c90d354d..50592ea223 100644 --- a/modules/java/CMakeLists.txt +++ b/modules/java/CMakeLists.txt @@ -182,7 +182,7 @@ if(ANDROID) # because samples and tests will make a copy of the library before install get_target_property(__opencv_java_location ${the_module} LOCATION) # Turn off stripping in debug build - if ( NOT (CMAKE_BUILD_TYPE MATCHES "debug")) + if ( NOT (CMAKE_BUILD_TYPE MATCHES "Debug")) add_custom_command(TARGET ${the_module} POST_BUILD COMMAND ${CMAKE_STRIP} --strip-unneeded "${__opencv_java_location}") endif() diff --git a/modules/java/android_test/CMakeLists.txt b/modules/java/android_test/CMakeLists.txt index fcbb3b3ec5..f6e5a7be9c 100644 --- a/modules/java/android_test/CMakeLists.txt +++ b/modules/java/android_test/CMakeLists.txt @@ -48,11 +48,11 @@ add_custom_command( WORKING_DIRECTORY "${opencv_test_java_bin_dir}" MAIN_DEPENDENCY "${opencv_test_java_bin_dir}/${ANDROID_MANIFEST_FILE}" DEPENDS "${OpenCV_BINARY_DIR}/bin/.classes.jar.dephelper" opencv_java - DEPENDS ${opencv_test_java_file_deps} ${__android_project_chain}) -set(__android_project_chain ${PROJECT_NAME} CACHE INTERNAL "auxiliary variable used for Android progects chaining") + DEPENDS ${opencv_test_java_file_deps}) add_custom_target(${PROJECT_NAME} ALL SOURCES "${opencv_test_java_bin_dir}/bin/OpenCVTest-debug.apk" ) -add_dependencies(${PROJECT_NAME} opencv_java) +add_dependencies(${PROJECT_NAME} opencv_java ${__android_project_chain}) +set(__android_project_chain ${PROJECT_NAME} CACHE INTERNAL "auxiliary variable used for Android progects chaining" FORCE) # put the final .apk to the OpenCV's bin folder add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${opencv_test_java_bin_dir}/bin/OpenCVTest-debug.apk" "${OpenCV_BINARY_DIR}/bin/${PROJECT_NAME}.apk")