summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-10-19 15:38:06 -0700
committerJunio C Hamano <gitster@pobox.com>2022-10-19 15:38:06 -0700
commit617e9991d4434c4cc077583ed9426782cf3b2f43 (patch)
tree9edceb48476819f40cd5849c0d88c80a21ef0b6a
parentfe9c607509430b52ec107134f2d8e5d201bcf5bc (diff)
parent54795d37d9e689864989f30d769045eb02b01320 (diff)
downloadgit-617e9991d4434c4cc077583ed9426782cf3b2f43.tar.gz
Merge branch 'jh/struct-zero-init-with-older-clang'
Work around older clang that warns against C99 zero initialization syntax for struct. * jh/struct-zero-init-with-older-clang: config.mak.dev: disable suggest braces error on old clang versions
-rw-r--r--config.mak.dev25
1 files changed, 25 insertions, 0 deletions
diff --git a/config.mak.dev b/config.mak.dev
index 4fa19d361b..981304727c 100644
--- a/config.mak.dev
+++ b/config.mak.dev
@@ -69,6 +69,31 @@ DEVELOPER_CFLAGS += -Wno-missing-braces
endif
endif
+# Old versions of clang complain about initializaing a
+# struct-within-a-struct using just "{0}" rather than "{{0}}". This
+# error is considered a false-positive and not worth fixing, because
+# new clang versions do not, so just disable it.
+#
+# The "bug" was fixed in upstream clang 9.
+#
+# Complicating this is that versions of clang released by Apple have
+# their own version numbers (associated with the corresponding version
+# of XCode) unrelated to the official clang version numbers.
+#
+# The bug was fixed in Apple clang 12.
+#
+ifneq ($(filter clang1,$(COMPILER_FEATURES)),) # if we are using clang
+ifeq ($(uname_S),Darwin) # if we are on darwin
+ifeq ($(filter clang12,$(COMPILER_FEATURES)),) # if version < 12
+DEVELOPER_CFLAGS += -Wno-missing-braces
+endif
+else # not darwin
+ifeq ($(filter clang9,$(COMPILER_FEATURES)),) # if version < 9
+DEVELOPER_CFLAGS += -Wno-missing-braces
+endif
+endif
+endif
+
# https://bugzilla.redhat.com/show_bug.cgi?id=2075786
ifneq ($(filter gcc12,$(COMPILER_FEATURES)),)
DEVELOPER_CFLAGS += -Wno-error=stringop-overread