OSCAR-code/oscar/SleepLib/thirdparty/update_botan.sh

65 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
#
# To update the version of Botan included in OSCAR, simply run this script.
# To change which modules are included, modify the MODULES variable below.
MODULES="aes,gcm,sha2_32,pbkdf2"
BOTAN_DIR=$1
if [ -z "$BOTAN_DIR" ]; then
echo "Usage: $0 PATH"
echo " PATH Directory of the Botan distribution to use"
exit 1
fi
# Convert to absolute path
BOTAN_DIR="$(cd "$(dirname "$BOTAN_DIR")"; pwd -P)/$(basename "$BOTAN_DIR")"
SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TMP_DIR=$(mktemp -d 2>/dev/null || mktemp -d -t 'tmp')
echo "Building in ${TMP_DIR}"
pushd "${TMP_DIR}" > /dev/null
declare -a PLATFORMS
generate() {
label="$1"; shift
cpu="$1"; shift
os="$label"
if [[ $# -gt 0 ]]; then
os="$1"
fi
PLATFORMS+=($label)
mkdir "${label}"
pushd "${label}" > /dev/null
echo "Generating ${label}:"
"$BOTAN_DIR/configure.py" --amalgamation --os="$os" --cpu="$cpu" --disable-shared --minimized-build --enable-modules="$MODULES"
popd > /dev/null
}
generate linux generic
generate macos generic
generate windows generic mingw
# Make sure all the cpp files are identical as expected.
for platform in "${PLATFORMS[@]}"; do
cmp "${PLATFORMS[0]}/botan_all.cpp" "${platform}/botan_all.cpp" || exit 1
done
echo "Copying files..."
cp "${PLATFORMS[0]}/botan_all.cpp" "${SCRIPT_DIR}/botan_all.cpp" || exit 1
# Copy the platform-specific h files.
for platform in "${PLATFORMS[@]}"; do
cp "${platform}/botan_all.h" "${SCRIPT_DIR}/botan_${platform}.h" || exit 1
done
for platform in "${PLATFORMS[@]}"; do
rm -r "${platform}"
done
popd > /dev/null
rmdir ${TMP_DIR}
echo "Done."