1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun# include/asm-generic contains a lot of files that are used
3*4882a593Smuzhiyun# verbatim by several architectures.
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun# This Makefile reads the file arch/$(SRCARCH)/include/$(src)/Kbuild
6*4882a593Smuzhiyun# and for each file listed in this file with generic-y creates
7*4882a593Smuzhiyun# a small wrapper file in $(obj) (arch/$(SRCARCH)/include/generated/$(src))
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunPHONY := all
10*4882a593Smuzhiyunall:
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunkbuild-file := $(srctree)/arch/$(SRCARCH)/include/$(src)/Kbuild
13*4882a593Smuzhiyun-include $(kbuild-file)
14*4882a593Smuzhiyun
15*4882a593Smuzhiyuninclude scripts/Kbuild.include
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun# Create output directory if not already present
18*4882a593Smuzhiyun_dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun# Stale wrappers when the corresponding files are removed from generic-y
21*4882a593Smuzhiyun# need removing.
22*4882a593Smuzhiyungenerated-y   := $(generic-y) $(generated-y)
23*4882a593Smuzhiyunall-files     := $(patsubst %, $(obj)/%, $(generated-y))
24*4882a593Smuzhiyunold-headers   := $(wildcard $(obj)/*.h)
25*4882a593Smuzhiyununwanted      := $(filter-out $(all-files),$(old-headers))
26*4882a593Smuzhiyun
27*4882a593Smuzhiyunquiet_cmd_wrap = WRAP    $@
28*4882a593Smuzhiyuncmd_wrap = echo "\#include <asm-generic/$*.h>" >$@
29*4882a593Smuzhiyun
30*4882a593Smuzhiyunquiet_cmd_remove = REMOVE  $(unwanted)
31*4882a593Smuzhiyuncmd_remove = rm -f $(unwanted)
32*4882a593Smuzhiyun
33*4882a593Smuzhiyunall: $(patsubst %, $(obj)/%, $(generic-y)) FORCE
34*4882a593Smuzhiyun	$(if $(unwanted),$(call cmd,remove),)
35*4882a593Smuzhiyun	@:
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun$(obj)/%.h:
38*4882a593Smuzhiyun	$(call cmd,wrap)
39*4882a593Smuzhiyun
40*4882a593SmuzhiyunPHONY += FORCE
41*4882a593Smuzhiyun.PHONY: $(PHONY)
42*4882a593SmuzhiyunFORCE: ;
43