mirror of
https://github.com/umutcamliyurt/Amnezichat.git
synced 2025-05-07 17:55:22 +01:00
116 lines
3.3 KiB
Bash
Executable File
116 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
BASE=$(dirname "$0")
|
|
BASE=$(cd "${BASE}" && pwd)
|
|
echo "${BASE}"
|
|
|
|
VERSION=$(cat VERSION)
|
|
UPSTREAM_ARCHIVE="${VERSION}.zip"
|
|
|
|
BUILD="${BASE}/build"
|
|
BUILD_XKCP="${BUILD}/src/common/sha3/xkcp_low"
|
|
BUILD_UPSTREAM="${BUILD}/upstream"
|
|
|
|
function cleanup {
|
|
rm -rf "${BUILD}"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
if [ -e "${BUILD}" ]
|
|
then
|
|
printf "%s directory already exists. Delete it (y/n)? " "${BUILD}"
|
|
read -r yn
|
|
if [ "${yn:-n}" != "y" ]
|
|
then
|
|
exit -1
|
|
fi
|
|
rm -rf "${BUILD}"
|
|
fi
|
|
mkdir -p "${BUILD}"
|
|
|
|
if [ ! -f "${BASE}/${UPSTREAM_ARCHIVE}" ]
|
|
then
|
|
wget -P "${BASE}" "https://github.com/XKCP/XKCP/archive/${VERSION}.zip"
|
|
fi
|
|
|
|
unzip -qq -d "${BUILD}" "${BASE}/${UPSTREAM_ARCHIVE}"
|
|
mv "${BUILD}/XKCP-${VERSION}" "${BUILD_UPSTREAM}"
|
|
|
|
( cd "${BUILD_UPSTREAM}" || exit
|
|
|
|
for X in "${BASE}/patches/"*
|
|
do
|
|
patch -s -p1 < "${X}"
|
|
done
|
|
)
|
|
|
|
OUT="${BUILD_XKCP}/KeccakP-1600/plain-64bits"
|
|
mkdir -p "${OUT}"
|
|
cp -Lp "${BUILD_UPSTREAM}/lib/common/brg_endian.h" \
|
|
"${BUILD_UPSTREAM}/lib/low/common/SnP-Relaned.h" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-SnP.h" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600/plain-64bits/ua/KeccakP-1600-opt64-config.h" \
|
|
"${OUT}"
|
|
|
|
OUT="${BUILD_XKCP}/KeccakP-1600/avx2"
|
|
mkdir -p "${OUT}"
|
|
cp -Lp "${BUILD_UPSTREAM}/lib/low/KeccakP-1600/AVX2/KeccakP-1600-AVX2.s" "${OUT}/KeccakP-1600-AVX2.S"
|
|
cp -Lp "${BUILD_UPSTREAM}/lib/common/align.h" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600/AVX2/KeccakP-1600-SnP.h" \
|
|
"${OUT}"
|
|
|
|
OUT="${BUILD_XKCP}/KeccakP-1600times4/serial"
|
|
mkdir -p "${OUT}"
|
|
cp -Lp "${BUILD_UPSTREAM}/lib/low/common/PlSnP-Fallback.inc" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-on1.c" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-SnP.h" \
|
|
"${OUT}"
|
|
|
|
OUT="${BUILD_XKCP}/KeccakP-1600times4/avx2"
|
|
mkdir -p "${OUT}"
|
|
cp -Lp "${BUILD_UPSTREAM}/lib/common/brg_endian.h" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SIMD256.c" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SnP.h" \
|
|
"${BUILD_UPSTREAM}/lib/low/KeccakP-1600-times4/AVX2/ua/SIMD256-config.h" \
|
|
"${OUT}"
|
|
|
|
find "${BUILD_XKCP}" \( -name \*.c -o -name \*.h \) -execdir \
|
|
unifdef -k -m \
|
|
-DNO_MISALIGNED_ACCESSES \
|
|
-DKeccakP1600_fullUnrolling \
|
|
-DKeccakP1600times4_fullUnrolling \
|
|
-DKeccakP1600_useLaneComplementing \
|
|
{} \;
|
|
|
|
find "${BUILD_XKCP}/KeccakP-1600times4/avx2" \( -name \*.c -o -name \*.h \) -execdir \
|
|
unifdef -k -m \
|
|
-DKeccakP1600times4_useAVX2 \
|
|
{} \;
|
|
|
|
cp "${BASE}/CMakeLists.txt" "${BUILD_XKCP}/CMakeLists.txt"
|
|
|
|
# Apply liboqs formatting
|
|
astyle \
|
|
--style=google \
|
|
--indent=tab \
|
|
--pad-oper \
|
|
--pad-comma \
|
|
--pad-header \
|
|
--align-pointer=name \
|
|
--add-braces \
|
|
--convert-tabs \
|
|
--mode=c \
|
|
--suffix=none \
|
|
--lineend=linux \
|
|
"${BUILD_XKCP}"/*/*/*.{c,h} >/dev/null
|
|
|
|
# Package
|
|
( cd "${BUILD}" || exit
|
|
tar czf "${BASE}"/liboqs-xkcp-"$(date +'%Y%m%d')".tar.gz src
|
|
)
|