xref: /linux/Kbuild (revision 65ff22ee3bd0b0816e5e192b59f24a7538e5d497)
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
16048eb582SSam Ravnborg# Default sed regexp - multiline due to syntax constraints
17048eb582SSam Ravnborgdefine sed-y
18048eb582SSam Ravnborg	"/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"
19048eb582SSam Ravnborgendef
20048eb582SSam Ravnborg# Override default regexp for specific architectures
210947640fSAtsushi Nemotosed-$(CONFIG_MIPS) := "/^@@@/{s/^@@@//; s/ \#.*\$$//; p;}"
22048eb582SSam Ravnborg
2386feeaa8SSam Ravnborgquiet_cmd_offsets = GEN     $@
2486feeaa8SSam Ravnborgdefine cmd_offsets
2586feeaa8SSam Ravnborg	(set -e; \
2686feeaa8SSam Ravnborg	 echo "#ifndef __ASM_OFFSETS_H__"; \
2786feeaa8SSam Ravnborg	 echo "#define __ASM_OFFSETS_H__"; \
2886feeaa8SSam Ravnborg	 echo "/*"; \
2986feeaa8SSam Ravnborg	 echo " * DO NOT MODIFY."; \
3086feeaa8SSam Ravnborg	 echo " *"; \
31*65ff22eeSOlaf Hering	 echo " * This file was generated by Kbuild"; \
3286feeaa8SSam Ravnborg	 echo " *"; \
3386feeaa8SSam Ravnborg	 echo " */"; \
3486feeaa8SSam Ravnborg	 echo ""; \
35ac448afbSBrian Gerst	 sed -ne $(sed-y) $<; \
3686feeaa8SSam Ravnborg	 echo ""; \
3786feeaa8SSam Ravnborg	 echo "#endif" ) > $@
3886feeaa8SSam Ravnborgendef
3986feeaa8SSam Ravnborg
4086feeaa8SSam Ravnborg# We use internal kbuild rules to avoid the "is up to date" message from make
4186feeaa8SSam Ravnborgarch/$(ARCH)/kernel/asm-offsets.s: arch/$(ARCH)/kernel/asm-offsets.c FORCE
4286feeaa8SSam Ravnborg	$(Q)mkdir -p $(dir $@)
4386feeaa8SSam Ravnborg	$(call if_changed_dep,cc_s_c)
4486feeaa8SSam Ravnborg
458d36a623SSam Ravnborg$(obj)/$(offsets-file): arch/$(ARCH)/kernel/asm-offsets.s Kbuild
46ac448afbSBrian Gerst	$(Q)mkdir -p $(dir $@)
4786feeaa8SSam Ravnborg	$(call cmd,offsets)
4886feeaa8SSam Ravnborg
49