#!/usr/bin/env bash
set -ex
cd "$(dirname "${BASH_SOURCE[0]}")/../.."
MINIJAIL_DIR=$(realpath "third_party/minijail")
SECCOMP_DIR=$(realpath "jail/seccomp")
export SRC="$MINIJAIL_DIR"
TMP_DIR="$(mktemp -d)"
cleanup() {
rm -rf "$TMP_DIR"
}
trap cleanup EXIT
for arch in "x86_64" "aarch64" "riscv64"; do
BUILD_DIR="$TMP_DIR/$arch"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
if [ "$arch" = "x86_64" ]; then
export CC="gcc"
TARGET="x86_64-unknown-linux-gnu"
elif [ "$arch" = "aarch64" ]; then
export CC="aarch64-linux-gnu-gcc"
TARGET="aarch64-unknown-linux-gnu"
elif [ "$arch" = "riscv64" ]; then
export CC="riscv64-linux-gnu-gcc"
TARGET="riscv64-unknown-linux-gnu"
fi
"$MINIJAIL_DIR/gen_constants.sh" "libconstants.gen.c"
"$MINIJAIL_DIR/gen_syscalls.sh" "libsyscalls.gen.c"
clang \
-target "$TARGET" \
-S \
-emit-llvm \
-I "$MINIJAIL_DIR" \
"libconstants.gen.c" \
"libsyscalls.gen.c"
"$MINIJAIL_DIR/tools/generate_constants_json.py" \
--output "$SECCOMP_DIR/$arch/constants.json" \
"libconstants.gen.ll" \
"libsyscalls.gen.ll"
done