dd29865633
Swap the order of 'mkdir' and 'trap' just in case the subshell is interrupted between 'mkdir' and 'trap' although the effect might be subtle. This does not intend to make the cleanup perfect. There are more cases that miss to remove the tmp directory, for example: - When interrupted, dash does not invoke the EXIT trap (bash does) - 'rm' command might be interrupted before removing the directory I am not addressing all the cases since the tmp directory is harmless after all. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
66 lines
2.6 KiB
Plaintext
66 lines
2.6 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
# Kconfig helper macros
|
|
|
|
# Convenient variables
|
|
comma := ,
|
|
quote := "
|
|
squote := '
|
|
empty :=
|
|
space := $(empty) $(empty)
|
|
dollar := $
|
|
right_paren := )
|
|
left_paren := (
|
|
|
|
# $(if-success,<command>,<then>,<else>)
|
|
# Return <then> if <command> exits with 0, <else> otherwise.
|
|
if-success = $(shell,{ $(1); } >/dev/null 2>&1 && echo "$(2)" || echo "$(3)")
|
|
|
|
# $(success,<command>)
|
|
# Return y if <command> exits with 0, n otherwise
|
|
success = $(if-success,$(1),y,n)
|
|
|
|
# $(failure,<command>)
|
|
# Return n if <command> exits with 0, y otherwise
|
|
failure = $(if-success,$(1),n,y)
|
|
|
|
# $(cc-option,<flag>)
|
|
# Return y if the compiler supports <flag>, n otherwise
|
|
cc-option = $(success,trap "rm -rf .tmp_$$" EXIT; mkdir .tmp_$$; $(CC) -Werror $(CLANG_FLAGS) $(1) -c -x c /dev/null -o .tmp_$$/tmp.o)
|
|
|
|
# $(ld-option,<flag>)
|
|
# Return y if the linker supports <flag>, n otherwise
|
|
ld-option = $(success,$(LD) -v $(1))
|
|
|
|
# $(as-instr,<instr>)
|
|
# Return y if the assembler supports <instr>, n otherwise
|
|
as-instr = $(success,printf "%b\n" "$(1)" | $(CC) $(CLANG_FLAGS) -c -x assembler -o /dev/null -)
|
|
|
|
# check if $(CC) and $(LD) exist
|
|
$(error-if,$(failure,command -v $(CC)),compiler '$(CC)' not found)
|
|
$(error-if,$(failure,command -v $(LD)),linker '$(LD)' not found)
|
|
|
|
# Get the compiler name, version, and error out if it is not supported.
|
|
cc-info := $(shell,$(srctree)/scripts/cc-version.sh $(CC))
|
|
$(error-if,$(success,test -z "$(cc-info)"),Sorry$(comma) this compiler is not supported.)
|
|
cc-name := $(shell,set -- $(cc-info) && echo $1)
|
|
cc-version := $(shell,set -- $(cc-info) && echo $2)
|
|
|
|
# Get the assembler name, version, and error out if it is not supported.
|
|
as-info := $(shell,$(srctree)/scripts/as-version.sh $(CC) $(CLANG_FLAGS))
|
|
$(error-if,$(success,test -z "$(as-info)"),Sorry$(comma) this assembler is not supported.)
|
|
as-name := $(shell,set -- $(as-info) && echo $1)
|
|
as-version := $(shell,set -- $(as-info) && echo $2)
|
|
|
|
# Get the linker name, version, and error out if it is not supported.
|
|
ld-info := $(shell,$(srctree)/scripts/ld-version.sh $(LD))
|
|
$(error-if,$(success,test -z "$(ld-info)"),Sorry$(comma) this linker is not supported.)
|
|
ld-name := $(shell,set -- $(ld-info) && echo $1)
|
|
ld-version := $(shell,set -- $(ld-info) && echo $2)
|
|
|
|
# machine bit flags
|
|
# $(m32-flag): -m32 if the compiler supports it, or an empty string otherwise.
|
|
# $(m64-flag): -m64 if the compiler supports it, or an empty string otherwise.
|
|
cc-option-bit = $(if-success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null,$(1))
|
|
m32-flag := $(cc-option-bit,-m32)
|
|
m64-flag := $(cc-option-bit,-m64)
|