Commit 133b91a0 authored by Alexander Alekhin's avatar Alexander Alekhin

android: build fixes

- eliminate CMake 3.5+ warnings
- removed usage of dropped "OPENCV_CAMERA_MODULES" variable
- partial support for Android NDK 11+
parent 26be2402
...@@ -94,6 +94,8 @@ LOCAL_CFLAGS += $(OPENCV_LOCAL_CFLAGS) ...@@ -94,6 +94,8 @@ LOCAL_CFLAGS += $(OPENCV_LOCAL_CFLAGS)
ifeq ($(OPENCV_INSTALL_MODULES),on) ifeq ($(OPENCV_INSTALL_MODULES),on)
LOCAL_$(OPENCV_LIB_TYPE)_LIBRARIES += $(foreach mod, $(OPENCV_LIBS), opencv_$(mod)) LOCAL_$(OPENCV_LIB_TYPE)_LIBRARIES += $(foreach mod, $(OPENCV_LIBS), opencv_$(mod))
else 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)) LOCAL_LDLIBS += -L$(call host-path,$(LOCAL_PATH)/$(OPENCV_LIBS_DIR)) $(foreach lib, $(OPENCV_LIBS), -lopencv_$(lib))
endif endif
......
...@@ -2,7 +2,6 @@ LOCAL_PATH := $(call my-dir) ...@@ -2,7 +2,6 @@ LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS) include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES := off
include OpenCV.mk include OpenCV.mk
LOCAL_MODULE := opencv_java LOCAL_MODULE := opencv_java
......
...@@ -1150,8 +1150,10 @@ if( APPLE ) ...@@ -1150,8 +1150,10 @@ if( APPLE )
endif() endif()
# Force set compilers because standard identification works badly for us # Force set compilers because standard identification works badly for us
include( CMakeForceCompiler ) if( CMAKE_VERSION VERSION_LESS 3.5.0 )
CMAKE_FORCE_C_COMPILER( "${CMAKE_C_COMPILER}" GNU ) include( CMakeForceCompiler )
CMAKE_FORCE_C_COMPILER( "${CMAKE_C_COMPILER}" GNU )
endif()
if( ANDROID_COMPILER_IS_CLANG ) if( ANDROID_COMPILER_IS_CLANG )
set( CMAKE_C_COMPILER_ID Clang ) set( CMAKE_C_COMPILER_ID Clang )
endif() endif()
...@@ -1163,7 +1165,9 @@ else() ...@@ -1163,7 +1165,9 @@ else()
endif() endif()
set( CMAKE_C_HAS_ISYSROOT 1 ) set( CMAKE_C_HAS_ISYSROOT 1 )
set( CMAKE_C_COMPILER_ABI ELF ) 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 ) if( ANDROID_COMPILER_IS_CLANG )
set( CMAKE_CXX_COMPILER_ID Clang) set( CMAKE_CXX_COMPILER_ID Clang)
endif() endif()
......
...@@ -73,12 +73,12 @@ class TestNDKBuild(unittest.TestCase): ...@@ -73,12 +73,12 @@ class TestNDKBuild(unittest.TestCase):
p = [] p = []
if self.libtype == "static": if self.libtype == "static":
p.append("OPENCV_LIB_TYPE := 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_LIB_TYPE := SHARED")
p.append("OPENCV_CAMERA_MODULES:=on")
p.append("OPENCV_INSTALL_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_LIB_TYPE := SHARED")
p.append("OPENCV_INSTALL_MODULES:=off")
p.append("include %s" % os.path.join(self.opencv_mk_path, "OpenCV.mk")) 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) return TEMPLATE_ANDROID_MK.format(cut = "\n".join(p), cpp1 = self.cpp1, cpp2 = self.cpp2)
...@@ -115,14 +115,17 @@ class TestNDKBuild(unittest.TestCase): ...@@ -115,14 +115,17 @@ class TestNDKBuild(unittest.TestCase):
def suite(workdir, opencv_mk_path): def suite(workdir, opencv_mk_path):
abis = ["armeabi", "armeabi-v7a", "x86", "mips"] abis = ["armeabi", "armeabi-v7a", "x86", "mips"]
ndk_path = os.environ["ANDROID_NDK"] ndk_path = os.environ["ANDROID_NDK"]
with open(os.path.join(ndk_path, "RELEASE.TXT"), "r") as f: if os.path.exists(os.path.join(ndk_path, "RELEASE.TXT")):
s = f.read() with open(os.path.join(ndk_path, "RELEASE.TXT"), "r") as f:
if re.search(r'r10[b-e]', s): s = f.read()
abis.extend(["arm64-v8a", "x86", "x86_64"]) 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") abis.append("all")
suite = unittest.TestSuite() suite = unittest.TestSuite()
for libtype in ["static", "shared", "shared_debug"]: for libtype in ["static", "shared", "shared_opencv_manager"]:
for abi in abis: for abi in abis:
suite.addTest(TestNDKBuild(abi, libtype, opencv_mk_path, workdir)) suite.addTest(TestNDKBuild(abi, libtype, opencv_mk_path, workdir))
return suite return suite
......
...@@ -2,7 +2,6 @@ LOCAL_PATH := $(call my-dir) ...@@ -2,7 +2,6 @@ LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS) include $(CLEAR_VARS)
#OPENCV_CAMERA_MODULES:=off
#OPENCV_INSTALL_MODULES:=off #OPENCV_INSTALL_MODULES:=off
#OPENCV_LIB_TYPE:=SHARED #OPENCV_LIB_TYPE:=SHARED
ifdef OPENCV_ANDROID_SDK ifdef OPENCV_ANDROID_SDK
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment