1# 2# CMake Toolchain file for crosscompiling Android / aarch64 3# 4# This can be used when running cmake in the following way: 5# cd build/ 6# cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross-aarch64-android.cmake 7# 8 9# Target operating system name. 10set(CMAKE_SYSTEM_NAME Linux) 11set(CMAKE_SYSTEM_PROCESSOR aarch64) 12 13# Name of C compiler. 14set(CMAKE_C_COMPILER "aarch64-linux-android-gcc") 15set(CMAKE_CXX_COMPILER "aarch64-linux-android-g++") 16 17# 18# Different build system distros set release optimization level to different 19# things according to their local policy, eg, Fedora is -O2 and Ubuntu is -O3 20# here. Actually the build system's local policy is completely unrelated to 21# our desire for cross-build release optimization policy for code built to run 22# on a completely different target than the build system itself. 23# 24# Since this goes last on the compiler commandline we have to override it to a 25# sane value for cross-build here. Notice some gcc versions enable broken 26# optimizations with -O3. 27# 28if (CMAKE_BUILD_TYPE MATCHES RELEASE OR CMAKE_BUILD_TYPE MATCHES Release OR CMAKE_BUILD_TYPE MATCHES release) 29 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2") 30 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") 31endif() 32 33#-nostdlib 34SET(CMAKE_C_FLAGS "-DGCC_VER=\"\\\"$(GCC_VER)\\\"\" -DARM64=1 -D__LP64__=1 -Os -g3 -fpie -mstrict-align -fPIC -ffunction-sections -fdata-sections " CACHE STRING "" FORCE) 35 36 37# Where to look for the target environment. (More paths can be added here) 38#set(CMAKE_FIND_ROOT_PATH "") 39 40# Adjust the default behavior of the FIND_XXX() commands: 41# search programs in the host environment only. 42set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 43 44# Search headers and libraries in the target environment only. 45set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 46set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 47 48 49