SET(CMAKE_SYSTEM_NAME Linux) SET(CMAKE_SYSTEM_VERSION 4.9.140) SET(CMAKE_SYSTEM_PROCESSOR aarch64) SET(CMAKE_CROSSCOMPILING 1) SET(CUDA_TOOLKIT_INCLUDE "/usr/local/cuda/targets/aarch64-linux/include") SET(CUDA_TOOLKIT_ROOT_DIR "/usr/local/cuda/") SET(CUDA_VERSION "10.0") # This is like tricking the build system, otherwise FindCUDA.cmake on host tries to run an aarch64 binary SET(CUDA_USE_STATIC_CUDA_RUNTIME OFF CACHE INTERNAL "") SET(ROOTFS "$ENV{CROSS_ROOT}" CACHE INTERNAL "Copied from environment variable") SET(TXROOT "${ROOTFS}") SET(CC_PACKAGE_DIR "$ENV{BASE_DIR}" CACHE INTERNAL "Copied from environment variable") SET(TOOLROOT "${CC_PACKAGE_DIR}/Toolchain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu") include_directories(/usr/local/cuda/targets/aarch64-linux/include/) SET(CMAKE_LINKER "${TOOLROOT}/bin/aarch64-linux-gnu-ld" CACHE FILEPATH "" FORCE) SET(CMAKE_AR "${TOOLROOT}/bin/aarch64-linux-gnu-ar" CACHE FILEPATH "" FORCE) SET(FLAGS "-Wl,-rpath-link,${TXROOT}/usr/lib/aarch64-linux-gnu -Wl,-rpath-link,${TXROOT}/lib/aarch64-linux-gnu") SET(CMAKE_EXE_LINKER_FLAGS ${FLAGS} CACHE STRING "" FORCE) SET(CUDA_CUDART_LIBRARY "/usr/local/cuda/targets/aarch64-linux/lib/libcudart.so") SET(CUDA_NVCC_EXECUTABLE "/usr/local/cuda/bin/nvcc" CACHE FILEPATH "The CUDA compiler") # Strange that it was not detected earlier, but this does not help with the error: Could NOT find CUDA (missing: CUDA_NVCC_EXECUTABLE), instead what helps is setting CUDA_TOOLKIT_ROOT_DIR correctly SET( CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --compiler-bindir --machine=64 -target-dir aarch64-linux) SET(CMAKE_SYSROOT "${TXROOT}") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --sysroot=${TXROOT}" CACHE INTERNAL "" FORCE) SET(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} --sysroot=${TXROOT}" CACHE INTERNAL "" FORCE) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --sysroot=${TXROOT}" CACHE INTERNAL "" FORCE) SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} --sysroot=${TXROOT}" CACHE INTERNAL "" FORCE) SET(CMAKE_FIND_ROOT_PATH "${TOOLROOT}") SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set(BOOST_INCLUDEDIR ${TXROOT}/usr/include/boost) set(BOOST_LIBRARYDIR ${TXROOT}/usr/lib/aarch64-linux-gnu)