1# Copyright (C) 2022 Huawei Technologies Co., Ltd. 2# Licensed under the Mulan PSL v2. 3# You can use this software according to the terms and conditions of the Mulan PSL v2. 4# You may obtain a copy of Mulan PSL v2 at: 5# http://license.coscl.org.cn/MulanPSL2 6# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR 7# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR 8# PURPOSE. 9# See the Mulan PSL v2 for more details. 10# 11#teeos-flags.mk 12# 13 14ifeq ($(CONFIG_DEBUG_BUILD), y) 15CFLAGS += -g 16ASFLAGS += -g 17A32_CFLAGS += -g 18A32_ASFLAGS += -g 19endif 20 21C_OPTIM_FLAGS := 22ifeq (${CONFIG_USER_CFLAGS},) 23 CFLAGS += $(WARNINGS:%=-W%) -nostdinc -std=gnu11 24 CXXFLAGS += $(WARNINGS:%=-W%) -nostdinc -std=gnu++14 25 26 ifeq (${CONFIG_USER_OPTIMIZATION_Os},y) 27 C_OPTIM_FLAGS += -Oz 28 endif 29 ifeq (${CONFIG_USER_OPTIMIZATION_O0},y) 30 C_OPTIM_FLAGS += -O0 31 endif 32 ifeq (${CONFIG_USER_OPTIMIZATION_O1},y) 33 C_OPTIM_FLAGS += -O1 34 endif 35 ifeq (${CONFIG_USER_OPTIMIZATION_O3},y) 36 C_OPTIM_FLAGS += -O3 37 endif 38 ifeq (${CONFIG_USER_OPTIMIZATION_O2},y) 39 C_OPTIM_FLAGS += -O2 40 endif 41 42 ifeq (${CONFIG_LINK_TIME_OPTIMIZATIONS},y) 43 C_OPTIM_FLAGS += -flto 44 STARTGROUP := 45 ENDGROUP := 46 endif 47 48 CFLAGS += $(C_OPTIM_FLAGS) 49 CXXFLAGS += $(C_OPTIM_FLAGS) 50 51 CFLAGS += $(NK_CFLAGS) 52 CXXFLAGS += $(NK_CXXFLAGS) 53else 54 CFLAGS += ${CONFIG_USER_CFLAGS} 55endif 56 57CFLAGS += -fno-omit-frame-pointer 58CFLAGS += -fno-builtin-aligned_alloc \ 59 -fno-builtin-alloca \ 60 -fno-builtin-calloc \ 61 -fno-builtin-fwrite \ 62 -fno-builtin-fread \ 63 -fno-builtin-fseek \ 64 -fno-builtin-fclose \ 65 -fno-builtin-malloc \ 66 -fno-builtin-memcpy \ 67 -fno-builtin-memcmp \ 68 -fno-builtin-memset \ 69 -fno-builtin-memmove \ 70 -fno-builtin-realloc \ 71 -fno-builtin-strncmp \ 72 -fno-builtin-strlen \ 73 -fno-builtin-strncpy \ 74 -fno-builtin-strncat \ 75 -fno-builtin-posix_memalign \ 76 -fno-builtin-printf \ 77 -fno-builtin-snprintf \ 78 -fno-builtin-vsnprintf \ 79 -fno-builtin-fwrite_unlocked \ 80 -fno-builtin-memchr \ 81 -fno-builtin-strcspn\ 82 -fno-builtin-strspn \ 83 -fno-builtin-bcmp \ 84 -fno-builtin-bcopy \ 85 -fno-builtin-bzero \ 86 -fno-builtin-strncasecmp \ 87 -fno-builtin-stpncpy \ 88 -fno-builtin-strndup \ 89 90ifeq (${CONFIG_WHOLE_PROGRAM_OPTIMIZATIONS_USER},y) 91 LDFLAGS += -fwhole-program 92endif 93 94ifeq ($(USE_LIBC), y) 95 CFLAGS := $(filter-out -march=armv8-a+nofp, $(CFLAGS)) -march=armv8-a 96endif 97 98ifeq ($(CONFIG_HW_SECUREC_MIN_MEM),y) 99 CPPFLAGS += -DSECUREC_WARP_OUTPUT=1 -DSECUREC_WITH_PERFORMANCE_ADDONS=0 100endif 101 102#start add to A32_CFLAGS 103 104ifeq ($(CONFIG_UBSAN),y) 105A32_CFLAGS += -fsanitize=bounds-strict -fsanitize-address-use-after-scope -fsanitize-undefined-trap-on-error 106endif 107 108ifeq ($(USE_NDK_32), y) 109 A32_CFLAGS += -nodefaultlibs -nostartfiles 110 LDFLAGS += --eh-frame-hdr --allow-shlib-undefined 111endif 112 113ifeq ($(USE_NDK_64), y) 114 CFLAGS += -nodefaultlibs -nostartfiles 115 LDFLAGS += --eh-frame-hdr --allow-shlib-undefined 116 CFLAGS := $(filter-out -march=armv8-a+nofp -nostdinc -march=armv8-a, $(CFLAGS)) -march=armv8-a 117endif 118 119ASFLAGS += $(NK_ASFLAGS) 120 121A32_CFLAGS += -march=$(ARMV) \ 122 -nostdinc \ 123 -nodefaultlibs \ 124 -fno-short-enums \ 125 -fno-builtin-aligned_alloc \ 126 -fno-builtin-alloca \ 127 -fno-builtin-calloc \ 128 -fno-builtin-fwrite \ 129 -fno-builtin-fread \ 130 -fno-builtin-fseek \ 131 -fno-builtin-fclose \ 132 -fno-builtin-malloc \ 133 -fno-builtin-memcpy \ 134 -fno-builtin-memcmp \ 135 -fno-builtin-memset \ 136 -fno-builtin-memmove \ 137 -fno-builtin-realloc \ 138 -fno-builtin-strncmp \ 139 -fno-builtin-strlen \ 140 -fno-builtin-strncpy \ 141 -fno-builtin-strncat \ 142 -fno-builtin-posix_memalign \ 143 -fno-builtin-printf \ 144 -fno-builtin-snprintf \ 145 -fno-builtin-vsnprintf \ 146 -fno-builtin-fwrite_unlocked \ 147 -fno-builtin-memchr \ 148 -fno-builtin-strcspn\ 149 -fno-builtin-strspn \ 150 -fno-builtin-bcmp \ 151 -fno-builtin-bcopy \ 152 -fno-builtin-bzero \ 153 -fno-builtin-strncasecmp \ 154 -fno-builtin-stpncpy \ 155 -fno-builtin-strndup \ 156 -fno-omit-frame-pointer 157 158 159ifeq (${CONFIG_USER_LINKER_GC_SECTIONS},y) 160 A32_CFLAGS += -ffunction-sections 161 A32_CFLAGS += -fdata-sections 162 A32_LDFLAGS += --gc-sections 163endif 164 165A32_CFLAGS += -fPIC 166 167ifeq (${CONFIG_UNALIGNED_ACCESS},y) 168 A32_CFLAGS += -munaligned-access -fmax-type-align=1 169endif 170 171ifeq ($(CONFIG_CC_STACKPROTECTOR_STRONG),y) 172 A32_CFLAGS += -fstack-protector-strong 173endif 174 175 176ifeq (${CONFIG_USER_FULL_RELRO},y) 177 NK_LDFLAGS += -z relro -z now 178ifeq ($(TARGET_IS_ARM32),y) 179ifneq ($(USE_NDK_32),y) 180ifneq ($(TARGET_CUSTOM_LINK_SCRIPT),y) 181 NK_LDFLAGS += -T $(COMMON_PATH)/app-arm-eabi.lds 182endif 183endif 184endif 185endif 186 187ifeq (${TARGET_IS_ARM32},y) 188 CFLAGS += ${A32_CFLAGS} 189 CXXFLAGS += ${A32_CXXFLAGS} 190ifeq ($(USE_NDK_64), y) 191 CFLAGS := $(filter-out -nostdinc,$(CFLAGS)) 192endif 193 194ifeq ($(USE_NDK_32), y) 195 CFLAGS := $(filter-out -nostdinc,$(CFLAGS)) 196endif 197endif 198 199CFLAGS += -DARM_PAE=1 200 201ifeq ($(TARGET_IS_HOST),) 202ifeq ($(CONFIG_LLVM_LTO),y) 203CFLAGS += -flto -fsplit-lto-unit 204endif 205endif 206