diff --git a/dist-build/wasi.sh b/dist-build/wasi.sh new file mode 100755 index 00000000..15ba4469 --- /dev/null +++ b/dist-build/wasi.sh @@ -0,0 +1,38 @@ +#! /bin/sh + +if [ -z "$WASI_SYSROOT" ]; then + export WASI_SYSROOT="/opt/wasi-sysroot" +fi + +export PATH="/usr/local/opt/llvm/bin:$PATH" + +export PREFIX="$(pwd)/libsodium-wasm32-wasi" + +mkdir -p $PREFIX || exit 1 + +export CC="clang" +export CFLAGS="--target=wasm32-unknkown-wasi --sysroot=${WASI_SYSROOT} -Os" +export LDFLAGS="-s" +export NM="llvm-nm" +export AR="llvm-ar" +export RANLIB="llvm-ranlib" +export STRIP="llvm-strip" + +make distclean > /dev/null + +if [ -z "$LIBSODIUM_FULL_BUILD" ]; then + export LIBSODIUM_ENABLE_MINIMAL_FLAG="--enable-minimal" +else + export LIBSODIUM_ENABLE_MINIMAL_FLAG="" +fi + +./configure ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ + --prefix="$PREFIX" --with-sysroot="$WASI_SYSROOT" \ + --host=wasm32-unknown-wasi --disable-ssp --disable-shared || exit 1 + +NPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) +PROCESSORS=${NPROCESSORS:-3} + +make -j${PROCESSORS} install || exit 1 + +make distclean > /dev/null diff --git a/test/default/sodium_utils2.c b/test/default/sodium_utils2.c index 844f5866..a1801b1a 100644 --- a/test/default/sodium_utils2.c +++ b/test/default/sodium_utils2.c @@ -23,14 +23,16 @@ segv_handler(int sig) printf("Intentional segfault / bus error caught\n"); printf("OK\n"); -#ifdef SIGSEGV +#ifdef SIG_DFL +# ifdef SIGSEGV signal(SIGSEGV, SIG_DFL); -#endif -#ifdef SIGBUS +# endif +# ifdef SIGBUS signal(SIGBUS, SIG_DFL); -#endif -#ifdef SIGABRT +# endif +# ifdef SIGABRT signal(SIGABRT, SIG_DFL); +# endif #endif exit(0); } @@ -70,15 +72,16 @@ main(void) sodium_free(buf); } printf("OK\n"); - -#ifdef SIGSEGV +#ifdef SIG_DFL +# ifdef SIGSEGV signal(SIGSEGV, segv_handler); -#endif -#ifdef SIGBUS +# endif +# ifdef SIGBUS signal(SIGBUS, segv_handler); -#endif -#ifdef SIGABRT +# endif +# ifdef SIGABRT signal(SIGABRT, segv_handler); +# endif #endif size = 1U + randombytes_uniform(100000U); buf = sodium_malloc(size); diff --git a/test/default/sodium_utils3.c b/test/default/sodium_utils3.c index 3f2b600e..a39f0ee4 100644 --- a/test/default/sodium_utils3.c +++ b/test/default/sodium_utils3.c @@ -19,14 +19,16 @@ segv_handler(int sig) printf("Intentional segfault / bus error caught\n"); printf("OK\n"); -#ifdef SIGSEGV +#ifdef SIG_DFL +# ifdef SIGSEGV signal(SIGSEGV, SIG_DFL); -#endif -#ifdef SIGBUS +# endif +# ifdef SIGBUS signal(SIGBUS, SIG_DFL); -#endif -#ifdef SIGABRT +# endif +# ifdef SIGABRT signal(SIGABRT, SIG_DFL); +# endif #endif exit(0); } @@ -37,14 +39,16 @@ main(void) void * buf; size_t size; -#ifdef SIGSEGV +#ifdef SIG_DFL +# ifdef SIGSEGV signal(SIGSEGV, segv_handler); -#endif -#ifdef SIGBUS +# endif +# ifdef SIGBUS signal(SIGBUS, segv_handler); -#endif -#ifdef SIGABRT +# endif +# ifdef SIGABRT signal(SIGABRT, segv_handler); +# endif #endif size = 1U + randombytes_uniform(100000U); buf = sodium_malloc(size);