From: Alexander Alekhin Date: Wed, 26 Apr 2017 10:58:35 +0000 (+0300) Subject: android: build fixes X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~1033^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=133b91a0269c0483412364be56d3c996a06fae7d;p=platform%2Fupstream%2Fopencv.git android: build fixes - eliminate CMake 3.5+ warnings - removed usage of dropped "OPENCV_CAMERA_MODULES" variable - partial support for Android NDK 11+ --- diff --git a/cmake/templates/OpenCV.mk.in b/cmake/templates/OpenCV.mk.in index e99b1ad..addde3a 100644 --- a/cmake/templates/OpenCV.mk.in +++ b/cmake/templates/OpenCV.mk.in @@ -94,6 +94,8 @@ LOCAL_CFLAGS += $(OPENCV_LOCAL_CFLAGS) ifeq ($(OPENCV_INSTALL_MODULES),on) LOCAL_$(OPENCV_LIB_TYPE)_LIBRARIES += $(foreach mod, $(OPENCV_LIBS), opencv_$(mod)) else + $(call __ndk_info,OpenCV: You should ignore warning about 'non-system libraries in linker flags' and 'opencv_java' library.) + $(call __ndk_info, 'OPENCV_INSTALL_MODULES:=on' can be used to build APK with included OpenCV binaries) LOCAL_LDLIBS += -L$(call host-path,$(LOCAL_PATH)/$(OPENCV_LIBS_DIR)) $(foreach lib, $(OPENCV_LIBS), -lopencv_$(lib)) endif diff --git a/modules/java/android_lib/jni/Android.mk b/modules/java/android_lib/jni/Android.mk index 72418c8..129f567 100644 --- a/modules/java/android_lib/jni/Android.mk +++ b/modules/java/android_lib/jni/Android.mk @@ -2,7 +2,6 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -OPENCV_CAMERA_MODULES := off include OpenCV.mk LOCAL_MODULE := opencv_java diff --git a/platforms/android/android.toolchain.cmake b/platforms/android/android.toolchain.cmake index 1d69b75..6d64f92 100644 --- a/platforms/android/android.toolchain.cmake +++ b/platforms/android/android.toolchain.cmake @@ -1150,8 +1150,10 @@ if( APPLE ) endif() # Force set compilers because standard identification works badly for us -include( CMakeForceCompiler ) -CMAKE_FORCE_C_COMPILER( "${CMAKE_C_COMPILER}" GNU ) +if( CMAKE_VERSION VERSION_LESS 3.5.0 ) + include( CMakeForceCompiler ) + CMAKE_FORCE_C_COMPILER( "${CMAKE_C_COMPILER}" GNU ) +endif() if( ANDROID_COMPILER_IS_CLANG ) set( CMAKE_C_COMPILER_ID Clang ) endif() @@ -1163,7 +1165,9 @@ else() endif() set( CMAKE_C_HAS_ISYSROOT 1 ) set( CMAKE_C_COMPILER_ABI ELF ) -CMAKE_FORCE_CXX_COMPILER( "${CMAKE_CXX_COMPILER}" GNU ) +if( CMAKE_VERSION VERSION_LESS 3.5.0 ) + CMAKE_FORCE_CXX_COMPILER( "${CMAKE_CXX_COMPILER}" GNU ) +endif() if( ANDROID_COMPILER_IS_CLANG ) set( CMAKE_CXX_COMPILER_ID Clang) endif() diff --git a/platforms/android/build-tests/test_ndk_build.py b/platforms/android/build-tests/test_ndk_build.py index 60b76e7..cbc2b7c 100644 --- a/platforms/android/build-tests/test_ndk_build.py +++ b/platforms/android/build-tests/test_ndk_build.py @@ -73,12 +73,12 @@ class TestNDKBuild(unittest.TestCase): p = [] if self.libtype == "static": p.append("OPENCV_LIB_TYPE := STATIC") - elif self.libtype == "shared_debug": + elif self.libtype == "shared": p.append("OPENCV_LIB_TYPE := SHARED") - p.append("OPENCV_CAMERA_MODULES:=on") p.append("OPENCV_INSTALL_MODULES:=on") - elif self.libtype == "shared": + elif self.libtype == "shared_opencv_manager": p.append("OPENCV_LIB_TYPE := SHARED") + p.append("OPENCV_INSTALL_MODULES:=off") p.append("include %s" % os.path.join(self.opencv_mk_path, "OpenCV.mk")) return TEMPLATE_ANDROID_MK.format(cut = "\n".join(p), cpp1 = self.cpp1, cpp2 = self.cpp2) @@ -115,14 +115,17 @@ class TestNDKBuild(unittest.TestCase): def suite(workdir, opencv_mk_path): abis = ["armeabi", "armeabi-v7a", "x86", "mips"] ndk_path = os.environ["ANDROID_NDK"] - with open(os.path.join(ndk_path, "RELEASE.TXT"), "r") as f: - s = f.read() - if re.search(r'r10[b-e]', s): - abis.extend(["arm64-v8a", "x86", "x86_64"]) + if os.path.exists(os.path.join(ndk_path, "RELEASE.TXT")): + with open(os.path.join(ndk_path, "RELEASE.TXT"), "r") as f: + s = f.read() + if re.search(r'r10[b-e]', s): + abis.extend(["arm64-v8a", "x86_64"]) + if os.path.exists(os.path.join(ndk_path, "source.properties")): # Android NDK 11+ + abis.extend(["arm64-v8a", "x86_64"]) abis.append("all") suite = unittest.TestSuite() - for libtype in ["static", "shared", "shared_debug"]: + for libtype in ["static", "shared", "shared_opencv_manager"]: for abi in abis: suite.addTest(TestNDKBuild(abi, libtype, opencv_mk_path, workdir)) return suite diff --git a/samples/android/face-detection/jni/Android.mk b/samples/android/face-detection/jni/Android.mk index 0686b22..e882cac 100644 --- a/samples/android/face-detection/jni/Android.mk +++ b/samples/android/face-detection/jni/Android.mk @@ -2,7 +2,6 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -#OPENCV_CAMERA_MODULES:=off #OPENCV_INSTALL_MODULES:=off #OPENCV_LIB_TYPE:=SHARED ifdef OPENCV_ANDROID_SDK