aboutsummaryrefslogtreecommitdiff
path: root/crypto/openssl/BSDmakefile
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/openssl/BSDmakefile')
-rw-r--r--crypto/openssl/BSDmakefile121
1 files changed, 121 insertions, 0 deletions
diff --git a/crypto/openssl/BSDmakefile b/crypto/openssl/BSDmakefile
new file mode 100644
index 000000000000..d260808ffac3
--- /dev/null
+++ b/crypto/openssl/BSDmakefile
@@ -0,0 +1,121 @@
+# This BSD makefile helps provide a deterministic means of doing a "clean"
+# vendor import of OpenSSL.
+#
+# Recommended use:
+#
+# % make clean
+# % make all
+
+NO_OBJ=
+
+LCRYPTO_SRC= ${SRCTOP}/crypto/openssl
+LCRYPTO_DOC= ${LCRYPTO_SRC}/doc
+
+CAT?= /bin/cat
+CC?= cc
+GMAKE?= gmake
+LD?= ld
+MV?= /bin/mv
+PERL?= perl
+SETENVI= /usr/bin/env -i
+
+BN_CONF_H= include/crypto/bn_conf.h
+BN_CONF_H_ORIG= ${BN_CONF_H}.orig
+CONFIGURATION_H= include/openssl/configuration.h
+CONFIGURATION_H_ORIG= ${CONFIGURATION_H}.orig
+
+.PHONY: configure patch all
+.ORDER: configure patch all
+
+LOCALBASE= /usr/local
+WRK_ENV= CC=${CC} \
+ LD=${LD} \
+ PATH=${LOCALBASE}/bin:/bin:/usr/bin
+
+configure:
+ @(cd ${.CURDIR} && ${SETENVI} \
+ ${WRK_ENV} \
+ ${PERL} ./Configure \
+ disable-aria \
+ disable-egd \
+ disable-idea \
+ disable-mdc2 \
+ disable-sm2 \
+ disable-sm3 \
+ disable-sm4 \
+ enable-ec_nistp_64_gcc_128 \
+ enable-ktls \
+ enable-sctp \
+ --openssldir=etc \
+ --prefix=/usr)
+ @echo "Building configdata.pm for later use."
+ @(cd ${.CURDIR} && \
+ ${SETENVI} ${WRK_ENV} ${GMAKE} -j ${.MAKE.JOBS} configdata.pm)
+
+ @echo "Populating Makefile.version with release information"
+ @(cd ${LCRYPTO_SRC} && ${SETENVI} ${WRK_ENV} ${PERL} \
+ ${LCRYPTO_SRC}/freebsd/dump_version_from_configdata.pl > \
+ ${SRCTOP}/secure/lib/libcrypto/Makefile.version)
+
+all: patch
+ @echo "==> Building generated files (headers, manpages, etc)"
+ @(cd ${.CURDIR} && \
+ ${SETENVI} ${WRK_ENV} ${GMAKE} -j ${.MAKE.JOBS} build_all_generated)
+
+ # 1. Fix --prefix.
+ # a. Not sure why --prefix isn't honored properly, even though it's
+ # passed to Configure; the files might be getting rebuilt
+ # post-Configure, somehow.
+ # 2. Remove duplicate path in CFLAGS.
+ # 3. Remove duplicate path in includedir(s).
+ @echo "==> Fixing pkgconfig files"
+ @find . -name \*.pc -print -exec sed -i '' -E \
+ -e 's,^prefix=.+,prefix=/usr,' \
+ -e 's,[[:space:]]+(\-I)?\$\{prefix\}/\./include[[:space:]]*,,g' \
+ {} +
+
+ @echo "==> Cleaning / rebuilding ASM"
+ @(cd ${SRCTOP}/secure/lib/libcrypto && \
+ ${SETENVI} ${WRK_ENV} ${MAKE} cleanasm && \
+ ${SETENVI} ${WRK_ENV} ${MAKE} buildasm)
+
+ @echo "==> Syncing manpages (section 1)"
+ @rsync -a --delete \
+ --exclude 'Makefile*' --exclude '*.1' \
+ ${LCRYPTO_DOC}/man/ \
+ ${SRCTOP}/secure/lib/libcrypto/man
+
+ @echo "==> Syncing manpages (sections {3,5,7})"
+ @rsync -a --delete \
+ --exclude 'Makefile*' --exclude '*.[357]' \
+ ${LCRYPTO_DOC}/man/man1/ \
+ ${SRCTOP}/secure/usr.bin/openssl/man
+
+
+# This doesn't use standard patching since the generated files can vary
+# depending on the host architecture.
+patch: configure
+ # Spam arch-specific overrides to config files.
+ @echo "==> Patching headers"
+ @(cd ${.CURDIR} && ${SETENVI} ${WRK_ENV} ${GMAKE} ${BN_CONF_H} && \
+ ${MV} ${BN_CONF_H} ${BN_CONF_H_ORIG} && \
+ ${CAT} ${BN_CONF_H}.orig \
+ ${LCRYPTO_SRC}/freebsd/${BN_CONF_H} >> \
+ ${BN_CONF_H})
+
+ @(cd ${.CURDIR} && \
+ ${MV} ${CONFIGURATION_H} ${CONFIGURATION_H_ORIG} && \
+ ${CAT} ${CONFIGURATION_H_ORIG} \
+ ${LCRYPTO_SRC}/freebsd/${CONFIGURATION_H} >> \
+ ${CONFIGURATION_H})
+
+
+clean: .PHONY
+ @(cd ${.CURDIR} && rm -f ${BN_CONF_H_ORIG} ${CONFIGURATION_H_ORIG})
+
+ @(cd ${SRCTOP}/secure/lib/libcrypto && \
+ ${SETENVI} ${WRK_ENV} ${MAKE} cleanasm)
+
+ -@(cd ${.CURDIR} && ${GMAKE} ${.TARGET})
+
+.include <sys.mk>