Home | History | Annotate | Line # | Download | only in lib
      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