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