| cmake_minimum_required(VERSION 3.13.4) |
| |
| #------------------------------------------------------------------------------- |
| # Project configuration |
| #------------------------------------------------------------------------------- |
| |
| project(iree-riscv32) |
| |
| set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
| |
| list(APPEND CMAKE_MODULE_PATH |
| ${CMAKE_CURRENT_LIST_DIR}/cmake/ |
| ) |
| |
| set(BUILD_RV64_LINUX OFF CACHE BOOL "Build RISC-V 64-bit Linux target (default: OFF)") |
| set(BUILD_INTERNAL_MODELS OFF CACHE BOOL "Build applications from internal models (default: OFF") |
| |
| # Use nano spec header and libraries. |
| if(NOT ${BUILD_RV64_LINUX}) |
| include_directories(BEFORE SYSTEM "${RISCV_TOOLCHAIN_ROOT}/riscv32-unknown-elf/include/newlib-nano/") |
| link_directories(BEFORE "${RISCV_TOOLCHAIN_ROOT}/riscv32-unknown-elf/lib/newlib-nano/") |
| endif() |
| |
| #------------------------------------------------------------------------------- |
| # Springbok-specific settings |
| #------------------------------------------------------------------------------- |
| set(DTCM_LENGTH "16M" CACHE STRING "DTCM Length (default: 16M)") |
| add_link_options("LINKER:--defsym=__dtcm_length__=${DTCM_LENGTH}") |
| set(ITCM_LENGTH "256K" CACHE STRING "ITCM (I-mem) Length (default: 256K)") |
| add_link_options("LINKER:--defsym=__itcm_length__=${ITCM_LENGTH}") |
| set(STACK_SIZE "10K" CACHE STRING "Stack size (default: 10K)") |
| add_link_options("LINKER:--defsym=__stack_size__=${STACK_SIZE}") |
| set(SPRINGBOK_LINKER_SCRIPT "$ENV{ROOTDIR}/sw/vec/springbok/matcha.ld" CACHE PATH "Springbok linker script path (default: matcha.ld)") |
| set(BUILD_WITH_SPRINGBOK ON CACHE BOOL "Build the target with springbok BSP (default: ON)") |
| add_subdirectory($ENV{ROOTDIR}/sw/vec/springbok springbok) |
| |
| #------------------------------------------------------------------------------- |
| # IREE-specific settings |
| #------------------------------------------------------------------------------- |
| set(IREE_BUILD_COMPILER OFF) |
| set(IREE_ENABLE_MLIR OFF) |
| set(IREE_BUILD_SAMPLES OFF) |
| set(IREE_ENABLE_THREADING OFF) |
| set(IREE_BUILD_TESTS OFF) |
| set(IREE_BUILD_BINDINGS_TFLITE OFF) |
| set(IREE_HAL_DRIVERS_TO_BUILD "Dylib_Sync;VMVX_Sync" CACHE STRING "IREE HAL Drivers" FORCE) |
| |
| #------------------------------------------------------------------------------- |
| # IREE-specific definitions |
| #------------------------------------------------------------------------------- |
| set(SPRINGBOK_CONFIG_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/springbok_config.h") |
| add_definitions(-DFLATCC_USE_GENERIC_ALIGNED_ALLOC) |
| if(NOT ${BUILD_RV64_LINUX}) |
| add_definitions(-DIREE_PLATFORM_GENERIC) |
| add_definitions(-DIREE_SYNCHRONIZATION_DISABLE_UNSAFE=1) |
| add_definitions(-DIREE_FILE_IO_ENABLE=0) |
| add_definitions(-DIREE_USER_CONFIG_H="${SPRINGBOK_CONFIG_HEADER}") |
| endif() |
| |
| # Springbok BSP-related setting |
| if(${BUILD_WITH_SPRINGBOK}) |
| include(riscv_springbok) |
| include_directories($ENV{ROOTDIR}/sw/vec/springbok/include) |
| else() |
| # Add the LOG_X springbok macros with fprintf. |
| include_directories(native_log_include) |
| endif() |
| |
| # Build IREE runtime libraries. |
| add_subdirectory($ENV{ROOTDIR}/toolchain/iree iree) |
| |
| # Apply IREE's CMake variables and build options so we can use IREE build |
| # functions properly in this project. |
| include($ENV{ROOTDIR}/toolchain/iree/build_tools/cmake/iree_copts.cmake) |
| |
| include(springbok_bytecode_module) |
| # Add the included directory here. |
| add_subdirectory(samples) |