Android: Add CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
Expose the binutils' machine name (typically used as a prefix on the tool names) publicly. This is expected to match the `gcc -dumpmachine` value. Suggested-by: Ruslan Baratov <ruslan_baratov@yahoo.com>
This commit is contained in:
parent
0d3eb139e1
commit
ea8eba0bbf
|
@ -351,6 +351,7 @@ Variables for Languages
|
||||||
/variable/CMAKE_Fortran_MODDIR_FLAG
|
/variable/CMAKE_Fortran_MODDIR_FLAG
|
||||||
/variable/CMAKE_Fortran_MODOUT_FLAG
|
/variable/CMAKE_Fortran_MODOUT_FLAG
|
||||||
/variable/CMAKE_INTERNAL_PLATFORM_ABI
|
/variable/CMAKE_INTERNAL_PLATFORM_ABI
|
||||||
|
/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE
|
||||||
/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX
|
/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX
|
||||||
/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX
|
/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX
|
||||||
/variable/CMAKE_LANG_ARCHIVE_APPEND
|
/variable/CMAKE_LANG_ARCHIVE_APPEND
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
When :ref:`Cross Compiling for Android` this variable contains the
|
||||||
|
toolchain binutils machine name (e.g. ``gcc -dumpmachine``). The
|
||||||
|
binutils typically have a ``<machine>-`` prefix on their name.
|
||||||
|
|
||||||
|
See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
|
||||||
|
and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`.
|
|
@ -4,7 +4,8 @@ CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX
|
||||||
When :ref:`Cross Compiling for Android` this variable contains the absolute
|
When :ref:`Cross Compiling for Android` this variable contains the absolute
|
||||||
path prefixing the toolchain GNU compiler and its binutils.
|
path prefixing the toolchain GNU compiler and its binutils.
|
||||||
|
|
||||||
See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`.
|
See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`
|
||||||
|
and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE`.
|
||||||
|
|
||||||
For example, the path to the linker is::
|
For example, the path to the linker is::
|
||||||
|
|
||||||
|
|
|
@ -4,4 +4,5 @@ CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX
|
||||||
When :ref:`Cross Compiling for Android` this variable contains the
|
When :ref:`Cross Compiling for Android` this variable contains the
|
||||||
host platform suffix of the toolchain GNU compiler and its binutils.
|
host platform suffix of the toolchain GNU compiler and its binutils.
|
||||||
|
|
||||||
See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`.
|
See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
|
||||||
|
and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE`.
|
||||||
|
|
|
@ -213,10 +213,14 @@ set(_CMAKE_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_PREFIX}")
|
||||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "${_ANDROID_HOST_DIR}")
|
set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "${_ANDROID_HOST_DIR}")
|
||||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS_NDK}")
|
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS_NDK}")
|
||||||
|
|
||||||
|
# _ANDROID_TOOL_PREFIX should now match `gcc -dumpmachine`.
|
||||||
|
string(REGEX REPLACE "-$" "" _ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_PREFIX}")
|
||||||
|
|
||||||
set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS}")
|
set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS}")
|
||||||
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${_ANDROID_HOST_DIR}/bin/${_ANDROID_TOOL_PREFIX}")
|
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${_ANDROID_HOST_DIR}/bin/${_ANDROID_TOOL_PREFIX}")
|
||||||
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
|
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
|
||||||
|
|
||||||
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_C_TOOLCHAIN_MACHINE}")
|
||||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "${_ANDROID_TOOL_C_TOOLCHAIN_VERSION}")
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "${_ANDROID_TOOL_C_TOOLCHAIN_VERSION}")
|
||||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}")
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}")
|
||||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
|
||||||
|
|
|
@ -22,6 +22,9 @@ endif()
|
||||||
# Help CMakeFindBinUtils locate things.
|
# Help CMakeFindBinUtils locate things.
|
||||||
set(_CMAKE_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_PREFIX}")
|
set(_CMAKE_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_PREFIX}")
|
||||||
|
|
||||||
|
# _ANDROID_TOOL_PREFIX should now match `gcc -dumpmachine`.
|
||||||
|
string(REGEX REPLACE "-$" "" _ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_PREFIX}")
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/${_ANDROID_TOOL_PREFIX}gcc${_ANDROID_HOST_EXT}" -dumpversion
|
COMMAND "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/${_ANDROID_TOOL_PREFIX}gcc${_ANDROID_HOST_EXT}" -dumpversion
|
||||||
OUTPUT_VARIABLE _gcc_version
|
OUTPUT_VARIABLE _gcc_version
|
||||||
|
@ -42,6 +45,7 @@ endif()
|
||||||
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/${_ANDROID_TOOL_PREFIX}")
|
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/${_ANDROID_TOOL_PREFIX}")
|
||||||
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
|
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
|
||||||
|
|
||||||
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_C_TOOLCHAIN_MACHINE}")
|
||||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "${_ANDROID_TOOL_C_TOOLCHAIN_VERSION}")
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "${_ANDROID_TOOL_C_TOOLCHAIN_VERSION}")
|
||||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}")
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}")
|
||||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
|
||||||
|
|
|
@ -43,11 +43,13 @@ else()
|
||||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "")
|
set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "")
|
||||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "")
|
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "")
|
||||||
set(_ANDROID_TOOL_C_COMPILER "")
|
set(_ANDROID_TOOL_C_COMPILER "")
|
||||||
|
set(_ANDROID_TOOL_C_TOOLCHAIN_MACHINE "")
|
||||||
set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "")
|
set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "")
|
||||||
set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "")
|
set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "")
|
||||||
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "")
|
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "")
|
||||||
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "")
|
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "")
|
||||||
set(_ANDROID_TOOL_CXX_COMPILER "")
|
set(_ANDROID_TOOL_CXX_COMPILER "")
|
||||||
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "")
|
||||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "")
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "")
|
||||||
set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
|
set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
|
||||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "")
|
set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "")
|
||||||
|
@ -65,6 +67,7 @@ macro(__android_determine_compiler lang)
|
||||||
set(CMAKE_${lang}_COMPILER_CUSTOM_CODE "
|
set(CMAKE_${lang}_COMPILER_CUSTOM_CODE "
|
||||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG \"${_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG}\")
|
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG \"${_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG}\")
|
||||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION \"${_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION}\")
|
set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION \"${_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION}\")
|
||||||
|
set(CMAKE_${lang}_ANDROID_TOOLCHAIN_MACHINE \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_MACHINE}\")
|
||||||
set(CMAKE_${lang}_ANDROID_TOOLCHAIN_VERSION \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_VERSION}\")
|
set(CMAKE_${lang}_ANDROID_TOOLCHAIN_VERSION \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_VERSION}\")
|
||||||
set(CMAKE_${lang}_COMPILER_EXTERNAL_TOOLCHAIN \"${_ANDROID_TOOL_${lang}_COMPILER_EXTERNAL_TOOLCHAIN}\")
|
set(CMAKE_${lang}_COMPILER_EXTERNAL_TOOLCHAIN \"${_ANDROID_TOOL_${lang}_COMPILER_EXTERNAL_TOOLCHAIN}\")
|
||||||
set(CMAKE_${lang}_ANDROID_TOOLCHAIN_PREFIX \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_PREFIX}\")
|
set(CMAKE_${lang}_ANDROID_TOOLCHAIN_PREFIX \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_PREFIX}\")
|
||||||
|
|
|
@ -52,6 +52,23 @@ elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${CMAKE_C_ANDROID_TOOLCHAIN_PREFIX}gcc${CMAKE_C_ANDROID_TOOLCHAIN_SUFFIX}" -dumpmachine
|
||||||
|
OUTPUT_VARIABLE _out OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_VARIABLE _err
|
||||||
|
RESULT_VARIABLE _res
|
||||||
|
)
|
||||||
|
if(NOT _res EQUAL 0)
|
||||||
|
message(SEND_ERROR "Failed to run 'gcc -dumpmachine':\n ${_res}")
|
||||||
|
endif()
|
||||||
|
if(NOT _out STREQUAL "${CMAKE_C_ANDROID_TOOLCHAIN_MACHINE}")
|
||||||
|
message(SEND_ERROR "'gcc -dumpmachine' produced:\n"
|
||||||
|
" ${_out}\n"
|
||||||
|
"which is not equal to CMAKE_C_ANDROID_TOOLCHAIN_MACHINE:\n"
|
||||||
|
" ${CMAKE_C_ANDROID_TOOLCHAIN_MACHINE}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(CMAKE_ANDROID_STL_TYPE STREQUAL "none")
|
if(CMAKE_ANDROID_STL_TYPE STREQUAL "none")
|
||||||
add_definitions(-DSTL_NONE)
|
add_definitions(-DSTL_NONE)
|
||||||
elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "system")
|
elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "system")
|
||||||
|
|
Loading…
Reference in New Issue