From b66ec91d01aa163302ea366b567b9d9a34b3fe76 Mon Sep 17 00:00:00 2001 From: mark <mark@opencfd> Date: Thu, 16 Jun 2016 17:51:56 +0200 Subject: [PATCH] ENH: support use of system gmp/mpfr/mpc with ThirdParty gcc - not previously possible to configure a third-party gcc with system gmp/mpfr/mpc. This makes it easier to switch between compilers for testing. --- etc/tools/ThirdPartyFunctions | 13 ++++++ makeCGAL | 77 ++++++++++++++++++++++++----------- makeGcc | 40 ++++++++++++++++-- 3 files changed, 103 insertions(+), 27 deletions(-) diff --git a/etc/tools/ThirdPartyFunctions b/etc/tools/ThirdPartyFunctions index 60cdf36..2e27969 100644 --- a/etc/tools/ThirdPartyFunctions +++ b/etc/tools/ThirdPartyFunctions @@ -61,6 +61,19 @@ then fi +# Test if it matches "*-none" +_foamIsNone() +{ + test "${1##*-}" = none +} + +# Test if it matches "*-system" +_foamIsSystem() +{ + test "${1##*-}" = system +} + + # # Download file $1 from url $2 into download/ directory # diff --git a/makeCGAL b/makeCGAL index 8d2f9e8..32aa5f8 100755 --- a/makeCGAL +++ b/makeCGAL @@ -59,15 +59,17 @@ wmakeCheckPwd "$WM_THIRD_PARTY_DIR" || { } . etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ +Script="${0##*/}" usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat<<USAGE -usage: ${0##*/} [OPTION] [CGAL-VERSION] [boost-VERSION] [gmp-VERSION] [mpfr-VERSION] +usage: $Script [OPTION] [CGAL-VERSION] [boost-VERSION] [gmp-VERSION] [mpfr-VERSION] options: -gcc force g++ instead of the value from \$WM_CXX + -system use system versions for boost/gmp/mpfr -help * build CGAL with @@ -77,9 +79,9 @@ options: $mpfrPACKAGE Normally builds against ThirdParty boost and gmp/mpfr when possible. -To override this behaviour (and use the system boost and/o gmp/mpfr), +To override this behaviour (and use the system boost and/or gmp/mpfr), simply specify a 'system' version. For example, - ${0##*/} boost-system gmp-system + $Script boost-system gmp-system Note: mixing system and ThirdParty for gmp/mpfr is not supported. @@ -106,11 +108,17 @@ do export CXX=g++ # use g++ shift ;; - gmp-[4-9]* | gmp-sys*) + -sys*) + gmpPACKAGE="gmp-system" + mpfrPACKAGE="mpfr-system" + boostPACKAGE="boost-system" + shift + ;; + gmp-[4-9]* | gmp-system) gmpPACKAGE="${1%%/}" shift ;; - mpfr-[2-9]* | mpfr-sys*) + mpfr-[2-9]* | mpfr-system) mpfrPACKAGE="${1%%/}" shift ;; @@ -118,7 +126,7 @@ do cgalPACKAGE="${1%%/}" shift ;; - boost-[0-9]* | boost_[0-9]* | boost-sys* ) + boost-[0-9]* | boost_[0-9]* | boost-system ) boostPACKAGE="${1%%/}" shift ;; @@ -146,12 +154,27 @@ if [ -d "$BOOST_ARCH_PATH" ] then boostInc="$BOOST_ARCH_PATH/include" boostLib="$BOOST_ARCH_PATH/lib" -elif [ -d "$BOOST_SOURCE_DIR" ] +elif _foamIsSystem $BOOST_ARCH_PATH then + echo "Using boost-system" + + boostInc="/usr/include" + + # For completeness: + # 64-bit needs lib64, but 32-bit needs lib (not lib32) + if [ "$WM_ARCH_OPTION" = 64 ] + then + boostLib="/usr/lib$WM_ARCH_OPTION" + else + boostLib="/usr/lib" + fi +else + echo "Starting build: boost" + echo + boostInc="$BOOST_ARCH_PATH/include" boostLib="$BOOST_ARCH_PATH/lib" - echo "Starting build: boost" ( cd $BOOST_SOURCE_DIR || exit 1 @@ -167,17 +190,13 @@ then echo "Error building: boost" exit 1 } -else - boostInc="/usr/include" +fi - # For completeness: - # 64-bit needs lib64, but 32-bit needs lib (not lib32) - if [ "$WM_ARCH_OPTION" = 64 ] - then - boostLib="/usr/lib$WM_ARCH_OPTION" - else - boostLib="/usr/lib" - fi +# nothing to build +if _foamIsSystem "$cgalPACKAGE" +then + echo "Using CGAL-system" + exit 0 fi # nothing left to build @@ -242,7 +261,7 @@ MPFR_ARCH_PATH=$installBASE/$mpfrPACKAGE cd $CGAL_BINARY_DIR || exit 1 - unset configBoost configGmpMpfr + unset configBoost configGmp configMpfr echo "----" echo "Configuring $cgalPACKAGE with boost $BOOST_VERSION_NO" echo " Source : $CGAL_SOURCE_DIR" @@ -271,22 +290,32 @@ CMAKE_OPTIONS ) fi - if [ -d "$GMP_ARCH_PATH" -a -d "$MPFR_ARCH_PATH" ] + if [ -d "$GMP_ARCH_PATH" ] then - echo " ThirdParty : gmp/mpfr" - configGmpMpfr=$(cat <<CMAKE_OPTIONS + echo " ThirdParty : gmp" + configGmp=$(cat <<CMAKE_OPTIONS -DGMP_INCLUDE_DIR=$GMP_ARCH_PATH/include -DGMP_LIBRARIES_DIR=$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH -DGMP_LIBRARIES=$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libgmp.so -DGMPXX_INCLUDE_DIR=$GMP_ARCH_PATH/include -DGMPXX_LIBRARIES=$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libgmpxx.so +CMAKE_OPTIONS +) + else + echo " system : gmp" + fi + + if [ -d "$MPFR_ARCH_PATH" ] + then + echo " ThirdParty : mpfr" + configMpfr=$(cat <<CMAKE_OPTIONS -DMPFR_INCLUDE_DIR=$MPFR_ARCH_PATH/include -DMPFR_LIBRARIES_DIR=$MPFR_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH -DMPFR_LIBRARIES=$MPFR_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmpfr.so CMAKE_OPTIONS ) else - echo " system : gmp/mpfr" + echo " system : mpfr" fi echo "----" @@ -295,7 +324,7 @@ CMAKE_OPTIONS -DCMAKE_INSTALL_PREFIX=$CGAL_ARCH_PATH \ -DCMAKE_BUILD_TYPE=Release \ -DWITH_CGAL_Qt5=OFF \ - $configBoost $configGmpMpfr \ + $configBoost $configGmp $configMpfr \ $CGAL_SOURCE_DIR \ && make -j $WM_NCOMPPROCS \ && make install || exit 1 diff --git a/makeGcc b/makeGcc index b337cb9..70721c4 100755 --- a/makeGcc +++ b/makeGcc @@ -28,6 +28,10 @@ # Description # Build script gcc and gmp, mpfr, mpc. # +# Normally builds against ThirdParty gmp/mpfr when possible. +# To override this behaviour (and use the system gmp/mpfr/mpc), +# simply specify a 'system' version. For example, +# makeGcc gmp-system # #------------------------------------------------------------------------------ # get default GCC, mpfr, gmp and mpc versions @@ -62,6 +66,7 @@ usage() { usage: $Script [OPTION] [gcc-VERSION] [gmp-VERSION] [mpfr-VERSION] [mpc-VERSION] options: -no-multilib for 64-bit systems without 32-bit support + -system use system versions for gmp/mpfr/mpc -help * build combinations of gmp, mpfr, mpc and gcc @@ -88,15 +93,21 @@ do GCC_BUILD_OPTIONS="--disable-multilib" shift ;; - gmp-[4-9]*) + -sys*) + gmpPACKAGE="gmp-system" + mpfrPACKAGE="mpfr-system" + mpcPACKAGE="mpc-system" + shift + ;; + gmp-[4-9]* | gmp-system) gmpPACKAGE="${1%%/}" shift ;; - mpfr-[2-9]*) + mpfr-[2-9]* | mpfr-system) mpfrPACKAGE="${1%%/}" shift ;; - mpc-[0-9]*) + mpc-[0-9]* | mpc-system) mpcPACKAGE="${1%%/}" shift ;; @@ -116,6 +127,15 @@ then exit 1 fi +cat<<SUMMARY +GCC configuration +------------------ + GCC = $gccPACKAGE + GMP = $gmpPACKAGE + MPFR = $mpfrPACKAGE + MPC = $mpcPACKAGE +------------------ +SUMMARY # Set 32 or 64 bit ABI case "$WM_ARCH_OPTION" in @@ -138,6 +158,7 @@ GMP_ARCH_PATH=$installBASE/$gmpPACKAGE MPFR_ARCH_PATH=$installBASE/$mpfrPACKAGE MPC_ARCH_PATH=$installBASE/$mpcPACKAGE + # ================ # Build GMP # ================ @@ -145,6 +166,9 @@ echo "---------------" if [ -d $GMP_ARCH_PATH ] then echo "Already built: $gmpPACKAGE" +elif _foamIsSystem $GMP_ARCH_PATH +then + echo "Using gmp-system" else echo "Starting build: $gmpPACKAGE" echo @@ -186,6 +210,9 @@ echo "---------------" if [ -d $MPFR_ARCH_PATH ] then echo "Already built: $mpfrPACKAGE" +elif _foamIsSystem $MPFR_ARCH_PATH +then + echo "Using mpfr-system" else echo "Starting build: $mpfrPACKAGE" echo @@ -228,6 +255,9 @@ echo "---------------" if [ -d $MPC_ARCH_PATH ] then echo "Already built: $mpcPACKAGE" +elif _foamIsSystem $MPC_ARCH_PATH +then + echo "Using mpc-system" else echo "Starting build: $mpcPACKAGE" echo @@ -290,6 +320,10 @@ else mkdir -p $buildDIR cd $buildDIR + _foamIsSystem "$GMP_ARCH_PATH" && GMP_ARCH_PATH=/usr # revert to system + _foamIsSystem "$MPFR_ARCH_PATH" && MPFR_ARCH_PATH=/usr # revert to system + _foamIsSystem "$MPC_ARCH_PATH" && MPC_ARCH_PATH=/usr # revert to system + set -x $sourceDIR/configure \ --prefix=$GCC_ARCH_PATH \ -- GitLab