Legacy patches to compile MCFM-8.3
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

89 lines
2.5 KiB

#!/usr/bin/env bash
# exit on any errors
set -e
set -o pipefail
# OS X users probably need some help
# since g++ by default is linked to clang and not the gnu compiler.
OSXGFORTRAN=`command -v gfortran-fsf-6 || command -v gfortran-fsf-7 || echo`
OSXGPP=`command -v g++-fsf-6 || command -v g++-fsf-7 || echo`
if [[ ! -z ${OSXGFORTRAN} ]] && [[ ! -z ${OSXGPP} ]] ; then
echo "You are probably running OS X. Setting up correct compilers in makefile."
# don't you dare using | in your path...
sed -i.bak "s|^OSXGFORTRAN.*|OSXGFORTRAN = ${OSXGFORTRAN}|" makefile
sed -i.bak "s|^OSXGPP.*|OSXGPP = ${OSXGPP}|" makefile
export FC=${OSXGFORTRAN}
export CXX=${OSXGPP}
else
if [[ -z ${FC} ]] || [[ -z ${CXX} ]] || [[ -z ${CC} ]]; then
export FC=gfortran
export CXX=g++
export CC=gcc
fi
fi
# We require gnu make. If it doesn't exist, assume that make is gnu make.
if (command -v gmake > /dev/null 2>&1); then
export MAKE=gmake
else
export MAKE=make
fi
pushd () {
command pushd "$@" > /dev/null
}
popd () {
command popd "$@" > /dev/null
}
mkdir -p obj
QCDLOOP_DIR="$( cd "$(dirname "$0")" ; pwd -P )"/qcdloop-2.0.2
if getconf _NPROCESSORS_ONLN > /dev/null 2>&1; then
MAKETHREADS="$(getconf _NPROCESSORS_ONLN)"
else
MAKETHREADS=1
fi
mkdir -p "$QCDLOOP_DIR"/local
if [ ! -e "$QCDLOOP_DIR"/local/lib/libqcdloop.a ]; then
pushd "$QCDLOOP_DIR"
CXXFLAGS="-fopenmp -O2" ./configure --enable-shared=false --prefix="$QCDLOOP_DIR"/local
${MAKE} -j$MAKETHREADS && ${MAKE} install
#$FC -c mod_qcdloop_c.f
popd
fi
QD_DIR="$( cd "$(dirname "$0")" ; pwd -P )"/qd-2.3.22
mkdir -p "$QD_DIR"/local
if [ ! -e "$QD_DIR"/local/lib/libqd.a ]; then
pushd "$QD_DIR"
./configure --enable-fortran --enable-fma --prefix="$QD_DIR"/local
${MAKE} -j$MAKETHREADS && ${MAKE} install
popd
fi
# mod_qcdloop_c.mod is needed by TensorReduction
pushd obj
${FC} -c ../src/Mods/mod_qcdloop_c.f
popd
# Compile TensorReduction libraries if necessary
mkdir -p TensorReduction/ov/obj
mkdir -p TensorReduction/pvext/obj
mkdir -p TensorReduction/pv/obj
mkdir -p TensorReduction/recur/smallF/obj
mkdir -p TensorReduction/recur/smallG/obj
mkdir -p TensorReduction/recur/smallP/obj
mkdir -p TensorReduction/recur/smallY/obj
if [ ! -e TensorReduction/pv/libpv.a ]; then
echo 'Compiling OMP TensorReduction library'
pushd TensorReduction
${MAKE} -j$MAKETHREADS
popd
fi
echo ''
echo 'Installation complete. You may now compile MCFM by running make'