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)")

#-------------------------------------------------------------------------------
# Springbok-specific settings
#-------------------------------------------------------------------------------
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 ON)
set(IREE_ENABLE_THREADING OFF)
set(IREE_BUILD_TESTS OFF)
set(IREE_BUILD_BINDINGS_TFLITE OFF)
set(IREE_HAL_DRIVERS_TO_BUILD "Dylib;VMVX")

#-------------------------------------------------------------------------------
# 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)
else()
  # Add the LOG_X header file for build compatibility.
  include_directories($ENV{ROOTDIR}/sw/vec/springbok/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)
