1 # Created by: markun@onohara.to
10 MAINTAINER= garga@FreeBSD.org
11 COMMENT= Command line virus scanner written entirely in C
15 LIB_DEPENDS= libltdl.so:${PORTSDIR}/devel/libltdl \
16 libcurl.so:${PORTSDIR}/ftp/curl
18 OPTIONS_DEFINE= ARC ARJ LHA UNZOO UNRAR LLVM TESTS MILTER LDAP ICONV STDERR \
19 EXPERIMENTAL DOCS IPV6 DMG_XAR
21 ARC_DESC= Enable arch archives support
22 ARJ_DESC= Enable arj archives support
23 LHA_DESC= Enable lha archives support
24 UNZOO_DESC= Enable zoo archives support
25 UNRAR_DESC= Enable rar archives support
26 LLVM_DESC= Enable JIT Bytecode compiler (bundled LLVM)
27 TESTS_DESC= Run compile-time tests (req. python)
28 MILTER_DESC= Compile the milter interface
29 STDERR_DESC= Print logs to stderr instead of stdout
30 EXPERIMENTAL_DESC= Build experimental code
31 DMG_XAR_DESC= Enable DMG and XAR archives support
33 OPTIONS_DEFAULT= ARC ARJ LHA UNZOO UNRAR LLVM DOCS IPV6 DMG_XAR
35 ARC_RUN_DEPENDS= arc:${PORTSDIR}/archivers/arc
36 ARJ_RUN_DEPENDS= arj:${PORTSDIR}/archivers/arj
37 LHA_RUN_DEPENDS= lha:${PORTSDIR}/archivers/lha
38 UNZOO_RUN_DEPENDS= unzoo:${PORTSDIR}/archivers/unzoo
39 UNRAR_CONFIGURE_ENABLE= unrar
40 MILTER_CONFIGURE_ENABLE=milter
41 TESTS_CONFIGURE_ENABLE= check
42 TESTS_BUILD_DEPENDS= ${LOCALBASE}/include/check.h:${PORTSDIR}/devel/libcheck
43 ICONV_CONFIGURE_ON= --with-iconv
44 ICONV_CONFIGURE_OFF= --without-iconv
46 EXPERIMENTAL_CONFIGURE_ENABLE= experimental
47 IPV6_CONFIGURE_ENABLE= ipv6
48 DMG_XAR_CONFIGURE_ENABLE= xml
49 DMG_XAR_USE= GNOME=libxml2
54 INSTALL_TARGET= install-strip
55 USE_RC_SUBR= clamav-clamd clamav-freshclam
60 LOGDIR= /var/log/clamav
61 RUNDIR= /var/run/clamav
62 PLIST_SUB+= DBDIR=${DBDIR} \
65 CLAMAVUSER=${CLAMAVUSER} \
66 CLAMAVGROUP=${CLAMAVGROUP}
67 PY_NO_THREAD= ${WRKDIR}/.python-has-no-threads
70 CONFIGURE_ARGS= --libdir=${PREFIX}/lib \
71 --with-dbdir=${DBDIR} \
77 --enable-gethostbyname_r \
78 --disable-dependency-tracking \
80 CPPFLAGS+= -I${LOCALBASE}/include \
82 LDFLAGS+= -L${LOCALBASE}/lib \
85 # This port has a problem with -pthread,
86 # force to use -lthr until it's not fixed.
89 CONFLICTS?= clamav-milter-[0-9]*
94 CLAMAV_CLAMD_SOCKET?= ${RUNDIR}/clamd.sock
95 CLAMAV_MILTER_SOCKET?= ${RUNDIR}/clmilter.sock
97 SUB_FILES= pkg-deinstall
98 SUB_LIST+= DBDIR=${DBDIR} \
103 CLAMAVUSER=${CLAMAVUSER} \
104 CLAMAVGROUP=${CLAMAVGROUP} \
105 CLAMAV_CLAMD_SOCKET=${CLAMAV_CLAMD_SOCKET} \
106 CLAMAV_MILTER_SOCKET=${CLAMAV_MILTER_SOCKET}
108 SED_CONF= -E -e 's|^\#?(Example)$$|\#\1|' \
109 -e 's|^\#?((Update)?LogFile) .*/([a-z]+\.log)$$|\1 ${LOGDIR}/\3|' \
110 -e 's|^\#?(PidFile) .*/([a-z\-]+\.pid)$$|\1 ${RUNDIR}/\2|' \
111 -e 's|^\#?(LocalSocket) .*$$|\1 ${CLAMAV_CLAMD_SOCKET}|' \
112 -e 's|^\#?(User) .*$$|\1 ${CLAMAVUSER}|' \
113 -e 's|^\#?(AllowSupplementaryGroups).*$$|\1 yes|' \
114 -e 's|^\#?(ScanMail).*$$|\1 yes|' \
115 -e 's|^\#?(DatabaseDirectory) .*$$|\1 ${DBDIR}|' \
116 -e 's|^\#?(DatabaseOwner) .*$$|\1 ${CLAMAVUSER}|' \
117 -e 's|^\#?(FixStaleSocket).*$$|\1 yes|' \
118 -e 's|^\#?(NotifyClamd) .*$$|\1 ${PREFIX}/etc/clamd.conf|' \
119 -e 's|^\#?(MilterSocket) */tmp.*$$|\1 ${CLAMAV_MILTER_SOCKET}|' \
120 -e 's|^\#?(ClamdSocket).*$$|\1 unix:${CLAMAV_CLAMD_SOCKET}|'
122 PLIST_SUB+= CLAMAVUSER=${CLAMAVUSER} \
123 CLAMAVGROUP=${CLAMAVGROUP}
125 .include <bsd.port.options.mk>
127 .if ${CLAMAVUSER} == "clamav"
131 .if ${CLAMAVGROUP} == "clamav"
135 .if ${PORT_OPTIONS:MLLVM} && ( ${ARCH} == "i386" || ${ARCH} == "x86_64" )
136 CONFIGURE_ARGS+=--enable-llvm
137 . if ${PORT_OPTIONS:MTESTS}
141 CONFIGURE_ARGS+=--disable-llvm
144 .if ${PORT_OPTIONS:MMILTER}
145 USE_RC_SUBR+= clamav-milter
146 . if ${PORT_OPTIONS:MLDAP} && exists(${LOCALBASE}/lib/libldap.so)
151 . if !exists(/usr/lib/libmilter.a) || exists(${LOCALBASE}/lib/libmilter.a)
152 BUILD_DEPENDS+= ${LOCALBASE}/lib/libmilter.a:${PORTSDIR}/mail/sendmail
153 CONFIGURE_ARGS+=--with-sendmail=${LOCALBASE}/sbin/sendmail
155 CONFIGURE_ARGS+=--with-sendmail=/usr/sbin/sendmail
159 .if ${PORT_OPTIONS:MSTDERR}
160 EXTRA_PATCHES+= ${FILESDIR}/extra-patch-shared_output.c
163 .include <bsd.port.pre.mk>
165 .if ${ARCH} == "i386"
170 @${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%|${PTHREAD_LIBS}|g' \
171 ${WRKSRC}/${CONFIGURE_SCRIPT}
172 @${REINPLACE_CMD} -e 's,^\(pkgconfigdir = \).*$$,\1$$\(prefix\)/libdata/pkgconfig,g' \
173 ${WRKSRC}/Makefile.in
174 @${REINPLACE_CMD} ${SED_CONF} \
175 ${WRKSRC}/etc/clamd.conf.sample \
176 ${WRKSRC}/etc/freshclam.conf.sample \
177 ${WRKSRC}/etc/clamav-milter.conf.sample
178 @${REINPLACE_CMD} -e 's|0x100000000|0x100000000ULL|g' \
179 ${WRKSRC}/libclamunrar/unrar.c
181 .if ${PORT_OPTIONS:MLLVM} && ${PORT_OPTIONS:MTESTS}
183 @if ! ${PYTHON_CMD} -c "import thread" >/dev/null 2>&1; then \
185 ${ECHO_MSG} "==========================================================================="; \
186 ${ECHO_MSG} "= Unit tests REQUIRES python built with thread support, and yours is not. ="; \
187 ${ECHO_MSG} "= It will not be called during this build ="; \
188 ${ECHO_MSG} "==========================================================================="; \
190 ${TOUCH} ${PY_NO_THREAD}; \
194 .if ${PORT_OPTIONS:MTESTS}
196 @if [ ! -f "${PY_NO_THREAD}" ]; then \
197 ${MAKE_CMD} -C ${WRKSRC} check; \
202 ${INSTALL_DATA} ${WRKSRC}/clamav-config.h ${STAGEDIR}${PREFIX}/include
203 @${MKDIR} ${STAGEDIR}${DOCSDIR}/html \
204 ${STAGEDIR}${DBDIR} \
205 ${STAGEDIR}${LOGDIR} \
207 ${INSTALL_DATA} ${WRKSRC}/NEWS ${WRKSRC}/ChangeLog ${STAGEDIR}${DOCSDIR}
208 ${INSTALL_DATA} ${WRKSRC}/docs/html/* ${STAGEDIR}${DOCSDIR}/html
210 .include <bsd.port.post.mk>