1# This BSD makefile helps provide a deterministic means of doing a "clean" 2# vendor import of OpenSSL. 3# 4# Recommended use: 5# 6# % make clean 7# % make all 8 9NO_OBJ= 10 11LCRYPTO_SRC= ${SRCTOP}/crypto/openssl 12LCRYPTO_DOC= ${LCRYPTO_SRC}/doc 13 14CAT?= /bin/cat 15CC?= cc 16GMAKE?= gmake 17LD?= ld 18MV?= /bin/mv 19PERL?= perl 20SETENVI= /usr/bin/env -i 21 22BN_CONF_H= include/crypto/bn_conf.h 23BN_CONF_H_ORIG= ${BN_CONF_H}.orig 24CONFIGURATION_H= include/openssl/configuration.h 25CONFIGURATION_H_ORIG= ${CONFIGURATION_H}.orig 26 27.PHONY: configure patch all 28.ORDER: configure patch all 29 30LOCALBASE= /usr/local 31WRK_ENV= CC=${CC} \ 32 LD=${LD} \ 33 PATH=${LOCALBASE}/bin:/bin:/usr/bin 34 35configure: 36 @(cd ${.CURDIR} && ${SETENVI} \ 37 ${WRK_ENV} \ 38 ${PERL} ./Configure \ 39 disable-aria \ 40 disable-egd \ 41 disable-idea \ 42 disable-mdc2 \ 43 disable-sm2 \ 44 disable-sm3 \ 45 disable-sm4 \ 46 enable-ec_nistp_64_gcc_128 \ 47 enable-ktls \ 48 enable-sctp \ 49 --openssldir=etc \ 50 --prefix=/usr) 51 52all: patch 53 @echo "==> Building generated files (headers, manpages, etc)" 54 @(cd ${.CURDIR} && \ 55 ${SETENVI} ${WRK_ENV} ${GMAKE} -j ${.MAKE.JOBS} build_all_generated) 56 57 @echo "==> Cleaning / rebuilding ASM" 58 @(cd ${SRCTOP}/secure/lib/libcrypto && \ 59 ${SETENVI} ${WRK_ENV} ${MAKE} cleanasm && \ 60 ${SETENVI} ${WRK_ENV} ${MAKE} buildasm) 61 62 @echo "==> Syncing manpages (section 1)" 63 @rsync -a --delete \ 64 --exclude 'Makefile*' --exclude '*.1' \ 65 ${LCRYPTO_DOC}/man/ \ 66 ${SRCTOP}/secure/lib/libcrypto/man 67 68 @echo "==> Syncing manpages (sections {3,5,7})" 69 @rsync -a --delete \ 70 --exclude 'Makefile*' --exclude '*.[357]' \ 71 ${LCRYPTO_DOC}/man/man1/ \ 72 ${SRCTOP}/secure/usr.bin/openssl/man 73 74 75# This doesn't use standard patching since the generated files can vary 76# depending on the host architecture. 77patch: configure 78 # Spam arch-specific overrides to config files. 79 @echo "==> Patching headers" 80 @(cd ${.CURDIR} && ${SETENVI} ${WRK_ENV} ${GMAKE} ${BN_CONF_H} && \ 81 ${MV} ${BN_CONF_H} ${BN_CONF_H_ORIG} && \ 82 ${CAT} ${BN_CONF_H}.orig \ 83 ${LCRYPTO_SRC}/freebsd/${BN_CONF_H} >> \ 84 ${BN_CONF_H}) 85 86 @(cd ${.CURDIR} && \ 87 ${MV} ${CONFIGURATION_H} ${CONFIGURATION_H_ORIG} && \ 88 ${CAT} ${CONFIGURATION_H_ORIG} \ 89 ${LCRYPTO_SRC}/freebsd/${CONFIGURATION_H} >> \ 90 ${CONFIGURATION_H}) 91 92 93clean: .PHONY 94 @(cd ${.CURDIR} && rm -f ${BN_CONF_H_ORIG} ${CONFIGURATION_H_ORIG}) 95 96 @(cd ${SRCTOP}/secure/lib/libcrypto && \ 97 ${SETENVI} ${WRK_ENV} ${MAKE} cleanasm) 98 99 -@(cd ${.CURDIR} && ${GMAKE} ${.TARGET}) 100 101.include <sys.mk> 102