#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation # Copyright (C) 2016-2021 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # Script # makeGcc # # Description # Build script gcc and gmp, mpfr, mpc. # # To force building against the system gmp/mpfr/mpc libraries, # use a corresponding '*-system' version. For example, # # makeGcc gmp-system # # or use the '-system' options to use system libraries everywhere. # # The WM_COMPILER value can also be used specify a known gcc version. # For example (also compiling against system gmp/mpfr/mpc), # # WM_COMPILER=Gcc51 ./makeGcc -system # # ---------------------------------------------- # 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 #------------------------------------------------------------------------------ unset GMP_ARCH_PATH MPFR_ARCH_PATH # Purge old [ "${WM_COMPILER#Gcc}" = "$WM_COMPILER" ] && WM_COMPILER=Gcc # Force gcc WM_COMPILER_TYPE=ThirdParty # Ensure we get the correct settings # Default GCC, mpfr, gmp and mpc versions from OpenFOAM etc/config.sh file: _foamConfig compiler GMP_PACKAGE="${gmp_version:-gmp-system}" MPFR_PACKAGE="${mpfr_version:-mpfr-system}" MPC_PACKAGE="${mpc_version:-mpc-system}" GCC_PACKAGE="$gcc_version" #------------------------------------------------------------------------------ printVersions() { listPackageVersions gcc gmp mpfr mpc; exit 0; } printHelp() { cat< to LD_LIBRARY_PATH, if it exists. 0 on success, 1 on failure addLib() { if [ -d "$1" ] then export LD_LIBRARY_PATH="$1:$LD_LIBRARY_PATH" return 0 else return 1 fi } # ================ # Build GMP # ================ echo "---------------" if [ -d "$GMP_PREFIX" ] then echo "Already built: $GMP_PREFIX" elif _foamIsSystem "$GMP_PREFIX" then echo "Using system gmp" else echo "Starting build: $GMP_PACKAGE" echo ( PKG_SOURCE="$GMP_SOURCE" PKG_PREFIX="$GMP_PREFIX" PKG_BUILD="$buildBASE/$GMP_PACKAGE" export GIT_DIR="$PKG_SOURCE/.git" cd "$PKG_SOURCE" || exit make distclean 2>/dev/null || true rm -rf "$PKG_BUILD" mkdir -p "$PKG_BUILD" cd "$PKG_BUILD" && set -x && \ "$PKG_SOURCE"/configure ABI="$optArch" \ --prefix="$PKG_PREFIX" \ --libdir="$PKG_PREFIX/lib$WM_COMPILER_LIB_ARCH" \ --enable-cxx \ && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $GMP_PACKAGE" ) || { echo "Error building: $GMP_PACKAGE" exit 1 } fi if addLib "$GMP_PREFIX/lib$WM_COMPILER_LIB_ARCH" then configGMP=$(cat </dev/null || true rm -rf "$PKG_BUILD" mkdir -p "$PKG_BUILD" unset configOpt # explicitly enable/disable thread-safe [ -n "$optThreadSafe" ] && configOpt="--${optThreadSafe}-thread-safe" cd "$PKG_BUILD" && set -x && \ "$PKG_SOURCE"/configure ABI="$optArch" \ --prefix="$PKG_PREFIX" \ --libdir="$PKG_PREFIX/lib$WM_COMPILER_LIB_ARCH" \ $configGMP $configOpt \ && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $MPFR_PACKAGE" ) || { echo "Error building: $MPFR_PACKAGE" exit 1 } fi if addLib "$MPFR_PREFIX/lib$WM_COMPILER_LIB_ARCH" then configMPFR=$(cat </dev/null || true rm -rf "$PKG_BUILD" mkdir -p "$PKG_BUILD" cd "$PKG_BUILD" && set -x && \ "$PKG_SOURCE"/configure ABI="$optArch" \ --prefix="$PKG_PREFIX" \ --libdir="$PKG_PREFIX/lib$WM_COMPILER_LIB_ARCH" \ $configGMP $configMPFR \ && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $MPC_PACKAGE" ) || { echo "Error building: $MPC_PACKAGE" exit 1 } fi if addLib "$MPC_PREFIX/lib$WM_COMPILER_LIB_ARCH" then configMPC=$(cat </dev/null || true rm -rf "$PKG_BUILD" mkdir -p "$PKG_BUILD" unset configOpt # with/without multi-lib (32-bit support on 64-bit systems) [ -n "$optMultilib" ] && configOpt="--${optMultilib}-multilib" cd "$PKG_BUILD" && set -x && \ "$PKG_SOURCE"/configure \ --prefix="$PKG_PREFIX" \ --with-pkgversion=www.openfoam.com \ --enable-languages=c,c++ \ --enable-__cxa_atexit \ --enable-libstdcxx-allocator=new \ --with-system-zlib \ $configGMP $configMPFR $configMPC $configOpt \ MAKEINFO=missing \ && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $GCC_PACKAGE" ) || { echo "Error building: $GCC_PACKAGE" exit 1 } fi #------------------------------------------------------------------------------