Makefile.asm-generic 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. PHONY := all
  9. all:
  10. src := $(subst /generated,,$(obj))
  11. -include $(src)/Kbuild
  12. # $(generic)/Kbuild lists mandatory-y. Exclude um since it is a special case.
  13. ifneq ($(SRCARCH),um)
  14. include $(generic)/Kbuild
  15. endif
  16. include scripts/Kbuild.include
  17. redundant := $(filter $(mandatory-y) $(generated-y), $(generic-y))
  18. redundant += $(foreach f, $(generic-y), $(if $(wildcard $(srctree)/$(src)/$(f)),$(f)))
  19. redundant := $(sort $(redundant))
  20. $(if $(redundant),\
  21. $(warning redundant generic-y found in $(src)/Kbuild: $(redundant)))
  22. # If arch does not implement mandatory headers, fallback to asm-generic ones.
  23. mandatory-y := $(filter-out $(generated-y), $(mandatory-y))
  24. generic-y += $(foreach f, $(mandatory-y), $(if $(wildcard $(srctree)/$(src)/$(f)),,$(f)))
  25. generic-y := $(addprefix $(obj)/, $(generic-y))
  26. generated-y := $(addprefix $(obj)/, $(generated-y))
  27. # Remove stale wrappers when the corresponding files are removed from generic-y
  28. old-headers := $(wildcard $(obj)/*.h)
  29. unwanted := $(filter-out $(generic-y) $(generated-y),$(old-headers))
  30. quiet_cmd_wrap = WRAP $@
  31. cmd_wrap = echo "\#include <asm-generic/$*.h>" > $@
  32. quiet_cmd_remove = REMOVE $(unwanted)
  33. cmd_remove = rm -f $(unwanted)
  34. all: $(generic-y)
  35. $(if $(unwanted),$(call cmd,remove))
  36. @:
  37. $(obj)/%.h:
  38. $(call cmd,wrap)
  39. # Create output directory. Skip it if at least one old header exists
  40. # since we know the output directory already exists.
  41. ifeq ($(old-headers),)
  42. $(shell mkdir -p $(obj))
  43. endif
  44. .PHONY: $(PHONY)