xref: /linux/Kbuild (revision 048eb582f3f89737d4a29668de9935e6feea7c36)
186feeaa8SSam Ravnborg#
286feeaa8SSam Ravnborg# Kbuild for top-level directory of the kernel
386feeaa8SSam Ravnborg# This file takes care of the following:
486feeaa8SSam Ravnborg# 1) Generate asm-offsets.h
586feeaa8SSam Ravnborg
686feeaa8SSam Ravnborg#####
786feeaa8SSam Ravnborg# 1) Generate asm-offsets.h
886feeaa8SSam Ravnborg#
986feeaa8SSam Ravnborg
1086feeaa8SSam Ravnborgoffsets-file := include/asm-$(ARCH)/asm-offsets.h
1186feeaa8SSam Ravnborg
1286feeaa8SSam Ravnborgalways  := $(offsets-file)
1386feeaa8SSam Ravnborgtargets := $(offsets-file)
1486feeaa8SSam Ravnborgtargets += arch/$(ARCH)/kernel/asm-offsets.s
1586feeaa8SSam Ravnborg
16*048eb582SSam Ravnborg# Default sed regexp - multiline due to syntax constraints
17*048eb582SSam Ravnborgdefine sed-y
18*048eb582SSam Ravnborg	"/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"
19*048eb582SSam Ravnborgendef
20*048eb582SSam Ravnborg# Override default regexp for specific architectures
21*048eb582SSam Ravnborgsed-$(CONFIG_MIPS) := "/^@@@/s///p"
22*048eb582SSam Ravnborg
2386feeaa8SSam Ravnborgquiet_cmd_offsets = GEN     $@
2486feeaa8SSam Ravnborgdefine cmd_offsets
2586feeaa8SSam Ravnborg	cat $< | \
2686feeaa8SSam Ravnborg	(set -e; \
2786feeaa8SSam Ravnborg	 echo "#ifndef __ASM_OFFSETS_H__"; \
2886feeaa8SSam Ravnborg	 echo "#define __ASM_OFFSETS_H__"; \
2986feeaa8SSam Ravnborg	 echo "/*"; \
3086feeaa8SSam Ravnborg	 echo " * DO NOT MODIFY."; \
3186feeaa8SSam Ravnborg	 echo " *"; \
3286feeaa8SSam Ravnborg	 echo " * This file was generated by $(srctree)/Kbuild"; \
3386feeaa8SSam Ravnborg	 echo " *"; \
3486feeaa8SSam Ravnborg	 echo " */"; \
3586feeaa8SSam Ravnborg	 echo ""; \
36*048eb582SSam Ravnborg	 sed -ne $(sed-y); \
3786feeaa8SSam Ravnborg	 echo ""; \
3886feeaa8SSam Ravnborg	 echo "#endif" ) > $@
3986feeaa8SSam Ravnborgendef
4086feeaa8SSam Ravnborg
4186feeaa8SSam Ravnborg# We use internal kbuild rules to avoid the "is up to date" message from make
4286feeaa8SSam Ravnborgarch/$(ARCH)/kernel/asm-offsets.s: arch/$(ARCH)/kernel/asm-offsets.c FORCE
4386feeaa8SSam Ravnborg	$(Q)mkdir -p $(dir $@)
4486feeaa8SSam Ravnborg	$(call if_changed_dep,cc_s_c)
4586feeaa8SSam Ravnborg
4686feeaa8SSam Ravnborg$(srctree)/$(offsets-file): arch/$(ARCH)/kernel/asm-offsets.s Kbuild
4786feeaa8SSam Ravnborg	$(call cmd,offsets)
4886feeaa8SSam Ravnborg
49