Our last sync with the kernel was 5.1. We are so out of sync now, that tracking the patches and backporting them one by one makes little sense and it's going to take ages. This is an attempt to sync up Makefiles to 6.1. Unfortunately due to sheer amount of patches this is not easy to review, but that's what we decided during a community call for the bump to 5.1, so we are following the same guidelines here. Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>a #rebased on -next
75 lines
2.7 KiB
Makefile
75 lines
2.7 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
# cc-cross-prefix
|
|
# Usage: CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu- m68k-linux-)
|
|
# Return first <prefix> where a <prefix>gcc is found in PATH.
|
|
# If no gcc found in PATH with listed prefixes return nothing
|
|
#
|
|
# Note: '2>/dev/null' is here to force Make to invoke a shell. Otherwise, it
|
|
# would try to directly execute the shell builtin 'command'. This workaround
|
|
# should be kept for a long time since this issue was fixed only after the
|
|
# GNU Make 4.2.1 release.
|
|
cc-cross-prefix = $(firstword $(foreach c, $(1), \
|
|
$(if $(shell command -v -- $(c)gcc 2>/dev/null), $(c))))
|
|
|
|
# output directory for tests below
|
|
TMPOUT = $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_$$$$
|
|
|
|
# try-run
|
|
# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)
|
|
# Exit code chooses option. "$$TMP" serves as a temporary file and is
|
|
# automatically cleaned up.
|
|
try-run = $(shell set -e; \
|
|
TMP=$(TMPOUT)/tmp; \
|
|
trap "rm -rf $(TMPOUT)" EXIT; \
|
|
mkdir -p $(TMPOUT); \
|
|
if ($(1)) >/dev/null 2>&1; \
|
|
then echo "$(2)"; \
|
|
else echo "$(3)"; \
|
|
fi)
|
|
|
|
# as-option
|
|
# Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,)
|
|
|
|
as-option = $(call try-run,\
|
|
$(CC) $(KBUILD_CFLAGS) $(1) -c -x assembler /dev/null -o "$$TMP",$(1),$(2))
|
|
|
|
# as-instr
|
|
# Usage: cflags-y += $(call as-instr,instr,option1,option2)
|
|
|
|
as-instr = $(call try-run,\
|
|
printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" -,$(2),$(3))
|
|
|
|
# __cc-option
|
|
# Usage: MY_CFLAGS += $(call __cc-option,$(CC),$(MY_CFLAGS),-march=winchip-c6,-march=i586)
|
|
__cc-option = $(call try-run,\
|
|
$(1) -Werror $(2) $(3) -c -x c /dev/null -o "$$TMP",$(3),$(4))
|
|
|
|
# cc-option
|
|
# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
|
|
|
|
cc-option = $(call __cc-option, $(CC),\
|
|
$(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS),$(1),$(2))
|
|
|
|
# cc-option-yn
|
|
# Usage: flag := $(call cc-option-yn,-march=winchip-c6)
|
|
cc-option-yn = $(call try-run,\
|
|
$(CC) -Werror $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n)
|
|
|
|
# cc-disable-warning
|
|
# Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
|
|
cc-disable-warning = $(call try-run,\
|
|
$(CC) -Werror $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
|
|
|
|
# cc-ifversion
|
|
# Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1)
|
|
cc-ifversion = $(shell [ $(CONFIG_GCC_VERSION)0 $(1) $(2)000 ] && echo $(3) || echo $(4))
|
|
|
|
# ld-option
|
|
# Usage: KBUILD_LDFLAGS += $(call ld-option, -X, -Y)
|
|
ld-option = $(call try-run, $(LD) $(KBUILD_LDFLAGS) $(1) -v,$(1),$(2),$(3))
|
|
|
|
# ld-ifversion
|
|
# Usage: $(call ld-ifversion, -ge, 22252, y)
|
|
ld-ifversion = $(shell [ $(CONFIG_LD_VERSION)0 $(1) $(2)0 ] && echo $(3) || echo $(4))
|