chiark / gitweb /
regress: Introduce FUZZRAW_SYNC
[adns.git] / regress / Makefile.in
1 # regress/Makefile[.in] - regression test Makefile
2
3 #  This file is part of adns, which is
4 #    Copyright (C) 1997-2000,2003,2006,2014-2016,2020  Ian Jackson
5 #    Copyright (C) 2014  Mark Wooding
6 #    Copyright (C) 1999-2000,2003,2006  Tony Finch
7 #    Copyright (C) 1991 Massachusetts Institute of Technology
8 #  (See the file INSTALL for full details.)
9 #  
10 #  This program is free software; you can redistribute it and/or modify
11 #  it under the terms of the GNU General Public License as published by
12 #  the Free Software Foundation; either version 3, or (at your option)
13 #  any later version.
14 #  
15 #  This program is distributed in the hope that it will be useful,
16 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
17 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 #  GNU General Public License for more details.
19 #  
20 #  You should have received a copy of the GNU General Public License
21 #  along with this program; if not, write to the Free Software Foundation.
22
23 srcdir=         @srcdir@
24 VPATH=          @srcdir@
25
26 PROGS_SYSDEP=   @PROGS_HAVE_TSEARCH@
27
28 CLIENTS=        adnstest adnshost adnslogres $(PROGS_SYSDEP)
29 AUTOCHDRS=      harness.h hsyscalls.h hredirect.h
30 AUTOCSRCS=      hrecord.c hplayback.c hcommon.c hfuzzraw.c
31 include         ../settings.make
32 include         $(srcdir)/../src/adns.make
33
34 DIRCFLAGS=      -I../src -I$(srcdir) -I$(srcdir)/../src
35
36 HCPPFLAGS=      -DADNS_REGRESS_TEST -I.
37 #HCPPFLAGS+=    -DFUZZRAW_SYNC
38
39 REDIRLIBOBJS=   $(addsuffix _d.o, $(basename $(LIBOBJS)))
40 HARNLOBJS=      hcommon.o $(REDIRLIBOBJS)
41 TARGETS=        $(addsuffix _record, $(CLIENTS)) \
42                 $(addsuffix _playback, $(CLIENTS)) \
43                 $(addsuffix _fuzz, $(CLIENTS)) \
44                 $(addsuffix _fuzzraw, $(CLIENTS))
45 ADH_OBJS=       adh-main_c.o adh-opts_c.o adh-query_c.o
46 ALL_OBJS=       $(HARNLOBJS) dtest.o hrecord.o hplayback.o hnonfuzz.o hfuzz.o
47
48 .PRECIOUS:      $(AUTOCSRCS) $(AUTOCHDRS)
49
50 all install uninstall: $(TARGETS)
51
52 ALL_TESTS:=$(patsubst $(srcdir)/case-%.sys,%,$(wildcard $(srcdir)/case-*.sys))
53
54 check:          $(TARGETS) $(addprefix check-,$(ALL_TESTS))
55                 @echo
56                 @echo 'all tests passed or maybe skipped.'
57
58 checkfuzz:      $(TARGETS) $(addprefix checkfuzz-,$(ALL_TESTS))
59                 @echo
60                 @echo 'all fuzzes passed or maybe skipped.'
61 # this target is mostly useful as prep work for running the fuzzer;
62 # it doesn't really test any of adns
63
64 fuzzcat.d:      checkfuzz
65                 $(srcdir)/categorizefuzz $(ALL_TESTS)
66
67 check-%:        case-%.sys
68                 @srcdir=$(srcdir) $(srcdir)/r1test $* || test $$? = 5
69
70 fuzz-%:         case-%.sys $(TARGETS) make1fuzz shlib
71                 srcdir=$(srcdir) $(srcdir)/make1fuzz $*
72
73 .PRECIOUS: fuzz-%
74
75 checkfuzz-%:    fuzz-% $(TARGETS)
76                 @srcdir=$(srcdir) $(srcdir)/check1fuzz $< || test $$? = 5
77
78 LINK_CMD=       $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
79
80 %_record:       %_c.o hrecord.o hnonfuzz.o $(HARNLOBJS)
81                 $(LINK_CMD)
82
83 %_playback:     %_c.o hplayback.o hnonfuzz.o $(HARNLOBJS)
84                 $(LINK_CMD)
85
86 %_fuzz:         %_c.o hplayback.o hfuzz.o $(HARNLOBJS)
87                 $(LINK_CMD)
88
89 %_fuzzraw:      %_c.o hfuzzraw.o hfuzz.o $(HARNLOBJS)
90                 $(LINK_CMD)
91
92 .SECONDARY: $(addsuffix _c.o, $(filter-out adnshost, $(CLIENTS)))
93 # Without this, make will remove <client>_c.o after building <client>.
94 # This wastes effort.  (Debian bug #4073.)
95 #
96 # Also, it exposes us to a bug (in make 3.81, at least) which can
97 # cause make to run the rule for building <client> without building
98 # <client>_c.o!  (Debian #756123.)
99 #
100 # See also Savannah #29620, http://savannah.gnu.org/bugs/index.php?29620
101
102 adnshost_%:     $(ADH_OBJS) h%.o hnonfuzz.o $(HARNLOBJS)
103                 $(LINK_CMD)
104
105 adnshost_fuzz:  $(ADH_OBJS) hplayback.o hfuzz.o $(HARNLOBJS)
106                 $(LINK_CMD)
107
108 adnshost_fuzzraw: $(ADH_OBJS) hfuzzraw.o hfuzz.o $(HARNLOBJS)
109                 $(LINK_CMD)
110
111 %_d.o:          $(srcdir)/../src/%.c hredirect.h
112                 $(CC) $(CFLAGS) $(HCPPFLAGS) -c -g -o $@ $<
113
114 %_c.o:          $(srcdir)/../client/%.c hredirect.h
115                 $(CC) $(CFLAGS) $(HCPPFLAGS) -I $(srcdir)/../src -c -g -o $@ $<
116
117 $(ALL_OBJS):    $(srcdir)/../src/adns.h $(srcdir)/../src/internal.h
118 $(ALL_OBJS):    harness.h hsyscalls.h
119 $(ADH_OBJS):    $(srcdir)/../client/adnshost.h
120
121 %::     %.m4 hmacros.i4 hsyscalls.i4
122         $(M4) -P -I$(srcdir) $< >$@-a.new
123         sed -e 's/hm_comma/,/g; s/hm_squote/'\''/g; /^[  ]*$$/d' <$@-a.new >$@-b.new
124         @mv -f $@-b.new $(srcdir)/$@; rm -f $@-a.new