• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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