xref: /freebsd/secure/lib/libcrypto/Makefile.inc (revision 1c05a6ea6b849ff95e539c31adea887c644a6a01)
1# $FreeBSD$
2
3.include <bsd.own.mk>
4
5# OpenSSL version used for manual page generation
6OPENSSL_VER=	1.0.2l
7OPENSSL_DATE=	2017-05-25
8
9LCRYPTO_SRC=	${SRCTOP}/crypto/openssl
10LCRYPTO_DOC=	${LCRYPTO_SRC}/doc
11
12CFLAGS+=	-I${LCRYPTO_SRC}
13CFLAGS+=	-DTERMIOS -DANSI_SOURCE
14CFLAGS+=	-DOPENSSL_THREADS -DDSO_DLFCN -DHAVE_DLFCN_H
15
16.include <bsd.endian.mk>
17
18.if ${TARGET_ENDIANNESS} == 1234
19CFLAGS+=-DL_ENDIAN
20.elif ${TARGET_ENDIANNESS} == 4321
21CFLAGS+=-DB_ENDIAN
22.endif
23
24.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "arm"
25ASM_${MACHINE_CPUARCH}=
26.elif ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
27_ASM_AVX!=	{ \
28		    echo vzeroall | \
29		    ${CC} -x assembler -o /dev/null -c - 2> /dev/null; \
30		} && echo yes || echo no
31.if ${_ASM_AVX} == yes
32ASM_${MACHINE_CPUARCH}=
33.endif
34.endif
35
36.if defined(ASM_aarch64)
37CFLAGS+=-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM
38.elif defined(ASM_amd64)
39CFLAGS+=-DOPENSSL_IA32_SSE2
40CFLAGS+=-DAES_ASM -DBSAES_ASM -DVPAES_ASM
41CFLAGS+=-DECP_NISTZ256_ASM
42CFLAGS+=-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m
43CFLAGS+=-DMD5_ASM
44CFLAGS+=-DGHASH_ASM
45CFLAGS+=-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM
46CFLAGS+=-DWHIRLPOOL_ASM
47.elif defined(ASM_arm)
48CFLAGS+=-DAES_ASM -DBSAES_ASM
49CFLAGS+=-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m
50CFLAGS+=-DGHASH_ASM
51CFLAGS+=-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM
52.elif defined(ASM_i386)
53CFLAGS+=-DOPENSSL_IA32_SSE2
54CFLAGS+=-DAES_ASM -DVPAES_ASM
55CFLAGS+=-DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m
56CFLAGS+=-DMD5_ASM
57CFLAGS+=-DGHASH_ASM
58CFLAGS+=-DRMD160_ASM
59CFLAGS+=-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM
60CFLAGS+=-DWHIRLPOOL_ASM
61.endif
62
63MANDIR=	${SHAREDIR}/openssl/man/man
64
65.if defined(LIB)
66_docs=	${LIB}
67.if ${LIB} == ssl
68_docs+=	man3
69.endif
70_skip=	SSLeay_version des_modes
71_sec=	3
72.else
73_docs=	apps
74_skip=	config
75_sec=	1
76.endif
77
78man-update:
79.for manpage in ${MAN}
80	@(sec=${manpage:E}; \
81	pod=${manpage:R}.pod; \
82	for i in ${_docs}; do \
83		test -f ${LCRYPTO_DOC}/$$i/$$pod && \
84		cp ${LCRYPTO_DOC}/$$i/$$pod .; \
85	done; \
86	pod2man --section=$$sec --release="${OPENSSL_VER}" \
87	  --date="${OPENSSL_DATE}" --center="OpenSSL"  \
88	  $$pod > ${.CURDIR}/man/${manpage}; \
89	rm -f $$pod; \
90	${ECHO} ${manpage})
91.endfor
92
93man-makefile-update:
94	rm -f ${.CURDIR}/Makefile.man
95	echo '# $$'FreeBSD'$$' >> ${.CURDIR}/Makefile.man
96	echo '# DO NOT EDIT: generated from man-makefile-update target' >> \
97	    ${.CURDIR}/Makefile.man
98	for i in ${_docs}; do \
99		for j in ${LCRYPTO_DOC}/$$i/*.pod; do \
100			test -f $$j || continue; \
101			fn=`basename $$j .pod`; \
102			if ! echo '${_skip}' | grep -qw "$$fn"; then \
103			${ECHO} "MAN+= $$fn.${_sec}"; \
104			fi; \
105		done; \
106	done | env LANG=C sort >> ${.CURDIR}/Makefile.man
107	for i in ${_docs}; do \
108		for j in ${LCRYPTO_DOC}/$$i/*.pod; do \
109			test -f $$j || continue; \
110			fn=`basename $$j .pod`; \
111			if ! echo '${_skip}' | grep -qw "$$fn"; then \
112			perl ${LCRYPTO_SRC}/util/extract-names.pl < $$j | \
113			  awk "/^$$fn\$$/ { next; } \
114			  { print \"MLINKS+= $$fn.${_sec} \" \$$1 \".${_sec}\" }"; \
115			fi; \
116		done; \
117	done | env LANG=C sort >> ${.CURDIR}/Makefile.man
118