1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2010-2014 Intel Corporation
#
# toolchain:
#
# - define CC, LD, AR, AS, ... (overridden by cmdline value)
# - define TOOLCHAIN_CFLAGS variable (overridden by cmdline value)
# - define TOOLCHAIN_LDFLAGS variable (overridden by cmdline value)
# - define TOOLCHAIN_ASFLAGS variable (overridden by cmdline value)
#
CC = $(CROSS)gcc
KERNELCC = $(CROSS)gcc
CPP = $(CROSS)cpp
# for now, we don't use as but nasm.
# AS = $(CROSS)as
AS = nasm
AR = $(CROSS)ar
LD = $(CROSS)ld
OBJCOPY = $(CROSS)objcopy
OBJDUMP = $(CROSS)objdump
STRIP = $(CROSS)strip
READELF = $(CROSS)readelf
GCOV = $(CROSS)gcov
ifeq ("$(origin CC)", "command line")
HOSTCC = $(CC)
else
HOSTCC = gcc
endif
HOSTAS = as
TOOLCHAIN_ASFLAGS =
TOOLCHAIN_CFLAGS =
TOOLCHAIN_LDFLAGS =
ifeq ($(CONFIG_RTE_LIBRTE_GCOV),y)
TOOLCHAIN_CFLAGS += --coverage
TOOLCHAIN_LDFLAGS += --coverage
ifeq (,$(findstring -O0,$(EXTRA_CFLAGS)))
$(warning "EXTRA_CFLAGS doesn't contains -O0, coverage will be inaccurate with optimizations enabled")
endif
endif
WERROR_FLAGS := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
WERROR_FLAGS += -Wmissing-declarations -Wold-style-definition -Wpointer-arith
WERROR_FLAGS += -Wcast-align -Wnested-externs -Wcast-qual
WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
WERROR_FLAGS += -Wundef -Wwrite-strings -Wdeprecated
ifeq ($(RTE_DEVEL_BUILD),y)
WERROR_FLAGS += -Werror
endif
# There are many issues reported for strict alignment architectures
# which are not necessarily fatal. Report as warnings.
ifeq ($(CONFIG_RTE_ARCH_STRICT_ALIGN),y)
WERROR_FLAGS += -Wno-error=cast-align
endif
# process cpu flags
include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk
ifeq ($(CONFIG_RTE_ENABLE_LTO),y)
# 'fat-lto' is used since pmdinfogen needs to have 'this_pmd_nameX'
# exported in symbol table and without this option only internal
# representation is present.
TOOLCHAIN_CFLAGS += -flto -ffat-lto-objects
TOOLCHAIN_LDFLAGS += -flto
# workaround for GCC bug 81440
ifeq ($(shell test $(GCC_VERSION) -lt 80 && echo 1), 1)
WERROR_FLAGS += -Wno-lto-type-mismatch
endif
endif
# disable warning for non-initialised fields
WERROR_FLAGS += -Wno-missing-field-initializers
# workaround GCC bug with warning "may be used uninitialized"
ifeq ($(shell test $(GCC_VERSION) -lt 47 && echo 1), 1)
WERROR_FLAGS += -Wno-uninitialized
endif
ifeq ($(shell test $(GCC_VERSION) -ge 100 && echo 1), 1)
# FIXME: Bugzilla 396
WERROR_FLAGS += -Wno-zero-length-bounds
endif
HOST_WERROR_FLAGS := $(WERROR_FLAGS)
ifeq ($(shell test $(HOST_GCC_VERSION) -gt 70 && echo 1), 1)
# Tell GCC only to error for switch fallthroughs without a suitable comment
HOST_WERROR_FLAGS += -Wimplicit-fallthrough=2
# Ignore errors for snprintf truncation
HOST_WERROR_FLAGS += -Wno-format-truncation
endif
ifeq ($(shell test $(GCC_VERSION) -gt 70 && echo 1), 1)
# Tell GCC only to error for switch fallthroughs without a suitable comment
WERROR_FLAGS += -Wimplicit-fallthrough=2
# Ignore errors for snprintf truncation
WERROR_FLAGS += -Wno-format-truncation
endif
# disable packed member unalign warnings
WERROR_FLAGS += -Wno-address-of-packed-member
export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
|