Fix build with gcc12
Need to skip a bogus flag on gcc 12, reported here:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104336
Change-Id: I5b3fd530d20902247d4ea9b5285bf0a389e2fa45
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/16820
Commit-Queue: Brett Wilson <brettw@google.com>
Reviewed-by: David Turner <digit@google.com>
Reviewed-by: Brett Wilson <brettw@google.com>
diff --git a/build/gen.py b/build/gen.py
index 3570746..169427e 100755
--- a/build/gen.py
+++ b/build/gen.py
@@ -229,6 +229,17 @@
return 0
+def is_gcc(cxx):
+ """Return True iff the compiler at `cxx` is GCC based."""
+ ret = subprocess.run(
+ f'{cxx} -dM -E -',
+ shell=True,
+ stdin=subprocess.DEVNULL,
+ text=True,
+ capture_output=True)
+
+ return ret.returncode == 0 and "#define __GNUC__" in ret.stdout and not "#define __clang__" in ret.stdout
+
def GenerateLastCommitPosition(host, header):
ROOT_TAG = 'initial-commit'
describe_output = subprocess.check_output(
@@ -480,11 +491,13 @@
'-std=c++20'
])
- # flags not supported by gcc/g++.
- if cxx == 'clang++':
- cflags.extend(['-Wrange-loop-analysis', '-Wextra-semi-stmt'])
- else:
+ if is_gcc(cxx):
cflags.append('-Wno-redundant-move')
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104336
+ cflags.append('-Wno-restrict')
+ # flags not supported by gcc/g++.
+ else:
+ cflags.extend(['-Wrange-loop-analysis', '-Wextra-semi-stmt'])
if platform.is_linux() or platform.is_mingw() or platform.is_msys():
ldflags.append('-Wl,--as-needed')