Tweak security/sshblock version 1.0_1
[dports.git] / security / clamav / Makefile
1 # Created by: markun@onohara.to
2 # $FreeBSD$
3
4 PORTNAME=       clamav
5 PORTVERSION=    0.98.4
6 PORTREVISION=   2
7 CATEGORIES=     security
8 MASTER_SITES=   SF
9
10 MAINTAINER=     garga@FreeBSD.org
11 COMMENT=        Command line virus scanner written entirely in C
12
13 LICENSE=        GPLv2
14
15 LIB_DEPENDS=    libltdl.so:${PORTSDIR}/devel/libltdl \
16                 libcurl.so:${PORTSDIR}/ftp/curl
17
18 OPTIONS_DEFINE= ARC ARJ LHA UNZOO UNRAR LLVM TESTS MILTER LDAP ICONV STDERR \
19                 EXPERIMENTAL DOCS IPV6 DMG_XAR
20
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
32
33 OPTIONS_DEFAULT=        ARC ARJ LHA UNZOO UNRAR LLVM DOCS IPV6 DMG_XAR
34
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
45 ICONV_USES=             iconv
46 EXPERIMENTAL_CONFIGURE_ENABLE=  experimental
47 IPV6_CONFIGURE_ENABLE=  ipv6
48 DMG_XAR_CONFIGURE_ENABLE=       xml
49 DMG_XAR_USE=            GNOME=libxml2
50
51 GNU_CONFIGURE=  yes
52 USE_LDCONFIG=   yes
53 USES=           gmake libtool
54 INSTALL_TARGET= install-strip
55 USE_RC_SUBR=    clamav-clamd clamav-freshclam
56
57 PORTDOCS=       *
58
59 DBDIR=          /var/db/clamav
60 LOGDIR=         /var/log/clamav
61 RUNDIR=         /var/run/clamav
62 PLIST_SUB+=     DBDIR=${DBDIR} \
63                 LOGDIR=${LOGDIR} \
64                 RUNDIR=${RUNDIR} \
65                 CLAMAVUSER=${CLAMAVUSER} \
66                 CLAMAVGROUP=${CLAMAVGROUP}
67 PY_NO_THREAD=   ${WRKDIR}/.python-has-no-threads
68 OPTIONS_SUB=    yes
69
70 CONFIGURE_ARGS= --libdir=${PREFIX}/lib \
71                 --with-dbdir=${DBDIR} \
72                 --with-zlib=/usr \
73                 --disable-clamuko \
74                 --disable-clamav \
75                 --enable-bigstack \
76                 --enable-readdir_r \
77                 --enable-gethostbyname_r \
78                 --disable-dependency-tracking \
79                 --enable-clamdtop
80 CPPFLAGS+=      -I${LOCALBASE}/include \
81                 ${PTHREAD_CFLAGS}
82 LDFLAGS+=       -L${LOCALBASE}/lib \
83                 ${PTHREAD_LIBS}
84
85 # This port has a problem with -pthread,
86 # force to use -lthr until it's not fixed.
87 PTHREAD_LIBS=   -lthr
88
89 CONFLICTS?=     clamav-milter-[0-9]*
90
91 CLAMAVUSER?=    clamav
92 CLAMAVGROUP?=   clamav
93
94 CLAMAV_CLAMD_SOCKET?=   ${RUNDIR}/clamd.sock
95 CLAMAV_MILTER_SOCKET?=  ${RUNDIR}/clmilter.sock
96
97 SUB_FILES=      pkg-deinstall
98 SUB_LIST+=      DBDIR=${DBDIR} \
99                 LOGDIR=${LOGDIR} \
100                 RUNDIR=${RUNDIR} \
101                 CHMOD=${CHMOD} \
102                 CHOWN=${CHOWN} \
103                 CLAMAVUSER=${CLAMAVUSER} \
104                 CLAMAVGROUP=${CLAMAVGROUP} \
105                 CLAMAV_CLAMD_SOCKET=${CLAMAV_CLAMD_SOCKET} \
106                 CLAMAV_MILTER_SOCKET=${CLAMAV_MILTER_SOCKET}
107
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}|'
121
122 PLIST_SUB+=     CLAMAVUSER=${CLAMAVUSER} \
123                 CLAMAVGROUP=${CLAMAVGROUP}
124
125 .include <bsd.port.options.mk>
126
127 .if ${CLAMAVUSER} == "clamav"
128 USERS=  clamav
129 .endif
130
131 .if ${CLAMAVGROUP} == "clamav"
132 GROUPS= clamav mail
133 .endif
134
135 .if ${PORT_OPTIONS:MLLVM} && ( ${ARCH} == "i386" || ${ARCH} == "x86_64" )
136 CONFIGURE_ARGS+=--enable-llvm
137 . if ${PORT_OPTIONS:MTESTS}
138 USES+=          python:build
139 . endif
140 .else
141 CONFIGURE_ARGS+=--disable-llvm
142 .endif
143
144 .if ${PORT_OPTIONS:MMILTER}
145 USE_RC_SUBR+=   clamav-milter
146 . if ${PORT_OPTIONS:MLDAP} && exists(${LOCALBASE}/lib/libldap.so)
147 USE_OPENLDAP=   yes
148 LDFLAGS+=       -lldap
149 . endif
150
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
154 . else
155 CONFIGURE_ARGS+=--with-sendmail=/usr/sbin/sendmail
156 . endif
157 .endif
158
159 .if ${PORT_OPTIONS:MSTDERR}
160 EXTRA_PATCHES+=         ${FILESDIR}/extra-patch-shared_output.c
161 .endif
162
163 .include <bsd.port.pre.mk>
164
165 .if ${ARCH} == "i386"
166 CFLAGS+=        -march=i486
167 .endif
168
169 post-patch:
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
180
181 .if ${PORT_OPTIONS:MLLVM} && ${PORT_OPTIONS:MTESTS}
182 pre-configure:
183         @if ! ${PYTHON_CMD} -c "import thread" >/dev/null 2>&1; then \
184                 ${ECHO_MSG} ""; \
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} "==========================================================================="; \
189                 ${ECHO_MSG} ""; \
190                 ${TOUCH} ${PY_NO_THREAD}; \
191         fi
192 .endif
193
194 .if ${PORT_OPTIONS:MTESTS}
195 post-build:
196         @if [ ! -f "${PY_NO_THREAD}" ]; then \
197                 ${MAKE_CMD} -C ${WRKSRC} check; \
198         fi
199 .endif
200
201 post-install:
202         ${INSTALL_DATA} ${WRKSRC}/clamav-config.h ${STAGEDIR}${PREFIX}/include
203         @${MKDIR} ${STAGEDIR}${DOCSDIR}/html \
204                   ${STAGEDIR}${DBDIR} \
205                   ${STAGEDIR}${LOGDIR} \
206                   ${STAGEDIR}${RUNDIR}
207         ${INSTALL_DATA} ${WRKSRC}/NEWS ${WRKSRC}/ChangeLog ${STAGEDIR}${DOCSDIR}
208         ${INSTALL_DATA} ${WRKSRC}/docs/html/* ${STAGEDIR}${DOCSDIR}/html
209
210 .include <bsd.port.post.mk>