BUILD: makefile: Redirect stderr to /dev/null when probing options
It is a workaround to avoid a clang 11 bug that exits with SIGABRT when stderr is redirected to stdin. This bug was already reported few weeks ago: https://bugs.llvm.org/show_bug.cgi?id=49463 But because it is pretty annoying, the standard error is now redirected to /dev/null.
This commit is contained in:
parent
1d26f22e05
commit
1615064ea0
11
Makefile
11
Makefile
@ -123,20 +123,25 @@ ifeq ($V,1)
|
||||
Q=
|
||||
endif
|
||||
|
||||
# WARNING: Do not change cc-opt, cc-opt-alt or cc-warning without checking if
|
||||
# clang bug #49364 is fixed. stderr is redirected to /dev/null on
|
||||
# purpose, to work around a clang 11 bug that crashes if stderr is
|
||||
# redirected to stdin.
|
||||
#
|
||||
# Function used to detect support of a given option by the compiler.
|
||||
# Usage: CFLAGS += $(call cc-opt,option). Eg: $(call cc-opt,-fwrapv)
|
||||
# Note: ensure the referencing variable is assigned using ":=" and not "=" to
|
||||
# call it only once.
|
||||
cc-opt = $(shell set -e; if $(CC) -Werror $(1) -E -xc - -o /dev/null </dev/null >&0 2>&0; then echo "$(1)"; fi;)
|
||||
cc-opt = $(shell set -e; if $(CC) -Werror $(1) -E -xc - -o /dev/null </dev/null >&0 2>/dev/null; then echo "$(1)"; fi;)
|
||||
|
||||
# same but emits $2 if $1 is not supported
|
||||
cc-opt-alt = $(shell set -e; if $(CC) -Werror $(1) -E -xc - -o /dev/null </dev/null >&0 2>&0; then echo "$(1)"; else echo "$(2)"; fi;)
|
||||
cc-opt-alt = $(shell set -e; if $(CC) -Werror $(1) -E -xc - -o /dev/null </dev/null >&0 2>/dev/null; then echo "$(1)"; else echo "$(2)"; fi;)
|
||||
|
||||
# Disable a warning when supported by the compiler. Don't put spaces around the
|
||||
# warning! And don't use cc-opt which doesn't always report an error until
|
||||
# another one is also returned.
|
||||
# Usage: CFLAGS += $(call cc-nowarn,warning). Eg: $(call cc-opt,format-truncation)
|
||||
cc-nowarn = $(shell set -e; if $(CC) -Werror -W$(1) -E -xc - -o /dev/null </dev/null >&0 2>&0; then echo "-Wno-$(1)"; fi;)
|
||||
cc-nowarn = $(shell set -e; if $(CC) -Werror -W$(1) -E -xc - -o /dev/null </dev/null >&0 2>/dev/null; then echo "-Wno-$(1)"; fi;)
|
||||
|
||||
#### Installation options.
|
||||
DESTDIR =
|
||||
|
Loading…
x
Reference in New Issue
Block a user