| #!/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/ |