1# Kconfig helper macros
2
3# Convenient variables
4comma       := ,
5quote       := "
6squote      := '
7empty       :=
8space       := $(empty) $(empty)
9dollar      := $
10right_paren := )
11left_paren  := (
12
13# $(if-success,<command>,<then>,<else>)
14# Return <then> if <command> exits with 0, <else> otherwise.
15if-success = $(shell,{ $(1); } >/dev/null 2>&1 && echo "$(2)" || echo "$(3)")
16
17# $(success,<command>)
18# Return y if <command> exits with 0, n otherwise
19success = $(if-success,$(1),y,n)
20
21# $(cc-option,<flag>)
22# Return y if the compiler supports <flag>, n otherwise
23cc-option = $(success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null)
24
25# $(cc-define,<macro>)
26# Return y if the compiler defines <macro>, n otherwise
27cc-define = $(success,$(CC) -dM -E -x c /dev/null | grep -q '^#define \<$(1)\>')
28
29# $(ld-option,<flag>)
30# Return y if the linker supports <flag>, n otherwise
31ld-option = $(success,$(LD) -v $(1))
32
33# gcc version including patch level
34gcc-version := $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 's/^0*//')
35