#!/bin/bash set -euo pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" #make canonical ROOT_DIR="$(cd "${SCRIPT_DIR}/../" &> /dev/null && pwd)" export CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:-Debug}" # Function to build a project build_project() { local project="$1" local platform="${2:-}" local build_cmd local tag local output_dir if [ -n "${platform}" ]; then build_cmd=(docker buildx build "--platform" "${platform}") local tag_suffix="${platform##*/}" # Extract arch from platform (e.g., linux/arm64 -> arm64) tag="gitea.jde.nz/public/${project}-build-${tag_suffix}:test" output_dir="${SCRIPT_DIR}/output/${tag_suffix}" else build_cmd=(docker build) tag="gitea.jde.nz/public/${project}-build:test" output_dir="${SCRIPT_DIR}/output/native" fi mkdir -p "${output_dir}" "${build_cmd[@]}" \ -t "${tag}" \ -f "${SCRIPT_DIR}/Dockerfile.test-build" \ --build-arg PROJECT="${project}" \ --build-arg CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" \ --output "${output_dir}" \ "${SCRIPT_DIR}/${project}" } # Clean and prepare output directory rm -rf "${SCRIPT_DIR}/output" mkdir -p "${SCRIPT_DIR}/output" # Build all projects echo "Building ipdemo..." build_project "ipdemo" echo "Building ipdemo for aarch64..." build_project "ipdemo" "linux/arm64" echo "Building test_libs..." build_project "test_libs"