1SET(CMAKE_SYSTEM_NAME Linux) 2SET(CMAKE_SYSTEM_PROCESSOR aarch64) 3 4# Toolchain precedence: environment variable TROUT_CLANG_PATH > Android Clang Toolchain > Floral Clang Toolchain 5# AGL sysroot precedence: environment variable TROUT_AGL_SYSROOT > Floral AGL sysroot 6IF(DEFINED ENV{COQOS_HV_PATH}) 7 SET(TROUT_CLANG_PATH $ENV{COQOS_HV_PATH}/tools/toolchains/clang-llvm-9) 8 SET(TROUT_AGL_SYSROOT $ENV{COQOS_HV_PATH}/bsp/linux/yocto/qti-yocto-agl-sdk-sa8155-automotive-machine-image/sysroots/aarch64-agl-linux) 9ENDIF() 10 11IF (DEFINED ENV{ANDROID_BUILD_TOP}) 12 FILE(GLOB TROUT_ANDROID_TOOLCHAIN_CANDIDATES $ENV{ANDROID_BUILD_TOP}/prebuilts/clang/host/linux-x86/clang-* 13 LIST_DIRECTORIES true) 14 # Select the latest one 15 LIST(SORT TROUT_ANDROID_TOOLCHAIN_CANDIDATES ORDER DESCENDING) 16 FIND_PATH(TROUT_ANDROID_TOOLCHAIN 17 NAMES 18 bin/clang 19 bin/clang++ 20 bin/llvm-ar 21 bin/llvm-nm 22 bin/llvm-ranlib 23 PATHS 24 ${TROUT_ANDROID_TOOLCHAIN_CANDIDATES} 25 NO_DEFAULT_PATH) 26 SET(TROUT_CLANG_PATH ${TROUT_ANDROID_TOOLCHAIN}) 27ENDIF() 28 29IF (DEFINED ENV{TROUT_CLANG_PATH}) 30 SET(TROUT_CLANG_PATH $ENV{TROUT_CLANG_PATH}) 31ENDIF() 32 33IF (DEFINED ENV{TROUT_AGL_SYSROOT}) 34 SET(TROUT_AGL_SYSROOT $ENV{TROUT_AGL_SYSROOT}) 35ENDIF() 36 37IF (NOT TROUT_CLANG_PATH) 38 MESSAGE(FATAL_ERROR "Please run `lunch`, or define environment variable COQOS_HV_PATH or TROUT_CLANG_PATH") 39ENDIF() 40 41IF (NOT TROUT_AGL_SYSROOT) 42 MESSAGE(FATAL_ERROR "Please define environment variable COQOS_HV_PATH or TROUT_AGL_SYSROOT") 43ENDIF() 44 45SET(_triple aarch64-none-linux-gnu) 46 47SET(CMAKE_CROSSCOMPILING TRUE) 48SET(CMAKE_SYSROOT ${TROUT_AGL_SYSROOT}) 49 50SET(CMAKE_C_COMPILER ${TROUT_CLANG_PATH}/bin/clang) 51SET(CMAKE_C_COMPILER_TARGET ${_triple}) 52 53SET(CMAKE_CXX_COMPILER ${TROUT_CLANG_PATH}/bin/clang++) 54SET(CMAKE_CXX_COMPILER_TARGET ${_triple}) 55 56SET(CMAKE_ASM_COMPILER_TARGET ${_triple}) 57 58SET(CMAKE_AR ${TROUT_CLANG_PATH}/bin/llvm-ar) 59SET(CMAKE_NM ${TROUT_CLANG_PATH}/bin/llvm-nm) 60SET(CMAKE_RANLIB ${TROUT_CLANG_PATH}/bin/llvm-ranlib) 61 62SET(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES 63 ${TROUT_AGL_SYSROOT}/usr/include/c++/7.3.0 64 ${TROUT_AGL_SYSROOT}/usr/include/c++/7.3.0/aarch64-agl-linux 65) 66 67SET(CMAKE_EXE_LINKER_FLAGS 68 -fuse-ld=lld 69 -B ${TROUT_AGL_SYSROOT}/usr/lib/aarch64-agl-linux/7.3.0 70 -nodefaultlibs 71 -lstdc++ 72 -lm 73 -lc 74 -lgcc_s 75) 76STRING(REPLACE ";" " " CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") 77 78SET(CMAKE_SHARED_LINKER_FLAGS 79 -fuse-ld=lld 80 -B ${TROUT_AGL_SYSROOT}/usr/lib/aarch64-agl-linux/7.3.0 81 -nodefaultlibs 82 -lstdc++ 83 -lm 84 -lc 85 -lgcc_s 86) 87STRING(REPLACE ";" " " CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}") 88 89SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 90SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 91SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 92SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) 93