xref: /openbmc/linux/scripts/mod/Makefile (revision 97da55fc)
1hostprogs-y	:= modpost mk_elfconfig
2always		:= $(hostprogs-y) empty.o
3
4modpost-objs	:= modpost.o file2alias.o sumversion.o
5
6devicetable-offsets-file := devicetable-offsets.h
7
8define sed-y
9	"/^->/{s:->#\(.*\):/* \1 */:; \
10	s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
11	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
12	s:->::; p;}"
13endef
14
15quiet_cmd_offsets = GEN     $@
16define cmd_offsets
17	(set -e; \
18	 echo "#ifndef __DEVICEVTABLE_OFFSETS_H__"; \
19	 echo "#define __DEVICEVTABLE_OFFSETS_H__"; \
20	 echo "/*"; \
21	 echo " * DO NOT MODIFY."; \
22	 echo " *"; \
23	 echo " * This file was generated by Kbuild"; \
24	 echo " *"; \
25	 echo " */"; \
26	 echo ""; \
27	 sed -ne $(sed-y) $<; \
28	 echo ""; \
29	 echo "#endif" ) > $@
30endef
31
32# We use internal kbuild rules to avoid the "is up to date" message from make
33scripts/mod/devicetable-offsets.s: scripts/mod/devicetable-offsets.c FORCE
34	$(Q)mkdir -p $(dir $@)
35	$(call if_changed_dep,cc_s_c)
36
37$(obj)/$(devicetable-offsets-file): scripts/mod/devicetable-offsets.s
38	$(call cmd,offsets)
39
40# dependencies on generated files need to be listed explicitly
41
42$(obj)/modpost.o $(obj)/file2alias.o $(obj)/sumversion.o: $(obj)/elfconfig.h
43$(obj)/file2alias.o: $(obj)/$(devicetable-offsets-file)
44
45quiet_cmd_elfconfig = MKELF   $@
46      cmd_elfconfig = $(obj)/mk_elfconfig < $< > $@
47
48$(obj)/elfconfig.h: $(obj)/empty.o $(obj)/mk_elfconfig FORCE
49	$(call if_changed,elfconfig)
50
51targets += elfconfig.h
52