1# 2# Google Reference CHRE Implementation for common MTK riscv Tinysys platforms. 3# 4 5# Having a clean start 6include $(CHRE_PREFIX)/build/clean_build_template_args.mk 7 8TARGET_NAME = $(RISCV_TARGET_NAME) 9TARGET_PLATFORM_ID = $(RISCV_TARGET_PLATFORM_ID) 10 11ifneq ($(filter $(TARGET_NAME)% all, $(MAKECMDGOALS)),) 12 TARGET_CFLAGS = $(TINYSYS_CFLAGS) 13 TARGET_VARIANT_SRCS = $(TINYSYS_SRCS) 14 TARGET_BIN_LDFLAGS = $(AOSP_RISCV_TINYSYS_BIN_LDFLAGS) 15 TARGET_SO_EARLY_LIBS = $(AOSP_RISCV_TINYSYS_EARLY_LIBS) 16 TARGET_SO_LATE_LIBS = $(AOSP_RISCV_TINYSYS_LATE_LIBS) 17 18 ifneq ($(IS_NANOAPP_BUILD),) 19 # Inline functions of ctype.h for nanoapps 20 COMMON_CFLAGS += -DUSE_CHARSET_ASCII 21 22 # Used to expose libc headers to nanoapps that aren't supported on the given platform 23 TARGET_CFLAGS += -I$(CHRE_PREFIX)/platform/shared/include/chre/platform/shared/libc 24 25 TARGET_VARIANT_SRCS += $(DSO_SUPPORT_LIB_SRCS) 26 TARGET_CFLAGS += $(DSO_SUPPORT_LIB_CFLAGS) 27 28 ifeq ($(CHRE_TCM_ENABLED),true) 29 TARGET_CFLAGS += -DCHRE_TCM_ENABLED 30 # Flags: 31 # Signed = 0x00000001 32 # TCM-capable = 0x00000004 33 TARGET_NANOAPP_FLAGS = 0x00000005 34 endif 35 else 36 # only enforce RISCV_TINYSYS_PREFIX when building CHRE 37 ifeq ($(RISCV_TINYSYS_PREFIX),) 38 $(error "The tinysys code directory needs to be exported as the RISCV_TINYSYS_PREFIX \ 39 environment variable") 40 endif 41 endif 42 43 # Macros ####################################################################### 44 45 TINYSYS_CFLAGS += -DCFG_DRAM_HEAP_SUPPORT 46 TINYSYS_CFLAGS += -DCHRE_LOADER_ARCH=EM_RISCV 47 TINYSYS_CFLAGS += -DCHRE_NANOAPP_LOAD_ALIGNMENT=4096 48 49 TINYSYS_CFLAGS += -DCFG_TASK_MULTINOTIFY_SUPPORT 50 TINYSYS_CFLAGS += -mllvm -enable-printf-opt=false 51 52 TINYSYS_CFLAGS += -D__riscv 53 TINYSYS_CFLAGS += -DMRV55 54 TINYSYS_CFLAGS += -D_LIBCPP_HAS_NO_LONG_LONG 55 56 # Word size for this architecture 57 TARGET_CFLAGS += -DCHRE_32_BIT_WORD_SIZE 58 59 # CHRE platform 60 TARGET_CFLAGS += -DCHRE_FIRST_SUPPORTED_API_VERSION=CHRE_API_VERSION_1_7 61 TARGET_CFLAGS += -DCHRE_MESSAGE_TO_HOST_MAX_SIZE=4096 62 TARGET_CFLAGS += -DCHRE_USE_BUFFERED_LOGGING 63 64 # Enable static allocation in freertos 65 TINYSYS_CFLAGS += -DCFG_STATIC_ALLOCATE 66 TINYSYS_CFLAGS += -DconfigSUPPORT_STATIC_ALLOCATION=1 67 68 # Compiling flags ############################################################## 69 70 TINYSYS_CFLAGS += $(FLATBUFFERS_CFLAGS) 71 TINYSYS_CFLAGS += $(MBEDTLS_CFLAGS) 72 TINYSYS_CFLAGS += -mcpu=$(RISCV_CPU_TYPE) 73 TINYSYS_CFLAGS += --target=riscv32-unknown-elf 74 TINYSYS_CFLAGS += -march=rv32imafcv 75 76 # -fpic and -shared are only needed for dynamic linking 77 ifeq ($(IS_ARCHIVE_ONLY_BUILD),) 78 TARGET_SO_LDFLAGS += -shared 79 TARGET_CFLAGS += -fpic 80 81 # Enable compiler-rt dependencies 82 LLVM_RTLIB=$(RISCV_TOOLCHAIN_PATH)/lib/clang/12.0.0/libpic/riscv32/$(RISCV_TOOLCHAIN_TYPE) 83 TARGET_SO_LDFLAGS += -L$(LLVM_RTLIB) 84 TARGET_SO_LDFLAGS += -lclang_rt.builtins-riscv32 85 endif 86 87 # Other makefiles ############################################################## 88 89 include $(CHRE_PREFIX)/platform/shared/mbedtls/mbedtls.mk 90 include $(CHRE_PREFIX)/build/arch/riscv.mk 91 include $(CHRE_PREFIX)/build/build_template.mk 92endif