be080859b792cab66122c25c1764c735229be420
1 # SPDX-License-Identifier: GPL-2.0-only
3 # Copyright (C) 2007-2020 OpenWrt.org
5 ifeq ($(MAKECMDGOALS
),prereq
)
9 SUBTARGETS
:=$(DEFAULT_SUBDIR_TARGETS
)
12 subtarget-default
= $(filter-out .
, \
13 $(if
$($(1)/builddirs-
$(2)),$($(1)/builddirs-
$(2)), \
14 $(if
$($(1)/builddirs-default
),$($(1)/builddirs-default
), \
18 $(call warn_eval
,$(1),t
,T
,$(1)/$(2): $($(1)/) $(foreach bd
,$(call subtarget-default
,$(1),$(2)),$(1)/$(bd
)/$(2)))
23 ($(call MESSAGE
, $(2)); $(if
$(BUILD_LOG
), echo
"$(2)" >> $(BUILD_LOG_DIR
)/$(1)/error.txt
;) $(if
$(3),, exit
1;))
26 lastdir
=$(word $(words $(subst /, ,$(1))),$(subst /, ,$(1)))
27 diralias
=$(if
$(findstring $(1),$(call lastdir
,$(1))),,$(call lastdir
,$(1)))
39 $(if
$(call debug
,$(1),v
),,@
)+ \
42 mkdir
-p
$(BUILD_LOG_DIR
)/$(1)$(if
$(4),/$(4));) \
43 $(SCRIPT_DIR
)/time.pl
"time: $(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2)" \
44 $$(SUBMAKE
) $(subdir_make_opts
) $(if
$(3),$(3)-)$(2) \
45 $(if
$(BUILD_LOG
),SILENT
= 2>&1 | tee
$(BUILD_LOG_DIR
)/$(1)$(if
$(4),/$(4))/$(if
$(3),$(3)-)$(2).txt
)
47 ifdef CONFIG_AUTOREMOVE
49 @
-$$(NO_TRACE_MAKE
) $(subdir_make_opts
) check-depends
>/dev
/null
2>/dev
/null
; \
50 $(if
$(BUILD_LOG
),mkdir
-p
$(BUILD_LOG_DIR
)/$(1)$(if
$(4),/$(4));) \
51 $$(NO_TRACE_MAKE
) $(if
$(BUILD_LOG
),-d
) -q
$(subdir_make_opts
) .
$(if
$(3),$(3)-)$(2) \
52 > $(if
$(BUILD_LOG
),$(BUILD_LOG_DIR
)/$(1)$(if
$(4),/$(4))/check-
$(if
$(3),$(3)-)$(2).txt
,/dev
/null
) 2>&1 || \
53 $$(SUBMAKE
) $(subdir_make_opts
) clean-build
>/dev
/null
2>/dev
/null
57 # Parameters: <subdir>
59 $(call warn
,$(1),d
,D
$(1))
60 $(foreach bd
,$($(1)/builddirs
),
61 $(call warn
,$(1),d
,BD
$(1)/$(bd
))
62 $(foreach target
,$(SUBTARGETS
) $($(1)/subtargets
),
63 $(foreach btype
,$(buildtypes-
$(bd
)),
64 $(call warn_eval
,$(1)/$(bd
),t
,T
,$(1)/$(bd
)/$(btype
)/$(target
): $(if
$(NO_DEPS
)$(QUILT
),,$($(1)/$(bd
)/$(btype
)/$(target
)) $(call
$(1)//$(btype
)/$(target
),$(1)/$(bd
)/$(btype
))))
65 $(call log_make
,$(1)/$(bd
),$(target
),$(btype
),$(filter-out __default
,$(variant
))) \
66 ||
$(call ERROR
,$(2), ERROR
: $(1)/$(bd
) [$(btype
)] failed to build.
,$(findstring $(bd
),$($(1)/builddirs-ignore-
$(btype
)-$(target
))))
67 $(if
$(call diralias
,$(bd
)),$(call warn_eval
,$(1)/$(bd
),l
,T
,$(1)/$(call diralias
,$(bd
))/$(btype
)/$(target
): $(1)/$(bd
)/$(btype
)/$(target
)))
69 $(call warn_eval
,$(1)/$(bd
),t
,T
,$(1)/$(bd
)/$(target
): $(if
$(NO_DEPS
)$(QUILT
),,$($(1)/$(bd
)/$(target
)) $(call
$(1)//$(target
),$(1)/$(bd
))))
70 $(foreach variant
,$(if
$(BUILD_VARIANT
),$(BUILD_VARIANT
),$(if
$(strip $($(1)/$(bd
)/variants
)),$($(1)/$(bd
)/variants
),$(if
$($(1)/$(bd
)/default-variant
),$($(1)/$(bd
)/default-variant
),__default
))),
71 $(if
$(BUILD_LOG
),@mkdir
-p
$(BUILD_LOG_DIR
)/$(1)/$(bd
)/$(filter-out __default
,$(variant
)))
72 $(if
$($(1)/autoremove
),$(call rebuild_check
,$(1)/$(bd
),$(target
),,$(filter-out __default
,$(variant
))))
73 $(call log_make
,$(1)/$(bd
),$(target
),,$(filter-out __default
,$(variant
))) \
74 ||
$(call ERROR
,$(1), ERROR
: $(1)/$(bd
) failed to build
$(if
$(filter-out __default
,$(variant
)), (build variant
: $(variant
))).
,$(findstring $(bd
),$($(1)/builddirs-ignore-
$(target
))))
76 $(if
$(PREREQ_ONLY
)$(DUMP_TARGET_DB
),,
78 $(if
$(call diralias
,$(bd
)),$(call warn_eval
,$(1)/$(bd
),l
,T
,$(1)/$(call diralias
,$(bd
))/$(target
): $(1)/$(bd
)/$(target
)))
82 $(foreach target
,$(SUBTARGETS
) $($(1)/subtargets
),$(call subtarget
,$(1),$(target
)))
86 # Parameters: <subdir> <name> <target> <depends> <config options> <stampfile location>
88 $(1)/stamp-
$(3):=$(if
$(6),$(6),$(STAGING_DIR
))/stamp
/.
$(2)_
$(3)$(5)
89 $$($(1)/stamp-
$(3)): $(TMP_DIR
)/.build
$(4)
90 @
+$(SCRIPT_DIR
)/timestamp.pl
-n
$$($(1)/stamp-
$(3)) $(1) $(4) || \
91 $(MAKE
) $(if
$(QUIET
),--no-print-directory
) $$($(1)/flags-
$(3)) $(1)/$(3)
92 @mkdir
-p
$$$$(dirname
$$($(1)/stamp-
$(3)))
93 @touch
$$($(1)/stamp-
$(3))
95 $$(if
$(call debug
,$(1),v
),,.SILENT
: $$($(1)/stamp-
$(3)))
97 .PRECIOUS
: $$($(1)/stamp-
$(3)) # work around a make bug
99 $(1)//clean:=$(1)/stamp-
$(3)/clean
100 $(1)/stamp-
$(3)/clean: FORCE
101 @
rm -f
$$($(1)/stamp-
$(3))