From 46c5b289862851aae2c78be3edae2b50d1a0bbfe Mon Sep 17 00:00:00 2001 From: Andy Green Date: Sun, 19 Jan 2020 08:17:20 +0000 Subject: [PATCH] cross: add cmake toolchain file aligned to android aarch64 https://github.com/warmcat/libwebsockets/issues/1830 --- contrib/cross-aarch64-android.cmake | 48 +++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 contrib/cross-aarch64-android.cmake diff --git a/contrib/cross-aarch64-android.cmake b/contrib/cross-aarch64-android.cmake new file mode 100644 index 000000000..8ed84b1d6 --- /dev/null +++ b/contrib/cross-aarch64-android.cmake @@ -0,0 +1,48 @@ +# +# CMake Toolchain file for crosscompiling Android / aarch64 +# +# This can be used when running cmake in the following way: +# cd build/ +# cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross-aarch64-android.cmake +# + +# Target operating system name. +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) + +# Name of C compiler. +set(CMAKE_C_COMPILER "aarch64-linux-android-gcc") +set(CMAKE_CXX_COMPILER "aarch64-linux-android-g++") + +# +# Different build system distros set release optimization level to different +# things according to their local policy, eg, Fedora is -O2 and Ubuntu is -O3 +# here. Actually the build system's local policy is completely unrelated to +# our desire for cross-build release optimization policy for code built to run +# on a completely different target than the build system itself. +# +# Since this goes last on the compiler commandline we have to override it to a +# sane value for cross-build here. Notice some gcc versions enable broken +# optimizations with -O3. +# +if (CMAKE_BUILD_TYPE MATCHES RELEASE OR CMAKE_BUILD_TYPE MATCHES Release OR CMAKE_BUILD_TYPE MATCHES release) + set(CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE} -O2) + set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} -O2) +endif() + +#-nostdlib +SET(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) + + +# Where to look for the target environment. (More paths can be added here) +#set(CMAKE_FIND_ROOT_PATH "") + +# Adjust the default behavior of the FIND_XXX() commands: +# search programs in the host environment only. +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + +# Search headers and libraries in the target environment only. +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +