-
Notifications
You must be signed in to change notification settings - Fork 178
/
run.me
executable file
·62 lines (55 loc) · 2.37 KB
/
run.me
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/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