Tweak textproc/fixrtf version 0.1.20060303_3
[dports.git] / security / openssl / Makefile
1 # Created by: Dirk Froemberg <dirk@FreeBSD.org>
2 # $FreeBSD$
3
4 PORTNAME=       openssl
5 PORTVERSION=    1.0.2
6 DISTVERSIONSUFFIX=      a
7 PORTREVISION=   1
8 CATEGORIES=     security devel
9 MASTER_SITES=   http://www.openssl.org/%SUBDIR%/ \
10                 ftp://ftp.openssl.org/%SUBDIR%/ \
11                 ftp://ftp.cert.dfn.de/pub/tools/net/openssl/%SUBDIR%/
12 MASTER_SITE_SUBDIR=     source
13 DIST_SUBDIR=    ${DISTNAME}
14
15 MAINTAINER=     dinoex@FreeBSD.org
16 COMMENT=        SSL and crypto library
17
18 .ifdef USE_OPENSSL
19 .error You have `USE_OPENSSL' variable defined either in environment or in make(1) arguments. Please undefine and try again.
20 .endif
21
22 CONFLICTS?=     libressl-*
23
24 OPTIONS_DEFINE= SHARED THREADS I386 SSE2 ASM PADLOCK ZLIB GMP SCTP SSL2 SSL3 RFC3779 MD2 RC5 EXPCIPHERS DOCS
25 OPTIONS_DEFAULT=SHARED THREADS SSE2 SCTP SSL2 SSL3 MD2
26 .for a in amd64 ia64
27 OPTIONS_DEFINE_${a}=    EC
28 OPTIONS_DEFAULT_${a}=   EC
29 .endfor
30 TARGET_ARCH?=   ${MACHINE_ARCH}
31 .if ${TARGET_ARCH} == "mips64el"
32 OPTIONS_DEFINE_mips=    EC
33 OPTIONS_DEFAULT_mips=   EC
34 .endif
35 NO_OPTIONS_SORT=yes
36 OPTIONS_SUB=    yes
37 I386_DESC?=     Optimize for i386 (instead of i486+)
38 SSE2_DESC?=     runtime SSE2 detection
39 ASM_DESC?=      optimized Assembler code
40 PADLOCK_DESC?=  VIA Padlock support
41 SHARED_DESC?=   build of shared libs
42 ZLIB_DESC?=     zlib compression support
43 GMP_DESC?=      gmp support (LGPLv3)
44 SCTP_DESC?=     SCTP protocol support
45 SSL2_DESC?=     SSLv2 protocol support
46 SSL3_DESC?=     SSLv3 protocol support
47 RFC3779_DESC?=  RFC3779 support (BGP)
48 MD2_DESC?=      MD2 hash (obsolete)
49 RC5_DESC?=      RC5 cipher (patented)
50 EXPCIPHERS_DESC?=       Include experimental ciphers
51 EC_DESC?=       Optimize NIST elliptic curves
52
53 GMP_LIB_DEPENDS=        libgmp.so:${PORTSDIR}/math/gmp
54
55 MAKE_JOBS_UNSAFE=       yes
56 NOPRECIOUSMAKEVARS=     Too many _MLINKS for fetch
57 NOPRECIOUSSOFTMAKEVARS= Too many _MLINKS for fetch
58
59 USES=           perl5 cpe
60 USE_PERL5=      build
61 MAKE_ARGS+=     WHOLE_ARCHIVE_FLAG=--whole-archive
62 MAKE_ENV+=      LIBRPATH="${PREFIX}/lib" GREP_OPTIONS=
63 SUB_FILES=      pkg-message
64
65 CPE_VERSION=    ${PORTVERSION}${DISTVERSIONSUFFIX}
66
67 .include <bsd.port.pre.mk>
68
69 .if ${PREFIX} == /usr
70 IGNORE= OpenSSL can not be installed over the base version
71 .endif
72
73 OPENSSLDIR?=    ${PREFIX}/openssl
74 PLIST_SUB+=     OPENSSLDIR=${OPENSSLDIR:S=^${PREFIX}/==}
75
76 OPENSSL_BASE_SONAME!=   readlink ${DESTDIR}/usr/lib/libcrypto.so || true
77 OPENSSL_SHLIBVER_BASE=  ${OPENSSL_BASE_SONAME:E}
78 OPENSSL_BASE_SOPATH=    ${OPENSSL_BASE_SONAME:H}
79 OPENSSL_SHLIBVER?=      8
80
81 .if ${PORT_OPTIONS:MI386}
82 .if ${ARCH} == "i386"
83 EXTRACONFIGURE+=        386
84 .endif
85 .endif
86
87 .if empty(PORT_OPTIONS:MSSE2)
88 # disable runtime SSE2 detection
89 EXTRACONFIGURE+=        no-sse2
90 .endif
91
92 .if ${PORT_OPTIONS:MASM}
93 EXTRACONFIGURE+=        enable-asm
94 .else
95 EXTRACONFIGURE+=        no-asm
96 .endif
97
98 .if ${PORT_OPTIONS:MTHREADS}
99 EXTRACONFIGURE+=        threads
100 .else
101 EXTRACONFIGURE+=        no-threads
102 .endif
103
104 .if ${PORT_OPTIONS:MSHARED}
105 EXTRACONFIGURE+=        shared
106 MAKE_ENV+=      SHLIBVER=${OPENSSL_SHLIBVER}
107 PLIST_SUB+=     SHLIBVER=${OPENSSL_SHLIBVER}
108 USE_LDCONFIG=   yes
109 .endif
110
111 .if ${PORT_OPTIONS:MZLIB}
112 EXTRACONFIGURE+=        zlib zlib-dynamic
113 .else
114 EXTRACONFIGURE+=        no-zlib no-zlib-dynamic
115 .endif
116
117 .if ${PORT_OPTIONS:MSCTP}
118 EXTRACONFIGURE+=        sctp
119 .else
120 EXTRACONFIGURE+=        no-sctp
121 .endif
122
123 .if ${PORT_OPTIONS:MSSL2}
124 EXTRACONFIGURE+=        enable-ssl2
125 .else
126 EXTRACONFIGURE+=        no-ssl2
127 .endif
128
129 .if ${PORT_OPTIONS:MSSL3}
130 EXTRACONFIGURE+=        enable-ssl3
131 .else
132 EXTRACONFIGURE+=        no-ssl3
133 .endif
134
135 .if ${PORT_OPTIONS:MMD2}
136 EXTRACONFIGURE+=        enable-md2
137 .else
138 EXTRACONFIGURE+=        no-md2
139 .endif
140
141 .if ${PORT_OPTIONS:MRC5}
142 EXTRACONFIGURE+=        enable-rc5
143 .else
144 EXTRACONFIGURE+=        no-rc5
145 .endif
146
147 .if ${PORT_OPTIONS:MPADLOCK}
148 PATCH_DIST_STRIP=       -p1
149 PATCH_SITES+=   http://git.alpinelinux.org/cgit/aports/plain/main/openssl/:padlock
150 PATCHFILES+=    0009-crypto-hmac-support-EVP_MD_CTX_FLAG_ONESHOT-and-set-.patch:padlock \
151                 0010-backport-changes-from-upstream-padlock-module.patch:padlock \
152                 0011-engines-e_padlock-implement-sha1-sha224-sha256-accel.patch:padlock \
153                 0012-crypto-engine-autoload-padlock-dynamic-engine.patch:padlock
154 .endif
155
156 .if ${PORT_OPTIONS:MGMP}
157 EXTRACONFIGURE+=        enable-gmp -I${LOCALBASE}/include
158 IGNORE= GMP is LGPLv3 and can not be linked
159 .else
160 EXTRACONFIGURE+=        no-gmp
161 .endif
162
163 .if ${PORT_OPTIONS:MRFC3779}
164 EXTRACONFIGURE+=        enable-rfc3779
165 .else
166 EXTRACONFIGURE+=        no-rfc3779
167 .endif
168
169 .if ${PORT_OPTIONS:MEC}
170 EXTRACONFIGURE+=        enable-ec_nistp_64_gcc_128
171 .else
172 EXTRACONFIGURE+=        no-ec_nistp_64_gcc_128
173 .endif
174
175 .if ${OPENSSL_SHLIBVER_BASE} > ${OPENSSL_SHLIBVER}
176 pre-everything::
177         @${ECHO_CMD} "#"
178         @${ECHO_CMD} "# this ports conflicts with your base system"
179         @${ECHO_CMD} "# please undefine OPENSSL_OVERWRITE_PORT"
180         @${ECHO_CMD} "# and use WITH_OPENSSL_BASE=yes instead."
181         @${ECHO_CMD} "#"
182         @${FALSE}
183
184 .endif
185
186 post-patch:
187         ${REINPLACE_CMD} -e 's|m4 -B 8192|m4|g' \
188                 ${WRKSRC}/crypto/des/Makefile
189         ${REINPLACE_CMD} -e 's|SHLIB_VERSION_NUMBER "1.0.0"|SHLIB_VERSION_NUMBER "${OPENSSL_SHLIBVER}"|' \
190                 ${WRKSRC}/crypto/opensslv.h
191         ${REINPLACE_CMD} -e 's|ERR_R_MALLOC_ERROR|ERR_R_MALLOC_FAILURE|' \
192                 ${WRKSRC}/crypto/bio/bss_dgram.c
193 .if ${PORT_OPTIONS:MEXPCIPHERS}
194         ${REINPLACE_CMD} -e 's|TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES     0|TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES  1|' \
195                 ${WRKSRC}/ssl/tls1.h
196 .endif
197
198 do-configure:
199         ${REINPLACE_CMD} -e "s|options 386|options|" \
200                 ${WRKSRC}/config
201 .if ${PORT_OPTIONS:MTHREADS}
202         cd ${WRKSRC} \
203         && ${SETENV} CC="${CC}" FREEBSDCC="${CC}" CFLAGS="${CFLAGS}" PERL="${PERL}" \
204         ./config --prefix=${PREFIX} --openssldir=${OPENSSLDIR} \
205                 --install_prefix=${STAGEDIR} \
206                 -L${PREFIX}/lib ${EXTRACONFIGURE}
207 .else
208         cd ${WRKSRC} \
209         && ${SETENV} CC="${CC}" FREEBSDCC="${CC}" CFLAGS="${CFLAGS}" PERL="${PERL}" \
210         ./config --prefix=${PREFIX} --openssldir=${OPENSSLDIR} \
211                 --install_prefix=${STAGEDIR} \
212                 -L${PREFIX}/lib ${EXTRACONFIGURE}
213 .endif
214         ${REINPLACE_CMD} \
215                 -e 's|^MANDIR=.*$$|MANDIR=$$(PREFIX)/man|' \
216                 -e 's|$$(LIBDIR)/pkgconfig|libdata/pkgconfig|g' \
217                 -e 's|LIBVERSION=[^ ]* |LIBVERSION=$(OPENSSL_SHLIBVER) |' \
218                 ${WRKSRC}/Makefile
219
220 post-install:
221 .if ${PORT_OPTIONS:MSHARED}
222 .for i in libcrypto libssl
223         ${INSTALL_DATA} ${WRKSRC}/$i.so.${OPENSSL_SHLIBVER} ${STAGEDIR}${PREFIX}/lib
224         ${LN} -sf $i.so.${OPENSSL_SHLIBVER} ${STAGEDIR}${PREFIX}/lib/$i.so
225 .endfor
226 .endif
227 .if ${PORT_OPTIONS:MDOCS}
228         ${MKDIR} ${STAGEDIR}${DOCSDIR}
229         ${INSTALL_DATA} ${WRKSRC}/doc/openssl.txt ${STAGEDIR}${DOCSDIR}/
230 .endif
231         ${SED} -e 's|/usr/local|${PREFIX}|g' ${PKGMESSAGE}
232
233 test: build
234         cd ${WRKSRC} && ${MAKE} test
235
236 regression-test:        test
237
238 .include <bsd.port.post.mk>