xref: /freebsd/crypto/openssl/BSDmakefile (revision 97388e7215e080f2cb9fd446f4be4e46a9aeb114)
1267f8c1fSEnji Cooper# This BSD makefile helps provide a deterministic means of doing a "clean"
2267f8c1fSEnji Cooper# vendor import of OpenSSL.
3267f8c1fSEnji Cooper#
4267f8c1fSEnji Cooper# Recommended use:
5267f8c1fSEnji Cooper#
6267f8c1fSEnji Cooper#   % make clean
7267f8c1fSEnji Cooper#   % make all
8267f8c1fSEnji Cooper
9267f8c1fSEnji CooperNO_OBJ=
10267f8c1fSEnji Cooper
11267f8c1fSEnji CooperLCRYPTO_SRC=	${SRCTOP}/crypto/openssl
12267f8c1fSEnji CooperLCRYPTO_DOC=	${LCRYPTO_SRC}/doc
13267f8c1fSEnji Cooper
14267f8c1fSEnji CooperCAT?=		/bin/cat
15*52c4b76dSEnji CooperCC?=		cc
16d18058b7SEnji CooperGMAKE?=		gmake
17*52c4b76dSEnji CooperLD?=		ld
18267f8c1fSEnji CooperMV?=		/bin/mv
19267f8c1fSEnji CooperPERL?=		perl
20d18058b7SEnji CooperSETENVI=	/usr/bin/env -i
21267f8c1fSEnji Cooper
22267f8c1fSEnji CooperBN_CONF_H=		include/crypto/bn_conf.h
23267f8c1fSEnji CooperBN_CONF_H_ORIG=		${BN_CONF_H}.orig
24267f8c1fSEnji CooperCONFIGURATION_H=	include/openssl/configuration.h
25267f8c1fSEnji CooperCONFIGURATION_H_ORIG=	${CONFIGURATION_H}.orig
26267f8c1fSEnji Cooper
27267f8c1fSEnji Cooper.PHONY: configure patch all
28267f8c1fSEnji Cooper.ORDER: configure patch all
29267f8c1fSEnji Cooper
30d18058b7SEnji CooperLOCALBASE=	/usr/local
31*52c4b76dSEnji CooperWRK_ENV=	CC=${CC} \
32*52c4b76dSEnji Cooper		LD=${LD} \
33*52c4b76dSEnji Cooper		PATH=${LOCALBASE}/bin:/bin:/usr/bin
34d18058b7SEnji Cooper
35267f8c1fSEnji Cooperconfigure:
36d18058b7SEnji Cooper	@(cd ${.CURDIR} && ${SETENVI} \
37*52c4b76dSEnji Cooper	    ${WRK_ENV} \
38267f8c1fSEnji Cooper	    ${PERL} ./Configure \
39267f8c1fSEnji Cooper	    disable-aria \
40267f8c1fSEnji Cooper	    disable-egd \
41267f8c1fSEnji Cooper	    disable-idea \
42267f8c1fSEnji Cooper	    disable-mdc2 \
43267f8c1fSEnji Cooper	    disable-sm2 \
44267f8c1fSEnji Cooper	    disable-sm3 \
45267f8c1fSEnji Cooper	    disable-sm4 \
46267f8c1fSEnji Cooper	    enable-ec_nistp_64_gcc_128 \
47267f8c1fSEnji Cooper	    enable-ktls \
48267f8c1fSEnji Cooper	    enable-sctp \
49267f8c1fSEnji Cooper	    --openssldir=etc \
50d18058b7SEnji Cooper	    --prefix=/usr)
51267f8c1fSEnji Cooper
52267f8c1fSEnji Cooperall: patch
53d18058b7SEnji Cooper	@echo "==> Building generated files (headers, manpages, etc)"
54d18058b7SEnji Cooper	@(cd ${.CURDIR} && \
55d18058b7SEnji Cooper	     ${SETENVI} ${WRK_ENV} ${GMAKE} -j ${.MAKE.JOBS} build_all_generated)
56267f8c1fSEnji Cooper
57d18058b7SEnji Cooper	@echo "==> Cleaning / rebuilding ASM"
58d18058b7SEnji Cooper	@(cd ${SRCTOP}/secure/lib/libcrypto && \
59d18058b7SEnji Cooper	     ${SETENVI} ${WRK_ENV} ${MAKE} cleanasm && \
60d18058b7SEnji Cooper	     ${SETENVI} ${WRK_ENV} ${MAKE} buildasm)
61267f8c1fSEnji Cooper
62d18058b7SEnji Cooper	@echo "==> Syncing manpages (section 1)"
63267f8c1fSEnji Cooper	@rsync -a --delete \
64267f8c1fSEnji Cooper	    --exclude 'Makefile*' --exclude '*.1' \
65267f8c1fSEnji Cooper	    ${LCRYPTO_DOC}/man/ \
66267f8c1fSEnji Cooper	    ${SRCTOP}/secure/lib/libcrypto/man
67267f8c1fSEnji Cooper
68d18058b7SEnji Cooper	@echo "==> Syncing manpages (sections {3,5,7})"
69267f8c1fSEnji Cooper	@rsync -a --delete \
70267f8c1fSEnji Cooper	    --exclude 'Makefile*' --exclude '*.[357]' \
71267f8c1fSEnji Cooper	    ${LCRYPTO_DOC}/man/man1/ \
72267f8c1fSEnji Cooper	    ${SRCTOP}/secure/usr.bin/openssl/man
73267f8c1fSEnji Cooper
74267f8c1fSEnji Cooper
75267f8c1fSEnji Cooper# This doesn't use standard patching since the generated files can vary
76267f8c1fSEnji Cooper# depending on the host architecture.
77267f8c1fSEnji Cooperpatch: configure
78267f8c1fSEnji Cooper	# Spam arch-specific overrides to config files.
79d18058b7SEnji Cooper	@echo "==> Patching headers"
80d18058b7SEnji Cooper	@(cd ${.CURDIR} && ${SETENVI} ${WRK_ENV} ${GMAKE} ${BN_CONF_H} && \
81267f8c1fSEnji Cooper	 ${MV} ${BN_CONF_H} ${BN_CONF_H_ORIG} && \
82267f8c1fSEnji Cooper	 ${CAT} ${BN_CONF_H}.orig \
83267f8c1fSEnji Cooper	     ${LCRYPTO_SRC}/freebsd/${BN_CONF_H} >> \
84d18058b7SEnji Cooper	     ${BN_CONF_H})
85267f8c1fSEnji Cooper
86d18058b7SEnji Cooper	@(cd ${.CURDIR} && \
87267f8c1fSEnji Cooper	  ${MV} ${CONFIGURATION_H} ${CONFIGURATION_H_ORIG} && \
88267f8c1fSEnji Cooper	  ${CAT} ${CONFIGURATION_H_ORIG} \
89267f8c1fSEnji Cooper	     ${LCRYPTO_SRC}/freebsd/${CONFIGURATION_H} >> \
90d18058b7SEnji Cooper	     ${CONFIGURATION_H})
91267f8c1fSEnji Cooper
92267f8c1fSEnji Cooper
93267f8c1fSEnji Cooperclean: .PHONY
94d18058b7SEnji Cooper	@(cd ${.CURDIR} && rm -f ${BN_CONF_H_ORIG} ${CONFIGURATION_H_ORIG})
95267f8c1fSEnji Cooper
96d18058b7SEnji Cooper	@(cd ${SRCTOP}/secure/lib/libcrypto && \
97d18058b7SEnji Cooper	    ${SETENVI} ${WRK_ENV} ${MAKE} cleanasm)
98267f8c1fSEnji Cooper
99d18058b7SEnji Cooper	-@(cd ${.CURDIR} && ${GMAKE} ${.TARGET})
100267f8c1fSEnji Cooper
101267f8c1fSEnji Cooper.include <sys.mk>
102