linux/scripts/Makefile.asm-generic
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0
   2# include/asm-generic contains a lot of files that are used
   3# verbatim by several architectures.
   4#
   5# This Makefile reads the file arch/$(SRCARCH)/include/(uapi/)/asm/Kbuild
   6# and for each file listed in this file with generic-y creates
   7# a small wrapper file in arch/$(SRCARCH)/include/generated/(uapi/)/asm.
   8
   9PHONY := all
  10all:
  11
  12src := $(subst /generated,,$(obj))
  13-include $(src)/Kbuild
  14
  15# $(generic)/Kbuild lists mandatory-y. Exclude um since it is a special case.
  16ifneq ($(SRCARCH),um)
  17include $(srctree)/$(generic)/Kbuild
  18endif
  19
  20include $(srctree)/scripts/Kbuild.include
  21
  22redundant := $(filter $(mandatory-y) $(generated-y), $(generic-y))
  23redundant += $(foreach f, $(generic-y), $(if $(wildcard $(srctree)/$(src)/$(f)),$(f)))
  24redundant := $(sort $(redundant))
  25$(if $(redundant),\
  26        $(warning redundant generic-y found in $(src)/Kbuild: $(redundant)))
  27
  28# If arch does not implement mandatory headers, fallback to asm-generic ones.
  29mandatory-y := $(filter-out $(generated-y), $(mandatory-y))
  30generic-y   += $(foreach f, $(mandatory-y), $(if $(wildcard $(srctree)/$(src)/$(f)),,$(f)))
  31
  32generic-y   := $(addprefix $(obj)/, $(generic-y))
  33generated-y := $(addprefix $(obj)/, $(generated-y))
  34
  35# Remove stale wrappers when the corresponding files are removed from generic-y
  36old-headers := $(wildcard $(obj)/*.h)
  37unwanted    := $(filter-out $(generic-y) $(generated-y),$(old-headers))
  38
  39quiet_cmd_wrap = WRAP    $@
  40      cmd_wrap = echo "\#include <asm-generic/$*.h>" > $@
  41
  42quiet_cmd_remove = REMOVE  $(unwanted)
  43      cmd_remove = rm -f $(unwanted)
  44
  45all: $(generic-y)
  46        $(if $(unwanted),$(call cmd,remove))
  47        @:
  48
  49$(obj)/%.h:
  50        $(call cmd,wrap)
  51
  52# Create output directory. Skip it if at least one old header exists
  53# since we know the output directory already exists.
  54ifeq ($(old-headers),)
  55$(shell mkdir -p $(obj))
  56endif
  57
  58.PHONY: $(PHONY)
  59