+DIRCFLAGS= -I../src -I$(srcdir) -I$(srcdir)/../src
+
+HCPPFLAGS= -DADNS_REGRESS_TEST -I.
+#HCPPFLAGS+= -DFUZZRAW_SYNC
+
+REDIRLIBOBJS= $(addsuffix _d.o, $(basename $(LIBOBJS)))
+HARNLOBJS= hcommon.o $(REDIRLIBOBJS)
+TARGETS= $(addsuffix _record, $(CLIENTS)) \
+ $(addsuffix _playback, $(CLIENTS)) \
+ $(addsuffix _fuzz, $(CLIENTS)) \
+ $(addsuffix _fuzzraw, $(CLIENTS))
+ADH_OBJS= adh-main_c.o adh-opts_c.o adh-query_c.o
+ALL_OBJS= $(HARNLOBJS) dtest.o hrecord.o hplayback.o hnonfuzz.o hfuzz.o
+
+.PRECIOUS: $(AUTOCSRCS) $(AUTOCHDRS)
+
+all install uninstall: $(TARGETS)
+
+ALL_TESTS:=$(patsubst $(srcdir)/case-%.sys,%,$(wildcard $(srcdir)/case-*.sys))
+
+check: $(TARGETS) $(addprefix check-,$(ALL_TESTS))
+ @echo
+ @echo 'all tests passed or maybe skipped.'
+
+checkfuzz: $(TARGETS) \
+ $(addprefix checkfuzz-,$(ALL_TESTS)) \
+ $(addprefix checkfuzzraw-,$(ALL_TESTS))
+ @echo
+ @echo 'all fuzzes passed or maybe skipped.'
+# this target is mostly useful as prep work for running the fuzzer;
+# it doesn't really test any of adns
+
+fuzzcat.d: checkfuzz
+ $(srcdir)/categorisefuzz $(ALL_TESTS)
+
+check-%: case-%.sys
+ @srcdir=$(srcdir) $(srcdir)/r1test $* || test $$? = 5
+
+fuzz-%: case-%.sys $(TARGETS) make1fuzz shlib
+ srcdir=$(srcdir) $(srcdir)/make1fuzz $*
+
+fuzzraw-%: fuzz-%
+
+.PRECIOUS: fuzz-%
+
+checkfuzz-%: fuzz-% $(TARGETS)
+ @srcdir=$(srcdir) $(srcdir)/check1fuzz $<
+
+checkfuzzraw-%: fuzz-% $(TARGETS)
+ @srcdir=$(srcdir) $(srcdir)/check1fuzz $<
+
+LINK_CMD= $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
+
+%_record: %_c.o hrecord.o hnonfuzz.o $(HARNLOBJS)
+ $(LINK_CMD)
+
+%_playback: %_c.o hplayback.o hnonfuzz.o $(HARNLOBJS)
+ $(LINK_CMD)
+
+%_fuzz: %_c.o hplayback.o hfuzz.o $(HARNLOBJS)
+ $(LINK_CMD)
+
+%_fuzzraw: %_c.o hfuzzraw.o hfuzz.o $(HARNLOBJS)
+ $(LINK_CMD)