Skip to content

Commit

Permalink
Merge pull request #839 from leapmotion/fix-android
Browse files Browse the repository at this point in the history
Fix Android toolchain file
  • Loading branch information
Jonathan Marsden committed Jan 6, 2016
2 parents a75c14c + 1ae951e commit c972b4a
Showing 1 changed file with 34 additions and 12 deletions.
46 changes: 34 additions & 12 deletions toolchain-android.cmake
@@ -1,22 +1,44 @@
if("$ENV{ARMv8}") # GCC 4.9
if(BUILD_64_BIT) # ARMv8 with GCC 4.9
set(BUILD_ANDROID64 1)
set(C_COMPILER aarch64-linux-android)
set(CXX_COMPILER aarch64-linux-android)
set(IDENTIFIER -4.9-aarch64)
else() # GCC 4.8
set(BUILD_ANDROID 1)
set(ANDROID_NDK_TOOL_PREFIX aarch64-linux-android)
set(_ndk_suffix -4.9-aarch64)
else() # GCC 4.8
set(ARM_TARGET "armeabi-v7a")
set(C_COMPILER arm-linux-androideabi)
set(CXX_COMPILER arm-linux-androideabi)
set(ANDROID_NDK_TOOL_PREFIX arm-linux-androideabi)
endif()
set(BUILD_ANDROID 1)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_SYSTEM_VERSION 1)
set(BUILD_ARM 1)
set(LOCAL_ARM_NEON "true")
set(ANDROID_COMMON_FLAGS " --sysroot=${LLVM_ANDROID_TOOLCHAIN_DIR}${IDENTIFIER}/sysroot -B${LLVM_ANDROID_TOOLCHAIN_DIR}${IDENTIFIER} ")
set(CMAKE_C_COMPILER ${LLVM_ANDROID_TOOLCHAIN_DIR}${IDENTIFIER}/bin/${C_COMPILER}-gcc)
set(CMAKE_CXX_COMPILER ${LLVM_ANDROID_TOOLCHAIN_DIR}${IDENTIFIER}/bin/${CXX_COMPILER}-g++)

if(MSYS)
set(_exe_suffix .exe)
endif()

#For reasons beyond my comprehension, this file is parsed multiple times
#and in some of them, cache variables are not preserved so we have to store
#this in an environmental variable...
if(NOT LLVM_ANDROID_TOOLCHAIN_DIR)
set(LLVM_ANDROID_TOOLCHAIN_DIR $ENV{LLVM_ANDROID_TOOLCHAIN_DIR})
else()
set(ENV{LLVM_ANDROID_TOOLCHAIN_DIR} ${LLVM_ANDROID_TOOLCHAIN_DIR} CACHE PATH)
endif()

find_path(ANDROID_NDK_ROOT bin/${ANDROID_NDK_TOOL_PREFIX}-gcc${_exe_suffix} PATHS
${LLVM_ANDROID_TOOLCHAIN_DIR}${_ndk_suffix} #legacy variable
/opt/android-standalone-toolchain${_ndk_suffix}
${LLVM_ANDROID_TOOLCHAIN_DIR}
/opt/android-standalone-toolchain
)
if(NOT ANDROID_NDK_ROOT)
message(FATAL_ERROR "ANDROID_NDK_ROOT could not be located. Have you installed the NDK?")
endif()

set(ANDROID_COMMON_FLAGS " --sysroot=${ANDROID_NDK_ROOT}/sysroot -B${ANDROID_NDK_ROOT} ")
set(CMAKE_C_COMPILER ${ANDROID_NDK_ROOT}/bin/${ANDROID_NDK_TOOL_PREFIX}-gcc${_exe_suffix} CACHE FILEPATH "C Compiler" FORCE)
set(CMAKE_CXX_COMPILER ${ANDROID_NDK_ROOT}/bin/${ANDROID_NDK_TOOL_PREFIX}-g++${_exe_suffix} CACHE FILEPATH "C++ Compiler" FORCE)
set(ANDROID_STRIP_COMMAND ${ANDROID_NDK_ROOT}/bin/${ANDROID_NDK_TOOL_PREFIX}-strip)
set(CMAKE_C_FLAGS "${ANDROID_COMMON_FLAGS}" CACHE STRING "toolchain_cflags" FORCE)
set(CMAKE_CXX_FLAGS "${ANDROID_COMMON_FLAGS}" CACHE STRING "toolchain_cxxflags" FORCE)
set(CMAKE_LINK_FLAGS "${ANDROID_COMMON_FLAGS}" CACHE STRING "toolchain_linkflags" FORCE)
Expand Down

0 comments on commit c972b4a

Please sign in to comment.