mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
build: make cc-option properly deal with unrecognized sub-options
In options like -march=, it may be only the sub-option which is unrecognized by the compiler. In such an event the error message often splits option and argument, typically saying something like "bad value '<argument>' for '<option>'. Instead of extend the grep invocation, stop parsing compiler output altogether. Instead substitute -Wno-* options by their -W* counterparts for probing (obviously assuming that such a counterpart always exists). Suggested-by: Anthony PERARD <anthony.perard@citrix.com> Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
This commit is contained in:
1 parent
a73560896c
commit
824b5a40dd
1 file changed
+7
-7
@@ -85,17 +85,17 @@ PYTHON_PREFIX_ARG ?= --prefix="$(prefix)"
|
||||
|
||||
# cc-option: Check if compiler supports first option, else fall back to second.
|
||||
#
|
||||
# This is complicated by the fact that unrecognised -Wno-* options:
|
||||
# This is complicated by the fact that with most gcc versions unrecognised
|
||||
# -Wno-* options:
|
||||
# (a) are ignored unless the compilation emits a warning; and
|
||||
# (b) even then produce a warning rather than an error
|
||||
# To handle this we do a test compile, passing the option-under-test, on a code
|
||||
# fragment that will always produce a warning (integer assigned to pointer).
|
||||
# We then grep for the option-under-test in the compiler's output, the presence
|
||||
# of which would indicate an "unrecognized command-line option" warning/error.
|
||||
# Further Clang also only warns for unrecognised -W* options. To handle this
|
||||
# we do a test compile, substituting -Wno-* by -W* and adding -Werror. This
|
||||
# way all unrecognised options are diagnosed uniformly, allowing us to merely
|
||||
# check exit status.
|
||||
#
|
||||
# Usage: cflags-y += $(call cc-option,$(CC),-march=winchip-c6,-march=i586)
|
||||
cc-option = $(shell if test -z "`echo 'void*p=1;' | \
|
||||
$(1) $(2) -c -o /dev/null -x c - 2>&1 | grep -- $(2:-Wa$(comma)%=%) -`"; \
|
||||
cc-option = $(shell if $(1) $(2:-Wno-%=-W%) -Werror -c -o /dev/null -x c /dev/null >/dev/null 2>&1; \
|
||||
then echo "$(2)"; else echo "$(3)"; fi ;)
|
||||
|
||||
# cc-option-add: Add an option to compilation flags, but only if supported.
|
||||
|
||||