File: Makefile.syscalls

package info (click to toggle)
criu 4.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 11,500 kB
  • sloc: ansic: 139,280; python: 7,484; sh: 3,824; java: 2,799; makefile: 2,659; asm: 1,137; perl: 206; xml: 117; exp: 45
file content (117 lines) | stat: -rw-r--r-- 4,832 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
std-lib-y		+= ./$(PLUGIN_ARCH_DIR)/std/syscalls-64.o
sys-proto-types		:= $(obj)/include/uapi/std/syscall-types.h
sys-proto-generic	:= $(obj)/include/uapi/std/syscall.h
sys-codes-generic	:= $(obj)/include/uapi/std/syscall-codes.h
sys-codes		 = $(obj)/include/uapi/std/syscall-codes-$(1).h
sys-proto		 = $(obj)/include/uapi/std/syscall-$(1).h
sys-def			 = $(PLUGIN_ARCH_DIR)/std/syscalls/syscall_$(1).tbl
sys-asm			 = $(PLUGIN_ARCH_DIR)/std/syscalls-$(1).S
sys-asm-common-name	 = std/syscalls/syscall-common-mips-$(1).S
sys-asm-common		 = $(PLUGIN_ARCH_DIR)/$(sys-asm-common-name)
sys-asm-types		:= $(obj)/include/uapi/std/asm/syscall-types.h
sys-exec-tbl		 = $(PLUGIN_ARCH_DIR)/std/sys-exec-tbl-$(1).c

sys-bits		:= 64

AV			:= $$$$

define gen-rule-sys-codes
$(sys-codes): $(sys-def) $(sys-proto-types)
	$(call msg-gen, $$@)
	$(Q) echo "/* Autogenerated, don't edit */"					>  $$@
	$(Q) echo "#ifndef ASM_SYSCALL_CODES_H_$(1)__"					>> $$@
	$(Q) echo "#define ASM_SYSCALL_CODES_H_$(1)__"					>> $$@
	$(Q) cat $$< | awk '/^__NR/{SYSN=$(AV)1;					\
		sub("^__NR", "SYS", SYSN);						\
		print "\n#ifndef ", $(AV)1;						\
		print "#define", $(AV)1, $(AV)2;					\
		print "#endif";								\
		print "\n#ifndef ", SYSN;						\
		print "#define ", SYSN, $(AV)1;						\
		print "#endif";}'							>> $$@
	$(Q) echo "#endif /* ASM_SYSCALL_CODES_H_$(1)__ */"				>> $$@
endef

define gen-rule-sys-proto
$(sys-proto): $(sys-def) $(sys-proto-types)
	$(call msg-gen, $$@)
	$(Q) echo "/* Autogenerated, don't edit */"					>  $$@
	$(Q) echo "#ifndef ASM_SYSCALL_PROTO_H_$(1)__"					>> $$@
	$(Q) echo "#define ASM_SYSCALL_PROTO_H_$(1)__"					>> $$@
	$(Q) echo '#include <compel/plugins/std/syscall-codes-$(1).h>'			>> $$@
	$(Q) echo '#include <compel/plugins/std/syscall-types.h>'			>> $$@
ifeq ($(1),32)
	$(Q) echo '#include "asm/syscall32.h"'						>> $$@
endif
	$(Q) cat $$< | awk '/^__NR/{print "extern long", $(AV)3,			\
			substr($(AV)0, index($(AV)0,$(AV)4)), ";"}'			>> $$@
	$(Q) echo "#endif /* ASM_SYSCALL_PROTO_H_$(1)__ */"				>> $$@
endef

define gen-rule-sys-asm
$(sys-asm): $(sys-def) $(sys-asm-common) $(sys-codes) $(sys-proto) $(sys-proto-types)
	$(call msg-gen, $$@)
	$(Q) echo "/* Autogenerated, don't edit */"					>  $$@
	$(Q) echo '#include <compel/plugins/std/syscall-codes-$(1).h>'			>> $$@
	$(Q) echo '#include "$(sys-asm-common-name)"'					>> $$@
	$(Q) cat $$< | awk '/^__NR/{print "SYSCALL(", $(AV)3, ",", $(AV)2, ")"}'	>> $$@
endef

define gen-rule-sys-exec-tbl
$(sys-exec-tbl): $(sys-def) $(sys-codes) $(sys-proto) $(sys-proto-generic) $(sys-proto-types)
	$(call msg-gen, $$@)
	$(Q) echo "/* Autogenerated, don't edit */"					>  $$@
	$(Q) cat $$< | awk '/^__NR/{print						\
		"SYSCALL(", substr($(AV)3, 5), ",", $(AV)2, ")"}'			>> $$@
endef

$(sys-codes-generic): $(sys-proto-types)
	$(call msg-gen, $@)
	$(Q) echo "/* Autogenerated, don't edit */"			>  $@
	$(Q) echo "#ifndef __ASM_CR_SYSCALL_CODES_H__"			>> $@
	$(Q) echo "#define __ASM_CR_SYSCALL_CODES_H__"			>> $@
	$(Q) echo '#include <compel/plugins/std/syscall-codes-64.h>'	>> $@
	$(Q) cat $< | awk '/^__NR/{NR32=$$1;				\
		sub("^__NR", "__NR32", NR32);				\
		print "\n#ifndef ", NR32;				\
		print "#define ", NR32, $$2;				\
		print "#endif";}'					>> $@
	$(Q) echo "#endif /* __ASM_CR_SYSCALL_CODES_H__ */"		>> $@
mrproper-y += $(sys-codes-generic)

$(sys-proto-generic): $(strip $(call map,sys-proto,$(sys-bits))) $(sys-proto-types)
	$(call msg-gen, $@)
	$(Q) echo "/* Autogenerated, don't edit */"			>  $@
	$(Q) echo "#ifndef __ASM_CR_SYSCALL_PROTO_H__"			>> $@
	$(Q) echo "#define __ASM_CR_SYSCALL_PROTO_H__"			>> $@
	$(Q) echo ""							>> $@
	$(Q) echo '#include <compel/plugins/std/syscall-64.h>'		>> $@
	$(Q) echo ""							>> $@
	$(Q) echo "#endif /* __ASM_CR_SYSCALL_PROTO_H__ */"		>> $@
mrproper-y += $(sys-proto-generic)

define gen-rule-sys-exec-tbl
$(sys-exec-tbl): $(sys-def) $(sys-codes) $(sys-proto) $(sys-proto-generic)
	$(call msg-gen, $$@)
	$(Q) echo "/* Autogenerated, don't edit */"			>  $$@
	$(Q) cat $$< | awk '/^__NR/{print				\
		"SYSCALL(", substr($(AV)3, 5), ",", $(AV)2, ")"}'	>> $$@
endef

$(eval $(call map,gen-rule-sys-codes,$(sys-bits)))
$(eval $(call map,gen-rule-sys-proto,$(sys-bits)))
$(eval $(call map,gen-rule-sys-asm,$(sys-bits)))
$(eval $(call map,gen-rule-sys-exec-tbl,$(sys-bits)))

$(sys-asm-types): $(PLUGIN_ARCH_DIR)/include/asm/syscall-types.h
	$(call msg-gen, $@)
	$(Q) ln -s ../../../../../../$(PLUGIN_ARCH_DIR)/include/asm/syscall-types.h $(sys-asm-types)

std-headers-deps	+= $(call sys-codes,$(sys-bits))
std-headers-deps	+= $(call sys-proto,$(sys-bits))
std-headers-deps	+= $(call sys-asm,$(sys-bits))
std-headers-deps	+= $(call sys-exec-tbl,$(sys-bits))
std-headers-deps	+= $(sys-codes-generic)
std-headers-deps	+= $(sys-proto-generic)
std-headers-deps	+= $(sys-asm-types)
mrproper-y		+= $(std-headers-deps)