Kbuild 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #
  2. # Kbuild for top-level directory of the kernel
  3. # This file takes care of the following:
  4. # 1) Generate asm-offsets.h
  5. #####
  6. # 1) Generate asm-offsets.h
  7. #
  8. offsets-file := include/asm-$(ARCH)/asm-offsets.h
  9. always := $(offsets-file)
  10. targets := $(offsets-file)
  11. targets += arch/$(ARCH)/kernel/asm-offsets.s
  12. # Default sed regexp - multiline due to syntax constraints
  13. define sed-y
  14. "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"
  15. endef
  16. # Override default regexp for specific architectures
  17. sed-$(CONFIG_MIPS) := "/^@@@/{s/^@@@//; s/ \#.*\$$//; p;}"
  18. quiet_cmd_offsets = GEN $@
  19. define cmd_offsets
  20. (set -e; \
  21. echo "#ifndef __ASM_OFFSETS_H__"; \
  22. echo "#define __ASM_OFFSETS_H__"; \
  23. echo "/*"; \
  24. echo " * DO NOT MODIFY."; \
  25. echo " *"; \
  26. echo " * This file was generated by Kbuild"; \
  27. echo " *"; \
  28. echo " */"; \
  29. echo ""; \
  30. sed -ne $(sed-y) $<; \
  31. echo ""; \
  32. echo "#endif" ) > $@
  33. endef
  34. # We use internal kbuild rules to avoid the "is up to date" message from make
  35. arch/$(ARCH)/kernel/asm-offsets.s: arch/$(ARCH)/kernel/asm-offsets.c FORCE
  36. $(Q)mkdir -p $(dir $@)
  37. $(call if_changed_dep,cc_s_c)
  38. $(obj)/$(offsets-file): arch/$(ARCH)/kernel/asm-offsets.s Kbuild
  39. $(Q)mkdir -p $(dir $@)
  40. $(call cmd,offsets)