View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002113 | ThirdParty | Patch | public | 2016-06-08 12:02 | 2016-06-08 15:16 |
Reporter | wyldckat | Assigned To | henry | ||
Priority | low | Severity | minor | Reproducibility | N/A |
Status | resolved | Resolution | fixed | ||
Product Version | dev | ||||
Fixed in Version | dev | ||||
Summary | 0002113: makeGcc: added "-no-multilib" option to the script | ||||
Description | When building a 64-bit custom GCC version, and although there are certain dependencies that are a must, the multilib requirement is something that shouldn't be always obligatory, given that the end user will unlikely need to build both 32 and 64-bit builds of OpenFOAM and might not be possible to install the necessary 32-bit base support on the system. The attached file "makeGcc" aims to help with that, by at least providing the option to disable building GCC with multilib support. Also added the respective usage information to the help message, following the same convention as in "makeParaView". | ||||
Steps To Reproduce | Example usage: makeGcc -no-multilib | ||||
Tags | No tags attached. | ||||
|
makeGcc (6,986 bytes)
#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. # # OpenFOAM is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # OpenFOAM is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. # # Script # makeGcc # # Description # Build script for gmp, mpfr and gcc-[4-9].?.? # #------------------------------------------------------------------------------ # get default GCC, mpfr, gmp and mpc versions . $WM_PROJECT_DIR/etc/config.sh/functions _foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/compiler) gmpPACKAGE=${gmp_version:-gmp-5.1.2} mpfrPACKAGE=${mpfr_version:-mpfr-3.1.2} mpcPACKAGE=${mpc_version:-mpc-1.0.1} gccPACKAGE=$gcc_version #------------------------------------------------------------------------------ # Run from third-party directory only wmakeCheckPwd "$WM_THIRD_PARTY_DIR" || { echo "Error: Current directory is not \$WM_THIRD_PARTY_DIR" echo " The environment variables are inconsistent with the installation." echo " Check the OpenFOAM entries in your dot-files and source them." exit 1 } . etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat<<USAGE usage: ${0##*/} [option] [gmp-VERSION] [mpfr-VERSION] [mpc-VERSION] <gcc-VERSION> options: -no-multilib for 64-bit systems that don't have 32-bit support -help * build combinations of gmp, mpfr, mpc and gcc $gmpPACKAGE $mpfrPACKAGE $mpcPACKAGE $gccPACKAGE USAGE exit 1 } GCC_BUILD_OPTIONS="" # Parse options while [ "$#" -gt 0 ] do case "$1" in -h | -help) usage ;; -no-multilib) GCC_BUILD_OPTIONS="--disable-multilib" shift ;; gmp-[4-9]*) gmpPACKAGE="${1%%/}" shift ;; mpfr-[2-9]*) mpfrPACKAGE="${1%%/}" shift ;; mpc-[0-9]*) mpcPACKAGE="${1%%/}" shift ;; gcc-[4-9]*) gccPACKAGE="${1%%/}" shift ;; *) usage "unknown option/argument: '$*'" ;; esac done if [ -z "$gccPACKAGE" ] then usage "Please specify gcc-VERSION" exit 1 fi # Set 32 or 64 bit ABI case "$WM_ARCH_OPTION" in 32 | 64) ABI=$WM_ARCH_OPTION ;; *) usage "Please set WM_ARCH_OPTION to either 32 or 64'$*'" ;; esac #------------------------------------------------------------------------------ # Build/install without compiler name buildBASE=$WM_THIRD_PARTY_DIR/build/$WM_ARCH$WM_COMPILER_ARCH installBASE=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH GCC_ARCH_PATH=$installBASE/$gccPACKAGE GMP_ARCH_PATH=$installBASE/$gmpPACKAGE MPFR_ARCH_PATH=$installBASE/$mpfrPACKAGE MPC_ARCH_PATH=$installBASE/$mpcPACKAGE # # Build GMP # echo "---------------" if [ -d $GMP_ARCH_PATH ] then echo "Already built: $gmpPACKAGE" else echo "Starting build: $gmpPACKAGE" echo ( sourceDIR=$WM_THIRD_PARTY_DIR/$gmpPACKAGE buildDIR=$buildBASE/$gmpPACKAGE cd $sourceDIR || exit 1 make distclean 2>/dev/null rm -rf $buildDIR mkdir -p $buildDIR cd $buildDIR set -x $sourceDIR/configure ABI=$ABI \ --prefix=$GMP_ARCH_PATH \ --enable-cxx \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $gmpPACKAGE" ) || { echo "Error building: $gmpPACKAGE" exit 1 } fi export LD_LIBRARY_PATH="$GMP_ARCH_PATH/lib:$LD_LIBRARY_PATH" # # Build MPFR # echo "---------------" if [ -d $MPFR_ARCH_PATH ] then echo "Already built: $mpfrPACKAGE" else echo "Starting build: $mpfrPACKAGE" echo ( sourceDIR=$WM_THIRD_PARTY_DIR/$mpfrPACKAGE buildDIR=$buildBASE/$mpfrPACKAGE cd $sourceDIR || exit 1 make distclean 2>/dev/null rm -rf $buildDIR mkdir -p $buildDIR cd $buildDIR set -x $sourceDIR/configure ABI=$ABI \ --prefix=$MPFR_ARCH_PATH \ --with-gmp=$GMP_ARCH_PATH \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $mpfrPACKAGE" ) || { echo "Error building: $mpfrPACKAGE" exit 1 } fi export LD_LIBRARY_PATH="$MPFR_ARCH_PATH/lib:$LD_LIBRARY_PATH" # # Build mpc # echo "---------------" if [ -d $MPC_ARCH_PATH ] then echo "Already built: $mpcPACKAGE" else echo "Starting build: $mpcPACKAGE" echo ( sourceDIR=$WM_THIRD_PARTY_DIR/$mpcPACKAGE buildDIR=$buildBASE/$mpcPACKAGE cd $sourceDIR || exit 1 make distclean 2>/dev/null rm -rf $buildDIR mkdir -p $buildDIR cd $buildDIR set -x $sourceDIR/configure ABI=$ABI \ --prefix=$MPC_ARCH_PATH \ --with-gmp=$GMP_ARCH_PATH \ --with-mpfr=$MPFR_ARCH_PATH \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $mpcPACKAGE" ) || { echo "Error building: $mpcPACKAGE" exit 1 } fi if [ -d "$MPC_ARCH_PATH" ] then export LD_LIBRARY_PATH="$MPC_ARCH_PATH/lib:$LD_LIBRARY_PATH" fi # # Build GCC # might need 32-bit glibc-devel headers to compile # E.g. on ubuntu install g++-multilib # echo "---------------" if [ -d $GCC_ARCH_PATH ] then echo "Already built: $gccPACKAGE" else echo "Starting build: $gccPACKAGE" echo ( sourceDIR=$WM_THIRD_PARTY_DIR/$gccPACKAGE buildDIR=$buildBASE/$gccPACKAGE cd $sourceDIR || exit 1 make distclean 2>/dev/null rm -rf $buildDIR mkdir -p $buildDIR cd $buildDIR set -x $sourceDIR/configure \ --prefix=$GCC_ARCH_PATH \ --with-gmp=$GMP_ARCH_PATH \ --with-mpfr=$MPFR_ARCH_PATH \ --with-mpc=$MPC_ARCH_PATH \ --with-pkgversion=OpenFOAM \ --enable-languages=c,c++ \ --enable-__cxa_atexit \ --enable-libstdcxx-allocator=new \ --with-system-zlib \ $GCC_BUILD_OPTIONS \ MAKEINFO=missing \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $gccPACKAGE" ) || { echo "Error building: $gccPACKAGE" exit 1 } fi #------------------------------------------------------------------------------ |
|
Resolved by commit ce4951579b8e01ce524ed6e465ea352e6a243f1b |
Date Modified | Username | Field | Change |
---|---|---|---|
2016-06-08 12:02 | wyldckat | New Issue | |
2016-06-08 12:02 | wyldckat | Status | new => assigned |
2016-06-08 12:02 | wyldckat | Assigned To | => henry |
2016-06-08 12:02 | wyldckat | File Added: makeGcc | |
2016-06-08 15:15 | henry | Note Added: 0006409 | |
2016-06-08 15:15 | henry | Status | assigned => resolved |
2016-06-08 15:15 | henry | Fixed in Version | => dev |
2016-06-08 15:15 | henry | Resolution | open => fixed |