mirror of
https://github.com/luxfi/blst.git
synced 2026-10-30 17:01:37 +00:00
SWIG-based bindings require only SWIG-specific symbols to be accesible in corresponding shared libraries.
63 lines
2.4 KiB
Plaintext
Executable File
63 lines
2.4 KiB
Plaintext
Executable File
#!/bin/sh -e
|
|
#
|
|
# Even though blst.swg works with current node.js version, v16.x at the
|
|
# moment of this writing, SWIG 4.0 can generate wrapper only up to 10.x.
|
|
# Till SWIG 4.1 is released, build from https://github.com/swig/swig
|
|
# yourself, or download pre-generated blst_wrap.cpp from
|
|
# https://github.com/supranational/blst/issues/32.
|
|
|
|
cd `dirname $0`
|
|
|
|
NODE=`which ${NODE:-node} 2>&1` || NODE=`which nodejs`
|
|
|
|
include=`dirname $NODE`/../include
|
|
if [ ! -d $include ]; then
|
|
echo "$include not found" 1>&2
|
|
exit 1
|
|
fi
|
|
include=`(cd $include/nodejs || cd $include; pwd) 2>/dev/null`
|
|
[ -f $include/node/node.h ] && INCS="-I$include/node"
|
|
[ -f $include/src/node.h ] && INCS="$INCS -I$include/src"
|
|
[ -f $include/deps/v8/include/v8.h ] && INCS="$INCS -I$include/deps/v8/include"
|
|
|
|
if [ ! -f ../libblst.a -o ../blst.h -nt ../libblst.a ]; then
|
|
(cd ..; ../build.sh -fvisibility=hidden "$@")
|
|
fi
|
|
|
|
if [ ! -f blst_wrap.cpp -o ../blst.swg -nt blst_wrap.cpp \
|
|
-o ../blst.hpp -nt blst_wrap.cpp \
|
|
-o ../blst.h -nt blst_wrap.cpp ]; then
|
|
#swig -version | awk -F'[. ]' '/Version/ {print $3}'
|
|
(set -x; swig -c++ -javascript -node -DV8_VERSION=0x060000 \
|
|
-outdir . -o blst_wrap.cpp ../blst.swg)
|
|
fi
|
|
|
|
if [ ! -f blst.node -o blst_wrap.cpp -nt blst.node \
|
|
-o ../libblst.a -nt blst.node ]; then
|
|
# figure out minimally required C++ standard and enforce it...
|
|
nodever=`$NODE -e 'console.log(parseInt(process.versions["node"]))'`
|
|
if [ $nodever -gt 18 ]; then
|
|
min=17
|
|
elif [ $nodever -gt 14 ]; then
|
|
min=14
|
|
else
|
|
min=11
|
|
fi
|
|
STD=`c++ -dM -E -x c++ /dev/null | \
|
|
awk '{ if($2=="__cplusplus" && $3<"20'$min'") print "-std=c++'$min'"; }'`
|
|
case `uname -s` in
|
|
Darwin) (set -x; c++ ${STD} -bundle -o blst.node -fPIC -fvisibility=hidden \
|
|
${INCS} -I.. -DBUILDING_NODE_EXTENSION \
|
|
-O -Wall -Wno-unused-result blst_wrap.cpp \
|
|
../libblst.a -bundle_loader $NODE)
|
|
;;
|
|
*) (set -x; c++ ${STD} -shared -o blst.node -fPIC -fvisibility=hidden \
|
|
${INCS} -I.. -DBUILDING_NODE_EXTENSION \
|
|
-O -Wall -Wno-unused-result blst_wrap.cpp \
|
|
../libblst.a -Wl,-Bsymbolic)
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
env NODE_PATH=.: $NODE runnable.js
|