xref: /freebsd/crypto/openssh/.github/install_libcrypto.sh (revision 644b4646c7acab87dc20d4e5dd53d2d9da152989)
1#!/bin/sh
2#
3# Install specified libcrypto.
4#  -a : install version for ABI compatibility test.
5#  -n : dry run, don't actually build and install.
6#
7# Usage: $0 [-a] [-n] openssl-$branch/tag destdir [config options]
8
9set -e
10
11bincompat_test=""
12dryrun=""
13while [ "$1" = "-a" ] || [ "$1" = "-n" ]; do
14	if [ "$1" = "-a" ]; then
15		abi_compat_test=y
16	elif [ "$1" = "-n" ]; then
17		dryrun="echo dryrun:"
18	fi
19	shift
20done
21
22ver="$1"
23destdir="$2"
24opts="$3"
25
26if [ -z "${ver}" ] || [ -z "${destdir}" ]; then
27	echo tag/branch and destdir required
28	exit 1
29fi
30
31set -x
32
33if [ ! -d ${HOME}/openssl ]; then
34	cd ${HOME}
35	git clone https://github.com/openssl/openssl.git
36	cd ${HOME}/openssl
37	git fetch --all
38fi
39cd ${HOME}/openssl
40
41if [ "${abi_compat_test}" = "y" ]; then
42	echo selecting ABI test release/branch for ${ver}
43	case "${ver}" in
44	openssl-3.6)
45		ver=openssl-3.0.0
46		echo "selecting older release ${ver}"
47		;;
48	openssl-3.[012345])
49		major=$(echo ${ver} | cut -f1 -d.)
50		minor=$(echo ${ver} | cut -f2 -d.)
51		ver="${major}.$((${minor} + 1))"
52		echo selecting next release branch ${ver}
53		;;
54	openssl-3.*.*)
55		major=$(echo ${ver} | cut -f1 -d.)
56		minor=$(echo ${ver} | cut -f2 -d.)
57		patch=$(echo ${ver} | cut -f3 -d.)
58		ver="${major}.${minor}.$((${patch} + 1))"
59		echo checking for release tag ${ver}
60		if git tag | grep -q "^${ver}\$"; then
61			echo selected next patch release ${ver}
62		else
63			ver="${major}.${minor}"
64			echo not found, selecting release branch ${ver}
65		fi
66		;;
67	esac
68fi
69
70git checkout ${ver}
71make clean >/dev/null 2>&1 || true
72${dryrun} ./config no-threads shared ${opts} --prefix=${destdir} \
73    -Wl,-rpath,${destdir}/lib64
74${dryrun} make -j4
75${dryrun} sudo make install_sw
76