blob: d91bba73b54c6dcbba8c93e86f4a254804f85b8d [file] [edit]
#!/usr/bin/env bash
set -euo pipefail
rm -rf build/
touch build.log
BUILD_LOG="$(realpath build.log)"
echo "Built on $(date -u '+%Y-%m-%dT%H:%M:%SZ')" | tee "$BUILD_LOG"
echo "Toolchain versions" | tee -a "$BUILD_LOG"
emcc --version | head -n1 | tee -a "$BUILD_LOG"
# FIXME: Redownload the source (from https://github.com/P-H-C/phc-winner-argon2) if argon2 ever has source updates. At the time of writing it was last changed 5 years ago so this is probably not a high priority.
SOURCES=(
src/blake2/blake2b.c
src/argon2.c
src/core.c
src/encoding.c
src/thread.c
src/opt.c
)
SIMD_FLAGS=(
-msimd128
-msse2
)
echo "Building..." | tee -a "$BUILD_LOG"
mkdir build/
emcc -o build/argon2.js \
-s WASM=1 -O2 \
${SIMD_FLAGS[@]} \
-g1 --emit-symbol-map \
-DARGON2_NO_THREADS \
-s MODULARIZE=1 -s EXPORT_NAME=setupModule -s EXPORTED_RUNTIME_METHODS=stringToNewUTF8,UTF8ToString -s EXPORTED_FUNCTIONS=_argon2_hash,_argon2_verify,_argon2_encodedlen,_argon2_error_message,_malloc,_free,_strlen \
-Iinclude \
${SOURCES[@]} | tee -a "$BUILD_LOG"
node ../../utils/compress.mjs build/argon2.wasm
echo "Building done" | tee -a "$BUILD_LOG"
ls -lth build/