#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" PYTHON_BIN="${PYTHON_BIN:-${ROOT_DIR}/.venv/bin/python}" JOBS="${JOBS:-$(nproc)}" if [[ ! -x "${PYTHON_BIN}" ]]; then echo "Python interpreter not found: ${PYTHON_BIN}" >&2 echo "Run: uv sync --dev" >&2 exit 1 fi # shellcheck disable=SC1091 set +u source "${ROOT_DIR}/OpenFOAM-14/etc/bashrc" \ WM_MPLIB=Dummy \ ParaView_TYPE=none \ SCOTCH_TYPE=none \ ZOLTAN_TYPE=none set -u export FOAM_USER_LIBBIN="${ROOT_DIR}/python/src/foam_stepper" export FOAM_USER_APPBIN="${ROOT_DIR}/pythonStepper/bin" mkdir -p "${FOAM_USER_LIBBIN}" "${FOAM_USER_APPBIN}" export PYBIND11_INCLUDES="$("${PYTHON_BIN}" -m pybind11 --includes)" PYTHON_LIBDIR="$("${PYTHON_BIN}" -c 'import sysconfig; print(sysconfig.get_config_var("LIBDIR") or "")')" PYTHON_LINK_LIBS="$("${PYTHON_BIN}" -c 'import sysconfig; print(" ".join(v for v in [sysconfig.get_config_var("LIBDIR") and "-L" + sysconfig.get_config_var("LIBDIR"), sysconfig.get_config_var("LDLIBRARY") and "-l" + sysconfig.get_config_var("LDLIBRARY").removeprefix("lib").removesuffix(".so"), sysconfig.get_config_var("LIBS"), sysconfig.get_config_var("SYSLIBS")] if v))')" RPATH_DIRS=("${FOAM_LIBBIN}" "${FOAM_LIBBIN}/${FOAM_MPI}" "${FOAM_EXT_LIBBIN}") if [[ -n "${PYTHON_LIBDIR}" ]]; then RPATH_DIRS+=("${PYTHON_LIBDIR}") fi RPATH_LIBS="-Wl,--disable-new-dtags" for lib_dir in "${RPATH_DIRS[@]}"; do if [[ -d "${lib_dir}" ]]; then RPATH_LIBS="${RPATH_LIBS} -Wl,-rpath,${lib_dir}" fi done export PYTHON_LIBS="${PYTHON_LINK_LIBS} ${RPATH_LIBS}" rm -f "${FOAM_USER_LIBBIN}/_foam_stepper.so" wmake -j "${JOBS}" libso "${ROOT_DIR}/pythonStepper/pyfoam_stepper" printf 'Built %s/_foam_stepper.so\n' "${FOAM_USER_LIBBIN}"