build.sh raw
1 #!/bin/sh
2 set -e
3
4 LLVM_PREFIX=""
5 LLVM_VER=""
6 for v in 21 19; do
7 for p in /usr/lib/llvm-$v /usr/lib/llvm$v /usr/lib/llvm/$v; do
8 if [ -d "$p" ]; then
9 LLVM_PREFIX="$p"
10 LLVM_VER="$v"
11 break 2
12 fi
13 done
14 done
15
16 if [ -z "$LLVM_PREFIX" ]; then
17 echo "error: LLVM (21 or 19) not found" >&2
18 exit 1
19 fi
20
21 VENDOR="$(cd "$(dirname "$0")/../legacy/vendor/tinygo.org/x/go-llvm" && pwd)"
22 OUT="$(dirname "$0")/libmoxie-llvm-glue.so"
23
24 SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
25
26 CXX="${CXX:-clang++-$LLVM_VER}"
27 command -v "$CXX" >/dev/null 2>&1 || CXX="clang++"
28 $CXX -shared -fPIC \
29 -o "$OUT" \
30 "$VENDOR/IRBindings.cpp" \
31 "$VENDOR/backports.cpp" \
32 "$SCRIPT_DIR/shims.c" \
33 -I"$LLVM_PREFIX/include" \
34 -L"$LLVM_PREFIX/lib" -lLLVM-$LLVM_VER \
35 -std=c++17
36
37 echo "built: $OUT"
38 nm -D "$OUT" | grep " T " | head -20
39