|  | # SPDX-License-Identifier: GPL-2.0 | 
|  | # include/asm-generic contains a lot of files that are used | 
|  | # verbatim by several architectures. | 
|  | # | 
|  | # This Makefile reads the file arch/$(SRCARCH)/include/(uapi/)/asm/Kbuild | 
|  | # and for each file listed in this file with generic-y creates | 
|  | # a small wrapper file in arch/$(SRCARCH)/include/generated/(uapi/)/asm. | 
|  |  | 
|  | PHONY := all | 
|  | all: | 
|  |  | 
|  | src := $(srctree)/$(subst /generated,,$(obj)) | 
|  |  | 
|  | include $(srctree)/scripts/Kbuild.include | 
|  | -include $(kbuild-file) | 
|  |  | 
|  | # $(generic)/Kbuild lists mandatory-y. Exclude um since it is a special case. | 
|  | ifneq ($(SRCARCH),um) | 
|  | include $(srctree)/$(generic)/Kbuild | 
|  | endif | 
|  |  | 
|  | redundant := $(filter $(mandatory-y) $(generated-y), $(generic-y)) | 
|  | redundant += $(foreach f, $(generic-y), $(if $(wildcard $(src)/$(f)),$(f))) | 
|  | redundant := $(sort $(redundant)) | 
|  | $(if $(redundant),\ | 
|  | $(warning redundant generic-y found in $(src)/Kbuild: $(redundant))) | 
|  |  | 
|  | # If arch does not implement mandatory headers, fallback to asm-generic ones. | 
|  | mandatory-y := $(filter-out $(generated-y), $(mandatory-y)) | 
|  | generic-y   += $(foreach f, $(mandatory-y), $(if $(wildcard $(src)/$(f)),,$(f))) | 
|  |  | 
|  | generic-y   := $(addprefix $(obj)/, $(generic-y)) | 
|  | generated-y := $(addprefix $(obj)/, $(generated-y)) | 
|  |  | 
|  | # Remove stale wrappers when the corresponding files are removed from generic-y | 
|  | old-headers := $(wildcard $(obj)/*.h) | 
|  | unwanted    := $(filter-out $(generic-y) $(generated-y),$(old-headers)) | 
|  |  | 
|  | quiet_cmd_wrap = WRAP    $@ | 
|  | cmd_wrap = echo "\#include <asm-generic/$*.h>" > $@ | 
|  |  | 
|  | quiet_cmd_remove = REMOVE  $(unwanted) | 
|  | cmd_remove = rm -f $(unwanted) | 
|  |  | 
|  | all: $(generic-y) | 
|  | $(if $(unwanted),$(call cmd,remove)) | 
|  | @: | 
|  |  | 
|  | $(obj)/%.h: | 
|  | $(call cmd,wrap) | 
|  |  | 
|  | # Create output directory. Skip it if at least one old header exists | 
|  | # since we know the output directory already exists. | 
|  | ifeq ($(old-headers),) | 
|  | $(shell mkdir -p $(obj)) | 
|  | endif | 
|  |  | 
|  | .PHONY: $(PHONY) |