xref: /aosp_15_r20/system/chre/build/variant/aosp_riscv_tinysys_common.mk (revision 84e339476a462649f82315436d70fd732297a399)
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