1#    Makefile template for Configure for the MIPS simulator.
2#    Written by Cygnus Support.
3
4## COMMON_PRE_CONFIG_FRAG
5
6# Object files created by various simulator generators.
7
8
9SIM_IGEN_OBJ = \
10	support.o \
11	itable.o \
12	semantics.o \
13	idecode.o \
14	icache.o \
15	engine.o \
16	irun.o \
17
18
19SIM_M16_OBJ = \
20	m16_support.o \
21	m16_semantics.o \
22	m16_idecode.o \
23	m16_icache.o \
24	\
25	m32_support.o \
26	m32_semantics.o \
27	m32_idecode.o \
28	m32_icache.o \
29	\
30	itable.o \
31	m16run.o \
32
33SIM_MICROMIPS_OBJ = \
34	micromips16_support.o \
35	micromips16_semantics.o \
36	micromips16_idecode.o \
37	micromips16_icache.o \
38	\
39	micromips32_support.o \
40	micromips32_semantics.o \
41	micromips32_idecode.o \
42	micromips32_icache.o \
43	\
44	micromips_m32_support.o \
45	micromips_m32_semantics.o \
46	micromips_m32_idecode.o \
47	micromips_m32_icache.o \
48	\
49	itable.o \
50	micromipsrun.o \
51
52
53SIM_MULTI_OBJ = @sim_multi_obj@ \
54		itable.o \
55		multi-run.o \
56
57SIM_OBJS = \
58	interp.o \
59	$(SIM_@sim_gen@_OBJ) \
60	$(SIM_NEW_COMMON_OBJS) \
61	cp1.o \
62	mdmx.o \
63	dsp.o \
64	sim-main.o \
65	sim-resume.o \
66
67SIM_EXTRA_HW_DEVICES = tx3904cpu tx3904irc tx3904tmr tx3904sio
68
69# List of flags to always pass to $(CC).
70SIM_SUBTARGET=@SIM_SUBTARGET@
71SIM_EXTRA_CFLAGS = $(SIM_SUBTARGET)
72
73SIM_EXTRA_CLEAN = clean-extra
74SIM_EXTRA_DISTCLEAN = distclean-extra
75
76all: $(SIM_@sim_gen@_ALL)
77
78SIM_EXTRA_DEPS = itable.h
79
80## COMMON_POST_CONFIG_FRAG
81
82IGEN_TRACE= # -G omit-line-numbers # -G trace-rule-selection -G trace-rule-rejection -G trace-entries # -G trace-all
83IGEN_INSN=$(srcdir)/mips.igen
84IGEN_DC=$(srcdir)/mips.dc
85M16_DC=$(srcdir)/m16.dc
86MICROMIPS32_DC=$(srcdir)/micromips.dc
87MICROMIPS16_DC=$(srcdir)/micromips16.dc
88IGEN_INCLUDE=\
89	$(srcdir)/micromipsdsp.igen \
90	$(srcdir)/micromips.igen \
91	$(srcdir)/m16.igen \
92	$(srcdir)/m16e.igen \
93	$(srcdir)/mdmx.igen \
94	$(srcdir)/mips3d.igen \
95	$(srcdir)/sb1.igen \
96	$(srcdir)/tx.igen \
97	$(srcdir)/vr.igen \
98	$(srcdir)/dsp.igen \
99	$(srcdir)/dsp2.igen \
100	$(srcdir)/mips3264r2.igen \
101	$(srcdir)/mips3264r6.igen \
102
103# NB:	Since these can be built by a number of generators, care
104#	must be taken to ensure that they are only dependant on
105#	one of those generators.
106BUILT_SRC_FROM_GEN = \
107	itable.h \
108	itable.c \
109
110SIM_IGEN_ALL = tmp-igen
111SIM_M16_ALL = tmp-m16
112SIM_MICROMIPS_ALL = tmp-micromips
113SIM_MULTI_ALL = tmp-multi
114
115$(BUILT_SRC_FROM_GEN): $(SIM_@sim_gen@_ALL)
116
117
118
119BUILT_SRC_FROM_IGEN = \
120	icache.h \
121	icache.c \
122	idecode.h \
123	idecode.c \
124	semantics.h \
125	semantics.c \
126	model.h \
127	model.c \
128	support.h \
129	support.c \
130	engine.h \
131	engine.c \
132	irun.c \
133
134$(BUILT_SRC_FROM_IGEN): tmp-igen
135
136tmp-igen: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
137	$(ECHO_IGEN) $(IGEN_RUN) \
138		$(IGEN_TRACE) \
139		-I $(srcdir) \
140		-Werror \
141		-Wnodiscard \
142		@sim_igen_flags@ \
143		-G gen-direct-access \
144		-G gen-zero-r0 \
145		-B 32 \
146		-H 31 \
147		-i $(IGEN_INSN) \
148		-o $(IGEN_DC) \
149		-x \
150		-n icache.h    -hc tmp-icache.h \
151		-n icache.c    -c  tmp-icache.c \
152		-n semantics.h -hs tmp-semantics.h \
153		-n semantics.c -s  tmp-semantics.c \
154		-n idecode.h   -hd tmp-idecode.h \
155		-n idecode.c   -d  tmp-idecode.c \
156		-n model.h     -hm tmp-model.h \
157		-n model.c     -m  tmp-model.c \
158		-n support.h   -hf tmp-support.h \
159		-n support.c   -f  tmp-support.c \
160		-n itable.h    -ht tmp-itable.h \
161		-n itable.c    -t  tmp-itable.c \
162		-n engine.h    -he tmp-engine.h \
163		-n engine.c    -e  tmp-engine.c \
164		-n irun.c      -r  tmp-irun.c
165	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.h icache.h
166	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.c icache.c
167	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.h idecode.h
168	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.c idecode.c
169	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.h semantics.h
170	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.c semantics.c
171	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.h model.h
172	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.c model.c
173	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.h support.h
174	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.c support.c
175	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-itable.h itable.h
176	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-itable.c itable.c
177	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-engine.h engine.h
178	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-engine.c engine.c
179	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-irun.c irun.c
180	$(SILENCE) touch $@
181
182BUILT_SRC_FROM_M16 = \
183	m16_icache.h \
184	m16_icache.c \
185	m16_idecode.h \
186	m16_idecode.c \
187	m16_semantics.h \
188	m16_semantics.c \
189	m16_model.h \
190	m16_model.c \
191	m16_support.h \
192	m16_support.c \
193	\
194	m32_icache.h \
195	m32_icache.c \
196	m32_idecode.h \
197	m32_idecode.c \
198	m32_semantics.h \
199	m32_semantics.c \
200	m32_model.h \
201	m32_model.c \
202	m32_support.h \
203	m32_support.c \
204
205$(BUILT_SRC_FROM_M16): tmp-m16
206
207tmp-m16: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
208	$(ECHO_IGEN) $(IGEN_RUN) \
209		$(IGEN_TRACE) \
210		-I $(srcdir) \
211		-Werror \
212		-Wnodiscard \
213		@sim_m16_flags@ \
214		-G gen-direct-access \
215		-G gen-zero-r0 \
216		-B 16 \
217		-H 15 \
218		-i $(IGEN_INSN) \
219		-o $(M16_DC) \
220		-P m16_ \
221		-x \
222		-n m16_icache.h    -hc tmp-icache.h \
223		-n m16_icache.c    -c  tmp-icache.c \
224		-n m16_semantics.h -hs tmp-semantics.h \
225		-n m16_semantics.c -s  tmp-semantics.c \
226		-n m16_idecode.h   -hd tmp-idecode.h \
227		-n m16_idecode.c   -d  tmp-idecode.c \
228		-n m16_model.h     -hm tmp-model.h \
229		-n m16_model.c     -m  tmp-model.c \
230		-n m16_support.h   -hf tmp-support.h \
231		-n m16_support.c   -f  tmp-support.c \
232		#
233	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.h m16_icache.h
234	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.c m16_icache.c
235	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.h m16_idecode.h
236	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.c m16_idecode.c
237	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.h m16_semantics.h
238	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.c m16_semantics.c
239	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.h m16_model.h
240	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.c m16_model.c
241	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.h m16_support.h
242	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.c m16_support.c
243	$(ECHO_IGEN) $(IGEN_RUN) \
244		$(IGEN_TRACE) \
245		-I $(srcdir) \
246		-Werror \
247		-Wnodiscard \
248		@sim_igen_flags@ \
249		-G gen-direct-access \
250		-G gen-zero-r0 \
251		-B 32 \
252		-H 31 \
253		-i $(IGEN_INSN) \
254		-o $(IGEN_DC) \
255		-P m32_ \
256		-x \
257		-n m32_icache.h    -hc tmp-icache.h \
258		-n m32_icache.c    -c  tmp-icache.c \
259		-n m32_semantics.h -hs tmp-semantics.h \
260		-n m32_semantics.c -s  tmp-semantics.c \
261		-n m32_idecode.h   -hd tmp-idecode.h \
262		-n m32_idecode.c   -d  tmp-idecode.c \
263		-n m32_model.h     -hm tmp-model.h \
264		-n m32_model.c     -m  tmp-model.c \
265		-n m32_support.h   -hf tmp-support.h \
266		-n m32_support.c   -f  tmp-support.c \
267		#
268	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.h m32_icache.h
269	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.c m32_icache.c
270	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.h m32_idecode.h
271	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.c m32_idecode.c
272	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.h m32_semantics.h
273	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.c m32_semantics.c
274	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.h m32_model.h
275	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.c m32_model.c
276	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.h m32_support.h
277	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.c m32_support.c
278	$(ECHO_IGEN) $(IGEN_RUN) \
279		$(IGEN_TRACE) \
280		-I $(srcdir) \
281		-Werror \
282		-Wnodiscard \
283		-Wnowidth \
284		@sim_igen_flags@ @sim_m16_flags@ \
285		-G gen-direct-access \
286		-G gen-zero-r0 \
287		-i $(IGEN_INSN) \
288		-n itable.h    -ht tmp-itable.h \
289		-n itable.c    -t  tmp-itable.c \
290		#
291	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-itable.h itable.h
292	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-itable.c itable.c
293	$(SILENCE) touch $@
294
295BUILT_SRC_FROM_MICROMIPS = \
296	micromips16_icache.h \
297	micromips16_icache.c \
298	micromips16_idecode.h \
299	micromips16_idecode.c \
300	micromips16_semantics.h \
301	micromips16_semantics.c \
302	micromips16_model.h \
303	micromips16_model.c \
304	micromips16_support.h \
305	micromips16_support.c \
306	\
307	micromips32_icache.h \
308	micromips32_icache.c \
309	micromips32_idecode.h \
310	micromips32_idecode.c \
311	micromips32_semantics.h \
312	micromips32_semantics.c \
313	micromips32_model.h \
314	micromips32_model.c \
315	micromips32_support.h \
316	micromips32_support.c \
317	\
318	micromips_m32_icache.h \
319	micromips_m32_icache.c \
320	micromips_m32_idecode.h \
321	micromips_m32_idecode.c \
322	micromips_m32_semantics.h \
323	micromips_m32_semantics.c \
324	micromips_m32_model.h \
325	micromips_m32_model.c \
326	micromips_m32_support.h \
327	micromips_m32_support.c \
328
329$(BUILT_SRC_FROM_MICROMIPS): tmp-micromips
330
331tmp-micromips: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
332	$(ECHO_IGEN) $(IGEN_RUN) \
333		$(IGEN_TRACE) \
334		-I $(srcdir) \
335		-Werror \
336		-Wnodiscard \
337		@sim_micromips16_flags@ \
338		-G gen-direct-access \
339		-G gen-zero-r0 \
340		-B 16 \
341		-H 15 \
342		-i $(IGEN_INSN) \
343		-o $(MICROMIPS16_DC) \
344		-P micromips16_ \
345		-x \
346		-n micromips16_icache.h    -hc tmp-icache.h \
347		-n micromips16_icache.c    -c  tmp-icache.c \
348		-n micromips16_semantics.h -hs tmp-semantics.h \
349		-n micromips16_semantics.c -s  tmp-semantics.c \
350		-n micromips16_idecode.h   -hd tmp-idecode.h \
351		-n micromips16_idecode.c   -d  tmp-idecode.c \
352		-n micromips16_model.h     -hm tmp-model.h \
353		-n micromips16_model.c     -m  tmp-model.c \
354		-n micromips16_support.h   -hf tmp-support.h \
355		-n micromips16_support.c   -f  tmp-support.c \
356		#
357	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.h micromips16_icache.h
358	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.c micromips16_icache.c
359	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.h micromips16_idecode.h
360	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.c micromips16_idecode.c
361	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.h micromips16_semantics.h
362	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.c micromips16_semantics.c
363	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.h micromips16_model.h
364	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.c micromips16_model.c
365	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.h micromips16_support.h
366	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.c micromips16_support.c
367	$(ECHO_IGEN) $(IGEN_RUN) \
368		$(IGEN_TRACE) \
369		-I $(srcdir) \
370		-Werror \
371		-Wnodiscard \
372		@sim_micromips_flags@ \
373		-G gen-direct-access \
374		-G gen-zero-r0 \
375		-B 32 \
376		-H 31 \
377		-i $(IGEN_INSN) \
378		-o $(MICROMIPS32_DC) \
379		-P micromips32_ \
380		-x \
381		-n micromips32_icache.h    -hc tmp-icache.h \
382		-n micromips32_icache.c    -c  tmp-icache.c \
383		-n micromips32_semantics.h -hs tmp-semantics.h \
384		-n micromips32_semantics.c -s  tmp-semantics.c \
385		-n micromips32_idecode.h   -hd tmp-idecode.h \
386		-n micromips32_idecode.c   -d  tmp-idecode.c \
387		-n micromips32_model.h     -hm tmp-model.h \
388		-n micromips32_model.c     -m  tmp-model.c \
389		-n micromips32_support.h   -hf tmp-support.h \
390		-n micromips32_support.c   -f  tmp-support.c \
391		#
392	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.h micromips32_icache.h
393	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.c micromips32_icache.c
394	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.h micromips32_idecode.h
395	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.c micromips32_idecode.c
396	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.h micromips32_semantics.h
397	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.c micromips32_semantics.c
398	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.h micromips32_model.h
399	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.c micromips32_model.c
400	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.h micromips32_support.h
401	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.c micromips32_support.c
402	$(ECHO_IGEN) $(IGEN_RUN) \
403		$(IGEN_TRACE) \
404		-I $(srcdir) \
405		-Werror \
406		-Wnodiscard \
407		@sim_igen_flags@ \
408		-G gen-direct-access \
409		-G gen-zero-r0 \
410		-B 32 \
411		-H 31 \
412		-i $(IGEN_INSN) \
413		-o $(IGEN_DC) \
414		-P micromips_m32_ \
415		-x \
416		-n micromips_m32_icache.h    -hc tmp-icache.h \
417		-n micromips_m32_icache.c    -c  tmp-icache.c \
418		-n micromips_m32_semantics.h -hs tmp-semantics.h \
419		-n micromips_m32_semantics.c -s  tmp-semantics.c \
420		-n micromips_m32_idecode.h   -hd tmp-idecode.h \
421		-n micromips_m32_idecode.c   -d  tmp-idecode.c \
422		-n micromips_m32_model.h     -hm tmp-model.h \
423		-n micromips_m32_model.c     -m  tmp-model.c \
424		-n micromips_m32_support.h   -hf tmp-support.h \
425		-n micromips_m32_support.c   -f  tmp-support.c \
426		#
427	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.h micromips_m32_icache.h
428	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.c micromips_m32_icache.c
429	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.h micromips_m32_idecode.h
430	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.c micromips_m32_idecode.c
431	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.h micromips_m32_semantics.h
432	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.c micromips_m32_semantics.c
433	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.h micromips_m32_model.h
434	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.c micromips_m32_model.c
435	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.h micromips_m32_support.h
436	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.c micromips_m32_support.c
437	$(ECHO_IGEN) $(IGEN_RUN) \
438		$(IGEN_TRACE) \
439		-I $(srcdir) \
440		-Werror \
441		-Wnodiscard \
442		-Wnowidth \
443		@sim_igen_flags@ @sim_micromips_flags@ @sim_micromips16_flags@\
444		-G gen-direct-access \
445		-G gen-zero-r0 \
446		-i $(IGEN_INSN) \
447		-n itable.h    -ht tmp-itable.h \
448		-n itable.c    -t  tmp-itable.c \
449		#
450	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-itable.h itable.h
451	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-itable.c itable.c
452	$(SILENCE) touch $@
453
454BUILT_SRC_FROM_MULTI = @sim_multi_src@
455SIM_MULTI_IGEN_CONFIGS = @sim_multi_igen_configs@
456
457$(BUILT_SRC_FROM_MULTI): tmp-multi
458tmp-multi: tmp-mach-multi tmp-itable-multi tmp-run-multi
459tmp-mach-multi: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
460	for t in $(SIM_MULTI_IGEN_CONFIGS); do \
461	  p=`echo $${t} | sed -e 's/:.*//'` ; \
462	  m=`echo $${t} | sed -e 's/.*:\(.*\):.*/\1/'` ; \
463	  f=`echo $${t} | sed -e 's/.*://'` ; \
464	  case $${p} in \
465	    micromips16*) e="-B 16 -H 15 -o $(MICROMIPS16_DC) -F 16" ;; \
466	    micromips32* | micromips64*) \
467		e="-B 32 -H 31 -o $(MICROMIPS32_DC) -F $${f}" ;; \
468	    micromips_m32*) \
469		e="-B 32 -H 31 -o $(IGEN_DC) -F $${f}"; \
470		m="mips32r2,mips3d,mdmx,dsp,dsp2,smartmips" ;; \
471	    micromips_m64*) \
472		e="-B 32 -H 31 -o $(IGEN_DC) -F $${f}"; \
473		m="mips64r2,mips3d,mdmx,dsp,dsp2,smartmips" ;; \
474	    m16*) e="-B 16 -H 15 -o $(M16_DC) -F 16" ;; \
475	    *) e="-B 32 -H 31 -o $(IGEN_DC) -F $${f}" ;; \
476	  esac; \
477	  $(IGEN_RUN) \
478		$(IGEN_TRACE) \
479		$${e} \
480		-I $(srcdir) \
481		-Werror \
482		-Wnodiscard \
483		-N 0 \
484		-M $${m} \
485		-G gen-direct-access \
486		-G gen-zero-r0 \
487		-i $(IGEN_INSN) \
488		-P $${p}_ \
489		-x \
490		-n $${p}_icache.h    -hc tmp-icache.h \
491		-n $${p}_icache.c    -c  tmp-icache.c \
492		-n $${p}_semantics.h -hs tmp-semantics.h \
493		-n $${p}_semantics.c -s  tmp-semantics.c \
494		-n $${p}_idecode.h   -hd tmp-idecode.h \
495		-n $${p}_idecode.c   -d  tmp-idecode.c \
496		-n $${p}_model.h     -hm tmp-model.h \
497		-n $${p}_model.c     -m  tmp-model.c \
498		-n $${p}_support.h   -hf tmp-support.h \
499		-n $${p}_support.c   -f  tmp-support.c \
500		-n $${p}_engine.h    -he tmp-engine.h \
501		-n $${p}_engine.c    -e  tmp-engine.c \
502	  || exit; \
503	  $(SHELL) $(srcdir)/../../move-if-change tmp-icache.h \
504						  $${p}_icache.h ; \
505	  $(SHELL) $(srcdir)/../../move-if-change tmp-icache.c \
506						  $${p}_icache.c ; \
507	  $(SHELL) $(srcdir)/../../move-if-change tmp-idecode.h \
508						  $${p}_idecode.h ; \
509	  $(SHELL) $(srcdir)/../../move-if-change tmp-idecode.c \
510						  $${p}_idecode.c ; \
511	  $(SHELL) $(srcdir)/../../move-if-change tmp-semantics.h \
512						  $${p}_semantics.h ; \
513	  $(SHELL) $(srcdir)/../../move-if-change tmp-semantics.c \
514						  $${p}_semantics.c ; \
515	  $(SHELL) $(srcdir)/../../move-if-change tmp-model.h \
516						  $${p}_model.h ; \
517	  $(SHELL) $(srcdir)/../../move-if-change tmp-model.c \
518						  $${p}_model.c ; \
519	  $(SHELL) $(srcdir)/../../move-if-change tmp-support.h \
520						  $${p}_support.h ; \
521	  $(SHELL) $(srcdir)/../../move-if-change tmp-support.c \
522						  $${p}_support.c ; \
523	  $(SHELL) $(srcdir)/../../move-if-change tmp-engine.h \
524						  $${p}_engine.h ; \
525	  $(SHELL) $(srcdir)/../../move-if-change tmp-engine.c \
526						  $${p}_engine.c ; \
527	done
528	$(SILENCE) touch $@
529tmp-itable-multi: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
530	$(ECHO_IGEN) $(IGEN_RUN) \
531		$(IGEN_TRACE) \
532		-I $(srcdir) \
533		-Werror \
534		-Wnodiscard \
535		-Wnowidth \
536		-N 0 \
537		@sim_multi_flags@ \
538		-G gen-direct-access \
539		-G gen-zero-r0 \
540		-i $(IGEN_INSN) \
541		-n itable.h    -ht tmp-itable.h \
542		-n itable.c    -t  tmp-itable.c \
543		#
544	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-itable.h itable.h
545	$(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-itable.c itable.c
546	$(SILENCE) touch $@
547tmp-run-multi: $(srcdir)/m16run.c $(srcdir)/micromipsrun.c
548	for t in $(SIM_MULTI_IGEN_CONFIGS); do \
549	  case $${t} in \
550	    m16*) \
551	      m=`echo $${t} | sed -e 's/^m16//' -e 's/:.*//'`; \
552	      sed <  $(srcdir)/m16run.c > tmp-run \
553		    -e "s/^sim_/m16$${m}_/" \
554		    -e "/include/s/sim-engine/m16$${m}_engine/" \
555		    -e "s/m16_/m16$${m}_/" \
556		    -e "s/m32_/m32$${m}_/" ; \
557	      $(SHELL) $(srcdir)/../../move-if-change tmp-run \
558						      m16$${m}_run.c ; \
559            ;;\
560	    micromips32*) \
561	      m=`echo $${t} | sed -e 's/^micromips32//' -e 's/:.*//'`; \
562	      sed <  $(srcdir)/micromipsrun.c > tmp-run \
563		    -e "s/^sim_/micromips32$${m}_/" \
564		    -e "/include/s/sim-engine/micromips32$${m}_engine/" \
565		    -e "s/micromips16_/micromips16$${m}_/" \
566		    -e "s/micromips32_/micromips32$${m}_/" \
567		    -e "s/m32_/m32$${m}_/" ; \
568	      $(SHELL) $(srcdir)/../../move-if-change tmp-run \
569						      micromips$${m}_run.c ; \
570             ;;\
571	    micromips64*) \
572	      m=`echo $${t} | sed -e 's/^micromips64//' -e 's/:.*//'`; \
573	      sed <  $(srcdir)/micromipsrun.c > tmp-run \
574		    -e "s/^sim_/micromips64$${m}_/" \
575		    -e "/include/s/sim-engine/micromips64$${m}_engine/" \
576		    -e "s/micromips16_/micromips16$${m}_/" \
577		    -e "s/micromips32_/micromips64$${m}_/" \
578		    -e "s/m32_/m64$${m}_/" ; \
579	      $(SHELL) $(srcdir)/../../move-if-change tmp-run \
580						      micromips$${m}_run.c ; \
581             ;;\
582	  esac \
583	done
584	$(SILENCE) touch $@
585
586clean-extra:
587	rm -f $(BUILT_SRC_FROM_GEN)
588	rm -f $(BUILT_SRC_FROM_IGEN)
589	rm -f $(BUILT_SRC_FROM_M16)
590	rm -f $(BUILT_SRC_FROM_MICROMIPS)
591	rm -f $(BUILT_SRC_FROM_MULTI)
592	rm -f tmp-*
593	rm -f micromips16*.o micromips32*.o m16*.o m32*.o itable*.o
594
595distclean-extra:
596	rm -f multi-include.h multi-run.c
597