blob: 453e9d0beaaa9d119178719f108839dff25a5544 [file]
# Settings for RISCV 32-bit toolchain.
TARGET_ARCH := riscv32
TARGET_TOOLCHAIN_PREFIX := riscv64-unknown-elf-
RISCV_ARCH := rv32imc
RISCV_ABI := ilp32
RISCV_CODE_MODEL := medany
# Allow additional flags on the command line for debugging.
RISCV_EXTRA_CFLAGS :=
TARGET_DEFAULT_TOOLCHAIN_ROOT := $(DOWNLOADS_DIR)/riscv_toolchain/bin/
TARGET_TOOLCHAIN_ROOT := $(TARGET_DEFAULT_TOOLCHAIN_ROOT)
ifeq ($(TARGET_TOOLCHAIN_ROOT), $(TARGET_DEFAULT_TOOLCHAIN_ROOT))
$(eval $(call add_third_party_download,$(RISCV_TOOLCHAIN_URL),$(RISCV_TOOLCHAIN_MD5),riscv_toolchain,))
endif
export PATH := $(TARGET_TOOLCHAIN_ROOT):$(PATH)
PLATFORM_FLAGS = \
-march=$(RISCV_ARCH) \
-mabi=$(RISCV_ABI) \
-mcmodel=$(RISCV_CODE_MODEL) \
-mexplicit-relocs \
-fno-builtin-printf \
-DTF_LITE_MCU_DEBUG_LOG \
-DTF_LITE_USE_GLOBAL_CMATH_FUNCTIONS \
-funsigned-char \
-fno-delete-null-pointer-checks \
-fomit-frame-pointer
CXXFLAGS += $(PLATFORM_FLAGS) \
-fpermissive \
-fno-use-cxa-atexit \
-DTF_LITE_USE_GLOBAL_MIN \
-DTF_LITE_USE_GLOBAL_MAX
CCFLAGS += $(PLATFORM_FLAGS)
BUILD_TYPE := micro
LDFLAGS += --specs=nano.specs
# See http://b/158651472 for why memory arena threshold test is disabled.
EXCLUDED_TESTS := \
$(TENSORFLOW_ROOT)tensorflow/lite/micro/memory_arena_threshold_test.cc
MICROLITE_TEST_SRCS := $(filter-out $(EXCLUDED_TESTS), $(MICROLITE_TEST_SRCS))
CCFLAGS += $(RISCV_EXTRA_CFLAGS)
CXXFLAGS += $(RISCV_EXTRA_CFLAGS)
# This disables the "linker relaxation" optimization, which produced incorrect code.
# TODO(b/279805615): Check whether this is fixed in newer versions of the toolchain.
LDFLAGS += -mno-relax
TEST_SCRIPT := $(TENSORFLOW_ROOT)tensorflow/lite/micro/testing/test_with_qemu.sh riscv32 rv32
SIZE_SCRIPT := ${TENSORFLOW_ROOT}tensorflow/lite/micro/testing/size_riscv32_binary.sh
include $(MAKEFILE_DIR)/ext_libs/eyalroz_printf.inc