android: build fixes
authorAlexander Alekhin <alexander.alekhin@intel.com>
Wed, 26 Apr 2017 10:58:35 +0000 (13:58 +0300)
committerAlexander Alekhin <alexander.alekhin@intel.com>
Wed, 26 Apr 2017 11:24:51 +0000 (14:24 +0300)
- eliminate CMake 3.5+ warnings
- removed usage of dropped "OPENCV_CAMERA_MODULES" variable
- partial support for Android NDK 11+

cmake/templates/OpenCV.mk.in
modules/java/android_lib/jni/Android.mk
platforms/android/android.toolchain.cmake
platforms/android/build-tests/test_ndk_build.py
samples/android/face-detection/jni/Android.mk

index e99b1ad..addde3a 100644 (file)
@@ -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
 
index 72418c8..129f567 100644 (file)
@@ -2,7 +2,6 @@ LOCAL_PATH := $(call my-dir)
 
 include $(CLEAR_VARS)
 
-OPENCV_CAMERA_MODULES := off
 include OpenCV.mk
 
 LOCAL_MODULE    := opencv_java
index 1d69b75..6d64f92 100644 (file)
@@ -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()
index 60b76e7..cbc2b7c 100644 (file)
@@ -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
index 0686b22..e882cac 100644 (file)
@@ -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