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