Git fork
at reftables-rust 106 lines 3.5 kB view raw
1ifndef COMPILER_FEATURES 2COMPILER_FEATURES := $(shell ./detect-compiler $(CC)) 3endif 4 5ifeq ($(filter no-error,$(DEVOPTS)),) 6DEVELOPER_CFLAGS += -Werror 7SPARSE_FLAGS += -Wsparse-error 8endif 9 10DEVELOPER_CFLAGS += -Wall 11ifeq ($(filter no-pedantic,$(DEVOPTS)),) 12DEVELOPER_CFLAGS += -pedantic 13ifneq ($(or $(filter gcc5,$(COMPILER_FEATURES)),$(filter clang4,$(COMPILER_FEATURES))),) 14DEVELOPER_CFLAGS += -Wpedantic 15ifneq ($(filter gcc10,$(COMPILER_FEATURES)),) 16ifeq ($(uname_S),MINGW) 17DEVELOPER_CFLAGS += -Wno-pedantic-ms-format 18endif 19endif 20endif 21endif 22 23ifneq ($(uname_S),FreeBSD) 24ifneq ($(or $(filter gcc6,$(COMPILER_FEATURES)),$(filter clang7,$(COMPILER_FEATURES))),) 25DEVELOPER_CFLAGS += -std=gnu99 26endif 27else 28# FreeBSD cannot limit to C99 because its system headers unconditionally 29# rely on C11 features. 30endif 31 32DEVELOPER_CFLAGS += -Wdeclaration-after-statement 33DEVELOPER_CFLAGS += -Wformat-security 34DEVELOPER_CFLAGS += -Wold-style-definition 35DEVELOPER_CFLAGS += -Woverflow 36DEVELOPER_CFLAGS += -Wpointer-arith 37DEVELOPER_CFLAGS += -Wstrict-prototypes 38DEVELOPER_CFLAGS += -Wunused 39DEVELOPER_CFLAGS += -Wvla 40DEVELOPER_CFLAGS += -Wwrite-strings 41DEVELOPER_CFLAGS += -fno-common 42DEVELOPER_CFLAGS += -Wunreachable-code 43 44ifneq ($(filter clang9,$(COMPILER_FEATURES)),) 45DEVELOPER_CFLAGS += -Wcomma 46endif 47 48ifneq ($(filter clang4,$(COMPILER_FEATURES)),) 49DEVELOPER_CFLAGS += -Wtautological-constant-out-of-range-compare 50endif 51 52ifneq ($(or $(filter gcc6,$(COMPILER_FEATURES)),$(filter clang4,$(COMPILER_FEATURES))),) 53DEVELOPER_CFLAGS += -Wextra 54# if a function is public, there should be a prototype and the right 55# header file should be included. If not, it should be static. 56DEVELOPER_CFLAGS += -Wmissing-prototypes 57ifeq ($(filter extra-all,$(DEVOPTS)),) 58# These are disabled because we have these all over the place. 59DEVELOPER_CFLAGS += -Wno-empty-body 60DEVELOPER_CFLAGS += -Wno-missing-field-initializers 61endif 62endif 63 64# uninitialized warnings on gcc 4.9.2 in xdiff/xdiffi.c and config.c 65# not worth fixing since newer compilers correctly stop complaining 66# 67# Likewise, gcc older than 4.9 complains about initializing a 68# struct-within-a-struct using just "{ 0 }" 69ifneq ($(filter gcc4,$(COMPILER_FEATURES)),) 70ifeq ($(filter gcc5,$(COMPILER_FEATURES)),) 71DEVELOPER_CFLAGS += -Wno-uninitialized 72DEVELOPER_CFLAGS += -Wno-missing-braces 73endif 74endif 75 76# Old versions of clang complain about initializing a 77# struct-within-a-struct using just "{0}" rather than "{{0}}". This 78# error is considered a false-positive and not worth fixing, because 79# new clang versions do not, so just disable it. 80# 81# The "bug" was fixed in upstream clang 9. 82# 83# Complicating this is that versions of clang released by Apple have 84# their own version numbers (associated with the corresponding version 85# of XCode) unrelated to the official clang version numbers. 86# 87# The bug was fixed in Apple clang 12. 88# 89ifneq ($(filter clang1,$(COMPILER_FEATURES)),) # if we are using clang 90ifeq ($(uname_S),Darwin) # if we are on darwin 91ifeq ($(filter clang12,$(COMPILER_FEATURES)),) # if version < 12 92DEVELOPER_CFLAGS += -Wno-missing-braces 93endif 94else # not darwin 95ifeq ($(filter clang9,$(COMPILER_FEATURES)),) # if version < 9 96DEVELOPER_CFLAGS += -Wno-missing-braces 97endif 98endif 99endif 100 101# https://bugzilla.redhat.com/show_bug.cgi?id=2075786 102ifneq ($(filter gcc12,$(COMPILER_FEATURES)),) 103DEVELOPER_CFLAGS += -Wno-error=stringop-overread 104endif 105 106GIT_TEST_PERL_FATAL_WARNINGS = YesPlease