Commit | Line | Data |
---|---|---|
b26e2ae7 | 1 | # Makefile template for configure for the eBPF simulator |
3666a048 | 2 | # Copyright (C) 2020-2021 Free Software Foundation, Inc. |
b26e2ae7 JM |
3 | # |
4 | # This file is part of GDB, the GNU debugger. | |
5 | # | |
6 | # This program is free software; you can redistribute it and/or modify | |
7 | # it under the terms of the GNU General Public License as published by | |
8 | # the Free Software Foundation; either version 3 of the License, or | |
9 | # (at your option) any later version. | |
10 | # | |
11 | # This program is distributed in the hope that it will be useful, | |
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | # GNU General Public License for more details. | |
15 | # | |
16 | # You should have received a copy of the GNU General Public License | |
17 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
18 | ||
19 | ## COMMON_PRE_CONFIG_FRAG | |
20 | ||
21 | CGEN_STD_OBJS = cgen-run.o cgen-scache.o cgen-trace.o cgen-utils.o | |
22 | BPF_GEN_OBJS = arch.o cpu.o \ | |
23 | decode-le.o decode-be.o \ | |
24 | sem-le.o sem-be.o \ | |
25 | mloop-le.o mloop-be.o | |
26 | BPF_HAND_OBJS = bpf.o sim-if.o traps.o bpf-helpers.o | |
27 | ||
28 | SIM_OBJS = \ | |
29 | $(SIM_NEW_COMMON_OBJS) \ | |
30 | $(CGEN_STD_OBJS) \ | |
31 | $(BPF_GEN_OBJS) \ | |
32 | $(BPF_HAND_OBJS) | |
33 | ||
34 | SIM_EXTRA_DEPS = \ | |
35 | $(CGEN_INCLUDE_DEPS) \ | |
36 | arch.h \ | |
37 | bpf-sim.h \ | |
38 | $(srcdir)/../../opcodes/bpf-desc.h \ | |
39 | $(srcdir)/../../opcodes/bpf-opc.h | |
40 | ||
41 | SIM_EXTRA_CLEAN = bpf-clean | |
42 | ||
43 | ## COMMON_POST_CONFIG_FRAG | |
44 | ||
45 | # cgen support, enable with --enable-cgen-maint | |
46 | CGEN_MAINT = ; @true | |
47 | # The following line is commented in or out depending upon --enable-cgen-maint. | |
48 | @CGEN_MAINT@CGEN_MAINT = | |
49 | ||
50 | # BPF headers | |
51 | ||
52 | BPF_INCLUDE_DEPS = \ | |
53 | $(CGEN_MAIN_CPU_DEPS) \ | |
54 | $(SIM_EXTRA_DEPS) \ | |
55 | cpu.h cpuall.h \ | |
56 | decode-le.h decode-be.h \ | |
57 | defs-le.h defs-be.h \ | |
58 | eng-le.h eng-be.h \ | |
59 | config.h | |
60 | ||
61 | # Dependencies for binaries from CGEN generated source | |
62 | ||
63 | arch.o: arch.c $(SIM_MAIN_DEPS) | |
64 | cpu.o: cpu.c $(BPF_INCLUDE_DEPS) | |
65 | decode-le.o: decode-le.c $(BPF_INCLUDE_DEPS) | |
66 | decode-be.o: decode-be.c $(BPF_INCLUDE_DEPS) | |
67 | ||
68 | sim-if.o: sim-if.c $(SIM_MAIN_DEPS) $(srcdir)/../common/sim-core.h eng.h | |
69 | $(COMPILE) $< | |
70 | $(POSTCOMPILE) | |
71 | ||
72 | traps.o: traps.c $(SIM_MAIN_DEPS) eng.h | |
73 | $(COMPILE) $< | |
74 | $(POSTCOMPILE) | |
75 | ||
76 | mloop-le.o: mloop-le.c $(BPF_INCLUDE_DEPS) | |
77 | $(CC) -c mloop-le.c $(ALL_CFLAGS) -DWANT_ISA_EBPFLE | |
78 | mloop-be.o: mloop-be.c $(BPF_INCLUDE_DEPS) | |
79 | $(CC) -c mloop-be.c $(ALL_CFLAGS) -DWANT_ISA_EBPFBE | |
80 | ||
81 | decode-le.o: decode-le.c $(BPF_INCLUDE_DEPS) | |
82 | $(CC) -c $(srcdir)/decode-le.c $(ALL_CFLAGS) -DWANT_ISA_EBPFLE | |
83 | decode-be.o: decode-be.c $(BPF_INCLUDE_DEPS) | |
84 | $(CC) -c $(srcdir)/decode-be.c $(ALL_CFLAGS) -DWANT_ISA_EBPFBE | |
85 | ||
86 | sem-le.o: sem-le.c $(BPF_INCLUDE_DEPS) | |
87 | $(CC) -c $(srcdir)/sem-le.c $(ALL_CFLAGS) -DWANT_ISA_EBPFLE | |
88 | sem-be.o: sem-be.c $(BPF_INCLUDE_DEPS) | |
89 | $(CC) -c $(srcdir)/sem-be.c $(ALL_CFLAGS) -DWANT_ISA_EBPFBE | |
90 | ||
91 | arch = bpf | |
92 | ||
93 | CGEN_COMMON_DEPS = \ | |
94 | $(CGEN_READ_SCM) \ | |
95 | $(srcdir)/../../cpu/bpf.cpu \ | |
96 | $(srcdir)/../../cpu/bpf.opc \ | |
97 | Makefile | |
98 | ||
99 | stamp-arch: $(CGEN_COMMON_DEPS) $(CGEN_ARCH_SCM) | |
100 | $(MAKE) cgen-arch $(CGEN_FLAGS_TO_PASS) \ | |
101 | mach=bpf cpu=bpfbf \ | |
102 | archfile=$(srcdir)/../../cpu/bpf.cpu \ | |
103 | FLAGS="with-scache" | |
104 | touch $@ | |
105 | $(srcdir)/arch.h $(srcdir)/arch.c $(srcdir)/cpuall.h: $(CGEN_MAINT) stamp-arch | |
106 | @true | |
107 | ||
108 | stamp-cpu: $(CGEN_COMMON_DEPS) $(CGEN_CPU_SCM) | |
109 | $(MAKE) cgen-cpu $(CGEN_FLAGS_TO_PASS) \ | |
110 | isa=ebpfle,ebpfbe cpu=bpfbf mach=bpf \ | |
111 | archfile=$(srcdir)/../../cpu/bpf.cpu \ | |
112 | FLAGS="with-multiple-isa with-scache" | |
113 | rm -f $(srcdir)/model.c | |
114 | touch $@ | |
115 | $(srcdir)/cpu.h $(srcdir)/cpu.c $(srcdir)/model.c: $(CGEN_MAINT) stamp-cpu | |
116 | @true | |
117 | ||
118 | # We need to generate a group of files per ISA. | |
119 | # For eBPF little-endian: | |
120 | # defs-le.h | |
121 | # sem-le.c, decode-le.c, decode-le.h | |
122 | # $(objdir)/mloop-le.c $(objdir)/eng-le.h | |
123 | # For eBPF big-endian: | |
124 | # defs-be.h | |
125 | # sem-be.c, decode-be.c, decode-be.h | |
126 | # $(objdir)/mloop-be.c $(objdir)/eng-le.h | |
127 | # | |
128 | # The rules below take care of that. | |
129 | ||
130 | stamp-defs-le: $(CGEN_COMMON_DEPS) $(CGEN_CPU_SCM) | |
131 | $(MAKE) cgen-defs $(CGEN_FLAGS_TO_PASS) \ | |
132 | isa=ebpfle cpu=bpfbf mach=bpf \ | |
133 | archfile=$(srcdir)/../../cpu/bpf.cpu \ | |
134 | FLAGS="with-scache" \ | |
135 | SUFFIX="-le" | |
136 | touch $@ | |
137 | $(srcdir)/defs-le.h: $(CGEN_MAINT) stamp-defs-le | |
138 | @true | |
139 | ||
140 | ||
141 | stamp-defs-be: $(CGEN_COMMON_DEPS) $(CGEN_CPU_SCM) | |
142 | $(MAKE) cgen-defs $(CGEN_FLAGS_TO_PASS) \ | |
143 | isa=ebpfbe cpu=bpfbf mach=bpf \ | |
144 | archfile=$(srcdir)/../../cpu/bpf.cpu \ | |
145 | FLAGS="with-scache" \ | |
146 | SUFFIX="-be" | |
147 | touch $@ | |
148 | $(srcdir)/defs-be.h: $(CGEN_MAINT) stamp-defs-be | |
149 | @true | |
150 | ||
151 | stamp-decode-le: $(CGEN_COMMON_DEPS) $(CGEN_CPU_SCM) $(GEN_DECODE_SCM) | |
152 | $(MAKE) cgen-decode $(CGEN_FLAGS_TO_PASS) \ | |
153 | isa=ebpfle cpu=bpfbf mach=bpf \ | |
154 | archfile=$(srcdir)/../../cpu/bpf.cpu \ | |
155 | FLAGS="with-scache" \ | |
156 | SUFFIX="-le" \ | |
157 | EXTRAFILES="$(CGEN_CPU_SEM)" | |
158 | touch $@ | |
159 | $(srcdir)/sem-le.c $(srcdir)/decode-le.c $(srcdir)/decode-le.h: \ | |
160 | $(CGEN_MAINT) stamp-decode-le | |
161 | @true | |
162 | ||
163 | ||
164 | stamp-decode-be: $(CGEN_COMMON_DEPS) $(CGEN_CPU_SCM) $(GEN_DECODE_SCM) | |
165 | $(MAKE) cgen-decode $(CGEN_FLAGS_TO_PASS) \ | |
166 | isa=ebpfbe cpu=bpfbf mach=bpf \ | |
167 | archfile=$(srcdir)/../../cpu/bpf.cpu \ | |
168 | FLAGS="with-scache" \ | |
169 | SUFFIX="-be" \ | |
170 | EXTRAFILES="$(CGEN_CPU_SEM)" | |
171 | touch $@ | |
172 | $(srcdir)/sem-be.c $(srcdir)/decode-be.c $(srcdir)/decode-be.h: \ | |
173 | $(CGEN_MAINT) stamp-decode-be | |
174 | @true | |
175 | ||
176 | # Note the following files are generated in objdir, not srcdir. | |
177 | ||
178 | stamp-mloop: stamp-mloop-le stamp-mloop-be | |
179 | ||
180 | stamp-mloop-le: $(srcdir)/../common/genmloop.sh mloop.in Makefile | |
181 | $(SHELL) $(srccom)/genmloop.sh -shell $(SHELL) \ | |
182 | -mono -scache -prefix bpfbf_ebpfle -cpu bpfbf \ | |
183 | -infile $(srcdir)/mloop.in -outfile-suffix -le | |
184 | $(SHELL) $(srcroot)/move-if-change eng-le.hin eng-le.h | |
185 | $(SHELL) $(srcroot)/move-if-change mloop-le.cin mloop-le.c | |
186 | touch $@ | |
187 | mloop-le.c eng-le.h: stamp-mloop-le | |
188 | @true | |
189 | ||
190 | stamp-mloop-be: $(srcdir)/../common/genmloop.sh mloop.in Makefile | |
191 | $(SHELL) $(srccom)/genmloop.sh -shell $(SHELL) \ | |
192 | -mono -scache -prefix bpfbf_ebpfbe -cpu bpfbf \ | |
193 | -infile $(srcdir)/mloop.in -outfile-suffix -be | |
194 | $(SHELL) $(srcroot)/move-if-change eng-be.hin eng-be.h | |
195 | $(SHELL) $(srcroot)/move-if-change mloop-be.cin mloop-be.c | |
196 | touch $@ | |
197 | mloop-be.c eng-be.h: stamp-mloop-be | |
198 | @true | |
199 | ||
200 | .PHONY = bpf-clean | |
201 | ||
202 | bpf-clean: | |
203 | rm -f stamp-arch stamp-cpu stamp-decode stamp-defs stamp-mloop |