#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. # \\/ 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 . # # Script # makeADIOS # # Description # Build script for ADIOS # #------------------------------------------------------------------------------ # Get version info . $WM_PROJECT_DIR/etc/config.sh/functions unset -f _foamAddPath _foamAddLib _foamAddMan # get settings only _foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/ADIOS) adiosPACKAGE=${adios_version:-adios-none} #------------------------------------------------------------------------------ # 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< libadios_$FOAM_MPI # - libadios_nompi -> libadios_dummy # echo "Adjust library names for ADIOS" for i in \ $ADIOS_ARCH_PATH/etc/adios_config.flags \ ; do [ -f "$i" ] || { echo " no such file - '$i'" continue } if sed -i \ -e '/_FLIB=/d' \ -e '/_V1_INC=/d' \ -e 's| *| |g' \ -e 's|\(-ladios[a-z]*_\)nompi |\1dummy |g' \ $i then echo " '$i'" else echo " problems with '$i'" fi if [ "$FOAM_MPI" != dummy ] then sed -i -e 's|\(-ladios[a-z]*\) |\1_'"$FOAM_MPI |g" $i || \ echo " problems with '$i'" fi done } # # List ADIOS methods/configuration # listMethods() { [ -f $ADIOS_ARCH_PATH/bin/adios_config ] || { echo "Warning: no adios_config" return 1 } echo "===============" # May have problems listing parallel methods (eg, transport key missing) if $ADIOS_ARCH_PATH/bin/adios_config -m >/dev/null 2>&1 then $ADIOS_ARCH_PATH/bin/adios_config -m 2>/dev/null else echo "Warning: could not list parallel methods" # Fallback to serial methods $ADIOS_ARCH_PATH/bin/adios_config -s -m 2>/dev/null fi || echo "Warning: could not list configured methods" echo "===============" } # Needs future adjustment # - for shared library # - for mpi-specific library locations if [ -f $ADIOS_ARCH_PATH/include/adios.h \ -a -r $ADIOS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libadios_${FOAM_MPI}.a ] then echo " ADIOS header in $ADIOS_ARCH_PATH/include" ### echo " ADIOS libs in $FOAM_EXT_LIBBIN" # dynamic echo " ADIOS libs in $ADIOS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" # static listMethods elif [ -z "$CMAKE_PATH" ] then echo "Starting build: $adiosPACKAGE (using configure)" echo ( # configuration options: unset configOpt # Add InfiniBand support ibDir=/usr/local/ofed if [ -d "$ibDir" -a "$FOAM_MPI" != dummy ] then configOpt="$configOpt --with-infiniband=$ibDir" fi # Transport layers if [ -f "/usr/include/bzlib.h" ] then configOpt="$configOpt --with-bzip2" fi if [ -f "/usr/include/zlib.h" ] then configOpt="$configOpt --with-zlib" fi # Other types of support ## $configOpt="$configOpt --with-hdf5=..." ## $configOpt="$configOpt --with-lustre=..." ## configOpt="$configOpt --enable-research-transports" # end of configuration options # ---------------------------- buildDIR=$buildBASE/$adiosPACKAGE cd $ADIOS_SOURCE_DIR || exit 1 [ -e Makefile ] && make distclean 2>/dev/null export GIT_DIR=$ADIOS_SOURCE_DIR/.git applyPatch $adiosPACKAGE $ADIOS_SOURCE_DIR # Remove any existing build folder and recreate rm -rf $ADIOS_ARCH_DIR rm -rf $buildDIR 2>/dev/null mkdir -p $buildDIR [ -f configure ] || { echo "no configure for $adiosPACKAGE ... trying autogen" ./autogen.sh } # May not work properly with FOAM_MPI = dummy if [ "$FOAM_MPI" = dummy ] then configOpt="$configOpt --without-mpi" else CC=mpicc CXX=mpicxx fi # Install into lib64/ cd $buildDIR && $ADIOS_SOURCE_DIR/configure \ --prefix=$ADIOS_ARCH_PATH \ --libdir=$ADIOS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \ --disable-fortran \ --with-pic \ --without-fastbit \ $configOpt \ && make -j $WM_NCOMPPROCS all \ && make install \ && echo "Built: $adiosPACKAGE" \ && adjustADIOS \ && listMethods ) || { echo "Error building: $adiosPACKAGE" } else # CMake options often lag the configure ones echo "Starting build: $adiosPACKAGE (using cmake)" echo ( buildDIR=$buildBASE/$adiosPACKAGE cd $ADIOS_SOURCE_DIR || exit 1 export GIT_DIR=$ADIOS_SOURCE_DIR/.git applyPatch $adiosPACKAGE $ADIOS_SOURCE_DIR # Remove any existing build folder and recreate rm -rf $ADIOS_ARCH_DIR rm -rf $buildDIR 2>/dev/null mkdir -p $buildDIR # May not work properly with FOAM_MPI = dummy if [ "$FOAM_MPI" = dummy ] then configOpt="$configOpt --without-mpi" else CC=mpicc CXX=mpicxx fi cmake=$(findCMake) # Install into lib64/ cd $buildDIR && $cmake \ -DCMAKE_INSTALL_PREFIX=$ADIOS_ARCH_PATH \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_FORTRAN:BOOL=FALSE \ $ADIOS_SOURCE_DIR \ && make -j $WM_NCOMPPROCS all \ && make install \ && echo "Built: $adiosPACKAGE" \ && adjustADIOS \ && listMethods ) || { echo "Error building: $adiosPACKAGE" } fi # ----------------------------------------------------------------- end-of-file