1# $NetBSD: Makefile,v 1.34 2023/08/17 16:19:05 christos Exp $	
2
3USE_SHLIBDIR=yes
4.include <bsd.init.mk>
5USE_FORT?= yes	# network protocol library
6
7CPPFLAGS+= -DPCAP_DONT_INCLUDE_PCAP_BPF_H -DHAVE_CONFIG_H -DENABLE_REMOTE
8CPPFLAGS+= -DPCAP_SUPPORT_RPCAP
9CPPFLAGS+= -I${.OBJDIR}
10
11.SUFFIXES: .3 .3pcap
12
13.3pcap.3:
14	@rm -f ${.TARGET}
15	${TOOL_SED} -e 's,@MAN_FILE_FORMATS@,5,g' \
16	    -e 's,@MAN_MISC_INFO@,7,g' \
17	    -e 's,3PCAP,3,g' < ${.ALLSRC} > ${.TARGET}
18
19
20# Search first in the kernel for bpf_filter.c
21.PATH:	${NETBSDSRCDIR}/sys/net
22.PATH:	${SRCDIR}
23
24LIB=	pcap
25MAN3= \
26pcap_activate.3pcap \
27pcap_breakloop.3pcap \
28pcap_can_set_rfmon.3pcap \
29pcap_close.3pcap \
30pcap_create.3pcap \
31pcap_datalink_name_to_val.3pcap \
32pcap_datalink_val_to_name.3pcap \
33pcap_dump.3pcap \
34pcap_dump_close.3pcap \
35pcap_dump_file.3pcap \
36pcap_dump_flush.3pcap \
37pcap_dump_ftell.3pcap \
38pcap_file.3pcap \
39pcap_fileno.3pcap \
40pcap_findalldevs.3pcap \
41pcap_freecode.3pcap \
42pcap_get_required_select_timeout.3pcap \
43pcap_get_selectable_fd.3pcap \
44pcap_geterr.3pcap \
45pcap_inject.3pcap \
46pcap_is_swapped.3pcap \
47pcap_lib_version.3pcap \
48pcap_lookupdev.3pcap \
49pcap_lookupnet.3pcap \
50pcap_loop.3pcap \
51pcap_major_version.3pcap \
52pcap_next_ex.3pcap \
53pcap_offline_filter.3pcap \
54pcap_open_live.3pcap \
55pcap_set_buffer_size.3pcap \
56pcap_set_datalink.3pcap \
57pcap_set_promisc.3pcap \
58pcap_set_rfmon.3pcap \
59pcap_set_snaplen.3pcap \
60pcap_set_timeout.3pcap \
61pcap_setdirection.3pcap \
62pcap_setfilter.3pcap \
63pcap_setnonblock.3pcap \
64pcap_snapshot.3pcap \
65pcap_stats.3pcap \
66pcap_statustostr.3pcap \
67pcap_strerror.3pcap \
68pcap_tstamp_type_name_to_val.3pcap \
69pcap_tstamp_type_val_to_name.3pcap \
70${MAN3IN:.in=}
71
72MAN3IN= \
73pcap.3pcap.in \
74pcap_compile.3pcap.in \
75pcap_datalink.3pcap.in \
76pcap_dump_open.3pcap.in \
77pcap_get_tstamp_precision.3pcap.in \
78pcap_list_datalinks.3pcap.in \
79pcap_list_tstamp_types.3pcap.in \
80pcap_open_dead.3pcap.in \
81pcap_open_offline.3pcap.in \
82pcap_set_immediate_mode.3pcap.in \
83pcap_set_tstamp_precision.3pcap.in \
84pcap_set_tstamp_type.3pcap.in
85
86MANFILEIN= \
87pcap-savefile.manfile.in
88
89MANMISCIN= \
90pcap-filter.manmisc.in \
91pcap-linktype.manmisc.in \
92pcap-tstamp.manmisc.in 
93
94
95CLEANFILES+= ${MAN}
96
97MAN=	${MAN3:S/3pcap/3/g} ${MAN3IN:S/3pcap.in/3/g} \
98	${MANMISCIN:S/manmisc.in/7/g} ${MANFILEIN:S/manfile.in/5/g}
99WARNS?=		4
100
101.for i in ${MAN3IN}
102${i:S/pcap.in//}: ${i} __sed
103.endfor
104
105.for i in ${MANMISCIN}
106${i:S/manmisc.in/7/}: ${i} __sed
107.endfor
108
109.for i in ${MANFILEIN}
110${i:S/manfile.in/5/}: ${i} __sed
111.endfor
112
113CPPFLAGS+=	-I${.CURDIR}/../include -I${.CURDIR} -I${SRCDIR}
114CPPFLAGS+=	-DYYBISON -DYYDEBUG
115LPREFIX=	pcap_
116LFLAGS+=	--header-file=scanner.h
117YPREFIX=	pcap_
118YHEADER=	1
119
120CPPFLAGS+=	-DHAVE_CONFIG_H
121#CPPFLAGS+=	-D_U_="__attribute__((__unused__))"
122
123.if (${USE_INET6} != "no")
124CPPFLAGS+=	-DINET6
125.endif
126
127SRCS= \
128bpf_dump.c \
129bpf_filter.c \
130bpf_image.c \
131etherent.c \
132fad-getad.c \
133fmtutils.c \
134gencode.c \
135grammar.y \
136nametoaddr.c \
137optimize.c \
138pcap-bpf.c \
139pcap-common.c \
140pcap-new.c \
141pcap-rpcap.c \
142pcap-rpcap-unix.c \
143pcap-usb-linux-common.c \
144pcap-util.c \
145pcap.c \
146rpcap-protocol.c \
147savefile.c \
148scanner.l \
149sf-pcap.c \
150sf-pcapng.c \
151sockutils.c
152
153
154INCS=		pcap/pcap.h pcap/namedb.h pcap/funcattrs.h \
155	pcap/pcap-inttypes.h pcap/compiler-tests.h pcap/socket.h
156INCSDIR=	/usr/include
157INCSYMLINKS+=   ../net/bpf.h ${INCSDIR}/pcap/bpf.h
158INCSYMLINKS+=	pcap/pcap.h ${INCSDIR}/pcap.h
159INCSYMLINKS+=	pcap/namedb.h ${INCSDIR}/pcap-namedb.h
160
161scanner.d scanner.o: tokdefs.h
162
163tokdefs.h: grammar.h
164	cp $? $@
165
166CLEANFILES+=	tokdefs.h scanner.h grammar.y
167
168COPTS.bpf_image.c+=	-Wno-format-nonliteral
169
170COPTS.gencode.c+=	${CC_WNO_IMPLICIT_FALLTHROUGH}
171COPTS.pcap.c+=		${CC_WNO_FORMAT_TRUNCATION}
172COPTS.pcap-bpf.c+=	${CC_WNO_STRINGOP_TRUNCATION}
173COPTS.pcap-new.c+=	${CC_WNO_FORMAT_TRUNCATION}
174COPTS.pcap-rpcap.c+=	${CC_WNO_FORMAT_TRUNCATION}
175
176CWARNFLAGS.clang+=	-Wno-format-extra-args \
177			-Wno-unneeded-internal-declaration
178
179grammar.y: grammar.y.in
180	${_MKTARGET_CREATE}
181	${TOOL_SED} -e 's/@REENTRANT_PARSER@/%pure-parser/g' < ${.ALLSRC} > ${.TARGET}
182
183.if ${USE_OPENSSL:Uno} == "yes"
184CPPFLAGS  +=	-DHAVE_OPENSSL
185SRCS	  +=	sslutils.c
186LIBDPLIBS +=	ssl ${OPENSSLDIR}/lib/libssl \
187	    	crypto ${OPENSSLDIR}/lib/libcrypto
188.endif
189
190.include <bsd.lib.mk>
191