xref: /linux/tools/build/Makefile (revision 63e6995005be8ceb8a1d56a18df1a1a40c28356d)
1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
29f7ef985SJiri Olsaifeq ($(srctree),)
3e19b7ceeSUwe Kleine-Königsrctree := $(patsubst %/,%,$(dir $(CURDIR)))
49f7ef985SJiri Olsasrctree := $(patsubst %/,%,$(dir $(srctree)))
59f7ef985SJiri Olsaendif
69f7ef985SJiri Olsa
79f7ef985SJiri Olsainclude $(srctree)/tools//scripts/Makefile.include
89f7ef985SJiri Olsa
99f7ef985SJiri Olsadefine allow-override
109f7ef985SJiri Olsa  $(if $(or $(findstring environment,$(origin $(1))),\
119f7ef985SJiri Olsa            $(findstring command line,$(origin $(1)))),,\
129f7ef985SJiri Olsa    $(eval $(1) = $(2)))
139f7ef985SJiri Olsaendef
149f7ef985SJiri Olsa
159f7ef985SJiri Olsa$(call allow-override,CC,$(CROSS_COMPILE)gcc)
169f7ef985SJiri Olsa$(call allow-override,LD,$(CROSS_COMPILE)ld)
179f7ef985SJiri Olsa
180c3b7e42SJiri Olsaexport HOSTCC HOSTLD HOSTAR
190c3b7e42SJiri Olsa
20293f324cSCharlie Jenkinsexport srctree CC LD
219f7ef985SJiri Olsa
229f7ef985SJiri OlsaMAKEFLAGS := --no-print-directory
239f7ef985SJiri Olsabuild     := -f $(srctree)/tools/build/Makefile.build dir=. obj
249f7ef985SJiri Olsa
255e50426dSJiri Olsaall: $(OUTPUT)fixdep
269f7ef985SJiri Olsa
27762323ebSJiri Olsa# Make sure there's anything to clean,
28762323ebSJiri Olsa# feature contains check for existing OUTPUT
298af52e69SJames ClarkTMP_O := $(if $(OUTPUT),$(OUTPUT)feature/,./)
30762323ebSJiri Olsa
319f7ef985SJiri Olsaclean:
329f7ef985SJiri Olsa	$(call QUIET_CLEAN, fixdep)
335c816641SMasahiro Yamada	$(Q)find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
3485e0d509SJiri Olsa	$(Q)rm -f $(OUTPUT)fixdep
35661b37cdSJesper Dangaard Brouer	$(call QUIET_CLEAN, feature-detect)
36762323ebSJiri Olsaifneq ($(wildcard $(TMP_O)),)
37762323ebSJiri Olsa	$(Q)$(MAKE) -C feature OUTPUT=$(TMP_O) clean >/dev/null
38762323ebSJiri Olsaendif
399f7ef985SJiri Olsa
40*a808a2b3SJosh PoimboeufFIXDEP		:= $(OUTPUT)fixdep
41*a808a2b3SJosh PoimboeufFIXDEP_IN	:= $(OUTPUT)fixdep-in.o
42*a808a2b3SJosh Poimboeuf
43*a808a2b3SJosh Poimboeuf# To track fixdep's dependencies properly, fixdep needs to run on itself.
44*a808a2b3SJosh Poimboeuf# Build it twice the first time.
45*a808a2b3SJosh Poimboeuf$(FIXDEP_IN): FORCE
46*a808a2b3SJosh Poimboeuf	$(Q)if [ ! -f $(FIXDEP) ]; then						\
47*a808a2b3SJosh Poimboeuf		$(MAKE) $(build)=fixdep HOSTCFLAGS="$(KBUILD_HOSTCFLAGS)";	\
48*a808a2b3SJosh Poimboeuf		rm -f $(FIXDEP).o;						\
49*a808a2b3SJosh Poimboeuf	fi
50*a808a2b3SJosh Poimboeuf	$(Q)$(MAKE) $(build)=fixdep HOSTCFLAGS="$(KBUILD_HOSTCFLAGS)"
51*a808a2b3SJosh Poimboeuf
52*a808a2b3SJosh Poimboeuf
53*a808a2b3SJosh Poimboeuf$(FIXDEP): $(FIXDEP_IN)
54*a808a2b3SJosh Poimboeuf	$(QUIET_LINK)$(HOSTCC) $(FIXDEP_IN) $(KBUILD_HOSTLDFLAGS) -o $@
55*a808a2b3SJosh Poimboeuf
56*a808a2b3SJosh PoimboeufFORCE:
57*a808a2b3SJosh Poimboeuf
58*a808a2b3SJosh Poimboeuf.PHONY: FORCE
59