[CMake] CMAKE custom compiler for Android
ramya.gopalkrishna at accoliteindia.com
ramya.gopalkrishna at accoliteindia.com
Wed Nov 29 01:32:03 EST 2017
HI All,
We are working towards creating a toolchain file for an ANDROID compiler
We understand that the flow in CMAKE, when CMAKE_SYSTEM_NAME is specified in
Android is different when compared to specifying CMAKE_SYSTEM_NAME as IOS or
LINUX
Please validate our current understanding when a toolchain file or
command-line option sets CMAKE_SYSTEM_NAME to "Android"
* CMakeDetermineSystem.cmake loads this file:
Android-Determine.cmake
* Next is the platform-specific initialization step:
CMakeSystemSpecificInitialize.cmake which loads Android-Initialize.cmake to
select the sysroot.
* A "determine" step also runs for each language when it is first
enabled in a new build tree:
Android-Determine-C.cmake
Android-Determine-CXX.cmake
* The language files go here:
Determine-Compiler.cmake
Determine-Compiler-NDK.cmake
* The latter file is where we parse a bunch of information from the
NDK.
The results persist in CMakeFiles/$v/CMake${lang}Compiler.cmake for future
runs.
Next is the language-specific initialization step. For Example - in case
{lang} is C : CMakeCInformation.cmake
That loads one of these:
Android-GNU-C.cmake
Android-Clang-C.cmake
which loads one of these:
Android-GNU.cmake
Android-Clang.cmake
Determine-Compiler-NDK.cmake is where cmake looks for versions of clang or
gcc or llvm toolchains and sets the appropriate compiler.
Our Requirement and Problem statement
When we tried manually setting a c and cxx compiler from a toolchain file,
cmake would not allow us to point to our own compilers. Ideally, we want our
toolchain file to tell cmake the libraries to include/link and the compilers
to use. But once, System has been determined as android, cmake goes through
the above sequence of events and expects toolchains to be specified for
either clang, gcc or llvm compilers.
We would probably need to make changes in the following files to accommodate
cmake to use our own compilers.
Determine-Compiler-NDK.cmake - We would need to add support for an
"NewCompiler Toolchain" which would contain android libraries and compilers.
New Android-{NewCompiler}-C.cmake, Android-{ NewCompiler }-CXX.cmake,
Android-{ NewCompiler }.cmake and another appropriate toolchain file to set
target architecture and compiler flags.
Can you please provide your suggestions and validate the understanding as
well
Thanks & Regards,
Ramya
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20171129/f73fd855/attachment.html>
More information about the CMake
mailing list