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