some interactive testing
[gnucap-felix.git] / tests / Makefile.am
blobf7e5781297464c9c4928877952f221c544451213
1 # this file is part of gnucap
2 # (c) 2013 Felix Salfelder
3 # License: GPLv3
5 GNUCAP = $(top_builddir)/src/gnucap
7 # needed for gnucap-run.sh
8 AM_TESTS_ENVIRONMENT = \
9     export PATH='../src:$(PATH)'\
10            GNUCAP='gnucap'\
11            REDIRECT='exec 2>&9'\
12            MAKEFLAGS=--no-print-directory \
13            srcdir='$(srcdir)';
14 AM_TESTS_FD_REDIRECT = 9>&2
15 TEST_EXTENSIONS = .gc .ckt
17 GC_LOG_COMPILER = $(top_srcdir)/tests/gc_log_compiler
18 CKT_LOG_COMPILER = $(top_srcdir)/tests/ckt_log_compiler
19 SH_LOG_COMPILER = $(SHELL)
21 AM_CKT_LOG_FLAGS = $(srcdir)
23 TESTS = \
24     gnucap_run.sh \
25     $(GC_TESTS) \
26     $(LOGIC_TESTS) \
27     $(UF_TESTS) \
28     $(CKT_TESTS)
30 REF = ==out
32 patchlev_fake_%.h: $(top_builddir)/include/patchlev.h
33         sed 's/e VERSION_REVISION.*/e VERSION_REVISION $*/' < $< > $@
34 patchlev_other.h: $(top_builddir)/include/patchlev.h
35         sed 's/e VERSION_CURRENT .*/e VERSION_CURRENT 99999/' < $< > $@
37 BUILT_SOURCES = patchlev_fake_999.h patchlev_fake_0.h patchlev_other.h
39 transform=s&\.real$$&&;$(program_transform_name)
40 plugindir_transformed = ${libdir}/$(shell echo gnucap | sed -e "$(transform)")
41 plugindir:= $(plugindir_transformed)
42 plugin_PROGRAMS = gnucap-testfilter
43 gnucap_testfilter_SOURCES = filter.c
44 empty=
45 $(empty)install-pluginPROGRAMS: transform=
47 CKT_TESTS = \
48     1lin.ckt \
49     ap_ctof.2.ckt \
50     ap_ctof.ckt \
51     basic.ckt \
52     bm_complex.1a.ckt \
53     bm_complex.1.ckt \
54     bm_complex.2.ckt \
55     bm_complex.3.ckt \
56     bm_complex.4.ckt \
57     bm_cond.1.ckt \
58     bm_cond.2.ckt \
59     bm_cond.3.ckt \
60     bm_exp.1.ckt \
61     bm_exp.1p.ckt \
62     bm_exp.2.ckt \
63     bm_exp.3.ckt \
64     bm_exp.3p.ckt \
65     bm_exp.4p.ckt \
66     bm_exp.5p.ckt \
67     bm_fit.0.1.ckt \
68     bm_fit.1.1.ckt \
69     bm_fit.2.1.ckt \
70     bm_fit.2.2.ckt \
71     bm_fit.2.3.ckt \
72     bm_fit.2.4.ckt \
73     bm_fit.3.1.ckt \
74     bm_fit.3.2.ckt \
75     bm_fit.3.3.ckt \
76     bmm_cap.1.ckt \
77     bmm_cap.2.ckt \
78     bmm_cap.3.ckt \
79     bmm_cap.4.ckt \
80     bmm_cap.5.ckt \
81     bmm_res.1.ckt \
82     bmm_res.1p.ckt \
83     bmm_res.2.ckt \
84     bmm_res.2p.ckt \
85     bmm_res.3.ckt \
86     bmm_res.3p.ckt \
87     bmm_res.4.ckt \
88     bmm_res.4p.ckt \
89     bmm_res.5.ckt \
90     bmm_res.5p.ckt \
91     bm_poly.0.ckt \
92     bm_poly.1.ckt \
93     bm_poly.2.ckt \
94     bm_posy.1.ckt \
95     bm_pulse.1.ckt \
96     bm_pulse.2.ckt \
97     bm_pulse.3.ckt \
98     bm_pwl.1.ckt \
99     bm_pwl.2.ckt \
100     bm_pwl.3.ckt \
101     bm_pwl.4.ckt \
102     bm_pwl.5.ckt \
103     bm_sffm.1.ckt \
104     bm_sffm.2.ckt \
105     bm_sffm.3.ckt \
106     bm_sffm.4.ckt \
107     bm_sffm.5.ckt \
108     bm_sffm.6.ckt \
109     bm_sin.1.ckt \
110     bm_sin.2.ckt \
111     bm_sin.3.ckt \
112     bm_sin.4.ckt \
113     bm_sin.5.ckt \
114     bm_sin.6.ckt \
115     bm_sin.7.ckt \
116     bm_sin.8.ckt \
117     bm_sin.9.ckt \
118     bm_table.1.1.ckt \
119     bm_table.2.1.ckt \
120     bm_table.2.2.ckt \
121     bm_table.2.3.ckt \
122     bm_table.2.4.ckt \
123     bm_table.3.1.ckt \
124     bm_table.3.2.ckt \
125     bm_table.3.3.ckt \
126     bm_table.error1.ckt \
127     bm_tanh.1.ckt \
128     bm_tanh.2.ckt \
129     cc.ckt \
130     c.ckt \
131     c_delete.2.ckt \
132     c_delete.3.ckt \
133     c_delete.4.ckt \
134     c_delete.5.ckt \
135     c_delete.6.ckt \
136     c_delete.7.ckt \
137     c_delete.ckt \
138     c_eval.1.ckt \
139     c_getckt.ckt \
140     charge-cons2.ckt \
141     charge-cons3.ckt \
142     charge-cons.ckt \
143     c_help.1.ckt \
144     c_lib.1.ckt \
145     c_list.ckt \
146     c_list.1.ckt \
147     c_measure.1.ckt \
148     c_measure.2.ckt \
149     c_modify.ckt \
150     cont.1.ckt \
151     cont.2.ckt \
152     cont.3.ckt \
153     current.ckt \
154     d_bjt.2.ckt \
155     d_bjt.ckt \
156     d_bjt-diffpair-ccs.ckt \
157     d_bjt-diffpair-cjc.ckt \
158     d_bjt-diffpair-dc.ckt \
159     d_bjt-diffpair-nocap.ckt \
160     d_bjt-diffpair-tf.ckt \
161     d_bjt-diffpair-tran.ckt \
162     d_bjt-diffpair-tr.ckt \
163     d_bjt-diffpair-tr2.ckt \
164     d_bjt.error1.ckt \
165     d_bjt-pnp.ckt \
166     d_bjt-rca3040.ckt \
167     d_bjt-rtlinv.ckt \
168     d_bjt-schmitt-bypass.ckt \
169     d_bjt-schmitt-nobypass.ckt \
170     d_cap.1.ckt \
171     d_cap.2.ckt \
172     d_cap.3a.ckt \
173     d_cap.3.ckt \
174     d_cap.4.ckt \
175     d_cap.5.ckt \
176     d_cap.6.ckt \
177     d_cap.ic1.ckt \
178     d_cap.ic2.ckt \
179     d_cap.ic4.ckt \
180     d_cccs.1.ckt \
181     d_cccs.2.ckt \
182     d_cccs.3.ckt \
183     d_cccs.4.ckt \
184     d_cccs.5.ckt \
185     d_cccs.6.ckt \
186     d_ccvs.1.ckt \
187     d_ccvs.2.ckt \
188     d_ccvs.3.ckt \
189     d_coil.1a.ckt \
190     d_coil.1b.ckt \
191     d_coil.1c.ckt \
192     d_coil.1.ckt \
193     d_coil.1d.ckt \
194     d_coil.1e.ckt \
195     d_coil.2.ckt \
196     d_coil.3.ckt \
197     d_coil.4.ckt \
198     d_coil.5.ckt \
199     d_coil.error1.ckt \
200     d_coil.error2.ckt \
201     d_coil.error3.ckt \
202     d_coil.error4.ckt \
203     d_coil.error5.ckt \
204     d_coil.m3a.ckt \
205     d_coil.m3.ckt \
206     d_diode.10a.ckt \
207     d_diode.10.ckt \
208     d_diode.11a.ckt \
209     d_diode.11b.ckt \
210     d_diode.11c.ckt \
211     d_diode.11.ckt \
212     d_diode.11d.ckt \
213     d_diode.12.ckt \
214     d_diode.1.ckt \
215     d_diode.2.ckt \
216     d_diode.3.ckt \
217     d_diode.4.ckt \
218     d_diode.5.ckt \
219     d_diode.6.ckt \
220     d_diode.7.ckt \
221     d_diode.8.ckt \
222     d_diode.9.ckt \
223     d_diode.error1.ckt \
224     d_logic.1.ckt \
225     d_logic.1a.ckt \
226     d_logic.2.ckt \
227     d_logic.3.ckt \
228     d_logic.4.ckt \
229     d_logic.5.ckt \
230     d_logic.6.ckt \
231     d_logic.7.ckt \
232     d_logic.error1.ckt \
233     d_macro.1.ckt \
234     d_mos1.bin1.ckt \
235     d_mos1.bin2.ckt \
236     d_mos1.bin3.ckt \
237     d_mos1.inv1.ckt \
238     d_mos1.inv2.ckt \
239     d_mos1.inv3.ckt \
240     d_mos1.lin1.ckt \
241     d_mos1.lin1.late.ckt \
242     d_mos1.lin1.none.ckt \
243     d_mos1.lin2.ckt \
244     d_mos1.lin3.ckt \
245     d_mos1.lin4.ckt \
246     d_mos1.lin5.ckt \
247     d_mos1.n0.ckt \
248     d_mos1.n-1.ckt \
249     d_mos1.n+1.ckt \
250     d_mos1.nand1.ckt \
251     d_mos1.nand2.ckt \
252     d_mos1.p0.ckt \
253     d_mos1.p-1.ckt \
254     d_mos1.p+1.ckt \
255     d_mos1.plin.ckt \
256     d_mos1.psat1.ckt \
257     d_mos1.psat2.ckt \
258     d_mos1.psat3.ckt \
259     d_mos1.sat1.ckt \
260     d_mos1.sat2.ckt \
261     d_mos1.sat3.ckt \
262     d_mos1.sat4.ckt \
263     d_mos1.sat5.ckt \
264     d_mos1.sat6.ckt \
265     d_mos1.sat7.ckt \
266     d_mos1.sts.ckt \
267     d_mos1.zero.ckt \
268     d_mos2.inv1.ckt \
269     d_mos2.lin1.ckt \
270     d_mos2.lin1.late.ckt \
271     d_mos2.lin1r.ckt \
272     d_mos2.lin1z.ckt \
273     d_mos2.lin2.ckt \
274     d_mos2.lin3.ckt \
275     d_mos2.lin4.ckt \
276     d_mos2.lin5.ckt \
277     d_mos2.n0.ckt \
278     d_mos2.n-1.ckt \
279     d_mos2.n+1.ckt \
280     d_mos2.nand1.ckt \
281     d_mos2.p0.ckt \
282     d_mos2.p-1.ckt \
283     d_mos2.p+1.ckt \
284     d_mos2.plin.ckt \
285     d_mos2.psat1.ckt \
286     d_mos2.psat2.ckt \
287     d_mos2.psat3.ckt \
288     d_mos2.sat1.ckt \
289     d_mos2.sat2.ckt \
290     d_mos2.sat3.ckt \
291     d_mos2.sat4.ckt \
292     d_mos2.sat5.ckt \
293     d_mos2.sat6.ckt \
294     d_mos2.sat7.ckt \
295     d_mos2.sts.ckt \
296     d_mos2.zero.ckt \
297     d_mos3.inv1.ckt \
298     d_mos3.lin1.ckt \
299     d_mos3.lin1r.ckt \
300     d_mos3.lin1z.ckt \
301     d_mos3.lin2.ckt \
302     d_mos3.lin3.ckt \
303     d_mos3.lin4.ckt \
304     d_mos3.lin5.ckt \
305     d_mos3.n0.ckt \
306     d_mos3.n-1.ckt \
307     d_mos3.n+1.ckt \
308     d_mos3.nand1.ckt \
309     d_mos3.p0.ckt \
310     d_mos3.p-1.ckt \
311     d_mos3.p+1.ckt \
312     d_mos3.plin.ckt \
313     d_mos3.psat1.ckt \
314     d_mos3.psat2.ckt \
315     d_mos3.psat3.ckt \
316     d_mos3.sat000.ckt \
317     d_mos3.sat007.ckt \
318     d_mos3.sat1.ckt \
319     d_mos3.sat2.ckt \
320     d_mos3.sat3.ckt \
321     d_mos3.sat4.ckt \
322     d_mos3.sat5.ckt \
323     d_mos3.sat6.ckt \
324     d_mos3.sat7.ckt \
325     d_mos3.sts000.ckt \
326     d_mos3.sts.ckt \
327     d_mos3.zero.ckt \
328     d_mos4.1.ckt \
329     d_mos4.2.ckt \
330     d_mos4.3.ckt \
331     d_mos49.nand1.ckt \
332     d_mos5.1.ckt \
333     d_mos6.inv1.ckt \
334     d_mos6.lin1.ckt \
335     d_mos6.lin1r.ckt \
336     d_mos6.lin1z.ckt \
337     d_mos6.lin2.ckt \
338     d_mos6.lin2r.ckt \
339     d_mos6.lin2z.ckt \
340     d_mos6.n0.ckt \
341     d_mos6.n-1.ckt \
342     d_mos6.n+1.ckt \
343     d_mos6.nand1.ckt \
344     d_mos6.p0.ckt \
345     d_mos6.p-1.ckt \
346     d_mos6.p+1.ckt \
347     d_mos6.plin.ckt \
348     d_mos6.psat1.ckt \
349     d_mos6.psat2.ckt \
350     d_mos6.psat3.ckt \
351     d_mos6.sat1.ckt \
352     d_mos6.sat1r.ckt \
353     d_mos6.sat1s.ckt \
354     d_mos6.sat1v.ckt \
355     d_mos6.sat2.ckt \
356     d_mos6.sat2r.ckt \
357     d_mos6.sat3.ckt \
358     d_mos6.sat3r.ckt \
359     d_mos6.sts000.ckt \
360     d_mos6.sts.ckt \
361     d_mos6.zero.ckt \
362     d_mos7.alpha.ckt \
363     d_mos7.inv1.ckt \
364     d_mos7.lin1.ckt \
365     d_mos7.lin2.ckt \
366     d_mos7.nand1.ckt \
367     d_mos7.nand1.nobypass.ckt \
368     d_mos7.plin.ckt \
369     d_mos7.psat.ckt \
370     d_mos7.sat1.ckt \
371     d_mos7.sat2.ckt \
372     d_mos7.sat3.ckt \
373     d_mos7.sts.ckt \
374     d_mos7.zero.ckt \
375     d_mos8c2.nand1.ckt \
376     d_mos8c2.nand1.nobypass.ckt \
377     d_mos8.nand1.ckt \
378     d_mos8.sat2.ckt \
379     d_mos8.sat3.ckt \
380     d_mos8.sat4.ckt \
381     d_mos.error1.ckt \
382     d_mos.error2.ckt \
383     d_mos.error3.ckt \
384     d_mos.error4.ckt \
385     d_subckt.1.ckt \
386     d_subckt.2.ckt \
387     d_subckt.3.ckt \
388     d_subckt.4.ckt \
389     d_subckt.5.ckt \
390     d_subckt.6.ckt \
391     d_subckt.7.ckt \
392     d_subckt.8.ckt \
393     d_subckt.9.ckt \
394     d_subckt.error1.ckt \
395     d_subckt.error2.ckt \
396     d_subckt.error3.ckt \
397     d_subckt.error4.ckt \
398     d_switch.c0.ckt \
399     d_switch.c1a.ckt \
400     d_switch.c1.ckt \
401     d_switch.c1.inc.ckt \
402     d_switch.c1.noinc.ckt \
403     d_switch.c1r.ckt \
404     d_switch.c2a.ckt \
405     d_switch.c2.ckt \
406     d_switch.c2r.ckt \
407     d_switch.c3.ckt \
408     d_switch.error1.ckt \
409     d_switch.error2.ckt \
410     d_switch.error3.ckt \
411     d_switch.nro.1.ckt \
412     d_switch.nro.1e.ckt \
413     d_switch.nro.1g.ckt \
414     d_switch.nro.1gr.ckt \
415     d_switch.nro.2.ckt \
416     d_switch.nro.3.ckt \
417     d_switch.nro.3h.ckt \
418     d_switch.nro.4.ckt \
419     d_switch.v.cont.ckt \
420     d_switch.v.ckt \
421     d_switch.vr.ckt \
422     d_tcap.1.ckt \
423     d_tcap.2.ckt \
424     d_tcap.3.ckt \
425     d_tcap.4.ckt \
426     d_trln.ac.ckt \
427     d_trln.tr.100.im.ckt \
428     d_trln.tr.100.nim.ckt \
429     d_trln.tr.300.im.ckt \
430     d_trln.tr.300.nim.ckt \
431     d_trln.tr.im.ckt \
432     d_trln.tr.m.ckt \
433     d_trln.tr.nim.ckt \
434     d_vccap.1.ckt \
435     d_vccap.2.ckt \
436     d_vcg.1.ckt \
437     d_vcg.2.ckt \
438     d_vcg.3.ckt \
439     d_vcg.4.ckt \
440     d_vcg.5.ckt \
441     d_vcr.1.ckt \
442     d_vcr.2.ckt \
443     d_vcr.3.ckt \
444     d_vcr.4.ckt \
445     d_vcr.5.ckt \
446     d_vcvs.1.ckt \
447     dc_temp.ckt \
448     dcsweep.ckt \
449     e_ccsrc.1.ckt \
450     e_ccsrc.2.ckt \
451     e_node_probes.ckt \
452     eq3-1153.ckt \
453     eq3-1153.fg2.ckt \
454     eq3-1153.fg.ckt \
455     eq3-1153.tr-b.ckt \
456     eq3-1153.tr-nb.ckt \
457     eq3-1153.tr-ni.ckt \
458     eq4-9217.tran.ckt \
459     eq4-9217.tran.nopreq.ckt \
460     eqb1.ckt \
461     eqboost.ckt \
462     eqflat.ckt \
463     eqmodify.ckt \
464     e_storag.1.ckt \
465     list.1.ckt \
466     l2.ckt \
467     l.ckt \
468     ll1.ckt \
469     ll.ckt \
470     lll.ckt \
471     llll.ckt \
472     m_expression.1.ckt \
473     m_expression.2.ckt \
474     m_expression.3.ckt \
475     m_expression.error.1.ckt \
476     named_nodes.ckt \
477     nmos100.1.ckt \
478     nmos100.ckt \
479     nmos15a.ckt \
480     nmos15.ckt \
481     nmp100.ckt \
482     nothing.ckt \
483     opamp-ol.ckt \
484     opamp-ol-disto.2.ckt \
485     opamp-ol-disto.ckt \
486     opamp-vf.1.ckt \
487     opamp-vf.1d.ckt \
488     opamp-vf.2.ckt \
489     opamp-vf.3.ckt \
490     opamp-vf.ckt \
491     oscillator.1.ckt \
492     oscillator.2.ckt \
493     oscillator.3.ckt \
494     oscillator.4.ckt \
495     oscillator.5.ckt \
496     oscillator.6.ckt \
497     oscillator.7.ckt \
498     param.0a.ckt \
499     param.0.ckt \
500     param.10.ckt \
501     param.11.ckt \
502     param.12.ckt \
503     param.1.ckt \
504     param.2a.ckt \
505     param.2b.ckt \
506     param.2c.ckt \
507     param.2.ckt \
508     param.3.ckt \
509     param.4.ckt \
510     param.5.ckt \
511     param.6.ckt \
512     param.7.ckt \
513     param.8.ckt \
514     param.9.ckt \
515     parse.1.ckt \
516     sl.ckt \
517     trcurve2.ckt \
518     trcurve.ckt \
519     trcurves.ckt
521 # bm_cond stuff
522 XFAIL_TESTS = list.1.ckt
524 # recheck
525 XFAIL_TESTS += lang_verilog.3.gc
527 # typename issue, some other bugs
528 XFAIL_TESTS += lang_spectre.2.gc
530 # something wrong with .op command
531 XFAIL_TESTS += lang_spice.1b.gc
533 # needs work
534 XFAIL_TESTS += d_bjt-diffpair-tr2.ckt
536 # interactive mode broken?
537 XFAIL_TESTS += c_attach.1.gc
539 # cond parser broken
540 XFAIL_TESTS+= param.2c.ckt
542 # logic is broken. needs work
543 LOGIC_TESTS = \
544     d_logic_nand-dc.ckt \
545     d_logic_tr_ab1.ckt \
546     d_logic_tr_ab2.ckt \
547     d_logic_tr_an1.ckt \
548     d_logic_tr_an2.ckt \
549     d_logic_tr_db1.ckt \
550     d_logic_tr_db2.ckt \
551     d_logic_tr_dn1.ckt \
552     d_logic_tr_dn2.ckt \
553     d_logic_tr_mb1a.ckt \
554     d_logic_tr_mb1b.ckt \
555     d_logic_tr_mb2a.ckt \
556     d_logic_tr_mb2b.ckt \
557     d_logic_tr_mn1a.ckt \
558     d_logic_tr_mn1b.ckt \
559     d_logic_tr_mn2a.ckt \
560     d_logic_tr_mn2b.ckt
562 # these are really broken...
563 XFAIL_TESTS += \
564     c_delete.6.ckt \
565     c_delete.7.ckt \
566     m_expression.3.ckt \
567     param.9.ckt \
568     param.8.ckt
570 # functions need to return expressions, not doubles
571 XFAIL_TESTS+= c_measure.1.ckt
573 # something wrong with probes
574 XFAIL_TESTS+= print_v.sh
576 # these tests require gsl
577 GSL_TESTS = \
578     d_ttcap.1.gc \
579     pfet_shutdown.gc \
580     s_ttt.rc.gc \
581     s_ttt.lc.gc \
582     s_ttt.lrc.gc
584 GSL_TESTS_LOG = $(GSL_TESTS:%.gc=%.log)
586 if USE_GSL
587 # don't skip GSL tests
588 else
589 $(GSL_TESTS_LOG): GC_LOG_FLAGS=SKIP
590 endif
592 # suspended.
593 d_bti.2.log: GC_LOG_FLAGS += SKIP
595 GC_TESTS = \
596     $(GSL_TESTS) \
597     ac_lp.gc \
598     ac_noise.gc \
599     alter.gc \
600     bm_pulse.4.gc \
601     bm_pulse.5.gc \
602     bm_pulse.6.gc \
603     bm_pulse.7.gc \
604     bm_pulse.8.gc \
605     bm_pulse.9.gc \
606     bm_pulse.10.gc \
607     bm_pulse.11.gc \
608     bm_pulse.periodic.gc \
609     c_attach.1.gc \
610     c_attach.2.gc \
611     c_echo.1.gc \
612     c_for.1.gc \
613     c_for.2.gc \
614     c_for.3.gc \
615     c_save.gc \
616     c_printf.1.gc \
617     c_printf.2.gc \
618     c_wave.1.gc \
619     c_wave.2.gc \
620     c_wave.3.gc \
621     c_wave.4.gc \
622     c_wave.5.gc \
623     c_wave.6.gc \
624     c_wave.build.gc \
625     c_wave.dump.gc \
626     d_branchvs.1.gc \
627     d_branchvs.2.gc \
628     d_coil.brl.1.gc \
629     d_coil.brl.2.gc \
630     d_coil.brl.3.gc \
631     d_cpoly_g.1.gc \
632     d_cpoly_g.2.gc \
633     d_cpoly_g.3.gc \
634     d_cpoly_g.4.gc \
635     d_mos.l0.gc \
636     d_mos8.np.gc \
637     d_res.gc \
638     d_subckt.parm.gc \
639     d_switch.disc.gc \
640     d_switch.ic.gc \
641     d_switch.tt.gc \
642     dc_reverse.gc \
643     dc_sweep.gc \
644     dc_trace.gc \
645     dc_twice.gc \
646     dc_twice.nopreq.gc \
647     ddc_brl.gc \
648     ddc_bug.gc \
649     ddc_cc.gc \
650     ddc_coil.gc \
651     ddc_osc.gc \
652     ddc_rc.gc \
653     ddc_simple.gc \
654     ddc_param.gc \
655     ddc_sweep_twice.gc \
656     ddc_v.1.gc \
657     d_vs.1.gc \
658     eval_param.gc \
659     gnd.gc \
660     hangbug.gc \
661     lang_verilog.1a.gc \
662     lang_verilog.1.gc \
663     lang_verilog.2a.gc \
664     lang_verilog.2b.gc \
665     lang_verilog.2.gc \
666     lang_verilog.3.gc \
667     lang_verilog.comm.gc \
668     lang_spectre.1.gc \
669     lang_spectre.1a.gc \
670     lang_spectre.2.gc \
671     lang_spice.1.gc \
672     lang_spice.1a.gc \
673     lang_spice.1b.gc \
674     lang_spice.comm.gc \
675     LogicAND.gc \
676     lring.gc \
677     mark_dc_cont.gc \
678     models-uf.gc \
679     mosbug.2.gc \
680     nodeorder.gc \
681     node.gc \
682     nodis.gc \
683     param.13.gc \
684     param_simple.gc \
685     paramtest.gc \
686     poly1_parse.gc \
687     pulse.gc \
688     ring.gc \
689     s_sock.1.gc \
690     s_sock.1b.gc \
691     s_sock.1.preq.gc \
692     s_sock.1b.preq.gc \
693     s_sock.2.gc \
694     s_tr.cont.gc \
695     s_tr.lrc.gc \
696     s_ttt.1.gc \
697     s_ttt.label.gc \
698     s_ttt.vib.gc \
699     sens_rr.gc \
700     spice_comment_continuation.gc \
701     spice_mos.gc \
702     tran_temp.gc \
703     tr_bug.gc \
704     tr_cont.gc \
705     tr_cont.1.gc \
706     tr_cont.2.gc \
707     tr_cont.3.gc \
708     tr_cont.4.gc \
709     tr_cont_dc.gc \
710     tr_mark.1.gc \
711     tr_mark.2.gc \
712     tr_mark.3.gc \
713     tr_mark.gc \
714     tr_nothing.gc \
715     tt_twice.gc \
716     ttr_cont.gc \
717     tw_steps.gc \
718     uic_cap.gc \
719     v_uic.gc \
720     vrc_cont.1.gc \
721     vrc_evt.gc \
722     Xnodeorder.gc \
723     Xprobes.gc
725 #this is not ready yet.
726 XFAIL_TESTS+= s_tr.cont.gc
727 XFAIL_TESTS+= s_tr.lrc.gc
729 #reltol problem.
730 XFAIL_TESTS+= d_coil.brl.3.gc
732 # not implemented
733 XFAIL_TESTS+= c_for.3.gc
735 # abother bug
736 XFAIL_TESTS+= ddc_v.1.gc
738 # hmmm
739 XFAIL_TESTS+= ac_noise.gc
741 # somethings wrong
742 XFAIL_TESTS+= d_mos.l0.gc
744 # does not converge (why?)
745 XFAIL_TESTS+= mosbug.2.gc
747 CUSTOM_TESTS = c_attach.1.sh nosuchfile.sh
749 AUTO_TESTS = $(CKT_TESTS) $(CUSTOM_TESTS)
751 gsl_tests: $(GSL_TESTS:%.gc=%.log)
752 gc_tests: $(GC_TESTS:%.gc=%.log)
753 uf_tests: $(UF_TESTS:%.gc=%.log)
754 ckt_tests: $(CKT_TESTS:%.ckt=%.log)
755 logic_tests: $(LOGIC_TESTS:%.ckt=%.log)
757 .PHONY: .P
760         @:
762 # $(AUTO_TESTS:%.sh=%.out): .P $(FILTER)
763 $(GC_TESTS:%.gc=%.gc.out): .P $(FILTER)
764 $(GC_TESTS:%.gc=%.log): .P $(FILTER)
765 $(CKT_TESTS:%.ckt=%.log): .P $(FILTER)
766 $(CKT_TESTS:%.ckt=%.ckt.out): .P $(FILTER)
767 # $(LOGIC_TESTS:%.ckt=%.log): .P $(FILTER)
768 $(LOGIC_TESTS:%=%.out): .P $(FILTER)
769 $(UF_TESTS:%.gc=%.gc.out): .P $(FILTER)
770 $(UF_TESTS:%.gc=%.log): .P $(FILTER)
772 # $(CKT_TESTS): %.sh: %.out
774 # try this first
775 $(CKT_TESTS:%.ckt:%.log): gnucap_run.log
777 # this will trigger a warning in autogen.sh
778 # (apparently this warning is s bug)
779 c_getckt.ckt.out: | $(PWD)/d_cccs.1.ckt
780 c_lib.1.ckt.out: | $(PWD)/c_lib.1.ckt
782 lang_spice.1a.log lang_verilog.1a.log: soclean | $(PWD)/bm_wrapper.cc
783 lang_spice.1a.gc.out lang_verilog.1a.gc.out: POSTDIFF+= '/^CXX/d'
785 $(GSL_TESTS:%=%.out) $(UF_TESTS:%=%.out): POSTDIFF+='/already·installed/{N;d}'
787 UF_TESTS = \
788     d_bti.1.gc \
789     d_bti.2.gc \
790     d_bti.3.gc \
791     d_bti.steps.gc \
792     d_bti.symm.gc \
793     d_hci.1.gc \
794     d_hci.2.gc \
795     d_hci.3.gc \
796     d_hci.4.gc \
797     d_hci.5.gc \
798     d_hci.6.gc \
799     d_hci.7.gc \
800     d_hci_pd.gc \
801     d_rcd.1.gc \
802     d_rcd.2.gc \
803     d_rcd.3.gc \
804     d_rcd.neg.gc \
805     hci_dumpload.gc \
806     hci_mos.gc \
807     hci_stepping.gc \
808     no_hci.gc \
809     param.14.gc \
810     param_scopes.gc \
811     pfet_age.gc \
812     pfet_btisum.gc \
813     pfet_age_pd.gc \
814     pfet_age_pd.1.gc \
815     pfet_age_tr.gc \
816     pfet_rcd_param.gc \
817     rcd_param.gc \
818     rcd_tr.gc \
819     rcd_tr.1.gc \
820     rcd_tr.2.gc \
821     rcd_ueff.gc \
822     rcd_tw.gc \
823     rcd_tw_dumpload.gc \
824     sens_inv.gc \
825     sens_mos8.gc \
826     sens_uic.gc \
827     spectre_param.gc
829 soclean:
830         rm -f bm_wrapper.so
832 PREDIFF= \
833    '1,/^core-lib·version/d' \
834    '/^@/d'
836 ## newer gnucap
837 #PREDIFF+='1,/^default·plugins/d'
839 # permit different control values
840 d_logic_tr_%.out: POSTDIFF+= '3·s/[01]\.········$$/X.········/'
842 # just zero noise
843 trcurve.ckt.out: POSTDIFF+= '54·s/-196\.E-24/·0.······/g' \
844                         '411·s/727\.2E-18/0.·······/g' \
845                         '411·s/317\.6E-18/0.·······/g' \
846                         '462·s/795\.6E-18/0.·······/g' \
847                         '462·s/378\.2E-18/0.·······/g' \
848                         '513·s/864\.E-18/0.······/g' \
849                         '513·s/438\.4E-18/0.·······/g'
851 $(CKT_TESTS:%=%.out) $(LOGIC_TESTS:%=%.out): %.ckt.out: %.ckt
852         @LD_LIBRARY_PATH='../plugins/.libs$(LD_LIBRARY_PATH:%=:$(LD_LIBRARY_PATH))' \
853             ../src/gnucap $(GNUCAP_PLUGINS:%=-a %) $(GNUCAP_ARGS) -b $< | \
854             sed $(subst ·, ,$(PREDIFF:%=-e %)) \
855             $(if $(POSTDIFF),| sed) $(subst ·, ,$(POSTDIFF:%=-e %)) > $*.ckt.out
857 # close to zero...
858 d_vcg.%.out: POSTDIFF+= '27·s/975\.[0-9][0-9]f/0.·····/'
860 # close enough
861 bm_poly.%.out: POSTDIFF+= '30·s/-.\.f/·0.·/g'
862 bm_poly.%.out: POSTDIFF+= '30·s/-..\.f/·0.··/g'
864 # output seems to depend on lapack/architecture.
865 ddc_cc.gc.out: POSTDIFF+= 's/NaN/0.·/g'
867 # same
868 trcurve2.ckt.out: POSTDIFF+= 's/·[0-9]\.E-21/·0.····/'
869 trcurve2.ckt.out: POSTDIFF+= 's/·[0-9][0-9]\.E-21/·0.·····/'
870 trcurve2.ckt.out: POSTDIFF+= '11·s/.....E-30/0.·······/g'
871 trcurve2.ckt.out: POSTDIFF+= '17·s/3\.628E-21/0.·······/g'
872 trcurve2.ckt.out: POSTDIFF+= '17·s/110\.4E-30/0.·······/g'
873 trcurve2.ckt.out: POSTDIFF+= '23·s/5\.094E-2./0.·······/g'
874 trcurve2.ckt.out: POSTDIFF+= '23·s/73\.45E-21/0.·······/g'
875 trcurve2.ckt.out: POSTDIFF+= '29·s/630\.3E-24/0.·······/'
876 trcurve2.ckt.out: POSTDIFF+= '35·s/7\.08E-21/0.······/'
877 trcurve2.ckt.out: POSTDIFF+= '35·s/13\.28E-21/0.·······/'
878 trcurve2.ckt.out: POSTDIFF+= 's/[0-9]....E-30/0.·······/g'
880 # negative zeroes? nice, but should not be machine dependent
881 bm_sffm.%.out: POSTDIFF+= 's/-0\.000\>/·0.000/g'
883 bm_table.2.4.ckt.out: POSTDIFF+= '54·s/[- ][0-9]\.f/·0.·/g'
885 c_attach.1.out: POSTDIFF+= 's\#`.*/tests\#`.../tests\#g'
887 FILTER = ./gnucap-testfilter
889 define testgen
890         @echo "#!/bin/sh" > $@
891         @echo "set -e" >> $@
892         @echo "exec 2>&9" >> $@
893         @echo "$(FILTER) $*.out < $< | diff -up - $< --label $< || exit 1" >> $@
894         @echo "rm $*.out" >> $@
895         @chmod +x $@
896 endef
898 $(CKT_TESTS:%.ckt=%.sh): %.sh: %.ckt.ref
899         $(AM_V_GEN)$(testgen)
901 $(UF_TESTS:%=%.out) $(GC_TESTS:%=%.out): %.gc.out: %.gc
902         $(AM_V_GEN)GNUCAP_PREQ=1 $(GNUCAP) $(GNUCAP_PLUGINS:%=-a ../modules/.libs/%) $(GNUCAP_ARGS) < $< | \
903             sed $(subst ·, ,$(PREDIFF:%=-e %)) \
904             $(if $(POSTDIFF),| sed) $(subst ·, ,$(POSTDIFF:%=-e %)) > $*.gc.out
906 # $(UF_TESTS): GNUCAP_PLUGINS = 'public models-uf.so'
908 # nosuchfile.out c_attach.1.out: %.out: %.gc
909 #       -$(GNUCAP) < $< | \
910 #           sed $(subst ·, ,$(PREDIFF:%=-e %)) \
911 #           $(if $(POSTDIFF),| sed) $(subst ·, ,$(POSTDIFF:%=-e %)) > $*.out
913 LT=<
914 nosuchfile.sh: LT=<
916 # make sure we don't chdir...
917 lang_verilog.1a.sh: LT=<
918 lang_spice.1.sh: LT=<
919 c_attach.1.sh: I=-i
921 nosuchfile.sh: %.sh: %.gc Makefile %.ref
922         @echo "#!/bin/sh" > $@
923         @echo "set -e" >> $@
924         @echo "GNUCAP=\$${GNUCAP-gnucap}" >> $@
925         @echo "eval \$$REDIRECT" >> $@
926         @echo "\$$GNUCAP \$$GNUCAP_ARGS $(LT) $I $< | sed $(subst ·, ,$(PREDIFF:%=-e %)) \\" >> $@
927         @echo "$(if $(POSTDIFF),| sed) $(subst ·, ,$(POSTDIFF:%=-e %)) > $*.out" >> $@
928         @echo "$(FILTER) $*.out < $(lastword $+) | diff -up - $(lastword $+) --label $(lastword $+) || exit 1" >> $@
929         @echo "rm $*.out" >> $@
930         @chmod +x $@
932 CLEANFILES = *.out $(AUTO_TESTS) core \
933              patchlev_fake_0.h \
934              patchlev_fake_999.h \
935              patchlev_other.h
937 # hmmm.
938 if VPATH_BUILD
939 $(PWD)/%.ckt: %.ckt
940         $(LN_S) $< $@
942 $(PWD)/%.cc: %.cc
943         $(LN_S) $< $@
945 CLEANFILES+= d_cccs.1.ckt c_lib.1.ckt bm_wrapper.so
946 endif
948 EXTRA_DIST = gnucap_run.sh \
949              gc_log_compiler \
950              ckt_log_compiler \
951              $(CKT_TESTS) $(CKT_TESTS:%=%.ref) \
952              $(LOGIC_TESTS) $(LOGIC_TESTS:%=%.ref) \
953              $(GC_TESTS) $(GC_TESTS:%.gc=%.ref) \
954              $(UF_TESTS) $(UF_TESTS:%.gc=%.ref) \
955              c_attach.1.gc \
956              bm_wrapper.cc \
957              bm_generator.doc bm_pulse.doc bm_pwl.doc bm_sin.doc d_cap.doc d_diode.doc \
958              d_.doc d_subckt.doc u_.doc \
959              d_coil.5.spice \
960              d_mos1.lin1.spice \
961              d_mos1.sat2.spice \
962              d_mos6.lin1r.spice \
963              d_mos6.lin1.spice \
964              d_mos6.lin1z.spice \
965              d_mos6.lin2r.spice \
966              d_mos6.lin2.spice \
967              d_mos6.lin2z.spice \
968              d_mos6.sat1r.spice \
969              d_mos6.sat1.spice \
970              d_mos6.sat1s.spice \
971              d_mos6.sat1v.spice \
972              d_mos6.sat2r.spice \
973              d_mos6.sat2.spice \
974              d_mos6.sat3r.spice \
975              d_mos6.sat3.spice \
976              pwl.spice \
977                                  ngspice \
978              nobypass \
979              nolubypass \
980              vs.spice
982 .PHONY: check
984 AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
985 AM_DEFAULT_SOURCE_EXT = .cc
986 AM_LDFLAGS = -module -avoid-version -rpath /dev/null
987 check_LTLIBRARIES = bogus.la bogus1.la bogus2.la bogus3.la bogus4.la
989 # $(CUSTOM_TESTS:%.sh=%.log): %.log: %.out
990         
991 c_attach.1.out: empty.cc bogus.so d_vs.cc loadtestdir loadtestdirro attachclean
992 c_attach.2.out c_attach.2.log: bogus.so bogus1.so bogus2.so bogus3.so bogus4.so
994 attachclean:
995         rm -f d_vs.so load*/*.so empty.so
997 loadtestdir:
998         mkdir $@
999         cd $@; $(LN_S) $(top_srcdir)/src/d_cccs.cc .
1000         cd $@; $(LN_S) $(top_srcdir)/src/d_ccvs.cc .
1002 loadtestdirro:
1003         mkdir $@
1004         cp $(top_srcdir)/src/d_ccvs.cc $@
1006 empty.cc:
1007         touch $@
1009 d_vs.cc: | $(top_srcdir)/src/d_vs.cc
1010         $(LN_S) $| .
1012 bogus.so bogus1.so bogus2.so bogus3.so bogus4.so: %.so: %.la
1013         [ -f $@ ] || $(LN_S) .libs/$@ .
1015 .PHONY: c_attach.1.out attachclean soclean
1017 # bug: @@@ also catches incomplete
1018 # bug: case labels don't end with {
1019 sedscript:
1020         grep -e ^@@@: -e ^@i@ *.log | sort -u | tr : " " | \
1021                 $(AWK) '{printf "sed -i %s -e '"'"'%s s/\\({\\|:\\)\\(\\ \\|\\t\\)\\?\\(un\\|i\\)tested();$$/\\1/'"'"' # %s +%s\n", $$3, $$4, $$3, $$4}' > $@
1023 # checked in files. sort out later.
1024 EXTRA_DIST += \
1025 bm_pulse.1a.ckt \
1026 bogus.cc \
1027 bogus2.cc \
1028 bti_dumpload.gc \
1029 dc_sweeps.gc \
1030 powerdown.gc \
1031 print_v.ckt \
1032 pulse_freq.gc \
1033 pulse_freq.ref \
1034 rcd_cons_tw.sim \
1035 rcd_cons_tw_more.sim \
1036 rcd_tr.sim \
1037 rcd_tw.sim \
1038 res_cond.gc \
1039 saveload.sim \
1040 sweep.sim \
1041 tt_inv.gc \
1042 tw_trace.gc