47 lines
1.8 KiB
Bash
47 lines
1.8 KiB
Bash
|
|
#!/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}"
|