#! /bin/sh set -e LIBSODIUM=${LIBSODIUM:-/tmp/sodium/lib/libsodium.28.dylib} symbols() { { SUMO="$1" while read symbol standard sumo; do found="$standard" if [ "x$SUMO" = "xsumo" ]; then found="$sumo" fi if [ "$found" = "1" ]; then eval "defined_${symbol}=yes" else eval "defined_${symbol}=no" fi done <emscripten-symbols.def /usr/bin/nm "$LIBSODIUM" | fgrep ' T _' | cut -d' ' -f3 | { while read symbol; do eval "found=\$defined_${symbol}" if [ "$found" = "yes" ]; then echo "$symbol" elif [ "$found" != "no" ]; then echo >&2 echo "*** [$symbol] was not expected ***" >&2 echo >&2 exit 1 fi done } } | sort | { out='"_malloc","_free"' while read symbol; do if [ ! -z "$out" ]; then out="${out}," fi out="${out}\"${symbol}\"" done echo "[${out}]" } } out=$(symbols standard) sed s/EXPORTED_FUNCTIONS_STANDARD=\'.*\'/EXPORTED_FUNCTIONS_STANDARD=\'${out}\'/ <emscripten.sh >emscripten.sh.tmp && mv -f emscripten.sh.tmp emscripten.sh out=$(symbols sumo) sed s/EXPORTED_FUNCTIONS_SUMO=\'.*\'/EXPORTED_FUNCTIONS_SUMO=\'${out}\'/ <emscripten.sh >emscripten.sh.tmp && mv -f emscripten.sh.tmp emscripten.sh chmod +x emscripten.sh