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

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