20 changed files with 205 additions and 176 deletions
@ -0,0 +1,61 @@ |
|||||||
|
# Find the NVSCI libraries and headers |
||||||
|
# |
||||||
|
# This module defines the following variables: |
||||||
|
# NVSCI_FOUND - True if NVSCI was found |
||||||
|
# NVSCI_INCLUDE_DIRS - NVSCI include directories |
||||||
|
# NVSCI_LIBRARIES - NVSCI libraries |
||||||
|
# NVSCIBUF_LIBRARY - NVSCI buffer library |
||||||
|
# NVSCISYNC_LIBRARY - NVSCI sync library |
||||||
|
|
||||||
|
# Find the libraries |
||||||
|
find_library(NVSCIBUF_LIBRARY |
||||||
|
NAMES nvscibuf libnvscibuf |
||||||
|
PATHS |
||||||
|
/usr/lib |
||||||
|
/usr/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu |
||||||
|
PATH_SUFFIXES nvidia |
||||||
|
) |
||||||
|
|
||||||
|
find_library(NVSCISYNC_LIBRARY |
||||||
|
NAMES nvscisync libnvscisync |
||||||
|
PATHS |
||||||
|
$/usr/lib |
||||||
|
$/usr/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu |
||||||
|
PATH_SUFFIXES nvidia |
||||||
|
) |
||||||
|
|
||||||
|
# Find the header files |
||||||
|
find_path(NVSCIBUF_INCLUDE_DIR |
||||||
|
NAMES nvscibuf.h |
||||||
|
PATHS |
||||||
|
/usr/include |
||||||
|
/usr/local/include |
||||||
|
) |
||||||
|
|
||||||
|
find_path(NVSCISYNC_INCLUDE_DIR |
||||||
|
NAMES nvscisync.h |
||||||
|
PATHS |
||||||
|
/usr/include |
||||||
|
/usr/local/include |
||||||
|
) |
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs) |
||||||
|
find_package_handle_standard_args(NVSCI |
||||||
|
REQUIRED_VARS |
||||||
|
NVSCIBUF_LIBRARY |
||||||
|
NVSCISYNC_LIBRARY |
||||||
|
NVSCIBUF_INCLUDE_DIR |
||||||
|
NVSCISYNC_INCLUDE_DIR |
||||||
|
) |
||||||
|
|
||||||
|
if(NVSCI_FOUND) |
||||||
|
set(NVSCI_LIBRARIES ${NVSCIBUF_LIBRARY} ${NVSCISYNC_LIBRARY}) |
||||||
|
set(NVSCI_INCLUDE_DIRS ${NVSCIBUF_INCLUDE_DIR} ${NVSCISYNC_INCLUDE_DIR}) |
||||||
|
endif() |
||||||
|
|
||||||
|
mark_as_advanced( |
||||||
|
NVSCIBUF_LIBRARY |
||||||
|
NVSCISYNC_LIBRARY |
||||||
|
NVSCIBUF_INCLUDE_DIR |
||||||
|
NVSCISYNC_INCLUDE_DIR |
||||||
|
) |
@ -0,0 +1,59 @@ |
|||||||
|
set(CMAKE_SYSTEM_NAME Linux) |
||||||
|
set(CMAKE_SYSTEM_PROCESSOR aarch64) |
||||||
|
|
||||||
|
# Specify the cross-compilers |
||||||
|
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) |
||||||
|
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++) |
||||||
|
set(CMAKE_AR aarch64-linux-gnu-ar) |
||||||
|
set(CMAKE_RANLIB aarch64-linux-gnu-ranlib) |
||||||
|
|
||||||
|
# Indicate cross-compiling. |
||||||
|
set(CMAKE_CROSSCOMPILING TRUE) |
||||||
|
|
||||||
|
# Set CUDA compiler flags |
||||||
|
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -ccbin ${CMAKE_CXX_COMPILER}" CACHE STRING "" FORCE) |
||||||
|
|
||||||
|
# Use a local sysroot copy |
||||||
|
if(DEFINED TARGET_FS) |
||||||
|
set(CMAKE_SYSROOT "${TARGET_FS}") |
||||||
|
list(APPEND CMAKE_FIND_ROOT_PATH |
||||||
|
"/usr/local/cuda/targets/aarch64-linux" |
||||||
|
) |
||||||
|
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) |
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) |
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) |
||||||
|
|
||||||
|
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler --sysroot=${TARGET_FS}") |
||||||
|
|
||||||
|
set(LIB_PATHS |
||||||
|
"${TARGET_FS}/usr/lib/" |
||||||
|
"${TARGET_FS}/usr/lib/aarch64-linux-gnu" |
||||||
|
"${TARGET_FS}/usr/lib/aarch64-linux-gnu/nvidia" |
||||||
|
) |
||||||
|
# Add rpath-link flags for all library paths |
||||||
|
foreach(lib_path ${LIB_PATHS}) |
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath-link,${lib_path}") |
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath-link,${lib_path}") |
||||||
|
endforeach() |
||||||
|
|
||||||
|
# Add the real path of CUDA installation on TARGET_FS for nvvm |
||||||
|
find_program(TARGET_CUDA_NVCC_PATH nvcc |
||||||
|
PATH "${TARGET_FS}/usr/local/cuda/bin" |
||||||
|
NO_DEFAULT_PATH |
||||||
|
NO_CMAKE_PATH |
||||||
|
) |
||||||
|
if(TARGET_CUDA_NVCC_PATH) |
||||||
|
# Get the real path of CUDA installation on TARGET_FS |
||||||
|
get_filename_component(TARGET_CUDA_PATH "${TARGET_CUDA_NVCC_PATH}" REALPATH) |
||||||
|
get_filename_component(TARGET_CUDA_ROOT "${TARGET_CUDA_PATH}" DIRECTORY) |
||||||
|
get_filename_component(TARGET_CUDA_ROOT "${TARGET_CUDA_ROOT}" DIRECTORY) |
||||||
|
endif() |
||||||
|
|
||||||
|
if (DEFINED TARGET_CUDA_ROOT) |
||||||
|
list(APPEND CMAKE_LIBRARY_PATH "${TARGET_CUDA_ROOT}/targets/aarch64-linux/lib") |
||||||
|
# Define NVVM paths for build and runtime |
||||||
|
set(ENV{LIBNVVM_HOME} "${TARGET_CUDA_ROOT}") |
||||||
|
set(RUNTIME_LIBNVVM_PATH "${TARGET_CUDA_ROOT}/nvvm/lib64") |
||||||
|
endif() |
||||||
|
endif() |
Loading…
Reference in new issue