# Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
-# The Regents of the University of California. All rights reserved.
+# The Regents of the University of California. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that: (1) source code distributions
print-ospf.c \
print-ospf6.c \
print-otv.c \
+ print-pflog.c \
print-pgm.c \
print-pim.c \
print-pktap.c \
print-quic.c \
print-radius.c \
print-raw.c \
+ print-realtek.c \
print-resp.c \
print-rip.c \
print-ripng.c \
print-rpki-rtr.c \
- print-rrcp.c \
print-rsvp.c \
print-rt6.c \
print-rtsp.c \
SRC = $(CSRC) $(LOCALSRC)
-# We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot
-# hack the extra indirection
OBJ = $(CSRC:.c=.o)
HDR = \
addrtoname.h \
ospf.h \
oui.h \
pcap-missing.h \
+ pflog.h \
ppp.h \
print.h \
rpc_auth.h \
/usr/include/netinet/in.h
TAGFILES = $(SRC) $(HDR) $(TAGHDR) $(LIBNETDISSECT_SRC) \
- print-pflog.c print-smb.c smbutil.c
+ print-smb.c smbutil.c
CLEANFILES = $(PROG) $(OBJ) $(LIBNETDISSECT_OBJ)
EXTRA_DIST = \
CHANGES \
CMakeLists.txt \
- CONTRIBUTING \
+ CONTRIBUTING.md \
CREDITS \
INSTALL.md \
LICENSE \
README.md \
VERSION \
aclocal.m4 \
+ autogen.sh \
atime.awk \
bpf_dump.c \
cmake/Modules/FindCRYPTO.cmake \
cmake_uninstall.cmake.in \
cmakeconfig.h.in \
config.guess \
- config.h.in \
config.sub \
- configure \
configure.ac \
+ doc/README.aix.md \
+ doc/README.haiku.md \
+ doc/README.NetBSD.md \
+ doc/README.solaris.md \
doc/README.Win32.md \
install-sh \
instrument-functions.c \
- lbl/os-osf4.h \
- lbl/os-solaris2.h \
- lbl/os-sunos4.h \
- lbl/os-ultrix4.h \
makemib \
missing/datalinks.c \
missing/dlnames.c \
missing/getopt_long.h \
missing/getservent.c \
missing/pcap_dump_ftell.c \
- missing/snprintf.c \
- missing/strdup.c \
missing/strlcat.c \
missing/strlcpy.c \
missing/strsep.c \
- missing/win_ether_ntohost.c \
- missing/win_ether_ntohost.h \
mkdep \
packetdat.awk \
- print-pflog.c \
print-smb.c \
send-ack.awk \
smbutil.c \
stime.awk \
tcpdump.1.in
-TEST_DIST= `git ls-files tests | grep -v 'tests/\..*'`
+TEST_DIST= `git -C "$$DIR" ls-files tests | grep -v 'tests/\..*'`
+
+RELEASE_FILES = $(CSRC) $(HDR) $(LIBNETDISSECT_SRC) $(EXTRA_DIST) $(TEST_DIST)
all: $(PROG)
@rm -f $@
$(CC) $(FULL_CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBNETDISSECT) $(LIBS)
+instrument_all: $(PROG)
+ @rm -f instrument_functions_global.devel
+ @rm -f instrument_functions_off.devel
+
+instrument_global: $(PROG)
+ @touch instrument_functions_global.devel
+ @rm -f instrument_functions_off.devel
+
+instrument_off: $(PROG)
+ @touch instrument_functions_off.devel
+ @rm -f instrument_functions_global.devel
+
$(LIBNETDISSECT): $(LIBNETDISSECT_OBJ)
@rm -f $@
$(AR) cr $@ $(LIBNETDISSECT_OBJ)
$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/getservent.c
getopt_long.o: $(srcdir)/missing/getopt_long.c
$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/getopt_long.c
-snprintf.o: $(srcdir)/missing/snprintf.c
- $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c
-strdup.o: $(srcdir)/missing/strdup.c
- $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strdup.c
strlcat.o: $(srcdir)/missing/strlcat.c
$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strlcat.c
strlcpy.o: $(srcdir)/missing/strlcpy.c
grep -v 'possible pointer alignment problem'
clean:
- rm -f $(CLEANFILES) $(PROG)-`cat ${srcdir}/VERSION`.tar.gz
+ rm -f $(CLEANFILES) $(PROG)-`cat ${srcdir}/VERSION`.tar.gz \
+ config.h.in~ configure~ configure.ac~
-distclean:
- rm -f $(CLEANFILES) Makefile config.cache config.log config.status \
- config.h gnuc.h os-proto.h stamp-h stamp-h.in $(PROG).1 \
+distclean: clean
+ rm -f Makefile config.cache config.log config.status \
+ config.h os-proto.h stamp-h stamp-h.in $(PROG).1 \
libnetdissect.a tests/.failed tests/.passed \
tests/failure-outputs.txt
rm -rf autom4te.cache tests/DIFF tests/NEW
TAGS: $(TAGFILES)
etags $(TAGFILES)
+#
+# Use git archive piped to tar to construct a subdirectory whose name
+# is tcpdump-{release}, containing all the checked-in source files,
+# and then run autoreconf in that directory to generate the configure
+# script and other files from that source. Then remove autom4te.cache,
+# construct the release tarball from that subdirectory, and remove
+# the subdirectory.
+#
+# The --format=tar is to force git archive to write a non-compressed
+# archive, in case the platform's tar command doesn't have built-in
+# decompression.
+#
+# The ^{tree} is there to force git archive not to write out the
+# "helpful" global extended pax header with a commit ID, as not all
+# versions of tar can handle that (Solaris tar can't, for example).
+# (It turns HEAD, or a tag, both of which are apparently "tree-ish"es,
+# into a tree; apparently, unlike HEAD, or a tag, which have a commit
+# ID associated with them, the tree associated with them doesn't have
+# a commit ID, so no commit ID is available to write, and thus
+# git archive doesn't write one.)
+#
releasetar:
- @autoreconf -f && \
- name=$(PROG)-`cat VERSION` && \
- mkdir $$name && \
- tar cf - $(CSRC) $(HDR) $(LIBNETDISSECT_SRC) $(EXTRA_DIST) $(TEST_DIST) | (cd $$name; tar xf -) && \
- tar cf - $$name | gzip >$$name.tar.gz && \
- rm -rf $$name
-
-rc1 rc2 rc3 rc4 rc5:
- @VER=`cat $(srcdir)/VERSION`; \
- sed -i "s/$$VER/$${VER}$@/" VERSION ; \
- make releasetar; \
- git checkout VERSION configure
+ @TAG=$(PROG)-`cat VERSION` && \
+ if [ ! -d .git ]; then echo 'Not in a git clone, stop.'; exit 1; fi && \
+ TMPTESTFILE=`mktemp -t tmptestfile_XXXXXXXX` && \
+ rm -f "$$TMPTESTFILE" && \
+ AUTORECONF_DIR=`dirname "$$TMPTESTFILE"`/"$(PROG)"_build_autoreconf_$$$$ && \
+ DIR=`pwd` && \
+ rm -rf "$$AUTORECONF_DIR" && \
+ mkdir "$$AUTORECONF_DIR" && \
+ cd "$$AUTORECONF_DIR" && \
+ if git -C "$$DIR" show-ref --tags --quiet --verify -- "refs/tags/$$TAG"; then \
+ (git -C "$$DIR" archive --format=tar --prefix="$$TAG"/ "$$TAG^{tree}" $(RELEASE_FILES) | \
+ tar xf -) && \
+ echo "Archive build from tag $$TAG."; \
+ else \
+ (git -C "$$DIR" archive --format=tar --prefix="$$TAG"/ "HEAD^{tree}" $(RELEASE_FILES) | \
+ tar xf -) && \
+ echo "No $$TAG tag. Archive build from HEAD."; \
+ fi && \
+ (cd "$$TAG" && "$${AUTORECONF:-autoreconf}" && rm -rf autom4te.cache) && \
+ tar cf "$$DIR/$$TAG".tar "$$TAG" && \
+ rm -f "$$DIR/$$TAG".tar.gz && \
+ gzip --best "$$DIR/$$TAG".tar && \
+ cd "$$DIR" && \
+ rm -rf "$$AUTORECONF_DIR"
+
+releasecheck: releasetar
+ @TAG=$(PROG)-`cat VERSION` && \
+ INSTALL_DIR=/tmp/install_"$$TAG"_$$$$ && \
+ DIR=`pwd` && \
+ cd /tmp && \
+ rm -rf "$$TAG" && \
+ rm -rf "$$INSTALL_DIR" && \
+ tar xf "$$DIR"/"$$TAG".tar.gz && \
+ cd "$$TAG" && \
+ echo "[$@] $$ ./configure --enable-smb --quiet --prefix=$$INSTALL_DIR" && \
+ ./configure --enable-smb --quiet --prefix="$$INSTALL_DIR" && \
+ echo '[$@] $$ make -s all check' && \
+ make -s all check >/dev/null && \
+ echo '[$@] $$ make -s install' && \
+ make -s install && \
+ cd .. && \
+ rm -rf "$$TAG" && \
+ rm -rf "$$INSTALL_DIR" && \
+ tar xf "$$DIR"/"$$TAG".tar.gz && \
+ cd "$$TAG" && \
+ mkdir build && \
+ cd build && \
+ echo '[$@] $$ cmake -DENABLE_SMB=yes [...] ..' && \
+ cmake -DENABLE_SMB=yes \
+ -DCMAKE_INSTALL_PREFIX="$$INSTALL_DIR" \
+ -DCMAKE_MESSAGE_LOG_LEVEL=NOTICE \
+ -DCMAKE_RULE_MESSAGES=OFF \
+ -DCMAKE_INSTALL_MESSAGE=NEVER \
+ .. && \
+ echo '[$@] $$ make -s all check' && \
+ make -s all check >/dev/null && \
+ echo '[$@] $$ make -s install' && \
+ make -s install && \
+ cd ../.. && \
+ rm -rf "$$TAG" && \
+ rm -rf "$$INSTALL_DIR" && \
+ echo '[$@] Done.'
+
+whitespacecheck:
+ @# trailing space(s)?
+ @if git grep -I -n ' $$' $$(git ls-files|grep -v '^tests/'); then \
+ echo 'Error: Trailing space(s).'; \
+ exit 1; \
+ fi
+ @# trailing tab(s)?
+ @# install-sh has a tab at the end of one line
+ @if git grep -I -n ' $$' $$(git ls-files|grep -vE '^(tests/|install-sh$$)'); then \
+ echo 'Error: Trailing tabs(s).'; \
+ exit 1; \
+ fi
+ @# space(s) before tab(s)?
+ @if git grep -I -n '[ ][ ]' $$(git ls-files|grep -v '^tests/'); then \
+ echo 'Error: space(s) before tab(s).'; \
+ exit 1; \
+ fi
testlist:
echo $(TEST_DIST)