1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-31 08:13:04 +04:00

Added "fat" mode for Java wrapper

This commit is contained in:
Andrey Kamaev
2012-03-23 17:03:05 +00:00
parent 0aa74f3846
commit 9b2d7e19db
9 changed files with 101 additions and 30 deletions
+17 -13
View File
@@ -1,8 +1,12 @@
# creates target "${_target}_android_project" for building standard Android project
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)
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)
@@ -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)
+13
View File
@@ -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"
# -------------------------------------------------------------------------------------------
+42 -15
View File
@@ -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@
OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE@
OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_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,18 +83,25 @@ 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))
ifeq ($(OPENCV_LOCAL_CFLAGS),)
OPENCV_LOCAL_CFLAGS := -fPIC -DANDROID -fsigned-char
endif
OPENCV_LOCAL_LIBRARIES += $(OPENCV_EXTRA_COMPONENTS)
OPENCV_LOCAL_CFLAGS := -fPIC -DANDROID -fsigned-char
include $(CLEAR_VARS)
LOCAL_C_INCLUDES += $(OPENCV_LOCAL_C_INCLUDES)
LOCAL_STATIC_LIBRARIES += $(OPENCV_LOCAL_LIBRARIES)
LOCAL_CFLAGS += $(OPENCV_LOCAL_CFLAGS)
LOCAL_LDLIBS += $(foreach lib,$(OPENCV_EXTRA_COMPONENTS), -l$(lib))
LOCAL_C_INCLUDES += $(OPENCV_LOCAL_C_INCLUDES)
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
LOCAL_PATH:=$(USER_LOCAL_PATH)