# Copyright 2022 Google LLC # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. SET(CMAKE_SYSTEM_NAME Linux) SET(CMAKE_SYSTEM_PROCESSOR riscv64) SET(VLEN "512" CACHE STRING "Vector Length for QEMU.") IF(NOT VLEN MATCHES "^(32|64|128|256|512|1024|2048|4096|8192|16384|32768|65536)$") MESSAGE(FATAL_ERROR "User specified VLEN=${VLEN} is invalid.") ENDIF() IF(NOT RISCV_TOOLCHAIN_ROOT) SET(CMAKE_C_COMPILER "riscv64-linux-gnu-gcc") SET(CMAKE_ASM_COMPILER "riscv64-linux-gnu-gcc") SET(CMAKE_CXX_COMPILER "riscv64-linux-gnu-g++") SET(CMAKE_FIND_ROOT_PATH "/usr/riscv64-linux-gnu") SET(CMAKE_INCLUDE_PATH "/usr/include/riscv64-linux-gnu") SET(CMAKE_LIBRARY_PATH "/usr/lib/riscv64-linux-gnu") SET(CMAKE_PROGRAM_PATH "/usr/bin/riscv64-linux-gnu") ELSE() MESSAGE(STATUS "RISCV_TOOLCHAIN_ROOT=${RISCV_TOOLCHAIN_ROOT} is defined during compilation.") SET(CMAKE_C_COMPILER "${RISCV_TOOLCHAIN_ROOT}/bin/riscv64-unknown-linux-gnu-clang") SET(CMAKE_ASM_COMPILER "${RISCV_TOOLCHAIN_ROOT}/bin/riscv64-unknown-linux-gnu-clang") SET(CMAKE_CXX_COMPILER "${RISCV_TOOLCHAIN_ROOT}/bin/riscv64-unknown-linux-gnu-clang++") SET(CMAKE_FIND_ROOT_PATH "${RISCV_TOOLCHAIN_ROOT}/sysroot/") SET(CMAKE_INCLUDE_PATH "${RISCV_TOOLCHAIN_ROOT}/sysroot/usr/include/") SET(CMAKE_LIBRARY_PATH "${RISCV_TOOLCHAIN_ROOT}/sysroot/usr/lib/") SET(CMAKE_PROGRAM_PATH "${RISCV_TOOLCHAIN_ROOT}/sysroot/usr/bin/") ENDIF() SET(CMAKE_CROSSCOMPILING TRUE) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) IF(NOT XNNPACK_ENABLE_RISCV_VECTOR) SET(QEMU_OPTION -L ${CMAKE_FIND_ROOT_PATH}) ELSE() SET(QEMU_OPTION -cpu rv64,zba=true,zbb=true,zbc=true,zbs=true,v=true,vlen=${VLEN},elen=64,vext_spec=v1.0 -L ${CMAKE_FIND_ROOT_PATH}) ENDIF() IF(NOT RISCV_QEMU_ROOT) SET(CMAKE_CROSSCOMPILING_EMULATOR "qemu-riscv64;${QEMU_OPTION}") ELSE() SET(CMAKE_CROSSCOMPILING_EMULATOR "${RISCV_QEMU_ROOT}/bin/qemu-riscv64;${QEMU_OPTION}") ENDIF() MESSAGE(STATUS "CMAKE_CROSSCOMPILING_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}")