mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
308 lines
8.6 KiB
Bash
Executable File
308 lines
8.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#------------------------------------------------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | Copyright (C) 2012-2018 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
|
|
# makeCGAL
|
|
#
|
|
# Description
|
|
# Build script for CGAL
|
|
#
|
|
# Note
|
|
# Normally builds against ThirdParty boost and gmp/mpfr when possible.
|
|
# To override this behaviour (and use the system boost and/or gmp/mpfr),
|
|
# simply specify a 'system' version. For example,
|
|
# makeCGAL boost-system gmp-system
|
|
#
|
|
# Mixing system and ThirdParty for gmp/mpfr is not supported.
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
# Get CGAL, boost and gmp/mpfr versions
|
|
. $WM_PROJECT_DIR/etc/config.sh/functions
|
|
_foamEval $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/CGAL)
|
|
_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/compiler)
|
|
|
|
cgalPACKAGE=${cgal_version:-CGAL-4.10}
|
|
boostPACKAGE=${boost_version:-boost-system}
|
|
gmpPACKAGE=${gmp_version:-gmp-system}
|
|
mpfrPACKAGE=${mpfr_version:-mpfr-system}
|
|
|
|
#------------------------------------------------------------------------------
|
|
# 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] [CGAL-VERSION] [boost-VERSION] [gmp-VERSION] [mpfr-VERSION]
|
|
options:
|
|
-gcc force g++ instead of the value from \$WM_CXX
|
|
-help
|
|
|
|
* build CGAL with
|
|
$cgalPACKAGE
|
|
$boostPACKAGE
|
|
$gmpPACKAGE
|
|
$mpfrPACKAGE
|
|
|
|
Normally builds against ThirdParty boost and gmp/mpfr when possible.
|
|
To override this behaviour (and use the system boost and/o gmp/mpfr),
|
|
simply specify a 'system' version. For example,
|
|
${0##*/} boost-system gmp-system
|
|
|
|
Note: mixing system and ThirdParty for gmp/mpfr is not supported.
|
|
|
|
USAGE
|
|
exit 1
|
|
}
|
|
|
|
|
|
# Ensure CMake gets the correct C++ compiler
|
|
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
|
|
|
|
|
|
# Parse options
|
|
while [ "$#" -gt 0 ]
|
|
do
|
|
case "$1" in
|
|
-h | -help)
|
|
usage
|
|
;;
|
|
-gcc)
|
|
export CXX=g++ # use g++
|
|
shift
|
|
;;
|
|
gmp-[4-9]* | gmp-sys*)
|
|
gmpPACKAGE="${1%%/}"
|
|
shift
|
|
;;
|
|
mpfr-[2-9]* | mpfr-sys*)
|
|
mpfrPACKAGE="${1%%/}"
|
|
shift
|
|
;;
|
|
CGAL-[0-9]*)
|
|
cgalPACKAGE="${1%%/}"
|
|
shift
|
|
;;
|
|
boost-[0-9]* | boost_[0-9]* | boost-sys* )
|
|
boostPACKAGE="${1%%/}"
|
|
shift
|
|
;;
|
|
*)
|
|
usage "unknown option/argument: '$*'"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
#
|
|
# Build Boost
|
|
#
|
|
# BOOST_SOURCE_DIR : location of the original sources
|
|
|
|
BOOST_ARCH_PATH=$installBASE/$boostPACKAGE
|
|
BOOST_SOURCE_DIR=$WM_THIRD_PARTY_DIR/$boostPACKAGE
|
|
|
|
if [ -d "$BOOST_ARCH_PATH" ]
|
|
then
|
|
boostInc="$BOOST_ARCH_PATH/include"
|
|
boostLib="$BOOST_ARCH_PATH/lib"
|
|
elif [ -d "$BOOST_SOURCE_DIR" ]
|
|
then
|
|
boostInc="$BOOST_ARCH_PATH/include"
|
|
boostLib="$BOOST_ARCH_PATH/lib"
|
|
|
|
toolset="$WM_CC"
|
|
if [ $WM_COMPILER == "Icc" ]; then
|
|
toolset=intel
|
|
fi
|
|
|
|
echo "Starting build: boost"
|
|
(
|
|
cd $BOOST_SOURCE_DIR || exit 1
|
|
|
|
rm -rf $BOOST_ARCH_PATH
|
|
|
|
./bootstrap.sh \
|
|
--prefix=$BOOST_ARCH_PATH \
|
|
--with-libraries=thread \
|
|
--with-libraries=system \
|
|
&& ./bjam toolset=$toolset -j $WM_NCOMPPROCS install \
|
|
&& echo "Built: boost"
|
|
) || {
|
|
echo "Error building: boost"
|
|
exit 1
|
|
}
|
|
else
|
|
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
|
|
fi
|
|
|
|
|
|
# Retrieve boost version:
|
|
if [ -f "$boostInc/boost/version.hpp" ]
|
|
then
|
|
BOOST_VERSION_NO=`sed -ne 's/^#define *BOOST_VERSION *\([0-9][0-9]*\).*$/\1/p' $boostInc/boost/version.hpp`
|
|
else
|
|
echo "Boost does not appear to be installed"
|
|
echo "stopping build"
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$cgal_version" = "cgal-system" ]
|
|
then
|
|
echo "Using system installation of CGAL"
|
|
exit 0
|
|
fi
|
|
|
|
#
|
|
# Build CGAL
|
|
#
|
|
# CGAL_SOURCE_DIR : location of the original sources
|
|
# CGAL_BINARY_DIR : location of the build
|
|
# CGAL_DIR : location of the installed program
|
|
|
|
CGAL_SOURCE_DIR=$WM_THIRD_PARTY_DIR/$cgalPACKAGE
|
|
CGAL_BINARY_DIR=$buildBASE/$cgalPACKAGE
|
|
CGAL_ARCH_PATH=$installBASE/$cgalPACKAGE
|
|
CGAL_DIR=$CGAL_ARCH_PATH
|
|
|
|
#
|
|
# gmp/mpfr installed without compiler name
|
|
installBASE=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH
|
|
|
|
GMP_ARCH_PATH=$installBASE/$gmpPACKAGE
|
|
MPFR_ARCH_PATH=$installBASE/$mpfrPACKAGE
|
|
|
|
(
|
|
# Remove any existing build folder and recreate
|
|
if [ -d $CGAL_BINARY_DIR ]
|
|
then
|
|
echo "removing old build directory"
|
|
echo " $CGAL_BINARY_DIR"
|
|
rm -rf $CGAL_BINARY_DIR
|
|
fi
|
|
mkdir -p $CGAL_BINARY_DIR
|
|
|
|
cd $CGAL_BINARY_DIR || exit 1
|
|
|
|
unset configBoost configGmpMpfr
|
|
echo "----"
|
|
echo "Configuring $cgalPACKAGE with boost $BOOST_VERSION_NO"
|
|
echo " Source : $CGAL_SOURCE_DIR"
|
|
echo " Build : $CGAL_BINARY_DIR"
|
|
echo " Target : $CGAL_DIR"
|
|
|
|
|
|
if [ -d "$BOOST_ARCH_PATH" ]
|
|
then
|
|
echo " ThirdParty : boost"
|
|
configBoost=$(cat <<CMAKE_OPTIONS
|
|
-DBoost_INCLUDE_DIR=$boostInc
|
|
-DBoost_LIBRARY_DIRS=$boostLib
|
|
-DBoost_THREAD_LIBRARY=$boostLib/libboost_thread.so
|
|
-DBoost_THREAD_LIBRARY_RELEASE=$boostLib/libboost_thread.so
|
|
-DBoost_SYSTEM_LIBRARY=$boostLib/libboost_system.so
|
|
-DBoost_SYSTEM_LIBRARY_RELEASE=$boostLib/libboost_system.so
|
|
-DBoost_VERSION=$BOOST_VERSION_NO
|
|
CMAKE_OPTIONS
|
|
)
|
|
else
|
|
echo " system : boost"
|
|
configBoost=$(cat <<CMAKE_OPTIONS
|
|
-DBOOST_LIBRARYDIR=$boostLib
|
|
CMAKE_OPTIONS
|
|
)
|
|
fi
|
|
|
|
if [ -d "$GMP_ARCH_PATH" -a -d "$MPFR_ARCH_PATH" ]
|
|
then
|
|
echo " ThirdParty : gmp/mpfr"
|
|
configGmpMpfr=$(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
|
|
-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"
|
|
fi
|
|
|
|
echo "----"
|
|
set -x
|
|
cmake \
|
|
-DCMAKE_INSTALL_PREFIX=$CGAL_ARCH_PATH \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DWITH_CGAL_Qt5=OFF \
|
|
-DCGAL_INSTALL_LIB_DIR=lib$WM_COMPILER_LIB_ARCH \
|
|
-DCGAL_CXX_FLAGS="-DCGAL_NO_DEPRECATED_CODE" \
|
|
$configBoost $configGmpMpfr \
|
|
$CGAL_SOURCE_DIR \
|
|
&& make -j $WM_NCOMPPROCS \
|
|
&& make install || exit 1
|
|
|
|
echo "----"
|
|
echo "create '\$CGAL_ARCH_PATH/share/files'"
|
|
echo "----"
|
|
mkdir -p $CGAL_ARCH_PATH/share/src
|
|
rm -f $CGAL_ARCH_PATH/share/files
|
|
|
|
for i in assertions.cpp io.cpp MP_Float.cpp Random.cpp
|
|
do
|
|
if [ -e "$CGAL_SOURCE_DIR/src/CGAL/$i" ]
|
|
then
|
|
\cp $CGAL_SOURCE_DIR/src/CGAL/$i $CGAL_ARCH_PATH/share/src/
|
|
echo "\${CGAL_ARCH_PATH}/share/src/$i" >> $CGAL_ARCH_PATH/share/files
|
|
fi
|
|
done
|
|
|
|
echo "Done CGAL"
|
|
)
|
|
|
|
#------------------------------------------------------------------------------
|