X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=regress%2FMakefile.in;h=4abc11313e52ee078e18dad5c70458dc6e08f303;hb=7a6c8c41806edda194a4477b8b76a29a7745718b;hp=3ed85f1fe56f6cb9081ee98c3deef70007e561ff;hpb=d942707de2dd9809338882f09a9f23316dc8be36;p=adns.git diff --git a/regress/Makefile.in b/regress/Makefile.in index 3ed85f1..4abc113 100644 --- a/regress/Makefile.in +++ b/regress/Makefile.in @@ -1,15 +1,15 @@ -# regress/Makefile - regression test Makefile +# regress/Makefile[.in] - regression test Makefile # -# This file is -# Copyright (C) 1997-1999 Ian Jackson -# -# It is part of adns, which is -# Copyright (C) 1997-1999 Ian Jackson -# Copyright (C) 1999 Tony Finch +# This file is part of adns, which is +# Copyright (C) 1997-2000,2003,2006,2014-2016,2020 Ian Jackson +# Copyright (C) 2014 Mark Wooding +# Copyright (C) 1999-2000,2003,2006 Tony Finch +# Copyright (C) 1991 Massachusetts Institute of Technology +# (See the file INSTALL for full details.) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) +# the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, @@ -18,47 +18,118 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# along with this program; if not, write to the Free Software Foundation. srcdir= @srcdir@ VPATH= @srcdir@ -TARGETS= hplayback hrecord -AUTOCSRCS= harness.h hrecord.c hplayback.c hcommon.c -include $(srcdir)/../settings.make +PROGS_SYSDEP= @PROGS_HAVE_TSEARCH@ + +CLIENTS= adnstest adnshost adnslogres $(PROGS_SYSDEP) +AUTOCHDRS= harness.h hsyscalls.h hredirect.h +AUTOCSRCS= hrecord.c hplayback.c hcommon.c hfuzzraw.c +include ../settings.make include $(srcdir)/../src/adns.make -DIRCFLAGS= -I$(srcdir)/../src +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) + perl -ne 'print $$1,"\n" while m/\"([^"% ]{2,})\"/g' \ + $(srcdir)/../src/*.[ch] $(srcdir)/../client/*.[ch] \ + | sort -u >fuzzcat.d/dictionary + -HCPPFLAGS:= $(foreach F, \ - gettimeofday select poll \ - socket fcntl connect close \ - sendto recvfrom read write writev \ -, -D$F=H$F) +check-%: case-%.sys + @srcdir=$(srcdir) $(srcdir)/r1test $* || test $$? = 5 -HARNLOBJS= $(addsuffix _d.o, $(basename $(LIBOBJS))) -ALLOBJS= $(HARNLOBJS) dtest.o hrecord.o hplayback.o hcommon.o +fuzz-%: case-%.sys $(TARGETS) make1fuzz shlib + srcdir=$(srcdir) $(srcdir)/make1fuzz $* -.PRECIOUS: $(AUTOCSRCS) +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) + +.SECONDARY: $(addsuffix _c.o, $(filter-out adnshost, $(CLIENTS))) +# Without this, make will remove _c.o after building . +# This wastes effort. (Debian bug #4073.) +# +# Also, it exposes us to a bug (in make 3.81, at least) which can +# cause make to run the rule for building without building +# _c.o! (Debian #756123.) +# +# See also Savannah #29620, http://savannah.gnu.org/bugs/index.php?29620 -check: $(TARGETS) - ./checkall +adnshost_%: $(ADH_OBJS) h%.o hnonfuzz.o $(HARNLOBJS) + $(LINK_CMD) -all install uninstall: +adnshost_fuzz: $(ADH_OBJS) hplayback.o hfuzz.o $(HARNLOBJS) + $(LINK_CMD) -hrecord: adnstest_c.o hrecord.o hcommon.o $(HARNLOBJS) -hplayback: adnstest_c.o hplayback.o hcommon.o $(HARNLOBJS) +adnshost_fuzzraw: $(ADH_OBJS) hfuzzraw.o hfuzz.o $(HARNLOBJS) + $(LINK_CMD) -%_d.o: $(srcdir)/../src/%.c - $(CC) $(HCPPFLAGS) -c -g -o $@ $< +%_d.o: $(srcdir)/../src/%.c hredirect.h + $(CC) $(CFLAGS) $(HCPPFLAGS) -c -g -o $@ $< -%_c.o: $(srcdir)/../client/%.c - $(CC) $(HCPPFLAGS) -I $(srcdir)/../src -c -g -o $@ $< +%_c.o: $(srcdir)/../client/%.c hredirect.h + $(CC) $(CFLAGS) $(HCPPFLAGS) -I $(srcdir)/../src -c -g -o $@ $< -$(ALLOBJS): $(srcdir)/../src/adns.h $(srcdir)/../src/internal.h harness.h +$(ALL_OBJS): $(srcdir)/../src/adns.h $(srcdir)/../src/internal.h +$(ALL_OBJS): harness.h hsyscalls.h +$(ADH_OBJS): $(srcdir)/../client/adnshost.h %:: %.m4 hmacros.i4 hsyscalls.i4 - $(M4) -P $< >$@-a.new + $(M4) -P -I$(srcdir) $< >$@-a.new sed -e 's/hm_comma/,/g; s/hm_squote/'\''/g; /^[ ]*$$/d' <$@-a.new >$@-b.new - @mv -f $@-b.new $@; rm -f $@-a.new + @mv -f $@-b.new $(srcdir)/$@; rm -f $@-a.new