linux-yocto/tools/build/Makefile
Alexander Gordeev b53f20b323 tools build: Provide consistent build options for fixdep
The fixdep binary is being compiled and linked in one step. While the
host linker flags are passed to the compiler the host compiler flags are
missed.

That leads to build errors at least on x86_64, arm64 and s390 as result
of the compiler vs linker flags inconsistency. For example, during RPM
package build redhat-hardened-ld script is provided to gcc, while
redhat-hardened-cc1 script is missed.

Provide both KBUILD_HOSTCFLAGS and KBUILD_HOSTLDFLAGS to avoid that.

Fixes: ea974028a0 ("tools build: Avoid circular .fixdep-in.o.cmd issues")
Closes: https://lore.kernel.org/lkml/99ae0d34-ed76-4ca0-a9fd-c337da33c9f9@leemhuis.info/
Reported-by: Thorsten Leemhuis <linux@leemhuis.info>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Tested-by: Thorsten Leemhuis <linux@leemhuis.info>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20240815072046.1002837-1-agordeev@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2024-08-15 18:08:17 -03:00

1.2 KiB

SPDX-License-Identifier: GPL-2.0

ifeq ($(srctree),) srctree := $(patsubst %/,%,$(dir $(CURDIR))) srctree := $(patsubst %/,%,$(dir $(srctree))) endif

include $(srctree)/tools//scripts/Makefile.include

define allow-override $(if $(or $(findstring environment,$(origin $(1))),
$(findstring command line,$(origin $(1)))),,
$(eval $(1) = $(2))) endef

$(call allow-override,CC,$(CROSS_COMPILE)gcc) $(call allow-override,LD,$(CROSS_COMPILE)ld)

export HOSTCC HOSTLD HOSTAR

ifeq ($(V),1) Q = else Q = @ endif

export Q srctree CC LD

MAKEFLAGS := --no-print-directory build := -f $(srctree)/tools/build/Makefile.build dir=. obj

all: $(OUTPUT)fixdep

Make sure there's anything to clean,

feature contains check for existing OUTPUT

TMP_O := $(if $(OUTPUT),$(OUTPUT)feature/,./)

clean: $(call QUIET_CLEAN, fixdep) $(Q)find $(or $(OUTPUT),.) -name '.o' -delete -o -name '..cmd' -delete -o -name '.*.d' -delete $(Q)rm -f $(OUTPUT)fixdep $(call QUIET_CLEAN, feature-detect) ifneq ($(wildcard $(TMP_O)),) $(Q)$(MAKE) -C feature OUTPUT=$(TMP_O) clean >/dev/null endif

$(OUTPUT)fixdep: $(srctree)/tools/build/fixdep.c $(QUIET_CC)$(HOSTCC) $(KBUILD_HOSTCFLAGS) $(KBUILD_HOSTLDFLAGS) -o $@ $<