Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
38ea3399
Commit
38ea3399
authored
Aug 17, 2012
by
Vadim Pisarevsky
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
41b6d25b
6da9b9f1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
65 additions
and
64 deletions
+65
-64
android.toolchain.cmake
android/android.toolchain.cmake
+65
-64
No files found.
android/android.toolchain.cmake
View file @
38ea3399
# ------------------------------------------------------------------------------
# Android CMake toolchain file, for use with the Android NDK r5-r8
# Requires cmake 2.6.3 or newer (2.8.
3
or newer is recommended).
# Requires cmake 2.6.3 or newer (2.8.
5
or newer is recommended).
# See home page: http://code.google.com/p/android-cmake/
#
# The file is mantained by the OpenCV project. And also can be found at
...
...
@@ -44,7 +44,8 @@
# ANDROID_ABI=armeabi-v7a - specifies the target Application Binary
# Interface (ABI). This option nearly matches to the APP_ABI variable
# used by ndk-build tool from Android NDK.
# Possible values are:
#
# Possible targets are:
# "armeabi" - matches to the NDK ABI with the same name.
# See ${ANDROID_NDK}/docs/CPU-ARCH-ABIS.html for the documentation.
# "armeabi-v7a" - matches to the NDK ABI with the same name.
...
...
@@ -56,6 +57,8 @@
# "armeabi-v6 with VFP" - tuned for ARMv6 processors having VFP.
# "x86" - matches to the NDK ABI with the same name.
# See ${ANDROID_NDK}/docs/CPU-ARCH-ABIS.html for the documentation.
# "mips" - matches to the NDK ABI with the same name
# (not testes on real devices)
#
# ANDROID_NATIVE_API_LEVEL=android-8 - level of Android API compile for.
# Option is read-only when standalone toolchain used.
...
...
@@ -183,12 +186,13 @@
# - modified August 2012
# [+] updated for NDK r8b
# [~] all intermediate files generated by toolchain are moved into CMakeFiles
# [~] libstdc++ and libsupc are removed from explicit link libraries
# ------------------------------------------------------------------------------
cmake_minimum_required
(
VERSION 2.6.3
)
if
(
DEFINED CMAKE_CROSSCOMPILING
)
#subsequent toolchain loading is not really needed
#
subsequent toolchain loading is not really needed
return
()
endif
()
...
...
@@ -199,7 +203,7 @@ endif()
# this one is important
set
(
CMAKE_SYSTEM_NAME Linux
)
#this one not so much
#
this one not so much
set
(
CMAKE_SYSTEM_VERSION 1
)
set
(
ANDROID_SUPPORTED_NDK_VERSIONS
${
ANDROID_EXTRA_NDK_VERSIONS
}
-r8b -r8 -r7c -r7b -r7 -r6b -r6 -r5c -r5b -r5
""
)
...
...
@@ -331,11 +335,11 @@ macro( __COPY_IF_DIFFERENT _source _destination )
endmacro
()
#stl version: by default gnustl_static will be used
#
stl version: by default gnustl_static will be used
set
(
ANDROID_USE_STLPORT FALSE CACHE BOOL
"Experimental: use stlport_static instead of gnustl_static"
)
mark_as_advanced
(
ANDROID_USE_STLPORT
)
#fight against cygwin
#
fight against cygwin
set
(
ANDROID_FORBID_SYGWIN TRUE CACHE BOOL
"Prevent cmake from working under cygwin and using cygwin tools"
)
mark_as_advanced
(
ANDROID_FORBID_SYGWIN
)
if
(
ANDROID_FORBID_SYGWIN
)
...
...
@@ -344,7 +348,7 @@ if( ANDROID_FORBID_SYGWIN )
endif
()
if
(
CMAKE_HOST_WIN32
)
#remove cygwin from PATH
#
remove cygwin from PATH
set
(
__new_path
"$ENV{PATH}"
)
__LIST_FILTER
(
__new_path
"cygwin"
)
set
(
ENV{PATH}
"
${
__new_path
}
"
)
...
...
@@ -352,7 +356,7 @@ if( ANDROID_FORBID_SYGWIN )
endif
()
endif
()
#detect current host platform
#
detect current host platform
set
(
TOOL_OS_SUFFIX
""
)
if
(
CMAKE_HOST_APPLE
)
set
(
ANDROID_NDK_HOST_SYSTEM_NAME
"darwin-x86"
)
...
...
@@ -365,10 +369,10 @@ else()
message
(
FATAL_ERROR
"Cross-compilation on your platform is not supported by this cmake toolchain"
)
endif
()
#see if we have path to Android NDK
#
see if we have path to Android NDK
__INIT_VARIABLE
(
ANDROID_NDK PATH ENV_ANDROID_NDK
)
if
(
NOT ANDROID_NDK
)
#see if we have path to Android standalone toolchain
#
see if we have path to Android standalone toolchain
__INIT_VARIABLE
(
ANDROID_STANDALONE_TOOLCHAIN PATH ENV_ANDROID_STANDALONE_TOOLCHAIN OBSOLETE_ANDROID_NDK_TOOLCHAIN_ROOT OBSOLETE_ENV_ANDROID_NDK_TOOLCHAIN_ROOT
)
if
(
NOT ANDROID_STANDALONE_TOOLCHAIN
)
...
...
@@ -397,10 +401,10 @@ if( NOT ANDROID_NDK )
endif
(
NOT ANDROID_STANDALONE_TOOLCHAIN
)
endif
(
NOT ANDROID_NDK
)
#remember found paths
#
remember found paths
if
(
ANDROID_NDK
)
get_filename_component
(
ANDROID_NDK
"
${
ANDROID_NDK
}
"
ABSOLUTE
)
#try to detect change
#
try to detect change
if
(
CMAKE_AR
)
string
(
LENGTH
"
${
ANDROID_NDK
}
"
__length
)
string
(
SUBSTRING
"
${
CMAKE_AR
}
"
0
${
__length
}
__androidNdkPreviousPath
)
...
...
@@ -414,7 +418,7 @@ if( ANDROID_NDK )
set
(
BUILD_WITH_ANDROID_NDK True
)
elseif
(
ANDROID_STANDALONE_TOOLCHAIN
)
get_filename_component
(
ANDROID_STANDALONE_TOOLCHAIN
"
${
ANDROID_STANDALONE_TOOLCHAIN
}
"
ABSOLUTE
)
#try to detect change
#
try to detect change
if
(
CMAKE_AR
)
string
(
LENGTH
"
${
ANDROID_STANDALONE_TOOLCHAIN
}
"
__length
)
string
(
SUBSTRING
"
${
CMAKE_AR
}
"
0
${
__length
}
__androidStandaloneToolchainPreviousPath
)
...
...
@@ -438,7 +442,7 @@ else()
sudo ln -s ~/my-android-toolchain
${
ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH
}
"
)
endif
()
#get all the details about standalone toolchain
#
get all the details about standalone toolchain
if
(
BUILD_WITH_STANDALONE_TOOLCHAIN
)
__DETECT_NATIVE_API_LEVEL
(
ANDROID_SUPPORTED_NATIVE_API_LEVELS
"
${
ANDROID_STANDALONE_TOOLCHAIN
}
/sysroot/usr/include/android/api-level.h"
)
set
(
ANDROID_STANDALONE_TOOLCHAIN_API_LEVEL
${
ANDROID_SUPPORTED_NATIVE_API_LEVELS
}
)
...
...
@@ -455,7 +459,7 @@ if( BUILD_WITH_STANDALONE_TOOLCHAIN )
set
(
__availableToolchainArchs
"mipsel"
)
endif
()
if
(
ANDROID_COMPILER_VERSION
)
#do not run gcc every time because it is relatevely expencive
#
do not run gcc every time because it is relatevely expencive
set
(
__availableToolchainCompilerVersions
"
${
ANDROID_COMPILER_VERSION
}
"
)
else
()
execute_process
(
COMMAND
"
${
ANDROID_STANDALONE_TOOLCHAIN
}
/bin/
${
__availableToolchainMachines
}
-gcc
${
TOOL_OS_SUFFIX
}
"
--version
...
...
@@ -464,7 +468,7 @@ if( BUILD_WITH_STANDALONE_TOOLCHAIN )
endif
()
endif
()
#get all the details about NDK
#
get all the details about NDK
if
(
BUILD_WITH_ANDROID_NDK
)
file
(
GLOB ANDROID_SUPPORTED_NATIVE_API_LEVELS RELATIVE
"
${
ANDROID_NDK
}
/platforms"
"
${
ANDROID_NDK
}
/platforms/android-*"
)
string
(
REPLACE
"android-"
""
ANDROID_SUPPORTED_NATIVE_API_LEVELS
"
${
ANDROID_SUPPORTED_NATIVE_API_LEVELS
}
"
)
...
...
@@ -490,7 +494,7 @@ if( BUILD_WITH_ANDROID_NDK )
endif
()
endif
()
#build list of available ABIs
#
build list of available ABIs
if
(
NOT ANDROID_SUPPORTED_ABIS
)
set
(
ANDROID_SUPPORTED_ABIS
""
)
set
(
__uniqToolchainArchNames
${
__availableToolchainArchs
}
)
...
...
@@ -505,9 +509,9 @@ if( NOT ANDROID_SUPPORTED_ABIS )
endif
()
endif
()
#choose target ABI
#
choose target ABI
__INIT_VARIABLE
(
ANDROID_ABI OBSOLETE_ARM_TARGET OBSOLETE_ARM_TARGETS VALUES
${
ANDROID_SUPPORTED_ABIS
}
)
#verify that target ABI is supported
#
verify that target ABI is supported
list
(
FIND ANDROID_SUPPORTED_ABIS
"
${
ANDROID_ABI
}
"
__androidAbiIdx
)
if
(
__androidAbiIdx EQUAL -1
)
string
(
REPLACE
";"
"
\"
,
\"
"
, PRINTABLE_ANDROID_SUPPORTED_ABIS
"
${
ANDROID_SUPPORTED_ABIS
}
"
)
...
...
@@ -517,10 +521,10 @@ if( __androidAbiIdx EQUAL -1 )
endif
()
unset
(
__androidAbiIdx
)
#remember target ABI
#
remember target ABI
set
(
ANDROID_ABI
"
${
ANDROID_ABI
}
"
CACHE STRING
"The target ABI for Android. If arm, then armeabi-v7a is recommended for hardware floating point."
FORCE
)
#set target ABI options
#
set target ABI options
if
(
ANDROID_ABI STREQUAL
"x86"
)
set
(
X86 true
)
set
(
ANDROID_NDK_ABI_NAME
"x86"
)
...
...
@@ -545,7 +549,7 @@ elseif( ANDROID_ABI STREQUAL "armeabi-v6 with VFP" )
set
(
ANDROID_ARCH_NAME
"arm"
)
set
(
ANDROID_ARCH_FULLNAME
"arm"
)
set
(
CMAKE_SYSTEM_PROCESSOR
"armv6"
)
#need always fallback to older platform
#
need always fallback to older platform
set
(
ARMEABI true
)
elseif
(
ANDROID_ABI STREQUAL
"armeabi-v7a"
)
set
(
ARMEABI_V7A true
)
...
...
@@ -573,8 +577,8 @@ else()
endif
()
if
(
CMAKE_BINARY_DIR AND EXISTS
"
${
CMAKE_BINARY_DIR
}${
CMAKE_FILES_DIRECTORY
}
/CMakeSystem.cmake"
)
#really dirty hack
#it is not possible to change CMAKE_SYSTEM_PROCESSOR after the first run...
#
really dirty hack
#
it is not possible to change CMAKE_SYSTEM_PROCESSOR after the first run...
file
(
APPEND
"
${
CMAKE_BINARY_DIR
}${
CMAKE_FILES_DIRECTORY
}
/CMakeSystem.cmake"
"SET(CMAKE_SYSTEM_PROCESSOR
\"
${
CMAKE_SYSTEM_PROCESSOR
}
\"
)
\n
"
)
endif
()
...
...
@@ -592,7 +596,7 @@ else()
unset
(
ANDROID_FORCE_ARM_BUILD CACHE
)
endif
()
#choose toolchain
#
choose toolchain
if
(
ANDROID_TOOLCHAIN_NAME
)
list
(
FIND __availableToolchains
"
${
ANDROID_TOOLCHAIN_NAME
}
"
__toolchainIdx
)
if
(
__toolchainIdx EQUAL -1
)
...
...
@@ -637,10 +641,10 @@ unset( __availableToolchainMachines )
unset
(
__availableToolchainArchs
)
unset
(
__availableToolchainCompilerVersions
)
#choose native API level
#
choose native API level
__INIT_VARIABLE
(
ANDROID_NATIVE_API_LEVEL ENV_ANDROID_NATIVE_API_LEVEL ANDROID_API_LEVEL ENV_ANDROID_API_LEVEL ANDROID_STANDALONE_TOOLCHAIN_API_LEVEL ANDROID_DEFAULT_NDK_API_LEVEL_
${
ANDROID_ARCH_NAME
}
ANDROID_DEFAULT_NDK_API_LEVEL
)
string
(
REGEX MATCH
"[0-9]+"
ANDROID_NATIVE_API_LEVEL
"
${
ANDROID_NATIVE_API_LEVEL
}
"
)
#validate
#
validate
list
(
FIND ANDROID_SUPPORTED_NATIVE_API_LEVELS
"
${
ANDROID_NATIVE_API_LEVEL
}
"
__levelIdx
)
if
(
__levelIdx EQUAL -1
)
message
(
SEND_ERROR
"Specified Android native API level (
${
ANDROID_NATIVE_API_LEVEL
}
) is not supported by your NDK/toolchain."
)
...
...
@@ -659,7 +663,7 @@ if( CMAKE_VERSION VERSION_GREATER "2.8" )
set_property
(
CACHE ANDROID_NATIVE_API_LEVEL PROPERTY STRINGS
${
ANDROID_SUPPORTED_NATIVE_API_LEVELS
}
)
endif
()
#setup paths
#
setup paths
if
(
BUILD_WITH_STANDALONE_TOOLCHAIN
)
set
(
ANDROID_TOOLCHAIN_ROOT
"
${
ANDROID_STANDALONE_TOOLCHAIN
}
"
)
set
(
ANDROID_SYSROOT
"
${
ANDROID_STANDALONE_TOOLCHAIN
}
/sysroot"
)
...
...
@@ -689,7 +693,7 @@ set( CMAKE_ASM_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHI
if
(
CMAKE_VERSION VERSION_LESS 2.8.5
)
set
(
CMAKE_ASM_COMPILER_ARG1
"-c"
)
endif
()
#there may be a way to make cmake deduce these TODO deduce the rest of the tools
#
there may be a way to make cmake deduce these TODO deduce the rest of the tools
set
(
CMAKE_STRIP
"
${
ANDROID_TOOLCHAIN_ROOT
}
/bin/
${
ANDROID_TOOLCHAIN_MACHINE_NAME
}
-strip
${
TOOL_OS_SUFFIX
}
"
CACHE PATH
"strip"
)
set
(
CMAKE_AR
"
${
ANDROID_TOOLCHAIN_ROOT
}
/bin/
${
ANDROID_TOOLCHAIN_MACHINE_NAME
}
-ar
${
TOOL_OS_SUFFIX
}
"
CACHE PATH
"archive"
)
set
(
CMAKE_LINKER
"
${
ANDROID_TOOLCHAIN_ROOT
}
/bin/
${
ANDROID_TOOLCHAIN_MACHINE_NAME
}
-ld
${
TOOL_OS_SUFFIX
}
"
CACHE PATH
"linker"
)
...
...
@@ -705,11 +709,12 @@ if( APPLE )
endif
()
mark_as_advanced
(
CMAKE_INSTALL_NAME_TOOL
)
endif
()
#export directories
# export directories
set
(
ANDROID_SYSTEM_INCLUDE_DIRS
""
)
set
(
ANDROID_SYSTEM_LIB_DIRS
""
)
#setup output directories
#
setup output directories
set
(
LIBRARY_OUTPUT_PATH_ROOT
${
CMAKE_SOURCE_DIR
}
CACHE PATH
"root for library output, set this to change where android libs are installed to"
)
set
(
CMAKE_INSTALL_PREFIX
"
${
ANDROID_TOOLCHAIN_ROOT
}
/user"
CACHE STRING
"path for installing"
)
...
...
@@ -722,13 +727,13 @@ if(NOT _CMAKE_IN_TRY_COMPILE)
set
(
LIBRARY_OUTPUT_PATH
"
${
LIBRARY_OUTPUT_PATH_ROOT
}
/libs/
${
ANDROID_NDK_ABI_NAME
}
"
CACHE PATH
"path for android libs"
)
endif
()
#includes
#
includes
list
(
APPEND ANDROID_SYSTEM_INCLUDE_DIRS
"
${
ANDROID_SYSROOT
}
/usr/include"
)
if
(
__stlIncludePath AND EXISTS
"
${
__stlIncludePath
}
"
)
list
(
APPEND ANDROID_SYSTEM_INCLUDE_DIRS
"
${
__stlIncludePath
}
"
)
endif
()
#
STL
bits includes
#
c++
bits includes
if
(
__stlLibPath AND EXISTS
"
${
__stlLibPath
}
/include"
)
list
(
APPEND ANDROID_SYSTEM_INCLUDE_DIRS
"
${
__stlLibPath
}
/include"
)
endif
()
...
...
@@ -742,7 +747,7 @@ elseif( EXISTS "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/incl
list
(
APPEND ANDROID_SYSTEM_INCLUDE_DIRS
"
${
ANDROID_TOOLCHAIN_ROOT
}
/
${
ANDROID_TOOLCHAIN_MACHINE_NAME
}
/include/c++/
${
ANDROID_COMPILER_VERSION
}
/
${
ANDROID_TOOLCHAIN_MACHINE_NAME
}
"
)
endif
()
#flags and definitions
#
flags and definitions
if
(
ANDROID_SYSROOT MATCHES
"[ ;
\"
]"
)
set
(
ANDROID_CXX_FLAGS
"--sysroot=
\"
${
ANDROID_SYSROOT
}
\"
"
)
# quotes will break try_compile and compiler identification
...
...
@@ -766,7 +771,7 @@ set( CMAKE_CXX_PLATFORM_ID Linux )
set
(
CMAKE_CXX_SIZEOF_DATA_PTR 4
)
set
(
CMAKE_CXX_HAS_ISYSROOT 1
)
set
(
CMAKE_CXX_COMPILER_ABI ELF
)
#force ASM compiler (required for CMake < 2.8.5)
#
force ASM compiler (required for CMake < 2.8.5)
set
(
CMAKE_ASM_COMPILER_ID_RUN TRUE
)
set
(
CMAKE_ASM_COMPILER_ID GNU
)
set
(
CMAKE_ASM_COMPILER_WORKS TRUE
)
...
...
@@ -796,17 +801,17 @@ endif()
if
(
ANDROID_USE_STLPORT
)
set
(
_CMAKE_CXX_FLAGS
"
${
_CMAKE_CXX_FLAGS
}
-fno-rtti -fno-exceptions"
)
set
(
_CMAKE_C_FLAGS
"
${
_CMAKE_C_FLAGS
}
-fno-
rtti -fno-
exceptions"
)
set
(
_CMAKE_C_FLAGS
"
${
_CMAKE_C_FLAGS
}
-fno-exceptions"
)
else
()
set
(
_CMAKE_CXX_FLAGS
"
${
_CMAKE_CXX_FLAGS
}
-frtti -fexceptions"
)
set
(
_CMAKE_C_FLAGS
"
${
_CMAKE_C_FLAGS
}
-fexceptions"
)
endif
()
#release and debug flags
#
release and debug flags
if
(
ARMEABI OR ARMEABI_V7A
)
if
(
NOT ANDROID_FORCE_ARM_BUILD AND NOT ARMEABI_V6
)
#It is recommended to use the -mthumb compiler flag to force the generation
#of 16-bit Thumb-1 instructions (the default being 32-bit ARM ones).
#
It is recommended to use the -mthumb compiler flag to force the generation
#
of 16-bit Thumb-1 instructions (the default being 32-bit ARM ones).
# O3 instead of O2/Os in release mode - like cmake sets for desktop gcc
set
(
_CMAKE_CXX_FLAGS_RELEASE
"-mthumb -O3"
)
set
(
_CMAKE_C_FLAGS_RELEASE
"-mthumb -O3"
)
...
...
@@ -836,7 +841,7 @@ set( _CMAKE_C_FLAGS_RELEASE "${_CMAKE_C_FLAGS_RELEASE} -fomit-frame-pointer
set
(
_CMAKE_CXX_FLAGS_DEBUG
"
${
_CMAKE_CXX_FLAGS_DEBUG
}
-fno-strict-aliasing -fno-omit-frame-pointer -DDEBUG -D_DEBUG"
)
set
(
_CMAKE_C_FLAGS_DEBUG
"
${
_CMAKE_C_FLAGS_DEBUG
}
-fno-strict-aliasing -fno-omit-frame-pointer -DDEBUG -D_DEBUG"
)
#ABI-specific flags
#
ABI-specific flags
if
(
ARMEABI_V7A
)
set
(
ANDROID_CXX_FLAGS
"
${
ANDROID_CXX_FLAGS
}
-march=armv7-a -mfloat-abi=softfp"
)
if
(
NEON
)
...
...
@@ -854,19 +859,18 @@ elseif( X86 )
set
(
ANDROID_CXX_FLAGS
"
${
ANDROID_CXX_FLAGS
}
"
)
#sse?
endif
()
#linker flags
#
linker flags
if
(
NOT DEFINED __ndklibspath
)
set
(
__ndklibspath
"
${
CMAKE_BINARY_DIR
}${
CMAKE_FILES_DIRECTORY
}
/ndklibs/
${
ANDROID_NDK_ABI_NAME
}
"
)
endif
()
list
(
APPEND ANDROID_SYSTEM_LIB_DIRS
"
${
__ndklibspath
}
"
"
${
CMAKE_INSTALL_PREFIX
}
/libs/
${
ANDROID_NDK_ABI_NAME
}
"
)
list
(
APPEND ANDROID_SYSTEM_LIB_DIRS
"
${
CMAKE_INSTALL_PREFIX
}
/libs/
${
ANDROID_NDK_ABI_NAME
}
"
)
set
(
ANDROID_LINKER_FLAGS
""
)
#STL
# STL
if
(
ANDROID_USE_STLPORT
)
if
(
EXISTS
"
${
__stlLibPath
}
/libstlport_static.a"
)
__COPY_IF_DIFFERENT
(
"
${
__stlLibPath
}
/libstlport_static.a"
"
${
__ndklibspath
}
/libstlport_static.a"
)
endif
()
if
(
EXISTS
"
${
__ndklibspath
}
/libstlport_static.a"
)
set
(
ANDROID_LINKER_FLAGS
"
${
ANDROID_LINKER_FLAGS
}
-Wl,--start-group -lstlport_static"
)
set
(
CMAKE_CXX_CREATE_SHARED_LIBRARY
"<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>
\"
${
__stlLibPath
}
/libstlport_static.a
\"
"
)
set
(
CMAKE_CXX_CREATE_SHARED_MODULE
"<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>
\"
${
__stlLibPath
}
/libstlport_static.a
\"
"
)
endif
()
else
(
ANDROID_USE_STLPORT
)
if
(
EXISTS
"
${
__stlLibPath
}
/libgnustl_static.a"
)
...
...
@@ -880,11 +884,6 @@ else( ANDROID_USE_STLPORT )
elseif
(
EXISTS
"
${
__stlLibPath
}
/libstdc++.a"
)
__COPY_IF_DIFFERENT
(
"
${
__stlLibPath
}
/libstdc++.a"
"
${
__ndklibspath
}
/libstdc++.a"
)
endif
()
if
(
EXISTS
"
${
__ndklibspath
}
/libstdc++.a"
)
set
(
ANDROID_LINKER_FLAGS
"
${
ANDROID_LINKER_FLAGS
}
-lstdc++"
)
endif
()
#gcc exception & rtti support
if
(
EXISTS
"
${
__stlLibPath
}
/libsupc++.a"
)
__COPY_IF_DIFFERENT
(
"
${
__stlLibPath
}
/libsupc++.a"
"
${
__ndklibspath
}
/libsupc++.a"
)
elseif
(
ANDROID_ARCH_NAME STREQUAL
"arm"
AND EXISTS
"
${
ANDROID_TOOLCHAIN_ROOT
}
/
${
ANDROID_TOOLCHAIN_MACHINE_NAME
}
/lib/
${
CMAKE_SYSTEM_PROCESSOR
}
/thumb/libsupc++.a"
)
...
...
@@ -896,16 +895,14 @@ else( ANDROID_USE_STLPORT )
elseif
(
EXISTS
"
${
ANDROID_TOOLCHAIN_ROOT
}
/
${
ANDROID_TOOLCHAIN_MACHINE_NAME
}
/lib/libsupc++.a"
)
__COPY_IF_DIFFERENT
(
"
${
ANDROID_TOOLCHAIN_ROOT
}
/
${
ANDROID_TOOLCHAIN_MACHINE_NAME
}
/lib/libsupc++.a"
"
${
__ndklibspath
}
/libsupc++.a"
)
endif
()
if
(
EXISTS
"
${
__ndklibspath
}
/libsupc++.a"
)
set
(
ANDROID_LINKER_FLAGS
"
${
ANDROID_LINKER_FLAGS
}
-lsupc++"
)
endif
()
list
(
APPEND ANDROID_SYSTEM_LIB_DIRS
"
${
__ndklibspath
}
"
)
endif
(
ANDROID_USE_STLPORT
)
#cleanup for STL search
#
cleanup for STL search
unset
(
__stlIncludePath
)
unset
(
__stlLibPath
)
#other linker flags
#
other linker flags
__INIT_VARIABLE
(
ANDROID_NO_UNDEFINED OBSOLETE_NO_UNDEFINED VALUES ON
)
set
(
ANDROID_NO_UNDEFINED
${
ANDROID_NO_UNDEFINED
}
CACHE BOOL
"Show all undefined symbols as linker errors"
FORCE
)
mark_as_advanced
(
ANDROID_NO_UNDEFINED
)
...
...
@@ -914,7 +911,7 @@ if( ANDROID_NO_UNDEFINED )
endif
()
if
(
ANDROID_NDK MATCHES
"-r[56].?$"
)
#libGLESv2.so in NDK's prior to r7 refers to exteranal symbols. So this flag option is required for all projects using OpenGL from native.
#
libGLESv2.so in NDK's prior to r7 refers to exteranal symbols. So this flag option is required for all projects using OpenGL from native.
__INIT_VARIABLE
(
ANDROID_SO_UNDEFINED VALUES ON
)
else
()
__INIT_VARIABLE
(
ANDROID_SO_UNDEFINED VALUES OFF
)
...
...
@@ -940,7 +937,7 @@ if( ARMEABI_V7A )
set
(
ANDROID_LINKER_FLAGS
"-Wl,--fix-cortex-a8
${
ANDROID_LINKER_FLAGS
}
"
)
endif
()
#cache flags
#
cache flags
set
(
CMAKE_CXX_FLAGS
"
${
_CMAKE_CXX_FLAGS
}
"
CACHE STRING
"c++ flags"
)
set
(
CMAKE_C_FLAGS
"
${
_CMAKE_C_FLAGS
}
"
CACHE STRING
"c flags"
)
set
(
CMAKE_CXX_FLAGS_RELEASE
"
${
_CMAKE_CXX_FLAGS_RELEASE
}
"
CACHE STRING
"c++ Release flags"
)
...
...
@@ -954,7 +951,7 @@ set( CMAKE_EXE_LINKER_FLAGS "-Wl,-z,nocopyreloc" CACHE STRING "linker flags" )
include_directories
(
SYSTEM
${
ANDROID_SYSTEM_INCLUDE_DIRS
}
)
link_directories
(
${
ANDROID_SYSTEM_LIB_DIRS
}
)
#finish flags
#
finish flags
set
(
ANDROID_CXX_FLAGS
"
${
ANDROID_CXX_FLAGS
}
"
CACHE INTERNAL
"Extra Android compiler flags"
)
set
(
ANDROID_LINKER_FLAGS
"
${
ANDROID_LINKER_FLAGS
}
"
CACHE INTERNAL
"Extra Android linker flags"
)
set
(
CMAKE_CXX_FLAGS
"
${
ANDROID_CXX_FLAGS
}
${
CMAKE_CXX_FLAGS
}
"
)
...
...
@@ -969,7 +966,7 @@ else()
set
(
CMAKE_EXE_LINKER_FLAGS
"
${
ANDROID_LINKER_FLAGS
}
${
CMAKE_EXE_LINKER_FLAGS
}
"
)
endif
()
#set these global flags for cmake client scripts to change behavior
#
set these global flags for cmake client scripts to change behavior
set
(
ANDROID True
)
set
(
BUILD_ANDROID True
)
...
...
@@ -982,7 +979,7 @@ set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
set
(
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY
)
#macro to find packages on the host OS
#
macro to find packages on the host OS
macro
(
find_host_package
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER
)
...
...
@@ -1004,7 +1001,7 @@ macro( find_host_package )
endmacro
()
#macro to find programs on the host OS
#
macro to find programs on the host OS
macro
(
find_host_program
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER
)
set
(
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER
)
...
...
@@ -1044,7 +1041,11 @@ if( NOT PROJECT_NAME STREQUAL "CMAKE_TRY_COMPILE" )
set
(
__toolchain_config
""
)
foreach
(
__var ANDROID_ABI ANDROID_FORCE_ARM_BUILD ANDROID_NATIVE_API_LEVEL ANDROID_NO_UNDEFINED ANDROID_SO_UNDEFINED ANDROID_SET_OBSOLETE_VARIABLES LIBRARY_OUTPUT_PATH_ROOT ANDROID_USE_STLPORT ANDROID_FORBID_SYGWIN ANDROID_NDK ANDROID_STANDALONE_TOOLCHAIN ANDROID_FUNCTION_LEVEL_LINKING __ndklibspath
)
if
(
DEFINED
${
__var
}
)
set
(
__toolchain_config
"
${
__toolchain_config
}
set(
${
__var
}
\"
${${
__var
}}
\"
)
\n
"
)
if
(
"
${
__var
}
"
MATCHES
" "
)
set
(
__toolchain_config
"
${
__toolchain_config
}
set(
${
__var
}
\"
${${
__var
}}
\"
CACHE INTERNAL
\"\"
)
\n
"
)
else
()
set
(
__toolchain_config
"
${
__toolchain_config
}
set(
${
__var
}
${${
__var
}}
CACHE INTERNAL
\"\"
)
\n
"
)
endif
()
endif
()
endforeach
()
file
(
WRITE
"
${
CMAKE_BINARY_DIR
}${
CMAKE_FILES_DIRECTORY
}
/android.toolchain.config.cmake"
"
${
__toolchain_config
}
"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment