#!/bin/bash
# Copyright (C) 2018-2023 nurupo

# Toxcore building

set -eux

cd .. # /work
. cmake-freebsd-run.sh

# === Get VM ready to build the code ===

# Unpack image only if it's compressed.
if [ -f "$IMAGE_NAME.gz" ]; then
  gunzip "$IMAGE_NAME.gz"
fi

mv c-toxcore /

start_vm

# Copy over toxcore code from host to qemu
scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P "$SSH_PORT" -r /c-toxcore root@localhost:~

RUN ls -lh

cd /c-toxcore
. '.github/scripts/flags-clang.sh'

add_ld_flag -Wl,-z,defs

# Make compilation error on a warning.
add_flag -Werror

# This triggers on FreeBSD's clang.
add_flag -Wno-format
add_flag -Wno-unsafe-buffer-usage

RUN "cmake -B_build -Hc-toxcore \
  -DCMAKE_C_FLAGS='$C_FLAGS' \
  -DCMAKE_CXX_FLAGS='$CXX_FLAGS' \
  -DCMAKE_EXE_LINKER_FLAGS='$LD_FLAGS' \
  -DCMAKE_SHARED_LINKER_FLAGS='$LD_FLAGS' \
  -DCMAKE_INSTALL_PREFIX:PATH='_install' \
  -DMIN_LOGGER_LEVEL=TRACE \
  -DMUST_BUILD_TOXAV=ON \
  -DNON_HERMETIC_TESTS=ON \
  -DSTRICT_ABI=ON \
  -DTEST_TIMEOUT_SECONDS=120 \
  -DUSE_IPV6=OFF \
  -DAUTOTEST=ON"

# We created the VM with the same number of cores as the host, so the host-ran `nproc` here is fine.
RUN 'cmake --build _build --parallel "$NPROC" --target install -- -k'
RUN 'cd _build && ctest -j50 --output-on-failure --rerun-failed --repeat until-pass:2 --timeout 120 || true'

# Gracefully shut down the VM.
stop_vm
