Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0
0002 # include/asm-generic contains a lot of files that are used
0003 # verbatim by several architectures.
0004 #
0005 # This Makefile reads the file arch/$(SRCARCH)/include/(uapi/)/asm/Kbuild
0006 # and for each file listed in this file with generic-y creates
0007 # a small wrapper file in arch/$(SRCARCH)/include/generated/(uapi/)/asm.
0008 
0009 PHONY := all
0010 all:
0011 
0012 src := $(subst /generated,,$(obj))
0013 -include $(src)/Kbuild
0014 
0015 # $(generic)/Kbuild lists mandatory-y. Exclude um since it is a special case.
0016 ifneq ($(SRCARCH),um)
0017 include $(srctree)/$(generic)/Kbuild
0018 endif
0019 
0020 include $(srctree)/scripts/Kbuild.include
0021 
0022 redundant := $(filter $(mandatory-y) $(generated-y), $(generic-y))
0023 redundant += $(foreach f, $(generic-y), $(if $(wildcard $(srctree)/$(src)/$(f)),$(f)))
0024 redundant := $(sort $(redundant))
0025 $(if $(redundant),\
0026         $(warning redundant generic-y found in $(src)/Kbuild: $(redundant)))
0027 
0028 # If arch does not implement mandatory headers, fallback to asm-generic ones.
0029 mandatory-y := $(filter-out $(generated-y), $(mandatory-y))
0030 generic-y   += $(foreach f, $(mandatory-y), $(if $(wildcard $(srctree)/$(src)/$(f)),,$(f)))
0031 
0032 generic-y   := $(addprefix $(obj)/, $(generic-y))
0033 generated-y := $(addprefix $(obj)/, $(generated-y))
0034 
0035 # Remove stale wrappers when the corresponding files are removed from generic-y
0036 old-headers := $(wildcard $(obj)/*.h)
0037 unwanted    := $(filter-out $(generic-y) $(generated-y),$(old-headers))
0038 
0039 quiet_cmd_wrap = WRAP    $@
0040       cmd_wrap = echo "\#include <asm-generic/$*.h>" > $@
0041 
0042 quiet_cmd_remove = REMOVE  $(unwanted)
0043       cmd_remove = rm -f $(unwanted)
0044 
0045 all: $(generic-y)
0046         $(if $(unwanted),$(call cmd,remove))
0047         @:
0048 
0049 $(obj)/%.h:
0050         $(call cmd,wrap)
0051 
0052 # Create output directory. Skip it if at least one old header exists
0053 # since we know the output directory already exists.
0054 ifeq ($(old-headers),)
0055 $(shell mkdir -p $(obj))
0056 endif
0057 
0058 .PHONY: $(PHONY)