if(CMAKE_COMPILER_IS_GNUCXX)\r
set(ENABLE_PROFILING OFF CACHE BOOL "Enable profiling in the GCC compiler (Add flags: -g -pg)")\r
set(USE_OMIT_FRAME_POINTER ON CACHE BOOL "Enable -fomit-frame-pointer for GCC")\r
- if(${CMAKE_SYSTEM_PROCESSOR} MATCHES arm*)\r
- # We can use only -O2 because the -O3 causes gcc crash\r
- set(USE_O2 ON CACHE BOOL "Enable -O2 for GCC")\r
- set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")\r
- endif()\r
\r
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*|x86_64*)\r
set(X86_64 1)\r
\r
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i686*|i386*|x86*)\r
set(X86 1)\r
- endif() \r
+ endif()\r
\r
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES powerpc*)\r
set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")\r
\r
set(CMAKE_LIB_DIRS_CONFIGCMAKE "${LIBRARY_OUTPUT_PATH}")\r
\r
-if (ANDROID)\r
- if (NOT BUILD_SHARED_LIBS)\r
- set(CMAKE_LIB_DIRS_CONFIGCMAKE ${CMAKE_LIB_DIRS_CONFIGCMAKE} "${CMAKE_BINARY_DIR}/lib")\r
- endif()\r
-\r
- if( HAVE_ANDROID_NATIVE_CAMERA )\r
- set(CMAKE_LIB_DIRS_CONFIGCMAKE ${CMAKE_LIB_DIRS_CONFIGCMAKE} ${NativeCamera_LIB_DIR})\r
- endif()\r
+if( HAVE_ANDROID_NATIVE_CAMERA )\r
+ set(CMAKE_LIB_DIRS_CONFIGCMAKE ${CMAKE_LIB_DIRS_CONFIGCMAKE} ${NativeCamera_LIB_DIR})\r
endif()\r
\r
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig.cmake" IMMEDIATE @ONLY)\r
add_library(${the_target} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs})
# For dynamic link numbering convenions
- set_target_properties(${the_target} PROPERTIES
- VERSION ${OPENCV_VERSION}
- SOVERSION ${OPENCV_SOVERSION}
- OUTPUT_NAME "${the_target}${OPENCV_DLLVERSION}"
- )
- if(ENABLE_SOLUTION_FOLDERS)
- set_target_properties(${the_target} PROPERTIES FOLDER "modules")
- endif()
+ if(NOT ANDROID)
+ # Android SDK build scripts can include only .so files into final .apk
+ # As result we should not set version properties for Android
+ set_target_properties(${the_target} PROPERTIES
+ VERSION ${OPENCV_VERSION}
+ SOVERSION ${OPENCV_SOVERSION}
+ )
+ endif()
+
+ set_target_properties(${the_target} PROPERTIES OUTPUT_NAME "${the_target}${OPENCV_DLLVERSION}" )
+
+ if(ENABLE_SOLUTION_FOLDERS)
+ set_target_properties(${the_target} PROPERTIES FOLDER "modules")
+ endif()
- if (BUILD_SHARED_LIBS)
- if(MSVC)
- set_target_properties(${the_target} PROPERTIES DEFINE_SYMBOL CVAPI_EXPORTS)
- else()
- add_definitions(-DCVAPI_EXPORTS)
- endif()
+ if (BUILD_SHARED_LIBS)
+ if(MSVC)
+ set_target_properties(${the_target} PROPERTIES DEFINE_SYMBOL CVAPI_EXPORTS)
+ else()
+ add_definitions(-DCVAPI_EXPORTS)
+ endif()
endif()
# Additional target properties
#Enable SSSE3 instructions
SET( ENABLE_SSSE3 OFF CACHE INTERNAL "" FORCE )
+
+#Set output folder to "libs" instead of "lib" for better compatibility with java projects
+SET( LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/libs CACHE PATH "path for android libs" )
set( ARMEABI true )
set( ARMEABI_NDK_NAME "armeabi" )
set( NEON false )
+ set( CMAKE_SYSTEM_PROCESSOR "armv5te" )
else()
if( ARM_TARGET STREQUAL "armeabi-v7a with NEON" )
set( NEON true )
endif()
set( ARMEABI_V7A true )
set( ARMEABI_NDK_NAME "armeabi-v7a" )
+ set( CMAKE_SYSTEM_PROCESSOR "armv7-a" )
endif()
#setup output directories
SET( DO_NOT_CHANGE_OUTPUT_PATHS_ON_FIRST_PASS OFF CACHE BOOL "")
if( DO_NOT_CHANGE_OUTPUT_PATHS_ON_FIRST_PASS )
#some cmake standard modules work incorrectly if output paths are changed
- set( LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ARMEABI_NDK_NAME} CACHE PATH "path for android libs" FORCE )
- set( EXECUTABLE_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH_ROOT}/bin/${ARMEABI_NDK_NAME} CACHE PATH "Output directory for applications" FORCE)
+ if( EXISTS ${CMAKE_SOURCE_DIR}/jni/CMakeLists.txt )
+ # these paths are required for jni part of Android projects
+ # but they may conflict with traditional unix makefile's folder structure
+ set( LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ARMEABI_NDK_NAME} CACHE PATH "path for android libs" FORCE )
+ set( EXECUTABLE_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH_ROOT}/bin/${ARMEABI_NDK_NAME} CACHE PATH "Output directory for applications" FORCE)
+ endif()
set( CMAKE_INSTALL_PREFIX ${ANDROID_NDK_TOOLCHAIN_ROOT}/user/${ARMEABI_NDK_NAME} CACHE STRING "path for installing" FORCE )
endif()
SET( DO_NOT_CHANGE_OUTPUT_PATHS_ON_FIRST_PASS ON CACHE INTERNAL "" FORCE)
:: variables required for OpenCV build ::\r
+:: Note: all pathes should be specified without tailing slashes!\r
SET ANDROID_NDK=C:\full\path\to\your\copy\of\android\NDK\android-ndk-r5b\r
SET CMAKE_EXE=C:\full\path\to\cmake\utility\cmake.exe\r
SET MAKE_EXE=C:\full\path\to\native\port\of\make\utility\make.exe\r
::SET BUILD_DIR=build_neon\r
\r
:::: other options\r
-::SET ANDROID_API_LEVEL=8 &:: android-3 is enough for OpenCV but android-8 is recommended
\ No newline at end of file
+::SET ANDROID_API_LEVEL=8 &:: android-3 is enough for OpenCV but android-8 is recommended\r
endif()
# For dynamic link numbering convenions
-set_target_properties(${the_target} PROPERTIES
- VERSION ${OPENCV_VERSION}
- SOVERSION ${OPENCV_SOVERSION}
- OUTPUT_NAME "${the_target}${OPENCV_DLLVERSION}"
- )
+if(NOT ANDROID)
+ # Android SDK build scripts can include only .so files into final .apk
+ set_target_properties(${the_target} PROPERTIES
+ VERSION ${OPENCV_VERSION}
+ SOVERSION ${OPENCV_SOVERSION}
+ )
+endif()
+
+set_target_properties(${the_target} PROPERTIES OUTPUT_NAME "${the_target}${OPENCV_DLLVERSION}" )
# Additional target properties
set_target_properties(${the_target} PROPERTIES