blob: 7070ba7828c1e3a99107866fac8d73aa093e2874 [file] [log] [blame]
Cindy Liu48f6baf2021-07-28 20:42:34 -07001cmake_minimum_required(VERSION 3.13.4)
2
3#-------------------------------------------------------------------------------
4# Project configuration
5#-------------------------------------------------------------------------------
6
7project(iree-riscv32)
8
9set_property(GLOBAL PROPERTY USE_FOLDERS ON)
10
Cindy Liuff714512021-08-26 16:22:12 -070011list(APPEND CMAKE_MODULE_PATH
12 ${CMAKE_CURRENT_LIST_DIR}/cmake/
13)
14
Cindy Liu48f6baf2021-07-28 20:42:34 -070015set(BUILD_RV64_LINUX OFF CACHE BOOL "Build RISC-V 64-bit Linux target (default: OFF)")
Cindy Liu151e5c22021-11-12 18:59:32 -080016set(BUILD_INTERNAL_MODELS OFF CACHE BOOL "Build applications from internal models (default: OFF)")
Cindy Liuc250abf2021-11-11 19:23:54 -080017set(IREE_SOURCE_DIR "$ENV{ROOTDIR}/toolchain/iree" CACHE PATH
18 "IREE source code path. (default: $ENV{ROOTDIR}/toolchain/iree)")
Cindy Liu14c53902021-08-03 21:34:00 +000019
Cindy Liu71b163b2021-09-07 15:35:46 -070020# Use nano spec header and libraries.
21if(NOT ${BUILD_RV64_LINUX})
22 include_directories(BEFORE SYSTEM "${RISCV_TOOLCHAIN_ROOT}/riscv32-unknown-elf/include/newlib-nano/")
23 link_directories(BEFORE "${RISCV_TOOLCHAIN_ROOT}/riscv32-unknown-elf/lib/newlib-nano/")
24endif()
25
Cindy Liu14c53902021-08-03 21:34:00 +000026#-------------------------------------------------------------------------------
27# Springbok-specific settings
28#-------------------------------------------------------------------------------
Cindy Liu52b2fef2021-10-06 12:17:49 -070029set(DTCM_LENGTH "16M" CACHE STRING "DTCM Length (default: 16M)")
Lun Donge0f26a62021-09-18 02:59:42 +000030add_link_options("LINKER:--defsym=__dtcm_length__=${DTCM_LENGTH}")
Cindy Liu48f6baf2021-07-28 20:42:34 -070031set(ITCM_LENGTH "256K" CACHE STRING "ITCM (I-mem) Length (default: 256K)")
32add_link_options("LINKER:--defsym=__itcm_length__=${ITCM_LENGTH}")
33set(STACK_SIZE "10K" CACHE STRING "Stack size (default: 10K)")
34add_link_options("LINKER:--defsym=__stack_size__=${STACK_SIZE}")
Cindy Liu14c53902021-08-03 21:34:00 +000035set(SPRINGBOK_LINKER_SCRIPT "$ENV{ROOTDIR}/sw/vec/springbok/matcha.ld" CACHE PATH "Springbok linker script path (default: matcha.ld)")
Cindy Liub503b1b2021-08-18 11:37:08 -070036set(BUILD_WITH_SPRINGBOK ON CACHE BOOL "Build the target with springbok BSP (default: ON)")
Cindy Liu48f6baf2021-07-28 20:42:34 -070037
38#-------------------------------------------------------------------------------
39# IREE-specific settings
40#-------------------------------------------------------------------------------
41set(IREE_BUILD_COMPILER OFF)
42set(IREE_ENABLE_MLIR OFF)
Cindy Liu14b90322021-09-29 21:08:50 -070043set(IREE_BUILD_SAMPLES OFF)
Cindy Liu48f6baf2021-07-28 20:42:34 -070044set(IREE_ENABLE_THREADING OFF)
45set(IREE_BUILD_TESTS OFF)
46set(IREE_BUILD_BINDINGS_TFLITE OFF)
Cindy Liu0af5fb02021-12-24 11:14:01 -080047set(IREE_HAL_DRIVER_DEFAULTS OFF CACHE BOOL "" FORCE)
48set(IREE_HAL_DRIVER_VMVX_SYNC ON CACHE BOOL "" FORCE)
49set(IREE_HAL_DRIVER_DYLIB_SYNC ON CACHE BOOL "" FORCE)
Cindy Liu48f6baf2021-07-28 20:42:34 -070050
51#-------------------------------------------------------------------------------
52# IREE-specific definitions
53#-------------------------------------------------------------------------------
54set(SPRINGBOK_CONFIG_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/springbok_config.h")
55add_definitions(-DFLATCC_USE_GENERIC_ALIGNED_ALLOC)
56if(NOT ${BUILD_RV64_LINUX})
57 add_definitions(-DIREE_PLATFORM_GENERIC)
58 add_definitions(-DIREE_SYNCHRONIZATION_DISABLE_UNSAFE=1)
59 add_definitions(-DIREE_FILE_IO_ENABLE=0)
60 add_definitions(-DIREE_USER_CONFIG_H="${SPRINGBOK_CONFIG_HEADER}")
61endif()
62
Cindy Liu151e5c22021-11-12 18:59:32 -080063# The project does a cmake hack here -- at the executable linkage stage, we
64# append the logging library (and springbok BSP). Any logging library update
65# (libspringbok.a or libnative_log.a) only gets rebuilt during executable
66# linkage, but not during library compilation.
67#
68# However, an explicit include path gets added here across all targets so the
69# header files can be found during compilation.
Cindy Liub503b1b2021-08-18 11:37:08 -070070if(${BUILD_WITH_SPRINGBOK})
Cindy Liu151e5c22021-11-12 18:59:32 -080071 # Springbok BSP-related setting
72 add_subdirectory($ENV{ROOTDIR}/sw/vec/springbok springbok)
Cindy Liuff714512021-08-26 16:22:12 -070073 include(riscv_springbok)
Cindy Liub503b1b2021-08-18 11:37:08 -070074 include_directories($ENV{ROOTDIR}/sw/vec/springbok/include)
Cindy Liu5c765812021-09-03 02:04:56 -070075else()
Cindy Liu151e5c22021-11-12 18:59:32 -080076 # Add the springbok printout support.
77 add_subdirectory(native_log)
78 include(riscv_native_log)
79 include_directories(native_log)
Cindy Liub503b1b2021-08-18 11:37:08 -070080endif()
Cindy Liu14c53902021-08-03 21:34:00 +000081
Cindy Liuc250abf2021-11-11 19:23:54 -080082message(STATUS "Include IREE source at ${IREE_SOURCE_DIR}")
Cindy Liu986ee242021-07-29 23:23:17 -070083# Build IREE runtime libraries.
Cindy Liuc250abf2021-11-11 19:23:54 -080084add_subdirectory(${IREE_SOURCE_DIR} iree)
Cindy Liu986ee242021-07-29 23:23:17 -070085
86# Apply IREE's CMake variables and build options so we can use IREE build
87# functions properly in this project.
Cindy Liuc250abf2021-11-11 19:23:54 -080088include(${IREE_SOURCE_DIR}/build_tools/cmake/iree_copts.cmake)
Cindy Liu986ee242021-07-29 23:23:17 -070089
Cindy Liuff714512021-08-26 16:22:12 -070090include(springbok_bytecode_module)
Lun Dong72890d02021-12-03 18:51:03 -080091include(springbok_c_module)
92include(springbok_modules)
Lun Dongdb85fd72021-11-02 02:39:48 -070093include(iree_model_input)
Cindy Liu986ee242021-07-29 23:23:17 -070094# Add the included directory here.
95add_subdirectory(samples)