#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2016-2021 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # Script # makeMesa # # Description # Build script for MESA # # Note # Building with mesa-12.x.x fails to create an include/GL directory and # an "osmesa.h" file. Both make it fairly useless for off-screen VTK. # # Building with mesa-11.x, mesa-13.x and mesa-17.x seems to be okay. # # Known dependencies (likely incomplete) # # openSUSE 15.2: # # dri2proto-devel # glproto-devel # libxshmfence-devel # # ---------------------------------------------- # NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ if : # Run from third-party directory then cd "${0%/*}" || exit wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" echo " Check your OpenFOAM environment and installation" exit 1 } fi . "${WM_THIRD_PARTY_DIR:?}"/etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ # Obtain version from OpenFOAM etc/config.sh file: unset vtk_version mesa_version mesa_llvm # Purge current values _foamConfig vtk PACKAGE="$mesa_version" #------------------------------------------------------------------------------ printVersions() { listPackageVersions mesa; exit 0; } printHelp() { cat< may mask the header adjustMESA() { pkgconfigAdjust "$PKG_PREFIX" rm -rf "$PKG_PREFIX"/include/GLES "$PKG_PREFIX"/include/GLES1 echo "removed all gles1 includes" } # Old MESA with autoconfig if [ -e "$PKG_SOURCE"/configure ] then ( # Configuration options: unset configOpt compFlags # Sometimes for LLVM issues # compFlags="-D_GLIBCXX_USE_CXX11_ABI=0" # Possibly for older mesa versions (see paraview wiki) # compFlags="-O2 -DDEFAULT_SOFTWARE_DEPTH_BITS=31" if [ -d "$LLVM_ARCH_PATH" ] then configOpt="$configOpt --with-llvm-prefix=$LLVM_ARCH_PATH" fi # Additional configure options if [ "$1" = "--" ] then shift configOpt="$configOpt $@" fi # End of configuration options # ---------------------------- PKG_BUILD="$buildBASE/$PACKAGE" cd "$PKG_SOURCE" || exit echo "----" echo "Building $PACKAGE (with autoconf)" echo " Source : $PKG_SOURCE" echo " Target : $PKG_PREFIX" if [ -d "$LLVM_ARCH_PATH" ] then echo " llvm : $LLVM_ARCH_PATH" fi echo "----" if [ -n "$compFlags" ] then CFLAGS="$CFLAGS $compFlags" CXXFLAGS="$CXXFLAGS $compFlags" fi ## autoreconf -fi rm -rf "$PKG_PREFIX" rm -rf "$PKG_BUILD" mkdir -p "$PKG_BUILD" cd "$PKG_BUILD" && set -x && \ "$PKG_SOURCE"/configure \ --prefix="$PKG_PREFIX" \ --disable-xvmc \ --disable-glx \ --disable-dri \ --disable-gbm \ --disable-egl \ --disable-gles1 \ --enable-texture-float \ --enable-gallium-osmesa --with-gallium-drivers=swrast \ $configOpt \ && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built $PACKAGE" \ && adjustMESA ) || { echo "Error building: MESA" exit 1 } elif [ -e "$PKG_SOURCE"/meson.build ] then ( # Configuration options: unset configOpt compFlags # Sometimes for LLVM issues # compFlags="-D_GLIBCXX_USE_CXX11_ABI=0" # Possibly for older mesa versions (see paraview wiki) # compFlags="-O2 -DDEFAULT_SOFTWARE_DEPTH_BITS=31" # Additional configure options if [ "$1" = "--" ] then shift configOpt="$configOpt $@" fi # End of configuration options # ---------------------------- PKG_BUILD="$buildBASE/$PACKAGE" cd "$PKG_SOURCE" || exit echo "----" echo "Building $PACKAGE (with meson)" echo " Source : $PKG_SOURCE" echo " Target : $PKG_PREFIX" if [ -d "$LLVM_ARCH_PATH" ] then echo " llvm : $LLVM_ARCH_PATH" fi echo "----" if [ -n "$compFlags" ] then CFLAGS="$CFLAGS $compFlags" CXXFLAGS="$CXXFLAGS $compFlags" fi # Needs c++14 not c++11 CXXFLAGS="$(echo "$CXXFLAGS" | sed 's/c++11/c++14/')" rm -rf "$PKG_PREFIX" rm -rf "$PKG_BUILD" mkdir -p "$PKG_BUILD" cd "$PKG_SOURCE" && set -x && \ meson "$PKG_BUILD" \ --prefix="$PKG_PREFIX" \ -Dplatforms=x11 \ -Dosmesa=gallium \ -Dgallium-drivers=swrast \ -Ddri-drivers=[] \ -Dvulkan-drivers=[] \ $configOpt \ && set +x \ && ninja -j $WM_NCOMPPROCS -C "$PKG_BUILD" \ && ninja -C "$PKG_BUILD" install \ && echo "Built $PACKAGE" \ && adjustMESA ) || { echo "Error building: MESA" exit 1 } else echo "Error building: MESA. Not autoconfig or meson?" exit 1 fi # -----------------------------------------------------------------------------