Added "fat" mode for Java wrapper
This commit is contained in:
parent
0aa74f3846
commit
9b2d7e19db
@ -147,6 +147,7 @@ OCV_OPTION(BUILD_PERF_TESTS "Build performance tests"
|
||||
OCV_OPTION(BUILD_TESTS "Build accuracy & regression tests" ON IF (NOT IOS) )
|
||||
OCV_OPTION(BUILD_WITH_DEBUG_INFO "Include debug info into debug libs (not MSCV only)" ON )
|
||||
OCV_OPTION(BUILD_WITH_STATIC_CRT "Enables use of staticaly linked CRT for staticaly linked OpenCV" ON IF MSVC )
|
||||
OCV_OPTION(BUILD_FAT_JAVA_LIB "Create fat java wrapper containing the whole OpenCV library" ON IF ANDROID AND NOT BUILD_SHARED_LIBS AND CMAKE_COMPILER_IS_GNUCXX )
|
||||
|
||||
# 3rd party libs
|
||||
OCV_OPTION(BUILD_ZLIB "Build zlib from source" WIN32 OR IOS )
|
||||
|
@ -2,8 +2,12 @@
|
||||
macro(add_android_project _target _path)
|
||||
SET(android_dependencies opencv_contrib opencv_legacy opencv_objdetect opencv_calib3d opencv_features2d opencv_video opencv_highgui opencv_ml opencv_imgproc opencv_flann opencv_core)
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
if(BUILD_FAT_JAVA_LIB)
|
||||
SET(android_dependencies opencv_java)
|
||||
else()
|
||||
LIST(APPEND android_dependencies opencv_androidcamera)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (ANDROID AND CAN_BUILD_ANDROID_PROJECTS)
|
||||
file(GLOB_RECURSE res_files_all RELATIVE "${_path}" "${_path}/res/*")
|
||||
@ -49,32 +53,32 @@ macro(add_android_project _target _path)
|
||||
list(APPEND ${_target}_project_files "${build_path}/${f}")
|
||||
endforeach()
|
||||
|
||||
# process default.properties
|
||||
file(STRINGS "${_path}/default.properties" default_properties REGEX "^android\\.library\\.reference\\.1=.+$")
|
||||
if (default_properties)
|
||||
# process project.properties
|
||||
file(STRINGS "${_path}/project.properties" project_properties REGEX "^android\\.library\\.reference\\.1=.+$")
|
||||
if (project_properties)
|
||||
# has opencv dependency
|
||||
file(RELATIVE_PATH OPENCV_REFERENCE_PATH "${build_path}" "${CMAKE_BINARY_DIR}")
|
||||
add_custom_command(
|
||||
OUTPUT "${build_path}/default.properties"
|
||||
OUTPUT "${build_path}/project.properties"
|
||||
OUTPUT "${build_path}/build.xml"
|
||||
OUTPUT "${build_path}/local.properties"
|
||||
OUTPUT "${build_path}/proguard.cfg"
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "" > "default.properties"
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "" > "project.properties"
|
||||
COMMAND ${ANDROID_EXECUTABLE} update project --name "${_target}" --target "${ANDROID_SDK_TARGET}" --library "${OPENCV_REFERENCE_PATH}" --path .
|
||||
WORKING_DIRECTORY ${build_path}
|
||||
DEPENDS ${${_target}_project_files}
|
||||
DEPENDS "${CMAKE_BINARY_DIR}/default.properties"
|
||||
DEPENDS "${CMAKE_BINARY_DIR}/project.properties"
|
||||
DEPENDS "${CMAKE_BINARY_DIR}/AndroidManifest.xml"
|
||||
COMMENT "Updating android project - ${_target}"
|
||||
)
|
||||
else()
|
||||
# has no opencv dependency
|
||||
add_custom_command(
|
||||
OUTPUT "${build_path}/default.properties"
|
||||
OUTPUT "${build_path}/project.properties"
|
||||
OUTPUT "${build_path}/build.xml"
|
||||
OUTPUT "${build_path}/local.properties"
|
||||
OUTPUT "${build_path}/proguard.cfg"
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "" > "default.properties"
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "" > "project.properties"
|
||||
COMMAND ${ANDROID_EXECUTABLE} update project --name "${_target}" --target "${ANDROID_SDK_TARGET}" --path .
|
||||
WORKING_DIRECTORY ${build_path}
|
||||
DEPENDS ${${_target}_project_files}
|
||||
@ -83,11 +87,11 @@ macro(add_android_project _target _path)
|
||||
endif()
|
||||
|
||||
if("${build_path}" STREQUAL "${_path}")
|
||||
#in case of in-source build default.properties file is not generated (it is just overwritten :)
|
||||
SET_SOURCE_FILES_PROPERTIES("${build_path}/default.properties" PROPERTIES GENERATED FALSE)
|
||||
#in case of in-source build project.properties file is not generated (it is just overwritten :)
|
||||
SET_SOURCE_FILES_PROPERTIES("${build_path}/project.properties" PROPERTIES GENERATED FALSE)
|
||||
endif()
|
||||
|
||||
list(APPEND ${_target}_project_files "${build_path}/default.properties" "${build_path}/build.xml" "${build_path}/local.properties" "${build_path}/proguard.cfg")
|
||||
list(APPEND ${_target}_project_files "${build_path}/project.properties" "${build_path}/build.xml" "${build_path}/local.properties" "${build_path}/proguard.cfg")
|
||||
|
||||
# build native part of android project
|
||||
if(jni_files)
|
||||
@ -112,7 +116,7 @@ macro(add_android_project _target _path)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
TARGET ${JNI_LIB_NAME}
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_STRIP} "${build_path}/libs/${ANDROID_NDK_ABI_NAME}/*.so"
|
||||
COMMAND ${CMAKE_STRIP} --strip-unneeded "${build_path}/libs/${ANDROID_NDK_ABI_NAME}/*.so"
|
||||
)
|
||||
else()
|
||||
SET(JNI_LIB_NAME)
|
||||
|
@ -12,6 +12,13 @@ if(ANDROID)
|
||||
set(OPENCV_LIBTYPE_CONFIGMAKE "STATIC")
|
||||
endif()
|
||||
|
||||
if(BUILD_FAT_JAVA_LIB)
|
||||
set(OPENCV_LIBTYPE_CONFIGMAKE "SHARED")
|
||||
set(OPENCV_STATIC_LIBTYPE_CONFIGMAKE "STATIC")
|
||||
else()
|
||||
set(OPENCV_STATIC_LIBTYPE_CONFIGMAKE ${OPENCV_LIBTYPE_CONFIGMAKE})
|
||||
endif()
|
||||
|
||||
# setup lists of camera libs
|
||||
foreach(abi ARMEABI ARMEABI_V7A X86)
|
||||
ANDROID_GET_ABI_RAWNAME(${abi} ndkabi)
|
||||
@ -64,6 +71,12 @@ if(ANDROID)
|
||||
endforeach()
|
||||
string(REPLACE "opencv_" "" OPENCV_MODULES_CONFIGMAKE "${OPENCV_MODULES_CONFIGMAKE}")
|
||||
|
||||
if(BUILD_FAT_JAVA_LIB)
|
||||
set(OPENCV_LIBS_CONFIGMAKE java)
|
||||
else()
|
||||
set(OPENCV_LIBS_CONFIGMAKE "${OPENCV_MODULES_CONFIGMAKE}")
|
||||
endif()
|
||||
|
||||
# -------------------------------------------------------------------------------------------
|
||||
# Part 1/2: ${BIN_DIR}/OpenCV.mk -> For use *without* "make install"
|
||||
# -------------------------------------------------------------------------------------------
|
||||
|
@ -5,14 +5,31 @@ USER_LOCAL_PATH:=$(LOCAL_PATH)
|
||||
LOCAL_PATH:=$(subst ?,,$(firstword ?$(subst \, ,$(subst /, ,$(call my-dir)))))
|
||||
|
||||
OPENCV_THIS_DIR:=$(patsubst $(LOCAL_PATH)\\%,%,$(patsubst $(LOCAL_PATH)/%,%,$(call my-dir)))
|
||||
OPENCV_MK_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
|
||||
OPENCV_LIBS_DIR:=@OPENCV_LIBS_DIR_CONFIGCMAKE@
|
||||
OPENCV_BASEDIR:=@OPENCV_BASE_INCLUDE_DIR_CONFIGCMAKE@
|
||||
OPENCV_LOCAL_C_INCLUDES:=@OPENCV_INCLUDE_DIRS_CONFIGCMAKE@
|
||||
|
||||
OPENCV_LIB_TYPE:=@OPENCV_LIBTYPE_CONFIGMAKE@
|
||||
OPENCV_MODULES:=@OPENCV_MODULES_CONFIGMAKE@
|
||||
|
||||
ifeq ($(OPENCV_LIB_TYPE),)
|
||||
OPENCV_LIB_TYPE:=@OPENCV_LIBTYPE_CONFIGMAKE@
|
||||
endif
|
||||
|
||||
ifeq ($(OPENCV_LIB_TYPE),SHARED)
|
||||
OPENCV_LIBS:=@OPENCV_LIBS_CONFIGMAKE@
|
||||
OPENCV_LIB_TYPE:=@OPENCV_LIBTYPE_CONFIGMAKE@
|
||||
else
|
||||
OPENCV_LIBS:=$(OPENCV_MODULES)
|
||||
OPENCV_LIB_TYPE:=@OPENCV_STATIC_LIBTYPE_CONFIGMAKE@
|
||||
endif
|
||||
|
||||
ifeq ($(OPENCV_LIB_TYPE),SHARED)
|
||||
OPENCV_3RDPARTY_COMPONENTS:=
|
||||
OPENCV_EXTRA_COMPONENTS:=
|
||||
else
|
||||
OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE@
|
||||
OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_CONFIGMAKE@
|
||||
endif
|
||||
|
||||
ifeq (${OPENCV_CAMERA_MODULES},off)
|
||||
OPENCV_CAMERA_MODULES:=
|
||||
@ -32,13 +49,14 @@ ifeq ($(OPENCV_LIB_TYPE),SHARED)
|
||||
OPENCV_LIB_SUFFIX:=so
|
||||
else
|
||||
OPENCV_LIB_SUFFIX:=a
|
||||
OPENCV_INSTALL_MODULES:=on
|
||||
endif
|
||||
|
||||
define add_opencv_module
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE:=opencv_$1
|
||||
LOCAL_SRC_FILES:=$(OPENCV_LIBS_DIR)/libs/$(TARGET_ARCH_ABI)/libopencv_$1.$(OPENCV_LIB_SUFFIX)
|
||||
include $(PREBUILT_@OPENCV_LIBTYPE_CONFIGMAKE@_LIBRARY)
|
||||
include $(PREBUILT_$(OPENCV_LIB_TYPE)_LIBRARY)
|
||||
endef
|
||||
|
||||
define add_opencv_3rdparty_component
|
||||
@ -55,7 +73,9 @@ define add_opencv_camera_module
|
||||
include $(PREBUILT_SHARED_LIBRARY)
|
||||
endef
|
||||
|
||||
$(foreach module,$(OPENCV_MODULES),$(eval $(call add_opencv_module,$(module))))
|
||||
ifeq ($(OPENCV_INSTALL_MODULES),on)
|
||||
$(foreach module,$(OPENCV_LIBS),$(eval $(call add_opencv_module,$(module))))
|
||||
endif
|
||||
$(foreach module,$(OPENCV_3RDPARTY_COMPONENTS),$(eval $(call add_opencv_3rdparty_component,$(module))))
|
||||
$(foreach module,$(OPENCV_CAMERA_MODULES),$(eval $(call add_opencv_camera_module,$(module))))
|
||||
|
||||
@ -63,17 +83,24 @@ ifneq ($(OPENCV_BASEDIR),)
|
||||
OPENCV_LOCAL_C_INCLUDES += $(foreach mod, $(OPENCV_MODULES), $(OPENCV_BASEDIR)/modules/$(mod)/include)
|
||||
endif
|
||||
|
||||
ifeq ($(OPENCV_LIB_TYPE),STATIC)
|
||||
OPENCV_LOCAL_LIBRARIES += $(foreach mod, $(OPENCV_MODULES), opencv_$(mod))
|
||||
endif
|
||||
|
||||
OPENCV_LOCAL_LIBRARIES += $(OPENCV_EXTRA_COMPONENTS)
|
||||
ifeq ($(OPENCV_LOCAL_CFLAGS),)
|
||||
OPENCV_LOCAL_CFLAGS := -fPIC -DANDROID -fsigned-char
|
||||
endif
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_C_INCLUDES += $(OPENCV_LOCAL_C_INCLUDES)
|
||||
LOCAL_STATIC_LIBRARIES += $(OPENCV_LOCAL_LIBRARIES)
|
||||
LOCAL_CFLAGS += $(OPENCV_LOCAL_CFLAGS)
|
||||
|
||||
ifeq ($(OPENCV_INSTALL_MODULES),on)
|
||||
LOCAL_$(OPENCV_LIB_TYPE)_LIBRARIES += $(foreach mod, $(OPENCV_LIBS), opencv_$(mod))
|
||||
else
|
||||
LOCAL_LDLIBS += -L$(call host-path,$(LOCAL_PATH)/$(OPENCV_LIBS_DIR)/libs/$(TARGET_ARCH_ABI)) $(foreach lib, $(OPENCV_LIBS), -lopencv_$(lib))
|
||||
endif
|
||||
|
||||
ifeq ($(OPENCV_LIB_TYPE),STATIC)
|
||||
LOCAL_STATIC_LIBRARIES += $(OPENCV_3RDPARTY_COMPONENTS)
|
||||
endif
|
||||
|
||||
LOCAL_LDLIBS += $(foreach lib,$(OPENCV_EXTRA_COMPONENTS), -l$(lib))
|
||||
|
||||
#restore the LOCAL_PATH
|
||||
|
@ -160,7 +160,20 @@ add_custom_target(${api_target} DEPENDS ${java_files})
|
||||
|
||||
# add opencv_java library
|
||||
add_library(${target} SHARED ${handwrittren_h_sources} ${handwrittren_cpp_sources} ${generated_cpp_sources})
|
||||
if(BUILD_FAT_JAVA_LIB)
|
||||
set(__deps ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_MODULES_BUILD})
|
||||
list(REMOVE_ITEM __deps ${the_module})
|
||||
ocv_list_unique(__deps)
|
||||
set(__extradeps ${__deps})
|
||||
ocv_list_filterout(__extradeps "^opencv_")
|
||||
if(__extradeps)
|
||||
list(REMOVE_ITEM __deps ${__extradeps})
|
||||
endif()
|
||||
|
||||
target_link_libraries(${target} -Wl,-whole-archive ${__deps} -Wl,-no-whole-archive ${__extradeps} ${OPENCV_LINKER_LIBS})
|
||||
else()
|
||||
target_link_libraries(${target} ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_LINKER_LIBS})
|
||||
endif()
|
||||
add_dependencies(${target} ${api_target})
|
||||
|
||||
# Additional target properties
|
||||
@ -169,6 +182,7 @@ set_target_properties(${target} PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
|
||||
RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
|
||||
INSTALL_NAME_DIR ${OPENCV_LIB_INSTALL_PATH}
|
||||
LINK_INTERFACE_LIBRARIES ""
|
||||
)
|
||||
|
||||
install(TARGETS ${target} LIBRARY DESTINATION ${OPENCV_LIB_INSTALL_PATH} COMPONENT main)
|
||||
@ -181,7 +195,7 @@ if(ANDROID)
|
||||
add_custom_command(
|
||||
TARGET ${target}
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_STRIP} "${LIBRARY_OUTPUT_PATH}/lib${target}.so"
|
||||
COMMAND ${CMAKE_STRIP} --strip-unneeded "${LIBRARY_OUTPUT_PATH}/lib${target}.so"
|
||||
)
|
||||
|
||||
set(lib_proj_files "")
|
||||
|
@ -2,6 +2,9 @@ LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
OPENCV_LIB_TYPE:=STATIC
|
||||
OPENCV_INSTALL_MODULES:=on
|
||||
|
||||
include ../includeOpenCV.mk
|
||||
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
|
||||
#try to load OpenCV.mk from default install location
|
||||
|
@ -24,6 +24,10 @@ class Sample3View extends SampleViewBase {
|
||||
public native void FindFeatures(int width, int height, byte yuv[], int[] rgba);
|
||||
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary("opencv_java");
|
||||
} catch(Exception e) {
|
||||
}
|
||||
System.loadLibrary("native_sample");
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
OPENCV_CAMERA_MODULES:=off
|
||||
|
||||
include ../includeOpenCV.mk
|
||||
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
|
||||
#try to load OpenCV.mk from default install location
|
||||
|
@ -128,4 +128,8 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
System.loadLibrary("opencv_java");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user