1 # Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
2 # The Regents of the University of California. All rights reserved.
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that: (1) source code distributions
6 # retain the above copyright notice and this paragraph in its entirety, (2)
7 # distributions including binary code include the above copyright notice and
8 # this paragraph in its entirety in the documentation or other materials
9 # provided with the distribution, and (3) all advertising materials mentioning
10 # features or use of this software display the following acknowledgement:
11 # ``This product includes software developed by the University of California,
12 # Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
13 # the University nor the names of its contributors may be used to endorse
14 # or promote products derived from this software without specific prior
16 # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
17 # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
18 # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21 # Various configurable paths (remember to edit Makefile.in, not Makefile)
26 exec_prefix = @
exec_prefix@
27 datarootdir
= @datarootdir@
28 # Pathname of directory to install the binary
30 # Pathname of directory to install the man page
35 top_srcdir
= @top_srcdir@
39 # You shouldn't need to edit anything below here.
48 DEFS
= @DEFS@ @CPPFLAGS@ @V_DEFS@
52 FULL_CFLAGS
= $(CCOPT
) $(DEFS
) $(INCLS
) $(CFLAGS
)
61 INSTALL_PROGRAM
= @INSTALL_PROGRAM@
62 INSTALL_DATA
= @INSTALL_DATA@
65 DEPENDENCY_CFLAG
= @DEPENDENCY_CFLAG@
67 # Explicitly define compilation rule since SunOS 4's make doesn't like gcc.
68 # Also, gcc does not remove the .o before forking 'as', which can be a
69 # problem if you don't own the file but can write to the directory.
72 $(CC
) $(FULL_CFLAGS
) -c
$(srcdir)/$*.c
74 CSRC
= fptype.c tcpdump.c
190 print-openflow-1.0.c \
191 print-openflow-1.3.c \
239 print-unsupported.c \
257 LOCALSRC
= @LOCALSRC@
260 LIBNETDISSECT_OBJ
=$(LIBNETDISSECT_SRC
:.c
=.o
) ${LOCALSRC
:.c
=.o
} ${LIBOBJS}
261 LIBNETDISSECT
=libnetdissect.a
264 SRC
= $(CSRC
) $(LOCALSRC
)
266 # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot
267 # hack the extra indirection
301 netdissect-stdinc.h \
318 status-exit-codes.h \
321 timeval-operations.h \
326 /usr
/include/netinet
/if_ether.h \
327 /usr
/include/netinet
/in.h
329 TAGFILES
= $(SRC
) $(HDR
) $(TAGHDR
) $(LIBNETDISSECT_SRC
) \
330 print-smb.c smbutil.c
332 CLEANFILES
= $(PROG
) $(OBJ
) $(LIBNETDISSECT_OBJ
) \
333 print-smb.o smbutil.o instrument-functions.o
342 Makefile-devel-adds \
350 cmake
/Modules
/FindCRYPTO.cmake \
351 cmake
/Modules
/FindPCAP.cmake \
352 cmake
/Modules
/FindSMI.cmake \
353 cmake_uninstall.cmake.in \
359 doc
/README.haiku.md \
360 doc
/README.NetBSD.md \
361 doc
/README.solaris.md \
362 doc
/README.windows.md \
364 instrument-functions.c \
370 missing
/datalinks.c \
372 missing
/getopt_long.c \
373 missing
/getopt_long.h \
374 missing
/getservent.c \
375 missing
/pcap_dump_ftell.c \
388 TEST_DIST
= `git -C "$$DIR" ls-files tests | grep -v 'tests/\..*'`
390 RELEASE_FILES
= $(CSRC
) $(HDR
) $(LIBNETDISSECT_SRC
) $(EXTRA_DIST
) $(TEST_DIST
)
394 $(PROG
): $(OBJ
) @V_PCAPDEP@
$(LIBNETDISSECT
)
396 $(CC
) $(FULL_CFLAGS
) $(LDFLAGS
) -o
$@
$(OBJ
) $(LIBNETDISSECT
) $(LIBS
)
398 $(LIBNETDISSECT
): $(LIBNETDISSECT_OBJ
)
400 $(AR
) cr
$@
$(LIBNETDISSECT_OBJ
)
403 datalinks.o
: $(srcdir)/missing
/datalinks.c
404 $(CC
) $(FULL_CFLAGS
) -o
$@
-c
$(srcdir)/missing
/datalinks.c
405 dlnames.o
: $(srcdir)/missing
/dlnames.c
406 $(CC
) $(FULL_CFLAGS
) -o
$@
-c
$(srcdir)/missing
/dlnames.c
407 getservent.o
: $(srcdir)/missing
/getservent.c
408 $(CC
) $(FULL_CFLAGS
) -o
$@
-c
$(srcdir)/missing
/getservent.c
409 getopt_long.o
: $(srcdir)/missing
/getopt_long.c
410 $(CC
) $(FULL_CFLAGS
) -o
$@
-c
$(srcdir)/missing
/getopt_long.c
411 strdup.o
: $(srcdir)/missing
/strdup.c
412 $(CC
) $(FULL_CFLAGS
) -o
$@
-c
$(srcdir)/missing
/strdup.c
413 strlcat.o
: $(srcdir)/missing
/strlcat.c
414 $(CC
) $(FULL_CFLAGS
) -o
$@
-c
$(srcdir)/missing
/strlcat.c
415 strlcpy.o
: $(srcdir)/missing
/strlcpy.c
416 $(CC
) $(FULL_CFLAGS
) -o
$@
-c
$(srcdir)/missing
/strlcpy.c
417 strsep.o
: $(srcdir)/missing
/strsep.c
418 $(CC
) $(FULL_CFLAGS
) -o
$@
-c
$(srcdir)/missing
/strsep.c
419 pcap_dump_ftell.o
: $(srcdir)/missing
/pcap_dump_ftell.c
420 $(CC
) $(FULL_CFLAGS
) -o
$@
-c
$(srcdir)/missing
/pcap_dump_ftell.c
423 [ -d
$(DESTDIR
)$(bindir) ] || \
424 (mkdir
-p
$(DESTDIR
)$(bindir); chmod
755 $(DESTDIR
)$(bindir))
425 $(INSTALL_PROGRAM
) $(PROG
) $(DESTDIR
)$(bindir)/$(PROG
)
426 $(INSTALL_PROGRAM
) $(PROG
) $(DESTDIR
)$(bindir)/$(PROG
).
`cat ${srcdir}/VERSION`
427 [ -d
$(DESTDIR
)$(mandir)/man1
] || \
428 (mkdir
-p
$(DESTDIR
)$(mandir)/man1
; chmod
755 $(DESTDIR
)$(mandir)/man1
)
429 $(INSTALL_DATA
) $(PROG
).1 $(DESTDIR
)$(mandir)/man1
/$(PROG
).1
432 rm -f
$(DESTDIR
)$(bindir)/$(PROG
)
433 rm -f
$(DESTDIR
)$(bindir)/$(PROG
).
`cat ${srcdir}/VERSION`
434 rm -f
$(DESTDIR
)$(mandir)/man1
/$(PROG
).1
437 lint
-hbxn
$(SRC
) $(LIBNETDISSECT_SRC
) | \
438 grep
-v
'struct/union .* never defined' | \
439 grep
-v
'possible pointer alignment problem'
442 rm -f
$(CLEANFILES
) $(PROG
)-`cat ${srcdir}/VERSION`.
tar.gz \
443 config.h.in~ configure~ configure.ac~
446 rm -f Makefile config.cache config.log config.status \
447 config.h os-proto.h stamp-h stamp-h.in
$(PROG
).1 \
448 libnetdissect.a tests
/.failed tests
/.passed \
449 tests
/failure-outputs.txt
450 rm -rf autom4te.cache tests
/DIFF tests
/NEW
453 $(srcdir)/tests
/TESTrun
459 ctags
-wtd
$(TAGFILES
)
465 # Use git archive piped to tar to construct a subdirectory whose name
466 # is tcpdump-{release}, containing all the checked-in source files,
467 # and then run autoreconf in that directory to generate the configure
468 # script and other files from that source. Then remove autom4te.cache,
469 # construct the release tarball from that subdirectory, and remove
472 # The --format=tar is to force git archive to write a non-compressed
473 # archive, in case the platform's tar command doesn't have built-in
476 # The ^{tree} is there to force git archive not to write out the
477 # "helpful" global extended pax header with a commit ID, as not all
478 # versions of tar can handle that (Solaris tar can't, for example).
479 # (It turns HEAD, or a tag, both of which are apparently "tree-ish"es,
480 # into a tree; apparently, unlike HEAD, or a tag, which have a commit
481 # ID associated with them, the tree associated with them doesn't have
482 # a commit ID, so no commit ID is available to write, and thus
483 # git archive doesn't write one.)
486 @TAG
=$(PROG
)-`cat VERSION` && \
487 if
[ ! -d .git
]; then echo
'Not in a git clone, stop.'; exit
1; fi
&& \
488 TMPTESTFILE
=`mktemp -t tmptestfile_XXXXXXXX` && \
489 rm -f
"$$TMPTESTFILE" && \
490 AUTORECONF_DIR
=`dirname "$$TMPTESTFILE"`/"$(PROG)"_build_autoreconf_
$$$$ && \
492 rm -rf
"$$AUTORECONF_DIR" && \
493 mkdir
"$$AUTORECONF_DIR" && \
494 cd
"$$AUTORECONF_DIR" && \
495 if git
-C
"$$DIR" show-ref
--tags --quiet
--verify
-- "refs/tags/$$TAG"; then \
496 (git
-C
"$$DIR" archive
--format
=tar --prefix="$$TAG"/ "$$TAG^{tree}" $(RELEASE_FILES
) | \
498 echo
"Archive build from tag $$TAG."; \
500 (git
-C
"$$DIR" archive
--format
=tar --prefix="$$TAG"/ "HEAD^{tree}" $(RELEASE_FILES
) | \
502 echo
"No $$TAG tag. Archive build from HEAD."; \
504 (cd
"$$TAG" && "$${AUTORECONF:-autoreconf}" && rm -rf autom4te.cache
) && \
505 tar cf
"$$DIR/$$TAG".
tar "$$TAG" && \
506 rm -f
"$$DIR/$$TAG".
tar.gz
&& \
507 gzip
--best
"$$DIR/$$TAG".
tar && \
509 rm -rf
"$$AUTORECONF_DIR"
511 releasecheck
: releasetar
512 @TAG
=$(PROG
)-`cat VERSION` && \
513 INSTALL_DIR
=/tmp
/install_
"$$TAG"_
$$$$ && \
517 rm -rf install_libpcap
&& \
518 echo
"[$@] $$ git clone [...] libpcap.git" && \
519 git clone
--depth
3 --quiet https
://github.com
/the-tcpdump-group
/libpcap.git
&& \
520 echo
"[$@] $$ cd libpcap" && \
522 echo
"[$@] $$ ./autogen.sh" && \
524 echo
"[$@] $$ ./configure --quiet --prefix=/tmp/install_libpcap" && \
525 .
/configure
--quiet
--prefix=/tmp
/install_libpcap
&& \
526 echo
"[$@] $$ make -s " && \
528 echo
"[$@] $$ make -s install" && \
530 echo
"[$@] $$ cd .." && \
533 rm -rf
"$$INSTALL_DIR" && \
534 tar xf
"$$DIR"/"$$TAG".
tar.gz
&& \
536 echo
"[$@] $$ touch .devel" && \
538 echo
"[$@] $$ ./configure --enable-instrument-functions --enable-smb --quiet --prefix=$$INSTALL_DIR" && \
539 .
/configure
--enable-instrument-functions
--enable-smb
--quiet
--prefix="$$INSTALL_DIR" && \
540 echo
'[$@] $$ $(MAKE) -s all check' && \
541 $(MAKE
) -s
all check >/dev
/null
&& \
542 echo
'[$@] $$ $(MAKE) -s install' && \
543 $(MAKE
) -s
install && \
546 rm -rf
"$$INSTALL_DIR" && \
547 tar xf
"$$DIR"/"$$TAG".
tar.gz
&& \
549 echo
"[$@] $$ touch .devel" && \
553 echo
"[$@] $$ export PKG_CONFIG_PATH=/tmp/install_libpcap/lib/pkgconfig" && \
554 export PKG_CONFIG_PATH
=/tmp
/install_libpcap
/lib
/pkgconfig
&& \
555 echo
'[$@] $$ cmake -DENABLE_SMB=yes [...] ..' && \
556 cmake
-DENABLE_SMB
=yes \
557 -DCMAKE_INSTALL_PREFIX
="$$INSTALL_DIR" \
558 -DCMAKE_MESSAGE_LOG_LEVEL
=NOTICE \
559 -DCMAKE_RULE_MESSAGES
=OFF \
560 -DCMAKE_INSTALL_MESSAGE
=NEVER \
562 echo
'[$@] $$ $(MAKE) -s all check' && \
563 $(MAKE
) -s
all check >/dev
/null
&& \
564 echo
'[$@] $$ $(MAKE) -s install' && \
565 $(MAKE
) -s
install && \
568 rm -rf
"$$INSTALL_DIR" && \
569 rm -rf install_libpcap
&& \
574 @
# trailing space(s)?
575 @if git grep
-I
-n
' $$' $$(git ls-files|grep
-v
'^tests/'); then \
576 echo
'Error: Trailing space(s).'; \
580 @if git grep
-I
-n
' $$' $$(git ls-files|grep
-v
'^tests/'); then \
581 echo
'Error: Trailing tabs(s).'; \
584 @
# space(s) before tab(s)?
585 @if git grep
-I
-n
'[ ][ ]' $$(git ls-files|grep
-v
'^tests/'); then \
586 echo
'Error: space(s) before tab(s).'; \
594 @echo
$(MKDEP
) -c
$(CC
) -m
"$(DEPENDENCY_CFLAG)" -s
"$(srcdir)" $(DEFS
) $(INCLS
) $(SRC
) '<libnetdissect src list>'
595 @
$(MKDEP
) -c
$(CC
) -m
"$(DEPENDENCY_CFLAG)" -s
"$(srcdir)" $(DEFS
) $(INCLS
) $(SRC
) $(LIBNETDISSECT_SRC
)
598 shellcheck
-f gcc
-e SC2006 autogen.sh build.sh build_matrix.sh build_common.sh mkdep .ci-coverity-scan-build.sh