1 # SPDX-License-Identifier: GPL-2.0-only 2 3 # If CONFIG_OF_ALL_DTBS is enabled, all DT blo 4 dtb-$(CONFIG_OF_ALL_DTBS) += $(dtb-) 5 6 # Composite DTB (i.e. DTB constructed by overl 7 multi-dtb-y := $(call multi-search, $(dtb-y), 8 # Primitive DTB compiled from *.dts 9 real-dtb-y := $(call real-search, $(dtb-y), .d 10 # Base DTB that overlay is applied onto 11 base-dtb-y := $(filter %.dtb, $(call real-sear 12 13 dtb-y := $(addprefix $(obj)/, $(dtb- 14 multi-dtb-y := $(addprefix $(obj)/, $(mult 15 real-dtb-y := $(addprefix $(obj)/, $(real 16 17 always-y += $(dtb-y) 18 targets += $(real-dtb-y) 19 20 # dtbs-list 21 # -------------------------------------------- 22 23 ifdef need-dtbslist 24 subdir-dtbslist := $(addsuffix /dtbs-list, $(s 25 dtb-y += $(subdir-dtbslist) 26 always-y += $(obj)/dtbs-list 27 endif 28 29 $(subdir-dtbslist): $(obj)/%/dtbs-list: $(obj) 30 31 $(obj)/dtbs-list: $(dtb-y) FORCE 32 $(call if_changed,gen_order) 33 34 # Assembly file to wrap dtb(o) 35 # -------------------------------------------- 36 37 builtin-dtb-section = $(if $(filter arch/$(SRC 38 39 # Generate an assembly file to wrap the output 40 quiet_cmd_wrap_S_dtb = WRAP $@ 41 cmd_wrap_S_dtb = { 42 symbase=__$(patsubst .%,%,$(su 43 echo '\#include <asm-generic/v 44 echo '.section $(builtin-dtb-s 45 echo '.balign STRUCT_ALIGNMENT 46 echo ".global $${symbase}_begi 47 echo "$${symbase}_begin:"; 48 echo '.incbin "$<" '; 49 echo ".global $${symbase}_end" 50 echo "$${symbase}_end:"; 51 echo '.balign STRUCT_ALIGNMENT 52 } > $@ 53 54 $(obj)/%.dtb.S: $(obj)/%.dtb FORCE 55 $(call if_changed,wrap_S_dtb) 56 57 $(obj)/%.dtbo.S: $(obj)/%.dtbo FORCE 58 $(call if_changed,wrap_S_dtb) 59 60 # Schema check 61 # -------------------------------------------- 62 63 ifneq ($(CHECK_DTBS),) 64 DT_CHECKER ?= dt-validate 65 DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l 66 DT_BINDING_DIR := Documentation/devicetree/bin 67 DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/ 68 dtb-check-enabled = $(if $(filter %.dtb, $@),y 69 endif 70 71 quiet_dtb_check_tag = $(if $(dtb-check-enabled 72 cmd_dtb_check = $(if $(dtb-check-enabled),; $( 73 74 # Overlay 75 # -------------------------------------------- 76 77 # NOTE: 78 # Do not replace $(filter %.dtb %.dtbo, $^) wi 79 # DTB is turned into a multi-blob DTB, $^ will 80 # recorded in the .*.cmd file. 81 quiet_cmd_fdtoverlay = OVL $(quiet_dtb_check_t 82 cmd_fdtoverlay = $(objtree)/scripts/dtc/ 83 84 $(multi-dtb-y): $(DT_TMP_SCHEMA) FORCE 85 $(call if_changed,fdtoverlay) 86 $(call multi_depend, $(multi-dtb-y), .dtb, -dt 87 88 # DTC 89 # -------------------------------------------- 90 91 DTC ?= $(objtree)/scripts/dtc/dtc 92 DTC_FLAGS += -Wno-unique_unit_address 93 94 # Disable noisy checks by default 95 ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),) 96 DTC_FLAGS += -Wno-unit_address_vs_reg \ 97 -Wno-avoid_unnecessary_addr_size 98 -Wno-alias_paths \ 99 -Wno-graph_child_address \ 100 -Wno-simple_bus_reg 101 else 102 DTC_FLAGS += -Wunique_unit_address_if_enabled 103 endif 104 105 ifneq ($(findstring 2,$(KBUILD_EXTRA_WARN)),) 106 DTC_FLAGS += -Wnode_name_chars_strict \ 107 -Wproperty_name_chars_strict \ 108 -Wunique_unit_address 109 endif 110 111 DTC_FLAGS += $(DTC_FLAGS_$(target-stem)) 112 113 # Set -@ if the target is a base DTB that over 114 DTC_FLAGS += $(if $(filter $(patsubst $(obj)/% 115 116 DTC_INCLUDE := $(srctree)/scripts/dtc/include- 117 118 dtc_cpp_flags = -Wp,-MMD,$(depfile).pre.tmp -n 119 120 dtc-tmp = $(subst $(comma),_,$(dot-target).dts 121 122 quiet_cmd_dtc = DTC $(quiet_dtb_check_tag) $@ 123 cmd_dtc = \ 124 $(HOSTCC) -E $(dtc_cpp_flags) -x assem 125 $(DTC) -o $@ -b 0 $(addprefix -i,$(dir 126 $(DTC_FLAGS) -d $(depfile).dtc. 127 cat $(depfile).pre.tmp $(depfile).dtc. 128 $(cmd_dtb_check) 129 130 $(obj)/%.dtb: $(obj)/%.dts $(DTC) $(DT_TMP_SCH 131 $(call if_changed_dep,dtc) 132 133 $(obj)/%.dtbo: $(src)/%.dtso $(DTC) FORCE 134 $(call if_changed_dep,dtc) 135 136 # targets 137 # -------------------------------------------- 138 139 targets += $(always-y) 140 141 # %.dtb.o <- %.dtb.S <- %.dtb <- %.dts 142 # %.dtbo.o <- %.dtbo.S <- %.dtbo <- %.dtso 143 targets += $(call intermediate_targets, .dtb.o 144 $(call intermediate_targets, .dtbo.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.