diff --git a/Allclean b/Allclean index 2416e67..b50475c 100755 --- a/Allclean +++ b/Allclean @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation -# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. +# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -26,26 +26,24 @@ # Allclean # # Description -# Clean script for third-party applications and libraries +# Clean script for ThirdParty applications and libraries # +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ -# run from third-party directory only -cd ${0%/*} || exit 1 -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." +# Run from third-party directory only +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } # . etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ -Script=${0##*/} - usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat< [ ... ]] +Usage: ${0##*/} [OPTION] [ [ ... ]] options: -all remove all platforms directories. -current clean the current platform ($WM_OPTIONS). @@ -60,14 +58,18 @@ USAGE } # Print help message -if [ "$1" = "-h" -o "$1" = "-help" ]; then +if [ "$1" = "-h" -o "$1" = "-help" ] +then usage fi #------------------------------------------------------------------------------ # Clean various packages via 'distclean' -for i in openmpi-* ADIOS-* metis-* +for i in \ + openmpi-* metis-* adios-* ADIOS-* gperftools-* qt-* \ + gmp-* mpfr-* mpc-* gcc-* llvm-* \ +; do [ -d "$i" ] && ( echo @@ -105,12 +107,6 @@ fi # # Clean platforms directories # -if [ "$#" -ge 1 ] -then - echo - echo "Clean platforms/sub-directories" -fi - removePlatform() { local platform="$1" @@ -125,6 +121,11 @@ removePlatform() fi } +if [ "$#" -ge 1 ] +then + echo + echo "Clean platforms/sub-directories" +fi # Optionally cleanup platforms specified from the arguments while [ "$#" -ge 1 ] diff --git a/Allwmake b/Allwmake index 06642ef..06fc4ff 100755 --- a/Allwmake +++ b/Allwmake @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation -# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. +# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -28,29 +28,30 @@ # Description # Build script for ThirdParty # +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ # Run from third-party directory only -cd ${0%/*} || exit 1 -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." +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } [ -n "$FOAM_EXT_LIBBIN" ] || { - echo "Error: FOAM_EXT_LIBBIN not set" - echo " Check the OpenFOAM entries in your dot-files and source them." + echo "Error (${0##*/}) : \$FOAM_EXT_LIBBIN not set for ThirdParty" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ -# Export WM settings in a form that GNU configure recognizes +# Compiler/linker settings for CMake/configure [ -n "$WM_CC" ] && export CC="$WM_CC" [ -n "$WM_CXX" ] && export CXX="$WM_CXX" [ -n "$WM_CFLAGS" ] && export CFLAGS="$WM_CFLAGS" [ -n "$WM_CXXFLAGS" ] && export CXXFLAGS="$WM_CXXFLAGS" [ -n "$WM_LDFLAGS" ] && export LDFLAGS="$WM_LDFLAGS" +useGccFlag $@ # Scan arguments for a '-gcc' option warnBuildIssues() { @@ -74,139 +75,19 @@ echo echo ======================================== echo Start ThirdParty Allwmake echo ======================================== - - echo echo ======================================== echo Build MPI libraries if required echo " $MPI_ARCH_PATH" case "$WM_MPLIB" in -OPENMPI) - if [ -r $MPI_ARCH_PATH/lib${WM_COMPILER_LIB_ARCH}/libmpi.so ] - then - echo " have $WM_MPLIB shared library ($FOAM_MPI)" - echo - elif [ -r $MPI_ARCH_PATH/lib${WM_COMPILER_LIB_ARCH}/libmpi.a ] - then - echo " have $WM_MPLIB static library ($FOAM_MPI)" - echo - else - ( - # configuration options: - # Start with GridEngine support - builds without external libraries - configOpt="--with-sge" - - # Add InfiniBand support - ibDir=/usr/local/ofed - ibLib=$infbDIR/lib${WM_COMPILER_LIB_ARCH} - if [ -d "$ibDir" -a -d "$ibLib" ] - then - configOpt="$configOpt --with-verbs=$ibDir --with-verbs-lib=$ibLib" - fi - - # end of configuration options - # ---------------------------- - mpiPACKAGE="${MPI_ARCH_PATH##*/}" - sourceDIR=$sourceBASE/$mpiPACKAGE - buildDIR=$buildBASE/$mpiPACKAGE - - cd $sourceDIR || exit 1 - [ -e Makefile ] && make distclean 2>/dev/null - - rm -rf $MPI_ARCH_PATH - rm -rf $buildDIR - mkdir -p $buildDIR - cd $buildDIR - - set -x - $sourceDIR/configure \ - --prefix=$MPI_ARCH_PATH \ - --disable-orterun-prefix-by-default \ - --enable-shared --disable-static \ - --libdir=$MPI_ARCH_PATH/lib${WM_COMPILER_LIB_ARCH} \ - --enable-mpi-fortran=none \ - --disable-mpi-profile \ - $configOpt \ - && make -j $WM_NCOMPPROCS \ - && make install \ - && echo "Built: $mpiPACKAGE" - ) || { - echo "Error building: $mpiPACKAGE" - exit 1 - } - fi +(OPENMPI | MPICH) + ./make$WM_MPLIB -test "$MPI_ARCH_PATH" || ./make$WM_MPLIB ;; - -MPICH) - if [ -r $MPI_ARCH_PATH/lib/libmpich.so ] - then - echo " have $WM_MPLIB shared library ($FOAM_MPI)" - echo - elif [ -r $MPI_ARCH_PATH/lib/libmpich.a ] - then - echo " have $WM_MPLIB static library ($FOAM_MPI)" - echo - else - ( - # WARNING: unmaintained build code: - # --------------------------------- - mpiPACKAGE="${MPI_ARCH_PATH##*/}" - sourceDIR=$sourceBASE/$mpiPACKAGE - cd $sourceDIR || exit 1 - - set -x - [ -e Makefile ] && make distclean 2>/dev/null - rm -rf $MPI_ARCH_PATH - rm -rf util/machines/machines.* - - ./configure \ - --prefix=$MPI_ARCH_PATH \ - --without-mpe \ - --disable-f77 \ - --disable-f90 \ - --disable-f90modules \ - --disable-mpedbg \ - --disable-devdebug \ - --disable-debug \ - --enable-sharedlib=$MPI_ARCH_PATH/lib \ - --with-device=ch_p4 \ - ; - - # For MPICH2 below 1.5a1 uncomment this line and comment next - # make && make install - - # For MPICH2 1.5a1 or above - make -j $WM_NCOMPPROCS && make install - - make distclean - - if [ -r $MPI_ARCH_PATH ] - then - cd $MPI_ARCH_PATH/bin - for file in * - do - sed s%$MPI_ARCH_PATH%'$MPI_ARCH_PATH'%g $file > temp.$$ - mv temp.$$ $file - chmod 0755 $file - done - - cd $MPI_ARCH_PATH/lib - - if [ -r libmpich.so.1.0 ] - then - rm *.so - ln -s libmpich.so.1.0 libmpich.so - fi - fi - ) - fi - ;; - esac #------------------------------------------------------------------------------ -# Building scotch is still a bit of a pain +# Building scotch on different platforms is still a bit of a pain # Get SCOTCH_VERSION, SCOTCH_ARCH_PATH if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/scotch) @@ -225,7 +106,7 @@ echo " $SCOTCH_ARCH_PATH" SCOTCH_SOURCE_DIR=$sourceBASE/$SCOTCH_VERSION -# This needs generalizing, but works fairly well +# Needs generalizing, but works fairly well scotchMakefile=../../etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM if [ -f $SCOTCH_ARCH_PATH/include/scotch.h \ @@ -238,53 +119,55 @@ elif [ -d "$SCOTCH_SOURCE_DIR" ] then ( cd $SCOTCH_SOURCE_DIR/src || exit 1 + export GIT_DIR=$SCOTCH_SOURCE_DIR/.git # Mask seeing our own git-repo rm -rf $SCOTCH_ARCH_PATH applyPatch $SCOTCH_VERSION .. # patch at parent-level prefixDIR=$SCOTCH_ARCH_PATH + incDIR=$SCOTCH_ARCH_PATH/include libDIR=$FOAM_EXT_LIBBIN mkdir -p $prefixDIR 2>/dev/null - mkdir -p $libDIR 2>/dev/null - - configOpt="prefix=$prefixDIR libdir=$libDIR" + mkdir -p $incDIR 2>/dev/null + mkdir -p $libDIR 2>/dev/null if [ -f $scotchMakefile ] then rm -f Makefile.inc ln -s $scotchMakefile Makefile.inc fi - [ -f Makefile.inc ] || { echo " Error: scotch needs an appropriate Makefile.inc" exit 1 } - # handle non-gcc compilers - unset configEnv - [ "${WM_CC:-gcc}" != gcc ] && configEnv="CC=$WM_CC CCS=$WM_CC" + export CCS="${CC:-$WM_CC}" # CCS (serial compiler) default=$(CC) + export CCP=$(whichMpicc) # CCP (parallel compiler) default=mpicc - make realclean 2>/dev/null # for safety + make realclean 2>/dev/null # Extra safety + make -j $WM_NCOMPPROCS scotch \ + && make \ + prefix=$prefixDIR \ + includedir=$incDIR \ + libdir=$libDIR \ + install - make -j $WM_NCOMPPROCS $configEnv scotch \ - && make $configOpt install - - # cleanup, could also remove Makefile.inc - make realclean 2>/dev/null + make realclean 2>/dev/null || true # Failed cleanup is uncritical ) || warnBuildIssues SCOTCH else warnNotFound SCOTCH fi # Build ptscotch if MPI (ThirdParty or system) is available -# and normal scotch was build (has include and library) +# and normal scotch was built (has include and library) if [ "${FOAM_MPI:-dummy}" != dummy ] && \ [ -f $SCOTCH_ARCH_PATH/include/scotch.h \ -a -r $FOAM_EXT_LIBBIN/libscotch.so ] || \ { + # Report that the above tests failed and pass-through the failure echo - echo " WARNING: skipping pt-scotch - 'scotch.h' include file not found!" + echo " WARNING: skipping pt-scotch - no mpi or not found" false } then @@ -302,6 +185,7 @@ then else ( cd $SCOTCH_SOURCE_DIR/src || exit 1 + export GIT_DIR=$SCOTCH_SOURCE_DIR/.git # Mask seeing our own git-repo echo prefixDIR=$SCOTCH_ARCH_PATH @@ -309,42 +193,43 @@ then libDIR=$FOAM_EXT_LIBBIN/$FOAM_MPI mkdir -p $prefixDIR 2>/dev/null - mkdir -p $libDIR 2>/dev/null - - configOpt="prefix=$prefixDIR includedir=$incDIR libdir=$libDIR" + mkdir -p $incDIR 2>/dev/null + mkdir -p $libDIR 2>/dev/null if [ -f $scotchMakefile ] then rm -f Makefile.inc ln -s $scotchMakefile Makefile.inc fi - [ -f Makefile.inc ] || { - echo " Error: scotch needs an appropriate Makefile.inc" + echo " Error: ptscotch needs an appropriate Makefile.inc" exit 1 } - # handle non-gcc compilers - unset configEnv - [ "${WM_CC:-gcc}" != gcc ] && configEnv="CC=$WM_CC CCS=$WM_CC" + export CCS="${CC:-$WM_CC}" # CCS (serial compiler) default=$(CC) + export CCP=$(whichMpicc) # CCP (parallel compiler) default=mpicc - make realclean 2>/dev/null # for safety + make realclean 2>/dev/null # Extra safety + make -j $WM_NCOMPPROCS ptscotch \ + && make \ + prefix=$prefixDIR \ + includedir=$incDIR \ + libdir=$libDIR \ + install - make -j $WM_NCOMPPROCS $configEnv ptscotch \ - && make $configOpt install - - # cleanup, could also remove Makefile.inc - make realclean 2>/dev/null - ) + make realclean 2>/dev/null || true # Failed cleanup is uncritical + ) || warnBuildIssues PTSCOTCH fi - # verify existence of ptscotch include + # Verify existence of ptscotch include [ -f $SCOTCH_ARCH_PATH/include/$FOAM_MPI/ptscotch.h ] || { echo echo " WARNING: required include file 'ptscotch.h' not found!" } fi +# Could now remove $SCOTCH_SOURCE_DIR/src/Makefile.inc + #------------------------------------------------------------------------------ @@ -353,7 +238,7 @@ echo echo ======================================== echo Build Metis decomposition -# get METIS_VERSION, METIS_ARCH_PATH +# Get METIS_VERSION, METIS_ARCH_PATH if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/metis) then . $settings @@ -366,11 +251,11 @@ if [ -f $METIS_ARCH_PATH/include/metis.h \ then echo " metis header in $METIS_ARCH_PATH/include" echo " metis libs in $FOAM_EXT_LIBBIN" - echo elif [ -d "$METIS_SOURCE_DIR" ] then ( cd $METIS_SOURCE_DIR || exit 1 + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo rm -rf $METIS_ARCH_PATH # Adjust metis integer size to match OpenFOAM label-size @@ -381,10 +266,10 @@ then # - build normally and use mv to relocate it make config shared=1 prefix=$METIS_ARCH_PATH \ - && make -j $WM_NCOMPPROCS install \ - && mv $METIS_ARCH_PATH/lib/libmetis.so $FOAM_EXT_LIBBIN + && make -j $WM_NCOMPPROCS install \ + && mv $METIS_ARCH_PATH/lib/libmetis.so $FOAM_EXT_LIBBIN - rmdir $METIS_ARCH_PATH/lib 2>/dev/null || true # failure is not critical + rmdir $METIS_ARCH_PATH/lib 2>/dev/null || true # Failed rmdir is uncritical ) || warnBuildIssues METIS else warnNotFound METIS @@ -392,54 +277,28 @@ fi #------------------------------------------------------------------------------ - -# CGAL is optional echo echo ======================================== echo Build CGAL -if [ -d "$CGAL_ARCH_PATH/include" \ - -a -r "$CGAL_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libCGAL.so" ] -then - # first some information about boost - for root in "$BOOST_ARCH_PATH" /usr - do - if [ -d "$root/include/boost" \ - -a -r "$root/lib$WM_COMPILER_LIB_ARCH/libboost_system.so" ] - then - echo " BOOST headers in $root/include" - echo " BOOST libs in $root/lib$WM_COMPILER_LIB_ARCH" - break - fi - done - echo " CGAL headers in $CGAL_ARCH_PATH/include" - echo " CGAL libs in $CGAL_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" -elif [ -n "$CGAL_ARCH_PATH" ] +if [ -n "$CGAL_ARCH_PATH" ] then + ./makeCGAL -test "$CGAL_ARCH_PATH" "$BOOST_ARCH_PATH" || \ ./makeCGAL || warnBuildIssues CGAL else - warnNotFound CGAL + warnNotFound CGAL # CGAL is optional fi - -# FFTW is optional echo echo ======================================== echo Build FFTW -if [ -d "$FFTW_ARCH_PATH/include" \ - -a -r "$FFTW_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libfftw3.so" ] -then - echo " FFTW headers in $FFTW_ARCH_PATH/include" - echo " FFTW libs in $FFTW_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" -elif [ -n "$FFTW_ARCH_PATH" ] +if [ -n "$FFTW_ARCH_PATH" ] then + ./makeFFTW -test "$FFTW_ARCH_PATH" || \ ./makeFFTW || warnBuildIssues FFTW else - warnNotFound FFTW + warnNotFound FFTW # FFTW is optional fi - -#------------------------------------------------------------------------------ - echo echo ======================================== echo Done ThirdParty Allwmake diff --git a/BUILD.md b/BUILD.md index f650940..b66b633 100644 --- a/BUILD.md +++ b/BUILD.md @@ -3,7 +3,7 @@ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | | - | \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. | + | \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. | | \\/ M anipulation | | |--------------------------------------------------------------------------| --> @@ -24,8 +24,8 @@ The ThirdParty directory contains a number of build scripts as well as some directories: | Directory | Contains -|-------------------|-------------------------------------------- -| etc/ | auxiliary scripts used for the build process +|-------------------|------------------------------------------------------- +| etc/ | auxiliary tools and content used for the build process | build/ | intermediate build objects | platforms/ | the installation directories @@ -121,6 +121,10 @@ ThirdParty components prior to building OpenFOAM itself. #### Optional Components +`makeADIOS` +- Only required for ADIOS support, + which is currently staged in the [add-ons repository][link AddOns]. + `makeCGAL` - Builds third-party boost and CGAL. Automatically invoked from the ThirdParty `Allwmake`, @@ -131,6 +135,9 @@ ThirdParty components prior to building OpenFOAM itself. Automatically invoked from the ThirdParty `Allwmake`, but can be invoked directly to resolve possible build errors. +`makeMGridGen` +- Optional agglomeration routines. + `makeCCMIO` - Only required for conversion to/from STARCD/STARCCM+ files. @@ -146,6 +153,8 @@ ThirdParty components prior to building OpenFOAM itself. `makeQt` - Script to build a [third-party installation of Qt](#makeQt), including qmake. - Possibly needed for `makeParaView`. +- The associated `etc/relocateQt` may be of independent use. + Read the file for more details. `makeGperftools` - Build gperftools (originally Google Performance Tools) @@ -167,7 +176,8 @@ and save some disk space. ### Mesa - Needed for off-screen rendering. -- Building with [mesa-11][older mesa] is fine and [mesa-13][link mesa] also seems to be okay. +- Building with [mesa-11][older11 mesa] and [mesa-13][older13 mesa] both + seem okay, as does building with [mesa-17][link mesa]. - Building with mesa-12 is not possible since it fails to create the necessary `include/GL` directory and `osmesa.h` file. @@ -178,32 +188,36 @@ and save some disk space. sources that are bundled with ParaView. For example, by using a symbolic link: - ln -s ParaView-5.0.1/VTK VTK-7.1.0 + ln -s ParaView-v5.4.0/VTK VTK-8.1.0 The appropriate VTK version number can be found from the contents of the `vtkVersion.cmake` file. For example, - $ cat ParaView-5.0.1/VTK/CMake/vtkVersion.cmake + $ cat ParaView-v5.4.0/VTK/CMake/vtkVersion.cmake # VTK version number components. - set(VTK_MAJOR_VERSION 7) + set(VTK_MAJOR_VERSION 8) set(VTK_MINOR_VERSION 1) set(VTK_BUILD_VERSION 0) ### ParaView -- **ParaView-5.0.1** is the last version for which the OpenFOAM reader - modules (eg, to visualize a `blockMeshDict`) work in their present form. - - Building ParaView requires CMake, qmake and a `qt` development files. Use the `-cmake`, `-qmake` and `-qt-*` options for `makeParaView` as required. See additional notes below about [making Qt](#makeQt) if necessary. +#### 5.4.0 +- Compiles without patching. + No known issues with the native OpenFOAM reader. + +#### 5.3.0 +- Compiles without patching. + The native OpenFOAM reader has a bug reading tetrahedrals. + #### 5.2.0 -- Compiles without patching, but the OpenFOAM reader modules - (eg, to visualize a `blockMeshDict`) have not yet been migrated - to this version. +- Compiles without patching, but the native OpenFOAM reader is + broken in this version. #### 4.4.0/5.0.0/5.0.1/5.1.2 - When using `makeParaView`, the following patches will be automatically @@ -215,6 +229,15 @@ and save some disk space. the compilation of ParaView to halt. The easiest solution is to delete the ParaView-5.0.1/Plugins/SciberQuestToolKit directory. +### ADIOS +- The github release currently requires GNU autoconf tools (eg, + autoconf, autoheader, automake) for its configuration. +- Some inconsistency in directory names (ADIOS vs. adios) between releases. +- Optionally uses bzip2, zlib development headers (eg, libbz2-devel, zlib-devel) + for the corresponding compression tranforms. +- The [zfp floating point compression][page zfp] library is now included as + part of ADIOS. + ### Making Qt - Building a third-party Qt installation (prior to building ParaView) requires some additional effort, but should nonetheless work smoothly. @@ -229,7 +252,7 @@ and save some disk space. ./makeParaView -qt-4.8.7 5.0.1 -- ParaView does not yet support QT5. +- ParaView versions prior to 5.3.0 do not properly support QT5. - If you relocate the third-party directory to another location (eg, you built in your home directory, but want to install it in a @@ -295,7 +318,7 @@ GNU *configure* can only be used prior to clang version 3.9. |-----------------------|------------------------ | [adios][page adios] | [repo][repo adios] or [github download][link adios] or [alt download][altlink adios] | [scotch, ptscotch][page scotch] | [download][link scotch] -| [openmpi][page openmpi] | [download][link openmpi] +| [openmpi][page openmpi] | [download][link openmpi]. The newer [openmpi][newer openmpi] make exhibit stability issues. ### General @@ -304,7 +327,7 @@ GNU *configure* can only be used prior to clang version 3.9. |-----------------------|------------------------ | [CMake][page cmake] | [download][link cmake] | [boost][page boost] | [download][link boost] -| [CGAL][page CGAL] | [download][link CGAL] or [older][older CGAL] +| [CGAL][page CGAL] | [download][link CGAL] | [FFTW][page FFTW] | [download][link FFTW] | [ADF/CGNS][page CGNS], ccm | [link ccmio][link ccmio] | [tecio][page tecio] | [link tecio][link tecio] @@ -315,9 +338,9 @@ GNU *configure* can only be used prior to clang version 3.9. | Name | Location |-----------------------|------------------------ -| [MESA][page mesa] | [download][link mesa] or [older][older mesa] -| [ParaView][page ParaView] | [download][link ParaView]. The reader modules do not yet work with the newest paraview versions. -| [Qt][page Qt] | [repo][repo Qt] or [download][link Qt]. The newer [Qt5][newer Qt5] is **not** currently supported by ParaView. +| [MESA][page mesa] | [download][link mesa] or [older 13][older13 mesa], [older 11][older11 mesa] +| [ParaView][page ParaView] | [download][link ParaView] +| [Qt][page Qt] | [repo][repo Qt] or [download][link Qt]. The newer [Qt5][newer Qt5] only works with ParaView-5.3.0 and later. ### CMake Minimum Requirements @@ -332,7 +355,10 @@ The minimum CMake requirements for building various components. 2.8.4 cmake-3.6.0 3.3 ParaView-5.1.2 3.3 ParaView-5.2.0 - 3.4.3 llvm-3.9.0.src + 3.3 ParaView-5.3.0 + 3.3 ParaView-5.4.0 + 3.4.3 llvm-3.9.1 + 3.4.3 llvm-4.0.0 3.5 ParaView-5.1.0 @@ -362,26 +388,26 @@ The minimum gcc/g++ requirements for building various components. [page clang]: http://llvm.org/ [page llvm]: http://llvm.org/ -[link clang]: http://llvm.org/releases/3.7.0/cfe-3.7.0.src.tar.xz -[link llvm]: http://llvm.org/releases/3.7.0/llvm-3.7.0.src.tar.xz +[link clang]: http://llvm.org/releases/3.7.1/cfe-3.7.1.src.tar.xz +[link llvm]: http://llvm.org/releases/3.7.1/llvm-3.7.1.src.tar.xz -[newer clang]: http://llvm.org/releases/3.9.0/cfe-3.9.0.src.tar.xz -[newer llvm]: http://llvm.org/releases/3.9.0/llvm-3.9.0.src.tar.xz +[newer clang]: http://llvm.org/releases/4.0.0/cfe-4.0.0.src.tar.xz +[newer llvm]: http://llvm.org/releases/4.0.0/llvm-4.0.0.src.tar.xz [page adios]: https://www.olcf.ornl.gov/center-projects/adios/ [repo adios]: https://github.com/ornladios/ADIOS -[link adios]: https://github.com/ornladios/ADIOS/archive/v1.11.0.tar.gz -[altlink adios]: http://users.nccs.gov/%7Epnorbert/adios-1.11.0.tar.gz +[link adios]: https://github.com/ornladios/ADIOS/archive/v1.11.1.tar.gz +[altlink adios]: http://users.nccs.gov/%7Epnorbert/adios-1.11.1.tar.gz [page zfp]: http://computation.llnl.gov/projects/floating-point-compression/zfp-versions [page scotch]: https://www.labri.fr/perso/pelegrin/scotch/ [link scotch]: https://gforge.inria.fr/frs/download.php/file/34099/scotch_6.0.3.tar.gz [page openmpi]: http://www.open-mpi.org/ -[link openmpi]: http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.4.tar.bz2 -[newer openmpi]: https://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.1.tar.bz2 +[link openmpi]: https://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.4.tar.bz2 +[newer openmpi]: https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.bz2 @@ -389,17 +415,17 @@ The minimum gcc/g++ requirements for building various components. [link cmake]: http://www.cmake.org/files/v3.5/cmake-3.5.2.tar.gz [page boost]: http://boost.org -[link boost]: https://sourceforge.net/projects/boost/files/boost/1.62.0/boost_1_62_0.tar.bz2 +[link boost]: https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2 [page CGAL]: http://cgal.org -[link CGAL]: https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.9/CGAL-4.9.tar.xz -[older CGAL]: https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.8.2/CGAL-4.8.2.tar.xz +[link CGAL]: https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.9.1/CGAL-4.9.1.tar.xz [page FFTW]: http://www.fftw.org/ -[link FFTW]: http://www.fftw.org/fftw-3.3.5.tar.gz +[link FFTW]: http://www.fftw.org/fftw-3.3.6-pl1.tar.gz [page cgns]: http://cgns.github.io/ -[link ccmio]: http://portal.nersc.gov/svn/visit/trunk/third_party/libccmio-2.6.1.tar.gz (check usage conditions) +[link ccmio]: http://portal.nersc.gov/project/visit/third_party/libccmio-2.6.1.tar.gz (check usage conditions) +[altlink ccmio]: http://portal.nersc.gov/svn/visit/trunk/third_party/libccmio-2.6.1.tar.gz (check usage conditions) [page tecio]: http://www.tecplot.com/ [link tecio]: http://www.tecplot.com/my/tecio-library/ (needs registration) @@ -411,32 +437,34 @@ The minimum gcc/g++ requirements for building various components. [page ParaView]: http://www.paraview.org/ -[link ParaView]: http://www.paraview.org/files/v5.0/ParaView-v5.0.1-source.tar.gz - -[older ParaView-44]: http://www.paraview.org/files/v4.4/ParaView-v4.4.0-source.tar.gz -[newer ParaView-51]: http://www.paraview.org/files/v5.1/ParaView-v5.1.2-source.tar.gz -[newer ParaView-52]: http://www.paraview.org/files/v5.2/ParaView-v5.2.0.tar.gz +[link ParaView]: http://www.paraview.org/files/v5.4/ParaView-v5.4.0.tar.gz [page mesa]: http://mesa3d.org/ -[link mesa]: ftp://ftp.freedesktop.org/pub/mesa/13.0.1/mesa-13.0.1.tar.xz -[older mesa]: ftp://ftp.freedesktop.org/pub/mesa/11.2.2/mesa-11.2.2.tar.xz +[link mesa]: ftp://ftp.freedesktop.org/pub/mesa/mesa-17.1.1.tar.xz +[older13 mesa]: ftp://ftp.freedesktop.org/pub/mesa/13.0.6/mesa-13.0.6.tar.xz +[older11 mesa]: ftp://ftp.freedesktop.org/pub/mesa/older-versions/11.x/11.2.2/mesa-11.2.2.tar.xz [page Qt]: https://www.qt.io/download-open-source/ [repo Qt]: http://code.qt.io/cgit/qt-creator/qt-creator.git [link Qt]: http://download.qt.io/official_releases/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz -[newer Qt5]: http://download.qt.io/official_releases/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz +[newer Qt5]: http://download.qt.io/official_releases/qt/5.9/5.9.0/single/qt-everywhere-opensource-src-5.9.0.tar.xz + + + +[link AddOns]: https://develop.openfoam.com/Community/OpenFOAM-addOns +[link community-projects]: http://www.openfoam.com/services/community-projects.php ## Additional OpenFOAM Links +- [Community AddOns][link AddOns] repository +- [Collaborative and Community-based Developments][link community-projects] - [Download](http://www.openfoam.com/releases) and [installation instructions](http://www.openfoam.com/download/installation.php) - [Documentation](http://www.openfoam.com/documentation) -- [Reporting bugs/issues (including bugs/suggestions/feature requests) in OpenFOAM+](http://www.openfoam.com/code/bug-reporting.php) -- [Collaborative and Community-based Developments](http://www.openfoam.com/services/community-projects.php) +- [Reporting bugs/issues](http://www.openfoam.com/code/bug-reporting.php) (including bugs/suggestions/feature requests) in OpenFOAM+ - [Contacting OpenCFD](http://www.openfoam.com/contact) - --- -Copyright 2016 OpenCFD Ltd +Copyright 2016-2017 OpenCFD Ltd diff --git a/etc/patches/paraview-5.0.1 b/etc/patches/paraview-5.0.1 index 4b00f66..c4126f9 100644 --- a/etc/patches/paraview-5.0.1 +++ b/etc/patches/paraview-5.0.1 @@ -85,3 +85,137 @@ set (xslt_xml) +--- ParaView-5.0.1/VTK/CMake/vtkOpenGL.cmake.orig 2016-03-28 17:07:10.000000000 +0200 ++++ ParaView-5.0.1/VTK/CMake/vtkOpenGL.cmake 2017-01-19 10:23:19.170743269 +0100 +@@ -19,9 +19,11 @@ + # OSMesa logic for offscreen mesa rendering. + option(VTK_OPENGL_HAS_OSMESA + "The OpenGL library being used supports off screen Mesa calls" OFF) ++ + # EGL offscreen rendering + option(VTK_USE_OFFSCREEN_EGL + "Use EGL for OpenGL client API for offscreen rendering." OFF) ++ + set(VTK_EGL_DEVICE_INDEX 0 CACHE STRING + "Index of the EGL device (graphics card) to use.") + +@@ -33,21 +35,26 @@ + endif() + + option(VTK_USE_OFFSCREEN "Use off screen calls by default" OFF) ++ + unset(VTK_CAN_DO_OFFSCREEN) ++unset(VTK_CAN_DO_ONSCREEN) ++ + if(VTK_OPENGL_HAS_OSMESA OR WIN32 OR VTK_USE_OFFSCREEN_EGL) + set(VTK_CAN_DO_OFFSCREEN 1) + endif() ++ + if(VTK_USE_X OR VTK_USE_COCOA OR WIN32 OR ANDROID OR APPLE_IOS) +- set(VTK_USE_OSMESA FALSE) ++ set(VTK_USE_OSMESA ${VTK_OPENGL_HAS_OSMESA}) + if (VTK_USE_OFFSCREEN_EGL) + message(FATAL_ERROR "VTK_USE_OFFSCREEN_EGL set together with one of (" + "VTK_USE_X, VTK_USE_COCOA, WIN32, ANDROID OR APPLE_IOS). " + "You cannot use both offscreen and one of the listed windowing systems.") + endif() ++ set(VTK_CAN_DO_ONSCREEN 1) + elseif(VTK_USE_OFFSCREEN_EGL) + set(VTK_USE_OSMESA FALSE) + else() +- set(VTK_USE_OSMESA TRUE) ++ set(VTK_USE_OSMESA ${VTK_OPENGL_HAS_OSMESA}) + endif() + + mark_as_advanced(VTK_USE_X VTK_OPENGL_HAS_OSMESA VTK_USE_OFFSCREEN_EGL +@@ -56,10 +63,17 @@ + if(VTK_USE_OSMESA) + find_package(OSMesa REQUIRED) + include_directories(SYSTEM ${OSMESA_INCLUDE_DIR}) +-elseif(VTK_USE_OFFSCREEN_EGL) ++endif() ++ ++if(VTK_USE_OFFSCREEN_EGL) + find_package(EGL REQUIRED) + include_directories(SYSTEM ${EGL_INCLUDE_DIR}) +-else() ++endif() ++ ++if(VTK_CAN_DO_ONSCREEN) ++ # OpenGL libraries are explicity needed if windowing system-based API is being ++ # used. Otherwise, if only doing OFFSCREEN, the GL API is provided by the ++ # offscreen library be it EGL or OSMESA. + find_package(OpenGL REQUIRED) + include_directories(SYSTEM ${OPENGL_INCLUDE_DIR}) + if(APPLE) +@@ -83,9 +97,11 @@ + function(vtk_opengl_link target) + if(VTK_USE_OSMESA) + vtk_module_link_libraries(${target} LINK_PRIVATE ${OSMESA_LIBRARY}) +- elseif(VTK_USE_OFFSCREEN_EGL) ++ endif() ++ if(VTK_USE_OFFSCREEN_EGL) + vtk_module_link_libraries(${target} LINK_PRIVATE ${EGL_LIBRARIES}) +- else() ++ endif() ++ if(VTK_CAN_DO_ONSCREEN) + vtk_module_link_libraries(${target} LINK_PRIVATE ${OPENGL_LIBRARIES}) + endif() + endfunction() +--- ParaView-5.0.1/VTK/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx.orig 2016-03-28 17:07:10.000000000 +0200 ++++ ParaView-5.0.1/VTK/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx 2017-01-19 15:24:21.783214877 +0100 +@@ -30,10 +30,25 @@ + typedef ptrdiff_t GLsizeiptr; + #include "GL/glx.h" + ++ ++#ifndef GLAPI ++#define GLAPI extern ++#endif ++ ++#ifndef GLAPIENTRY ++#define GLAPIENTRY ++#endif ++ ++#ifndef APIENTRY ++#define APIENTRY GLAPIENTRY ++#endif ++ + #include "vtkToolkits.h" + + #ifdef VTK_USE_OSMESA + #include ++ ++typedef OSMesaContext GLAPIENTRY (*OSMesaCreateContextAttribs_func)( const int *attribList, OSMesaContext sharelist ); + #endif + + #include "vtkCommand.h" +@@ -757,6 +772,28 @@ + this->Size[1] = height; + this->OwnWindow = 1; + } ++ ++#if (OSMESA_MAJOR_VERSION * 100 + OSMESA_MINOR_VERSION >= 1102) && defined(OSMESA_CONTEXT_MAJOR_VERSION) ++ static const int attribs[] = { ++ OSMESA_FORMAT, OSMESA_RGBA, ++ OSMESA_DEPTH_BITS, 32, ++ OSMESA_STENCIL_BITS, 0, ++ OSMESA_ACCUM_BITS, 0, ++ OSMESA_PROFILE, OSMESA_CORE_PROFILE, ++ OSMESA_CONTEXT_MAJOR_VERSION, 3, ++ OSMESA_CONTEXT_MINOR_VERSION, 2, ++ 0 }; ++ ++ OSMesaCreateContextAttribs_func OSMesaCreateContextAttribs = ++ (OSMesaCreateContextAttribs_func) ++ OSMesaGetProcAddress("OSMesaCreateContextAttribs"); ++ ++ if (OSMesaCreateContextAttribs != NULL) ++ { ++ this->Internal->OffScreenContextId = OSMesaCreateContextAttribs(attribs, NULL); ++ } ++#endif ++ // if we still have no context fall back to the generic signature + if (!this->Internal->OffScreenContextId) + { + this->Internal->OffScreenContextId = OSMesaCreateContext(GL_RGBA, NULL); diff --git a/etc/pkgconfigAdjust b/etc/pkgconfigAdjust new file mode 100755 index 0000000..26932a1 --- /dev/null +++ b/etc/pkgconfigAdjust @@ -0,0 +1,88 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2017 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 +# etc/pkgconfigAdjust +# +# Description +# Adjust pkgconfig information to use '${prefix} where possible instead of +# directory paths. This makes it easier when relocating software. +# Adjusts includedir=, libdir=, -I/... and -L/... entries. +# +# The specified directory can be any of the following: +# - base-dir +# - base-dir/bin +# - base-dir/lib +# - base-dir/lib64 +# - base-dir/lib/pkgconfig +# - base-dir/lib64/pkgconfig +# +# This allows this type of shell command +# +# etc/pkgconfigAdjust $(find platforms -type d -name pkgconfig) +# +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE +#------------------------------------------------------------------------------ +# Run from third-party (parent) directory only +wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : current directory is not \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" + exit 1 +} +. etc/tools/ThirdPartyFunctions +#------------------------------------------------------------------------------ +usage() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat<. +# +# Script +# etc/pkgconfigPrefix +# +# Description +# Set the prefix= entry for pkgconfig files to account for a new location. +# +# The specified directory can be any of the following: +# - base-dir +# - base-dir/bin +# - base-dir/lib +# - base-dir/lib64 +# - base-dir/lib/pkgconfig +# - base-dir/lib64/pkgconfig +# +# This allows this type of shell command +# +# etc/pkgconfigPrefix $(find platforms -type d -name pkgconfig) +# +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE +#------------------------------------------------------------------------------ +# Run from third-party (parent) directory only +wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : current directory is not \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" + exit 1 +} +. etc/tools/ThirdPartyFunctions +#------------------------------------------------------------------------------ +usage() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat</dev/null || { + echo "Error (${0##*/}) : current directory is not \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions . etc/tools/QtFunctions #------------------------------------------------------------------------------ - usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat</dev/null) then if [ -n "$PYTHON_LIBRARY" ] @@ -219,9 +203,9 @@ addPythonSupport() exit 1 } - addCMakeVariable "PARAVIEW_ENABLE_PYTHON=ON" - addCMakeVariable "PYTHON_INCLUDE_DIRS=$pythonInclude" - addCMakeVariable "PYTHON_LIBRARY=$PYTHON_LIBRARY" + addCMakeVariable "PARAVIEW_ENABLE_PYTHON=ON" + addCMakeVariable "PYTHON_INCLUDE_DIRS=$pythonInclude" + addCMakeVariable "PYTHON_LIBRARY=$PYTHON_LIBRARY" echo "----" echo "Python information:" @@ -252,19 +236,17 @@ addMesaSupport() if [ -d "$MESA_INCLUDE" -a -f "$MESA_LIBRARY" ] then - OBJ_ADD="$OBJ_ADD-mesa" - - addCMakeVariable "VTK_OPENGL_HAS_OSMESA:BOOL=ON" - addCMakeVariable "OSMESA_INCLUDE_DIR=$MESA_INCLUDE" - addCMakeVariable "OSMESA_LIBRARY=$MESA_LIBRARY" + addCMakeVariable "VTK_OPENGL_HAS_OSMESA=ON" + addCMakeVariable "OSMESA_INCLUDE_DIR=$MESA_INCLUDE" + addCMakeVariable "OSMESA_LIBRARY=$MESA_LIBRARY" else - echo "*** Error: no MESA information found" - echo "*** Deactivate MESA support by not using the -mesa option, " - echo "*** or set the correct paths for:" - echo "*** -mesa-include ($MESA_INCLUDE)" - echo "*** -mesa-lib ($MESA_LIBRARY)" - exit 1 + echo "*** Error: no MESA information found" + echo "*** Deactivate MESA support by not using the -mesa option, " + echo "*** or set the correct paths for:" + echo "*** -mesa-include ($MESA_INCLUDE)" + echo "*** -mesa-lib ($MESA_LIBRARY)" + exit 1 fi } @@ -276,45 +258,42 @@ addGL2Support() { if [ "${withGL2:=false}" = true ] then - addCMakeVariable "VTK_RENDERING_BACKEND=OpenGL2" + addCMakeVariable "VTK_RENDERING_BACKEND=OpenGL2" fi } +# +# Qt 4/5 support +# addQtSupport() { - QtVersion=none + QT_VERSION=none + : ${withQT:=true} # default is on - if [ "${withQT:=false}" != true ] + if [ "$withQT" = false ] then + # Explicitly disabled + addCMakeVariable "PARAVIEW_BUILD_QT_GUI=OFF" return fi - addCMakeVariable "PARAVIEW_BUILD_QT_GUI=ON" + local qmake qtLib - local qmake=$(findQtMake) - - # From somewhere other than in the path - if [ "${qmake:=qmake}" != qmake ] + # Check qmake can be found and handle version differences + qmake=$(findQtMake) + if QT_VERSION=$($qmake -query QT_VERSION 2>/dev/null) then - addCMakeVariable "QT_QMAKE_EXECUTABLE:FILEPATH=$qmake" - fi + addCMakeVariable "PARAVIEW_BUILD_QT_GUI=ON" - # Check qmake can be found - if type $qmake >/dev/null 2>&1 - then - # Check the Qt version selected - # parse -> "Using Qt version X.Y.Z in ..." - QtVersion=$($qmake -query QT_VERSION) - - case "$QtVersion" in - 3.* | 4.[0-4]*) + case "$QT_VERSION" in + (3.* | 4.[0-4]*) # QT is too old cat </dev/null) + then + qtLib=$($qmake -query QT_INSTALL_LIBS) + QT_VERSION=$($qmake -query QT_VERSION 2>/dev/null) + fi - --- - Installation complete for paraview-$ParaView_VERSION + /bin/cat< $confFile +[Paths] +Prefix=$QT_ARCH_PATH +QT_CONF + echo " created qt.conf" + + else echo "Error: QT_ARCH_PATH not correctly set" - return - } - - echo "[Paths]" > $QT_ARCH_PATH/bin/qt.conf - echo "Prefix=$QT_ARCH_PATH" >> $QT_ARCH_PATH/bin/qt.conf + fi } -# -# Adjust pkgconfig information -# to generalize *location=, -L/... and -I/... -# to use ${prefix} -# -adjustPkgConfig() -{ - echo "edit pkgconfig:" - echo " $QT_ARCH_PATH/lib/pkgconfig/*.pc" - - [ -n "$QT_ARCH_PATH" -a -d "$QT_ARCH_PATH/lib/pkgconfig" ] || { - echo "Error: QT_ARCH_PATH not correctly set" - return - } - - ( - cd $QT_ARCH_PATH/lib/pkgconfig || exit - - unset nfiles - for i in *.pc - do - if [ -f "$i" ] - then - nfiles="x$nfiles" - sed -i \ - -e 's@\(location=\)'"$QT_ARCH_PATH/"'@\1${prefix}/@' \ - -e 's@\(-[IL]\)'"$QT_ARCH_PATH/"'@\1${prefix}/@g' \ - $i - fi - done - echo " edited ${#nfiles} files" - ) -} - - -# -# Change prefix=... and Prefix=... to use ${prefix} -# -changePrefix() -{ - echo "relocate QT installation to new prefix directory:" - echo " $QT_ARCH_PATH" - echo "edit:" - echo " $QT_ARCH_PATH/bin/qt.conf" - echo " $QT_ARCH_PATH/lib/pkgconfig/*.pc" - - [ -n "$QT_ARCH_PATH" -a -d "$QT_ARCH_PATH/bin" -a -d "$QT_ARCH_PATH/lib/pkgconfig" ] || { - echo "Error: QT_ARCH_PATH not correctly set" - return - } - - # adjust qt.conf - for i in $QT_ARCH_PATH/bin/qt.conf - do - if [ -f "$i" ] - then - nfiles="x$nfiles" - sed -i \ - -e 's@^\([Pp]refix=\).*$@\1'"$QT_ARCH_PATH@" \ - $i - echo " edited 1 file" - fi - done - - # adjust pkgconfig files - ( - cd $QT_ARCH_PATH/lib/pkgconfig || exit - - unset nfiles - for i in *.pc - do - if [ -f "$i" ] - then - nfiles="x$nfiles" - sed -i \ - -e 's@^\([Pp]refix=\).*$@\1'"$QT_ARCH_PATH@" \ - $i - fi - done - echo " edited ${#nfiles} files" - ) - -} - # ------------------------------------------------------------------------------ # -# create qt.conf and adjustPkgConfig to use ${prefix} internally +# create qt.conf and adjust locations to use ${prefix} internally # finalizeQt() { echo "Create/Edit files to ease later relocation of a QT installation" createQtConf - adjustPkgConfig + pkgconfigAdjust $QT_ARCH_PATH } -# ----------------------------------------------------------------- end-of-file +# ----------------------------------------------------------------------------- diff --git a/etc/tools/ThirdPartyFunctions b/etc/tools/ThirdPartyFunctions index e2fd201..6c5c6a7 100644 --- a/etc/tools/ThirdPartyFunctions +++ b/etc/tools/ThirdPartyFunctions @@ -3,7 +3,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation -# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. +# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -36,6 +36,74 @@ sourceBASE=$WM_THIRD_PARTY_DIR buildBASE=$WM_THIRD_PARTY_DIR/build/$WM_ARCH$WM_COMPILER installBASE=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER +unset BUILD_SUFFIX +#------------------------------------------------------------------------------ +# Force use of gcc/g++ +useGcc() +{ + export CC=gcc # Use gcc/g++ + export CXX=g++ +} + +# Scan arguments for a '-gcc' option, forcing gcc/g++ when found +useGccFlag() +{ + for i + do + if [ "$i" = "-gcc" ] + then + useGcc + break + fi + done +} + +# Return mpiicc (for INTELMPI) or mpicc etc. +whichMpicc() +{ + local mpicc + case "$WM_MPLIB" in + (INTELMPI) + mpicc=$(command -v mpiicc) # Try using intel 'mpiicc' + ;; + esac + echo "${mpicc:-mpicc}" # mpiicc | mpicc +} + +#------------------------------------------------------------------------------ +# Some functions as per OpenFOAM etc/config.sh/functions + +unset -f _foamAddLib _foamAddMan _foamAddPath # Get settings only +unset -f _foamEtc + +# Source an etc file +_foamEtc() +{ + local file + if [ $# -gt 0 ] && file=$($WM_PROJECT_DIR/bin/foamEtcFile "$@") + then + . $file + fi +} + +#------------------------------------------------------------------------------ + +# +# Set a suffix for the build +# - eg, for -mpi, or -mesa etc +# +setBuildSuffix() +{ + BUILD_SUFFIX="${1##-}" + if [ -n "$BUILD_SUFFIX" ] + then + BUILD_SUFFIX="-${BUILD_SUFFIX}" + else + unset BUILD_SUFFIX + fi +} + + # # Mostly building without wmake # - disable wmakeScheduler variables @@ -86,18 +154,19 @@ _foamIsSystem() # -# try to locate cmake according to the CMAKE_PATH -# or just use what is found in the path +# Try to locate cmake according to the CMAKE_PATH. +# +# On success: return the resolved value as output. +# On failure: just report what is found in the path. # unset CMAKE_PATH # clear when first loaded findCMake() { - local candidate - local foundExe + local candidate foundExe if [ -n "$CMAKE_PATH" ] then - # check as directory + # Check as directory if [ -d "$CMAKE_PATH" ] then for candidate in \ @@ -113,7 +182,7 @@ findCMake() done fi - # check as file, include ThirdParty installation in the search + # Check as file, include ThirdParty installation in the search if [ -z "$foundExe" ] then for candidate in \ @@ -137,9 +206,8 @@ findCMake() then foundExe="$(cd ${foundExe%/cmake} 2>/dev/null && pwd)/cmake" fi - echo "Using cmake=$foundExe" 1>&2 - echo "$foundExe" + echo $foundExe return 0 else cat << NOT_FOUND 1>&2 @@ -150,26 +218,27 @@ NOT_FOUND fi fi - # Default to use the path, try resolving (so we know what we are using) - foundExe=$(command -v cmake 2> /dev/null) || foundExe=cmake - echo "Using cmake=${foundExe:-NotFound}" 1>&2 - echo "${foundExe:-cmake}" + # Default to use the path. Resolve so we know what we are using. + foundExe=$(command -v cmake 2> /dev/null) || foundExe=false + echo "Using cmake=$foundExe" 1>&2 + echo $foundExe } # # try to locate qmake according to the QMAKE_PATH -# or just use what is found in the path +# +# On success: return the resolved value as output. +# On failure: just report what is found in the path. # unset QMAKE_PATH # clear when first loaded findQtMake() { - local candidate - local foundExe + local candidate foundExe if [ -n "$QMAKE_PATH" ] then - # check as directory + # Check as directory if [ -d "$QMAKE_PATH" ] then for candidate in \ @@ -185,7 +254,7 @@ findQtMake() done fi - # check as file, include ThirdParty installation in the search + # Check as file, include ThirdParty installation in the search if [ -z "$foundExe" ] then for candidate in \ @@ -209,9 +278,8 @@ findQtMake() then foundExe="$(cd ${foundExe%/qmake} 2>/dev/null && pwd)/qmake" fi - echo "Using qmake=$foundExe" 1>&2 - echo "$foundExe" + echo $foundExe return 0 else cat << NOT_FOUND 1>&2 @@ -223,9 +291,106 @@ NOT_FOUND fi # Default to use the path, try resolving (so we know what we are using) - foundExe=$(command -v qmake 2> /dev/null) || foundExe=qmake - echo "Using qmake=${foundExe:-NotFound}" 1>&2 - echo "${foundExe:-qmake}" + foundExe=$(command -v qmake 2> /dev/null) || foundExe=false + echo "Using qmake=$foundExe" 1>&2 + echo $foundExe +} + + +# +# Set a new prefix=... in pkgconfig files +# +pkgconfigNewPrefix() +{ + local dir="${1%%/}" + + if [ -n "$dir" -a -d "$dir" ] + then + # Require absolute path, but use logical (not physical) location + [ "${dir}" != "${dir#/}" ] || dir=$(cd $dir 2>/dev/null && /bin/pwd -L) + # Strip sub-level + case "$dir" in (*/pkgconfig) dir="${dir%/*}";; esac + # Strip a level + case "$dir" in (*/lib | */lib64 | */bin) dir="${dir%/*}";; esac + fi + + # Verify that the prefix path is valid + # Warning (not an error) - thus no special return code + [ -n "$dir" -a -d "$dir" ] || { + echo "Warning: invalid prefix directory: $dir" 1>&2 + return 0 + } + + echo "Set pkgconfig prefix : $dir" + + local nfiles + for libdir in lib/pkgconfig lib64/pkgconfig + do + unset nfiles + [ -d "$dir/$libdir" ] || continue + for i in $dir/$libdir/*.pc + do + if [ -f "$i" -a ! -L "$i" ] + then + nfiles="x$nfiles" + sed -i -e 's@^\(prefix=\).*$@\1'"$dir@" $i + fi + done + echo " $libdir/*.pc (edited ${#nfiles})" + done +} + + +# +# Adjust pkgconfig information to use '${prefix} where possible instead +# of directory paths. +# +# Adjusts includedir=, libdir=, -I/... and -L/... and +# any *_location= entries (QT) +# +pkgconfigAdjust() +{ + local dir="${1%%/}" + + if [ -n "$dir" -a -d "$dir" ] + then + # Require absolute path, but use logical (not physical) location + [ "${dir}" != "${dir#/}" ] || dir=$(cd $dir 2>/dev/null && /bin/pwd -L) + # Strip sub-level + case "$dir" in (*/pkgconfig) dir="${dir%/*}";; esac + # Strip a level + case "$dir" in (*/lib | */lib64 | */bin) dir="${dir%/*}";; esac + fi + + # Verify that the prefix path is valid + # Warning (not an error) - thus no special return code + [ -n "$dir" -a -d "$dir" ] || { + echo "Warning: invalid prefix directory: $dir" 1>&2 + return 0 + } + + echo "Adjust pkgconfig locations : $dir" + + local nfiles + for libdir in lib/pkgconfig lib64/pkgconfig + do + unset nfiles + [ -d "$dir/$libdir" ] || continue + for i in $dir/$libdir/*.pc + do + if [ -f "$i" -a ! -L "$i" ] + then + nfiles="x$nfiles" + sed -i \ + -e 's@^\(includedir=\)'"$dir/"'@\1${prefix}/@' \ + -e 's@^\(libdir=\)'"$dir/"'@\1${prefix}/@' \ + -e 's@\(_location=\)'"$dir/"'@\1${prefix}/@' \ + -e 's@\(-[IL]\)'"$dir/"'@\1${prefix}/@g' \ + $i + fi + done + echo " $libdir/*.pc (edited ${#nfiles})" + done } @@ -258,8 +423,6 @@ downloadFile() # $2 = TARGET DIRECTORY (optional) cpMakeFiles() { - set +x - [ "$#" -eq 1 -o "$#" -eq 2 ] || { echo "cpMakeFiles called with incorrect number of arguments $@" return 1 @@ -291,8 +454,6 @@ cpMakeFiles() cp $wmakeFiles/$i $dst/$d/Make/$b fi done - - set -x } diff --git a/etc/tools/vtkFunctions b/etc/tools/vtkFunctions index 3d2a4cb..eece891 100644 --- a/etc/tools/vtkFunctions +++ b/etc/tools/vtkFunctions @@ -2,7 +2,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. +# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. # \\/ M anipulation | #------------------------------------------------------------------------------ # License @@ -30,14 +30,19 @@ # #------------------------------------------------------------------------------ -# sourceBASE, buildBASE, installBASE defined in tools/ThirdPartyFunctions +# Variables referenced by the functions. Initialization at the end of the file. +unset CMAKE_VARIABLES + +# sourceBASE, buildBASE, installBASE and BUILD_SUFFIX +# are defined in tools/ThirdPartyFunctions +#------------------------------------------------------------------------------ # # Where things are or should be put # VTK_VERSION and VTK_MAJOR should already have been set # # VTK_SOURCE_DIR : location of the original sources -# VTK_BINARY_DIR : location of the build +# VTK_BUILD_DIR : location of the build # VTK_DIR : location of the installed program # setVtkDirs() @@ -62,21 +67,17 @@ setVtkDirs() exit 1 } - # VTK_BINARY_DIR=$buildBASE/VTK-$VTK_VERSION${OBJ_ADD:+-$OBJ_ADD} - VTK_BINARY_DIR=$buildBASE/VTK-$VTK_VERSION + VTK_BUILD_DIR=$buildBASE/VTK-$VTK_VERSION$BUILD_SUFFIX + VTK_DIR=$installBASE/VTK-$VTK_VERSION$BUILD_SUFFIX - # VTK_DIR=$installBASE/VTK-$VTK_VERSION${OBJ_ADD:+-$OBJ_ADD} - VTK_DIR=$installBASE/VTK-$VTK_VERSION - - export VTK_SOURCE_DIR VTK_BINARY_DIR VTK_DIR + export VTK_SOURCE_DIR VTK_BUILD_DIR VTK_DIR echo echo "VTK_SOURCE_DIR=$VTK_SOURCE_DIR" - echo "VTK_BINARY_DIR=$VTK_BINARY_DIR" + echo "VTK_BUILD_DIR=$VTK_BUILD_DIR" echo "VTK_DIR=$VTK_DIR" - # Forcefully override the .git path for the VTK source code directory - export GIT_DIR=$ParaView_SOURCE_DIR/.git + export GIT_DIR=$VTK_SOURCE_DIR/.git # Mask seeing our own git-repo } @@ -121,30 +122,30 @@ configVTK() local cmake=$(findCMake) # Remove any existing build folder and recreate - if [ -d $VTK_BINARY_DIR ] + if [ -d $VTK_BUILD_DIR ] then echo "removing old build directory" - echo " $VTK_BINARY_DIR" - rm -rf $VTK_BINARY_DIR + echo " $VTK_BUILD_DIR" + rm -rf $VTK_BUILD_DIR fi - mkdir -p $VTK_BINARY_DIR + mkdir -p $VTK_BUILD_DIR - addCMakeVariable "CMAKE_BUILD_TYPE:STRING=$buildType" + addCMakeVariable "CMAKE_BUILD_TYPE=$BUILD_TYPE" - cd $VTK_BINARY_DIR || exit 1 # change to build folder + cd $VTK_BUILD_DIR || exit 1 # change to build folder echo "----" echo "Configuring VTK-$VTK_VERSION" echo " MESA support : ${withMESA:-false}" echo " Source : $VTK_SOURCE_DIR" - echo " Build : $VTK_BINARY_DIR" + echo " Build : $VTK_BUILD_DIR" echo " Target : $VTK_DIR" - echo " Build type : $buildType" - echo " Cmake : $cmake" + echo " cmake : $cmake" + echo " Build suffix : ${BUILD_SUFFIX:-none}" echo "----" echo echo "$cmake" \ - -DCMAKE_INSTALL_PREFIX:PATH=$VTK_DIR \ + -DCMAKE_INSTALL_PREFIX=$VTK_DIR \ $CMAKE_VARIABLES \ $VTK_SOURCE_DIR echo @@ -153,7 +154,7 @@ configVTK() # Run cmake to create Makefiles $cmake \ - -DCMAKE_INSTALL_PREFIX:PATH=$VTK_DIR \ + -DCMAKE_INSTALL_PREFIX=$VTK_DIR \ $CMAKE_VARIABLES \ $VTK_SOURCE_DIR } @@ -165,17 +166,14 @@ configVTK() # makeVTK() { - cd $VTK_BINARY_DIR || exit 1 # change to build folder + cd $VTK_BUILD_DIR || exit 1 # Change to build folder echo " Starting make" time make -j $WM_NCOMPPROCS echo " Done make" # Remove lib if it is a link # (how this was previously handled before 'make install' worked) - if [ -L lib ] - then - rm lib 2>/dev/null - fi + [ -L lib ] && rm -f lib 2>/dev/null } @@ -184,31 +182,25 @@ makeVTK() # installVTK() { - cd $VTK_BINARY_DIR || exit 1 # Change to build folder + cd $VTK_BUILD_DIR || exit 1 # Change to build folder echo " Installing VTK to $VTK_DIR" make install -cat<< INFO + /bin/cat</dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions +#------------------------------------------------------------------------------ + +# ADIOS version from OpenFOAM etc/config.sh file: +_foamEtc config.sh/ADIOS + +adiosPACKAGE=${adios_version:-adios-none} + #------------------------------------------------------------------------------ usage() { exec 1>&2 @@ -64,7 +64,7 @@ USAGE exit 1 } #------------------------------------------------------------------------------ -# Export WM settings in a form that GNU configure recognizes +# Compiler settings for CMake/configure [ -n "$WM_CC" ] && export CC="$WM_CC" [ -n "$WM_CXX" ] && export CXX="$WM_CXX" [ -n "$WM_CFLAGS" ] && export CFLAGS="$WM_CFLAGS" @@ -74,13 +74,10 @@ USAGE while [ "$#" -gt 0 ] do case "$1" in - -h | -help) - usage - ;; - -gcc) - export CC=gcc # use gcc/g++ - export CXX=g++ - ;; + '') ;; # Ignore empty + -h | -help) usage ;; + -gcc) useGcc ;; + -cmake) [ "$#" -ge 2 ] || die "'$1' option requires an argument" CMAKE_PATH="${2%%/}" @@ -280,9 +277,9 @@ then buildDIR=$buildBASE/$adiosPACKAGE cd $ADIOS_SOURCE_DIR || exit 1 - [ -e Makefile ] && make distclean 2>/dev/null + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo - export GIT_DIR=$ADIOS_SOURCE_DIR/.git + [ -e Makefile ] && make distclean 2>/dev/null applyPatch $adiosPACKAGE $ADIOS_SOURCE_DIR @@ -328,8 +325,7 @@ else ( buildDIR=$buildBASE/$adiosPACKAGE cd $ADIOS_SOURCE_DIR || exit 1 - - export GIT_DIR=$ADIOS_SOURCE_DIR/.git + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo applyPatch $adiosPACKAGE $ADIOS_SOURCE_DIR @@ -353,7 +349,8 @@ else cd $buildDIR && $cmake \ -DCMAKE_INSTALL_PREFIX=$ADIOS_ARCH_PATH \ -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_FORTRAN:BOOL=FALSE \ + -DBUILD_FORTRAN=FALSE \ + ${WM_QUIET:+-DCMAKE_RULE_MESSAGES=OFF} \ $ADIOS_SOURCE_DIR \ && make -j $WM_NCOMPPROCS all \ && make install \ @@ -365,4 +362,4 @@ else } fi -# ----------------------------------------------------------------- end-of-file +# ----------------------------------------------------------------------------- diff --git a/makeCCMIO b/makeCCMIO index 8b7282c..2e1b976 100755 --- a/makeCCMIO +++ b/makeCCMIO @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation -# \\/ M anipulation | +# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -26,31 +26,31 @@ # makeCCMIO # # Description -# Build CD-adapco's ccmio library +# Build the libccmio library # -#------------------------------------------------------------------------------ -# Get version info -. $WM_PROJECT_DIR/etc/config.sh/functions -_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/ccmio) - -ccmioPACKAGE=${ccmio_version:-libccmio-2.6.1} -targetType=lib - +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ # Run from third-party directory only -cd ${0%/*} || exit 1 -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." +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } [ -n "$FOAM_EXT_LIBBIN" ] || { - echo "Error: FOAM_EXT_LIBBIN not set" - echo " Check the OpenFOAM entries in your dot-files and source them." + echo "Error (${0##*/}) : \$FOAM_EXT_LIBBIN not set" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions +#------------------------------------------------------------------------------ + +# libccmio version from OpenFOAM etc/config.sh file: +_foamEtc config.sh/ccmio + +ccmioPACKAGE=${ccmio_version:-libccmio-2.6.1} +targetType=lib # Default is static linkage + #------------------------------------------------------------------------------ usage() { @@ -60,13 +60,14 @@ usage() Usage: ${0##*/} [OPTION] [lib|libso] [libccmio-VERSION] options: + -gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX -help * Compile the proprietary libccmio library $ccmioPACKAGE - Users wishing to make use of the library should contact cd-adapco - (Siemens PLM) for possible download and terms of use. + Users wishing to obtain the library should contact Siemens PLM (cd-adapco) + for terms of use. After obtaining the $ccmioPACKAGE library, place in folder @@ -79,14 +80,14 @@ USAGE } #------------------------------------------------------------------------------ - # Parse options while [ "$#" -gt 0 ] do case "$1" in - -h | -help) - usage - ;; + '') ;; # Ignore empty + -h | -help) usage ;; + -gcc) useGcc ;; + lib|libso) targetType="$1" ;; @@ -100,19 +101,20 @@ do shift done -# assert: directory must be available -[ -d "$ccmioPACKAGE" ] || die "missing source directory '$ccmioPACKAGE'" - #------------------------------------------------------------------------------ -CCMIO_SOURCE_DIR=$sourceBASE/$ccmioPACKAGE -CCMIO_ARCH_PATH=$installBASE/$ccmioPACKAGE - # # Build LIBCCMIO # -echo "---------------" +CCMIO_SOURCE_DIR=$sourceBASE/$ccmioPACKAGE +CCMIO_ARCH_PATH=$installBASE/$ccmioPACKAGE + +# Sources must be available +[ -d "$CCMIO_SOURCE_DIR" ] || die "Missing sources: '$ccmioPACKAGE'" + ( cd $CCMIO_SOURCE_DIR || exit 1 + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo + incDIR=$CCMIO_ARCH_PATH/include/libccmio libDIR=$CCMIO_ARCH_PATH/lib @@ -120,17 +122,17 @@ echo "---------------" mkdir -p $libDIR 2>/dev/null cpMakeFiles libccmio 2>/dev/null - set +x + + # Place static libraries in sub-directory: + if [ "$targetType" = lib ] + then + export FOAM_EXT_LIBBIN=$libDIR + fi + if wmake $targetType then - # make headers available: + # Make headers available: /bin/cp -pv libccmio/ccmio*.h $incDIR - - # relocate static libraries to sub-directory: - if [ "$targetType" = lib ] - then - /bin/mv -v $FOAM_EXT_LIBBIN/libccmio.a $libDIR - fi fi ) diff --git a/makeCGAL b/makeCGAL index b5d49e4..7c27be6 100755 --- a/makeCGAL +++ b/makeCGAL @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation -# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. +# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -34,15 +34,51 @@ # simply specify a 'system' version. For example, # makeCGAL boost-system gmp-system # +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE +#------------------------------------------------------------------------------ +# Short-circuit test for an installation +if [ "$1" = "-test" ] +then + [ "$#" -eq 3 ] || { echo "${0##*/} -test : needs 2 argument"; exit 1; } + dir="$2" # <- CGAL_ARCH_PATH + if [ -d "$dir/include" -a -r "$dir/lib$WM_COMPILER_LIB_ARCH/libCGAL.so" ] + then + echo " CGAL headers in $dir/include" + echo " CGAL libs in $dir/lib$WM_COMPILER_LIB_ARCH" + # Additional information about boost + dir="$3" # <- BOOST_ARCH_PATH + for root in "$dir" /usr + do + if [ -d "$root/include/boost" \ + -a -r "$root/lib$WM_COMPILER_LIB_ARCH/libboost_system.so" ] + then + echo " BOOST headers in $root/include" + echo " BOOST libs in $root/lib$WM_COMPILER_LIB_ARCH" + break + fi + done + exit 0 + else + exit 2 + fi +fi +#------------------------------------------------------------------------------ +# Run from third-party directory only +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" + exit 1 +} +. etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ -# Get CGAL, boost and gmp/mpfr versions -. $WM_PROJECT_DIR/etc/config.sh/functions -unset -f _foamAddPath _foamAddLib _foamAddMan # get settings only -unset BOOST_ARCH_PATH CGAL_ARCH_PATH # purge current values -# compiler first, let CGAL config override GMP (eg, when there is no GMP) -_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/compiler) -_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/CGAL) +unset BOOST_ARCH_PATH CGAL_ARCH_PATH # Purge current values + +# CGAL, boost and gmp/mpfr versions from OpenFOAM etc/config.sh files. +# Get compiler first and let CGAL config override GMP (eg, when there is no GMP) +_foamEtc config.sh/compiler +_foamEtc config.sh/CGAL boostPACKAGE=${boost_version:-boost-system} gmpPACKAGE=${gmp_version:-gmp-system} @@ -50,22 +86,12 @@ mpfrPACKAGE=${mpfr_version:-mpfr-system} cgalPACKAGE=$cgal_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 -#------------------------------------------------------------------------------ -Script="${0##*/}" usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat</dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions +#------------------------------------------------------------------------------ + +# Special purpose script - no default version. +unset cmakePACKAGE + #------------------------------------------------------------------------------ usage() { exec 1>&2 @@ -50,29 +55,31 @@ usage() { usage: ${0##*/} [OPTION] cmake-VERSION options: -gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX + -link Create additional symlink as 'cmake-system' -help * build cmake - ${cmakePACKAGE:-'unspecified version'} + ${cmakePACKAGE:-'unspecified'} USAGE exit 1 } #------------------------------------------------------------------------------ -# Ensure CMake gets the correct C/CC++ compiler +# Compiler settings for CMake/configure [ -n "$WM_CC" ] && export CC="$WM_CC" [ -n "$WM_CXX" ] && export CXX="$WM_CXX" +unset optLink # Parse options while [ "$#" -gt 0 ] do case "$1" in - -h | -help) - usage - ;; - -gcc) - export CC=gcc # use gcc/g++ - export CXX=g++ + '') ;; # Ignore empty + -h | -help) usage ;; + -gcc) useGcc ;; + + -link) + optLink=true ;; cmake-[1-9]*) cmakePACKAGE="${1%%/}" @@ -86,6 +93,11 @@ done [ -n "$cmakePACKAGE" ] || die "The cmake-VERSION was not specified" +if _foamIsSystem "$cmakePACKAGE" +then + unset optLink # basic sanity - cannot +fi + #------------------------------------------------------------------------------ # # Build CMAKE @@ -104,6 +116,7 @@ else buildDIR=$buildBASE/$cmakePACKAGE cd $CMAKE_SOURCE_DIR || exit 1 + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo make distclean 2>/dev/null rm -rf $buildDIR @@ -121,4 +134,19 @@ else } fi +if [ "$optLink" = true -a -x "$CMAKE_ARCH_PATH/bin/cmake" ] +then +( + cd ${CMAKE_ARCH_PATH%/*} || exit 1 + if [ -L cmake-system ] + then + rm cmake-system + elif [ -d cmake-system ] + then + exit 2 + fi + ln -svf $cmakePACKAGE cmake-system +) +fi + #------------------------------------------------------------------------------ diff --git a/makeFFTW b/makeFFTW index 7d63984..dd8ea35 100755 --- a/makeFFTW +++ b/makeFFTW @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. +# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. # \\/ M anipulation | #------------------------------------------------------------------------------ # License @@ -28,24 +28,38 @@ # Description # Build script for FFTW # +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ -# Get FFTW versions -. $WM_PROJECT_DIR/etc/config.sh/functions -unset -f _foamAddPath _foamAddLib _foamAddMan # get settings only - -_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/FFTW) - -fftwPACKAGE=${fftw_version:-fftw-system} - +# Short-circuit test for an installation +if [ "$1" = "-test" ] +then + [ "$#" -eq 2 ] || { echo "${0##*/} -test : needs 1 argument"; exit 1; } + dir="$2" # <- FFTW_ARCH_PATH + if [ -d "$dir/include" -a -r "$dir/lib$WM_COMPILER_LIB_ARCH/libfftw3.so" ] + then + echo " FFTW headers in $dir/include" + echo " FFTW libs in $dir/lib$WM_COMPILER_LIB_ARCH" + exit 0 + else + exit 2 + fi +fi #------------------------------------------------------------------------------ # 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." +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions +#------------------------------------------------------------------------------ + +# FFTW version from OpenFOAM etc/config.sh file: +_foamEtc config.sh/FFTW + +fftwPACKAGE=${fftw_version:-fftw-system} + #------------------------------------------------------------------------------ usage() { exec 1>&2 @@ -64,7 +78,7 @@ USAGE exit 1 } #------------------------------------------------------------------------------ -# Ensure configure gets the correct C/C++ compiler +# Compiler settings for CMake/configure [ -n "$WM_CC" ] && export CC="$WM_CC" [ -n "$WM_CXX" ] && export CXX="$WM_CXX" @@ -72,16 +86,10 @@ USAGE while [ "$#" -gt 0 ] do case "$1" in - -h | -help) - usage - ;; - '') - # discard empty arguments - ;; - -gcc) - export CC=gcc # use gcc/g++ - export CXX=g++ - ;; + '') ;; # Ignore empty + -h | -help) usage ;; + -gcc) useGcc ;; + fftw-[0-9]* | fftw_[0-9]* | fftw-system ) fftwPACKAGE="${1%%/}" ;; @@ -131,6 +139,7 @@ else buildDIR=$buildBASE/$fftwPACKAGE cd $FFTW_SOURCE_DIR || exit 1 + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo rm -rf $FFTW_ARCH_PATH rm -rf $buildDIR @@ -143,9 +152,11 @@ else --libdir=$FFTW_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \ --enable-shared --disable-static \ --disable-fortran \ - && make -j $WM_NCOMPPROCS \ - && make install \ - && echo "Built $fftwPACKAGE" + && set +x \ + && make -j $WM_NCOMPPROCS \ + && make install \ + && echo "Built $fftwPACKAGE" \ + && pkgconfigAdjust $FFTW_ARCH_PATH ) || { echo "Error building: FFTW" exit 1 diff --git a/makeGcc b/makeGcc index b5f10ae..cfe9c08 100755 --- a/makeGcc +++ b/makeGcc @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation -# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. +# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -40,13 +40,23 @@ # # WM_COMPILER=Gcc51 ./makeGcc -system # +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE +#------------------------------------------------------------------------------ +# Run from third-party directory only +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" + exit 1 +} +. etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ -# get default GCC, mpfr, gmp and mpc versions -WM_COMPILER_TYPE=ThirdParty # ensure we get the correct compiler settings -: ${WM_COMPILER:=Gcc} # this will still fail if 'Clang' was set -. $WM_PROJECT_DIR/etc/config.sh/functions -_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/compiler) +[ "${WM_COMPILER#Gcc}" = "$WM_COMPILER" ] && WM_COMPILER=Gcc # Force gcc +WM_COMPILER_TYPE=ThirdParty # Ensure we get the correct settings + +# Default GCC, mpfr, gmp and mpc versions from OpenFOAM etc/config.sh file: +_foamEtc config.sh/compiler gmpPACKAGE=${gmp_version:-gmp-system} mpfrPACKAGE=${mpfr_version:-mpfr-system} @@ -54,23 +64,12 @@ mpcPACKAGE=${mpc_version:-mpc-system} 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 -#------------------------------------------------------------------------------ -Script=${0##*/} - usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat< to LD_LIBRARY_PATH, if it exists. 0 on success, 1 on failure +addLib() +{ + if [ -d "$1" ] + then + export LD_LIBRARY_PATH=$1:$LD_LIBRARY_PATH + return 0 + else + return 1 + fi +} + # ================ # Build GMP @@ -184,6 +195,7 @@ else buildDIR=$buildBASE/$gmpPACKAGE cd $sourceDIR || exit 1 + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo make distclean 2>/dev/null rm -rf $buildDIR @@ -195,6 +207,7 @@ else --prefix=$GMP_ARCH_PATH \ --libdir=$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \ --enable-cxx \ + && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $gmpPACKAGE" @@ -204,10 +217,8 @@ else } fi -if [ -d "$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" ] +if addLib "$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" then - _foamAddLib "$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" - configGMP=$(cat </dev/null rm -rf $buildDIR @@ -251,6 +263,7 @@ else --prefix=$MPFR_ARCH_PATH \ --libdir=$MPFR_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \ $configGMP $configOpt \ + && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $mpfrPACKAGE" @@ -260,10 +273,8 @@ else } fi -if [ -d "$MPFR_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" ] +if addLib "$MPFR_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" then - _foamAddLib "$MPFR_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" - configMPFR=$(cat </dev/null rm -rf $buildDIR @@ -303,6 +315,7 @@ else --prefix=$MPC_ARCH_PATH \ --libdir=$MPC_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \ $configGMP $configMPFR \ + && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $mpcPACKAGE" @@ -312,10 +325,8 @@ else } fi -if [ -d "$MPC_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" ] +if addLib "$MPC_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" then - _foamAddLib "$MPC_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" - configMPC=$(cat </dev/null rm -rf $buildDIR @@ -368,6 +380,7 @@ else --with-system-zlib \ $configGMP $configMPFR $configMPC $configOpt \ MAKEINFO=missing \ + && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $gccPACKAGE" diff --git a/makeGperftools b/makeGperftools index e12efd5..4ad0f94 100755 --- a/makeGperftools +++ b/makeGperftools @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation -# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. +# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -28,24 +28,23 @@ # Description # Build script for gperftools # -#------------------------------------------------------------------------------ -# Get gperftools version -. $WM_PROJECT_DIR/etc/config.sh/functions -unset -f _foamAddPath _foamAddLib _foamAddMan # get settings only - -_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/gperftools) - -gperftoolsPACKAGE=${gperftools_version:-gperftools-system} - +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ # 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." +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions +#------------------------------------------------------------------------------ + +# Gperftools version from OpenFOAM etc/config.sh file: +_foamEtc config.sh/gperftools + +gperftoolsPACKAGE=${gperftools_version:-gperftools-system} + #------------------------------------------------------------------------------ usage() { exec 1>&2 @@ -64,7 +63,7 @@ USAGE exit 1 } #------------------------------------------------------------------------------ -# Ensure configure gets the correct C/C++ compiler +# Compiler settings for CMake/configure [ -n "$WM_CC" ] && export CC="$WM_CC" [ -n "$WM_CXX" ] && export CXX="$WM_CXX" @@ -72,13 +71,10 @@ USAGE while [ "$#" -gt 0 ] do case "$1" in - -h | -help) - usage - ;; - -gcc) - export CC=gcc # use gcc/g++ - export CXX=g++ - ;; + '') ;; # Ignore empty + -h | -help) usage ;; + -gcc) useGcc ;; + gperftools-[0-9]* | gperftools-svn* | gperftools-git) gperftoolsPACKAGE="${1%%/}" ;; @@ -119,8 +115,8 @@ else buildDIR=$buildBASE/$gperftoolsPACKAGE cd $GPERFTOOLS_SOURCE_DIR || exit 1 - - make distclean 2>/dev/null + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo + [ -e Makefile ] && make distclean 2>/dev/null rm -rf $GPERFTOOLS_ARCH_PATH rm -rf $buildDIR @@ -130,6 +126,7 @@ else set -x $GPERFTOOLS_SOURCE_DIR/configure \ --prefix=$GPERFTOOLS_ARCH_PATH \ + && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $gperftoolsPACKAGE" \ diff --git a/makeLLVM b/makeLLVM index bd5914f..102cce3 100755 --- a/makeLLVM +++ b/makeLLVM @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation -# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. +# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -30,45 +30,38 @@ # # Note # - Ensure that you always use matching versions between llvm and clang. -# - The LLVM components reside in the LLVM tools/ subdirectory +# - LLVM components such as clang reside in the LLVM tools/ subdirectory # -# Example, building from svn repository: -# 1) Checkout LLVM: -# svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn +# For example, when building from tar files (version 4.0.0) # -# 2) Checkout Clang, in the correct location -# cd llvm-svn/tools -# svn co http://llvm.org/svn/llvm-project/cfe/trunk clang -# cd - +# 1) Unpack LLVM: +# tar -xJf llvm-4.0.0.src.tar.xz +# mv llvm-4.0.0.src llvm-4.0.0 # -# Example, building from tar files (version 3.8.0) -# - Unpack LLVM: -# tar -Jvf llvm-3.8.0.src.tar.xz -# mv llvm-3.8.0.src llvm-3.8.0 -# -# - Unpack Clang (also know as cfe): -# tar -Jvf cfe-3.8.0.src.tar.xz -# mv cfe-3.8.0.src llvm-3.8.0/tools/clang +# 2) Unpack Clang (also know as cfe): +# tar -xJf cfe-4.0.0.src.tar.xz +# mv cfe-4.0.0.src llvm-4.0.0/tools/clang # +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ -# Get default llvm/clang version -WM_COMPILER_TYPE=ThirdParty # ensure we get the correct compiler settings -WM_COMPILER=Clang # force values for 'clang' - -. $WM_PROJECT_DIR/etc/config.sh/functions -_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/compiler) - -llvmPACKAGE=$clang_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." +# Run from third-party directory only +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions +#------------------------------------------------------------------------------ + +[ "${WM_COMPILER#Clang}" = "$WM_COMPILER" ] && WM_COMPILER=Clang # Force clang +WM_COMPILER_TYPE=ThirdParty # Ensure we get the correct settings + +# LLVM/Clang version from OpenFOAM etc/config.sh file: +_foamEtc config.sh/compiler + +llvmPACKAGE=$clang_version + #------------------------------------------------------------------------------ usage() { exec 1>&2 @@ -88,7 +81,7 @@ USAGE exit 1 } #----------------------------------------------------------------------------- -# Ensure CMake gets the correct C/C++ compiler +# Compiler settings for CMake/configure [ -n "$WM_CC" ] && export CC="$WM_CC" [ -n "$WM_CXX" ] && export CXX="$WM_CXX" @@ -96,13 +89,10 @@ USAGE while [ "$#" -gt 0 ] do case "$1" in - -h | -help) - usage - ;; - -gcc) - export CC=gcc # use gcc/g++ - export CXX=g++ - ;; + '') ;; # Ignore empty + -h | -help) usage ;; + -gcc) useGcc ;; + -cmake) [ "$#" -ge 2 ] || die "'$1' option requires an argument" CMAKE_PATH="${2%%/}" @@ -111,6 +101,9 @@ do llvm-[0-9]* | llvm-svn*) llvmPACKAGE="${1%%/}" ;; + [1-9]*) + llvmPACKAGE="llvm-${1%%/}" + ;; *) die "unknown option/argument: '$1'" ;; @@ -127,12 +120,12 @@ installBASE=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH # Build LLVM (clang) # LLVM_SOURCE_DIR : location of the original sources -# LLVM_BINARY_DIR : location of the build +# LLVM_BUILD_DIR : location of the build # LLVM_ARCH_PATH : location of the installed program # - Strip any trailing '.src' from the proper names LLVM_SOURCE_DIR=$sourceBASE/$llvmPACKAGE -LLVM_BINARY_DIR=$buildBASE/${llvmPACKAGE%%.src} +LLVM_BUILD_DIR=$buildBASE/${llvmPACKAGE%%.src} LLVM_ARCH_PATH=$installBASE/${llvmPACKAGE%%.src} # @@ -151,11 +144,12 @@ then echo ( cd $LLVM_SOURCE_DIR || exit 1 + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo make distclean 2>/dev/null - rm -rf $LLVM_BINARY_DIR - mkdir -p $LLVM_BINARY_DIR - cd $LLVM_BINARY_DIR + rm -rf $LLVM_BUILD_DIR + mkdir -p $LLVM_BUILD_DIR + cd $LLVM_BUILD_DIR set -x $LLVM_SOURCE_DIR/configure \ @@ -163,6 +157,7 @@ then --with-gcc-toolchain=$(which gcc | sed s%/bin/gcc%%) \ --enable-optimized \ --enable-shared \ + && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $llvmPACKAGE" @@ -178,10 +173,11 @@ else echo ( cd $LLVM_SOURCE_DIR || exit 1 + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo - rm -rf $LLVM_BINARY_DIR - mkdir -p $LLVM_BINARY_DIR - cd $LLVM_BINARY_DIR + rm -rf $LLVM_BUILD_DIR + mkdir -p $LLVM_BUILD_DIR + cd $LLVM_BUILD_DIR cmake=$(findCMake) @@ -189,8 +185,9 @@ else $cmake \ -DCMAKE_INSTALL_PREFIX=$LLVM_ARCH_PATH \ -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS:BOOL=ON \ + -DBUILD_SHARED_LIBS=ON \ $LLVM_SOURCE_DIR \ + && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $llvmPACKAGE" diff --git a/makeMGridGen b/makeMGridGen new file mode 100755 index 0000000..fdf395f --- /dev/null +++ b/makeMGridGen @@ -0,0 +1,186 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2017 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 +# makeMGridGen +# +# Description +# Build script for MGridGen (serial) +# +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE +#------------------------------------------------------------------------------ +# Run from ThirdParty 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 +#------------------------------------------------------------------------------ + +# mgridgen version from OpenFOAM etc/config.sh file: +_foamEtc config.sh/mgridgen + +mgridgenPACKAGE=${MGRIDGEN_VERSION:-mgridgen-none} + +#------------------------------------------------------------------------------ +usage() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat</dev/null + + # Remove any existing build folder and recreate + rm -rf $MGRIDGEN_ARCH_PATH + + serial="${CC:-$WM_CC}" # CC (serial compiler) default=cc + # parallel=$(whichMpicc) # PARCC (parallel compiler) default=mpicc + # PARCC=$parallel + # PARLD=$parallel + # PARLIBS="-L../.. -lparmgrid -lmgrid -lm" + + make \ + COPTIONS="-fPIC" \ + LDOPTIONS="-fPIC" \ + CC=$serial \ + LD=$serial \ + LIBDIR="-L../.." \ + LIBS="-L../.. -lmgrid -lm" \ + make=make \ + serial \ + && install \ + && echo "Built: $mgridgenPACKAGE" +) || { + echo "Error building: $mgridgenPACKAGE" +} +fi + +#------------------------------------------------------------------------------ diff --git a/makeMPICH b/makeMPICH new file mode 100755 index 0000000..2332153 --- /dev/null +++ b/makeMPICH @@ -0,0 +1,180 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2017 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 +# makeMPICH +# +# Description +# Build script for mpich - legacy (unmaintained) build code! +# +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE +#------------------------------------------------------------------------------ +# Short-circuit test for an installation +if [ "$1" = "-test" ] +then + [ "$#" -eq 2 ] || { echo "${0##*/} -test : needs 1 argument"; exit 1; } + dir="$2" # <- MPI_ARCH_PATH + if [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libmpich.so" ] + then + echo "Have mpich shared library (${dir##*/})" + exit 0 + elif [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libmpich.a" ] + then + echo "Have mpich static library (${dir##*/})" + exit 0 + else + echo "No mpich libraries found: ${dir:-not-specified}" + exit 2 + fi +fi +#------------------------------------------------------------------------------ +# Run from third-party directory only +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" + exit 1 +} +. etc/tools/ThirdPartyFunctions +# Transition +# ~~~~~~~~~~ +_foamAddLib() { true; } +_foamAddMan() { true; } +_foamAddPath() { true; } +#------------------------------------------------------------------------------ + +WM_MPLIB=MPICH # Ensure we get the correct MPI + +# mpich version from OpenFOAM etc/config.sh file: +_foamEtc config.sh/mpi + +mpiPACKAGE=${FOAM_MPI:-mpich-system} + +#------------------------------------------------------------------------------ +usage() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat</dev/null + + rm -rf $MPI_ARCH_PATH + rm -rf $buildDIR + mkdir -p $buildDIR + cd $buildDIR + + set -x + $MPI_SOURCE_DIR/configure \ + --prefix=$MPI_ARCH_PATH \ + --disable-fortran --disable-g \ + --libdir=$MPI_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \ + --enable-shared --disable-static \ + $configOpt \ + && set +x \ + && make -j $WM_NCOMPPROCS \ + && make install \ + && echo "Built: $mpiPACKAGE" \ + && pkgconfigAdjust $MPI_ARCH_PATH + ) || { + echo "Error building: $mpiPACKAGE" + exit 1 + } +fi + +#------------------------------------------------------------------------------ diff --git a/makeMesa b/makeMesa index c1befd4..4ab89a5 100755 --- a/makeMesa +++ b/makeMesa @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. +# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. # \\/ M anipulation | #------------------------------------------------------------------------------ # License @@ -32,22 +32,27 @@ # Building with mesa-12.x.x fails to create an include/GL directory and # an "osmesa.h" file. Both make it fairly useless for off-screen VTK. # -# Building with mesa-11.x is fine and mesa-13.x also seems to be okay. +# Building with mesa-11.x, mesa-13.x and mesa-17.x seems to be okay. # -#------------------------------------------------------------------------------ -# Special purpose script, no default version. -unset mesaPACKAGE - +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ # Run from third-party directory only -cd ${0%/*} || exit 1 -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." +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions +#------------------------------------------------------------------------------ + +unset vtk_version mesa_version # Purge current values + +# mesa version from OpenFOAM etc/config.sh file: +_foamEtc config.sh/vtk + +mesaPACKAGE=$mesa_version + #------------------------------------------------------------------------------ usage() { exec 1>&2 @@ -66,27 +71,28 @@ USAGE exit 1 } #------------------------------------------------------------------------------ -# Ensure configure gets the correct C/C++ compiler +# Compiler settings for CMake/configure [ -n "$WM_CC" ] && export CC="$WM_CC" [ -n "$WM_CXX" ] && export CXX="$WM_CXX" # Non-standard location for clang? -unset thirdPartyClang -if [ "$WM_COMPILER_TYPE" = ThirdParty -a "$WM_COMPILER" = Clang ] -then +case "$WM_COMPILER_TYPE-$WM_COMPILER" in +ThirdParty-Clang*) thirdPartyClang=true -fi + ;; +*) + unset thirdPartyClang + ;; +esac # Parse options while [ "$#" -gt 0 ] do case "$1" in - -h | -help) - usage - ;; + '') ;; # Ignore empty + -h | -help) usage ;; -gcc) - export CC=gcc # use gcc/g++ - export CXX=g++ + useGcc unset thirdPartyClang ;; mesa-*) @@ -142,6 +148,17 @@ fi MESA_SOURCE_DIR=$sourceBASE/$mesaPACKAGE MESA_ARCH_PATH=$installBASE/$mesaPACKAGE +# +# Manual adjustments to mesa +# - avoid GLES (GLES1) since may mask the header +adjustMESA() +{ + pkgconfigAdjust $MESA_ARCH_PATH + + \rm -rf $MESA_ARCH_PATH/include/GLES $MESA_ARCH_PATH/include/GLES1 + echo "removed all gles1 includes" +} + ( # configuration options: unset configOpt @@ -156,6 +173,7 @@ MESA_ARCH_PATH=$installBASE/$mesaPACKAGE buildDIR=$buildBASE/$mesaPACKAGE cd $MESA_SOURCE_DIR || exit 1 + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo # remove any existing build rm -rf $MESA_ARCH_PATH @@ -184,16 +202,20 @@ MESA_ARCH_PATH=$installBASE/$mesaPACKAGE --disable-xvmc \ --disable-glx \ --disable-dri \ + --disable-gbm \ --disable-egl \ + --disable-gles1 \ --enable-texture-float \ --enable-gallium-osmesa --with-gallium-drivers=swrast \ $configOpt \ - && make -j $WM_NCOMPPROCS \ - && make install \ - && echo "Built $mesaPACKAGE" + && set +x \ + && make -j $WM_NCOMPPROCS \ + && make install \ + && echo "Built $mesaPACKAGE" \ + && adjustMESA ) || { echo "Error building: MESA" exit 1 } -# ----------------------------------------------------------------- end-of-file +# ----------------------------------------------------------------------------- diff --git a/makeOPENMPI b/makeOPENMPI new file mode 100755 index 0000000..a61f954 --- /dev/null +++ b/makeOPENMPI @@ -0,0 +1,194 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2017 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 +# makeOPENMPI +# +# Description +# Build script for openmpi +# +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE +#------------------------------------------------------------------------------ +# Short-circuit test for an installation +if [ "$1" = "-test" ] +then + [ "$#" -eq 2 ] || { echo "${0##*/} -test : needs 1 argument"; exit 1; } + dir="$2" # <- MPI_ARCH_PATH + if [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libmpi.so" ] + then + echo " Have openmpi shared library (${dir##*/})" + exit 0 + elif [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libmpi.a" ] + then + echo " Have openmpi static library (${dir##*/})" + exit 0 + else + echo "No openmpi libraries found: ${dir:-not-specified}" + exit 2 + fi +fi +#------------------------------------------------------------------------------ +# Run from third-party directory only +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" + exit 1 +} +. etc/tools/ThirdPartyFunctions +# Transition +# ~~~~~~~~~~ +_foamAddLib() { true; } +_foamAddMan() { true; } +_foamAddPath() { true; } +#------------------------------------------------------------------------------ + +WM_MPLIB=OPENMPI # Ensure we get the correct MPI + +# openmpi version from OpenFOAM etc/config.sh file: +_foamEtc config.sh/mpi + +mpiPACKAGE=${FOAM_MPI:-openmpi-system} + +#------------------------------------------------------------------------------ +usage() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat</dev/null + + rm -rf $MPI_ARCH_PATH + rm -rf $buildDIR + mkdir -p $buildDIR + cd $buildDIR + + set -x + $MPI_SOURCE_DIR/configure \ + --prefix=$MPI_ARCH_PATH \ + --libdir=$MPI_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \ + --disable-orterun-prefix-by-default \ + --enable-shared --disable-static \ + --enable-mpi-fortran=none \ + --disable-mpi-profile \ + $configOpt \ + && set +x \ + && make -j $WM_NCOMPPROCS \ + && make install \ + && echo "Built: $mpiPACKAGE" \ + && pkgconfigAdjust $MPI_ARCH_PATH + ) || { + echo "Error building: $mpiPACKAGE" + exit 1 + } +fi + +#------------------------------------------------------------------------------ diff --git a/makeParaView b/makeParaView index 2ca6ebf..666e5e0 100755 --- a/makeParaView +++ b/makeParaView @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation -# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. +# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -33,104 +33,70 @@ # # Note the capitalization of ParaView in the directory names. # -#------------------------------------------------------------------------------ -# Get ParaView_VERSION location from OpenFOAM config file -. $WM_PROJECT_DIR/etc/config.sh/functions -unset -f _foamAddPath _foamAddLib # get settings only -unset ParaView_VERSION # purge current values - -_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/paraview) - -: ${ParaView_VERSION##*-} - +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ # Run from third-party directory only -cd ${0%/*} || exit 1 -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." +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions . etc/tools/ParaViewFunctions #------------------------------------------------------------------------------ -# -# USER OPTIONS: -# ~~~~~~~~~~~~~ -# MPI support: -# use 0 or unset MPI_MAX_PROCS for no upper-limit -withMPI=false -MPI_MAX_PROCS=32 +unset ParaView_VERSION # Purge current values -# Python support: -# note: script will try to determine the appropriate python library. -# If it fails, specify the path using the PYTHON_LIBRARY variable -withPYTHON=false -PYTHON_LIBRARY="" -# PYTHON_LIBRARY="/usr/lib$WM_COMPILER_LIB_ARCH/libpython2.6.so.1.0" +# ParaView_VERSION from etc/config.sh file: +_foamEtc config.sh/paraview -# MESA graphics support: -withMESA=false -MESA_INCLUDE="/usr/include/GL" -MESA_LIBRARY="/usr/lib$WM_COMPILER_LIB_ARCH/libOSMesa.so" +ParaView_VERSION="${ParaView_VERSION##*-}" # Without prefix -# extra QT gui support (useful for some third party apps) -withQT=true - -# Set the path to the Qt-4.5 (or later) qmake if the system Qt is older -QMAKE_PATH="" - -# Set the path to cmake -CMAKE_PATH="" +# Set initial ParaView_MAJOR based on current value of ParaView_VERSION +setParaViewVersion ${ParaView_VERSION:-none} # New rendering backend (starting with paraview 5.0). -# Default to auto-config based on paraview version -withGL2=auto +withGL2=auto # auto-config based on version -# -# NO FURTHER EDITING BELOW THIS LINE -# -#----------------------------------------------------------------------------- -Script=${0##*/} +#------------------------------------------------------------------------------ usage() { - : ${ParaView_VERSION:=none} # some dummy value for usage information exec 1>&2 + : ${ParaView_VERSION:=none} # some dummy value for usage information while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat< addCMakeVariable "VTK_USE_OFFSCREEN=OFF" +fi + # Set configure options #~~~~~~~~~~~~~~~~~~~~~~ @@ -380,10 +358,10 @@ Features selected qt ${withQT:-false} --------------------- Version information - qt ${QtVersion:-none} - version ${ParaView_VERSION:-unknown} $(checkVersion) + paraview ${ParaView_VERSION:-unknown} major ${ParaView_MAJOR:-unknown} - build ${buildType:-Release} + build ${BUILD_TYPE:-unknown} + qt ${QT_VERSION:-none} --------------------- SUMMARY diff --git a/makeParaView.example b/makeParaView.example index 5fe489e..9caf442 100755 --- a/makeParaView.example +++ b/makeParaView.example @@ -1,14 +1,16 @@ #!/bin/sh # An example for building particular combinations of ParaView with # - mpi (0 = no upper-limit on processes) -# - off-screen mesa +# - mesa -mesa=mesa-11.2.2 -# mesa=mesa-13.0.2 +# mesa=mesa-11.2.2 +# mesa=mesa-13.0.3 +mesa=mesa-17.1.1 ./makeParaView \ -mpi=0 \ -mesa-prefix $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$mesa \ + -suffix mesa \ "$@" #------------------------------------------------------------------------------ diff --git a/makeQt b/makeQt index 5c27532..e50bcb5 100755 --- a/makeQt +++ b/makeQt @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation -# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. +# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -28,16 +28,13 @@ # Description # Build script for QT (the qt-everywhere-opensource-src package) # -#------------------------------------------------------------------------------ -qtVERSION=4.8.7 -qtTYPE=qt-everywhere-opensource-src - +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ # 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." +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions @@ -48,18 +45,18 @@ usage() { while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat</dev/null # Remove any existing build folder and recreate @@ -174,4 +169,4 @@ else } fi -# ----------------------------------------------------------------- end-of-file +# ----------------------------------------------------------------------------- diff --git a/makeTecio b/makeTecio index df7daff..21a8076 100755 --- a/makeTecio +++ b/makeTecio @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. +# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. # \\/ M anipulation | #------------------------------------------------------------------------------ # License @@ -28,32 +28,30 @@ # Description # Build Tecplot library # +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE +#------------------------------------------------------------------------------ +# Run from third-party directory only +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" + exit 1 +} +[ -n "$FOAM_EXT_LIBBIN" ] || { + echo "Error (${0##*/}) : \$FOAM_EXT_LIBBIN not set" + echo " Check your OpenFOAM environment and installation" + exit 1 +} +. etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ -# Get boost version (headers only) -. $WM_PROJECT_DIR/etc/config.sh/functions -unset -f _foamAddPath _foamAddLib _foamAddMan # get settings only -_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/CGAL) +# Boost version (headers only) from OpenFOAM etc/config.sh file: +_foamEtc config.sh/CGAL boostPACKAGE=${boost_version:-boost-system} tecioPACKAGE=tecio targetType=lib -#------------------------------------------------------------------------------ -# Run from third-party directory only -cd ${0%/*} || exit 1 -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 -} -[ -n "$FOAM_EXT_LIBBIN" ] || { - echo "Error: FOAM_EXT_LIBBIN not set" - echo " Check the OpenFOAM entries in your dot-files and source them." - exit 1 -} -. etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ usage() { @@ -67,7 +65,6 @@ options: -gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX -help - * Compile the proprietary libtecio library $tecioPACKAGE with $boostPACKAGE @@ -76,7 +73,7 @@ USAGE exit 1 } #------------------------------------------------------------------------------ -# Ensure CMake gets the correct C/C++ compiler +# Compiler settings for CMake/configure [ -n "$WM_CC" ] && export CC="$WM_CC" [ -n "$WM_CXX" ] && export CXX="$WM_CXX" @@ -84,13 +81,10 @@ USAGE while [ "$#" -gt 0 ] do case "$1" in - -h | -help) - usage - ;; - -gcc) - export CC=gcc # use gcc/g++ - export CXX=g++ - ;; + '') ;; # Ignore empty + -h | -help) usage ;; + -gcc) useGcc ;; + -cmake) [ "$#" -ge 2 ] || die "'$1' option requires an argument" CMAKE_PATH="${2%%/}" @@ -109,15 +103,23 @@ do shift done -# assert: directory must be available -[ -d "$tecioPACKAGE" ] || die "missing source directory '$tecioPACKAGE'" - - #------------------------------------------------------------------------------ +# Build TECIO library # +# TECIO_SOURCE_DIR : location of the original sources +# TECIO_BUILD_DIR : location of the build +# TECIO_ARCH_PATH : location of the installed program + +TECIO_SOURCE_DIR=$sourceBASE/$tecioPACKAGE/teciosrc +TECIO_BUILD_DIR=$buildBASE/$tecioPACKAGE +TECIO_ARCH_PATH=$installBASE/$tecioPACKAGE + +# Sources must be available +[ -d "$TECIO_SOURCE_DIR" ] || die "Missing sources '$tecioPACKAGE'" + + # Get Boost information # - only headers are required - : ${BOOST_ARCH_PATH:=$installBASE/$boostPACKAGE} # Fallback boostInc="$BOOST_ARCH_PATH/include" @@ -136,27 +138,17 @@ then fi -# Build TECIO library -# -# TECIO_SOURCE_DIR : location of the original sources -# TECIO_BINARY_DIR : location of the build -# TECIO_ARCH_PATH : location of the installed program - -TECIO_SOURCE_DIR=$sourceBASE/$tecioPACKAGE/teciosrc -TECIO_BINARY_DIR=$buildBASE/$tecioPACKAGE -TECIO_ARCH_PATH=$installBASE/$tecioPACKAGE - if [ -d "$TECIO_SOURCE_DIR" ] then ( # Remove any existing build folder and recreate - if [ -d $TECIO_BINARY_DIR ] + if [ -d $TECIO_BUILD_DIR ] then echo "removing old build directory" - echo " $TECIO_BINARY_DIR" - rm -rf $TECIO_BINARY_DIR + echo " $TECIO_BUILD_DIR" + rm -rf $TECIO_BUILD_DIR fi - mkdir -p $TECIO_BINARY_DIR + mkdir -p $TECIO_BUILD_DIR rm -rf $TECIO_ARCH_PATH @@ -164,7 +156,7 @@ then echo "----" echo "Configuring $tecioPACKAGE with boost $BOOST_VERSION" echo " Source : $TECIO_SOURCE_DIR" - echo " Build : $TECIO_BINARY_DIR" + echo " Build : $TECIO_BUILD_DIR" echo " Target : $TECIO_ARCH_PATH" if [ -d "$BOOST_ARCH_PATH" ] @@ -178,9 +170,9 @@ then echo "----" set -x - cd $TECIO_BINARY_DIR && $cmake \ + cd $TECIO_BUILD_DIR && $cmake \ -DCMAKE_INSTALL_PREFIX=$TECIO_ARCH_PATH \ - -DCMAKE_BINARY_TYPE=Release \ + -DCMAKE_BUILD_TYPE=Release \ -DBoost_INCLUDE_DIR=$boostInc \ $TECIO_SOURCE_DIR \ && make -j $WM_NCOMPPROCS \ @@ -190,7 +182,7 @@ then mkdir -p $TECIO_ARCH_PATH 2>/dev/null /bin/cp -pv \ - $TECIO_BINARY_DIR/libtecio.a \ + $TECIO_BUILD_DIR/libtecio.a \ $TECIO_SOURCE_DIR/TECIO.h \ $TECIO_SOURCE_DIR/tecio_Exports.h \ $TECIO_ARCH_PATH diff --git a/makeVTK b/makeVTK index 1206ab6..99ead3d 100755 --- a/makeVTK +++ b/makeVTK @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. +# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. # \\/ M anipulation | #------------------------------------------------------------------------------ # License @@ -28,86 +28,72 @@ # Description # Make and install VTK. # The VTK sources should be located under one of these locations: -# - $WM_THIRD_PARTY_DIR/ParaView-VERSION -# - $WM_THIRD_PARTY_DIR/ParaView-vVERSION +# - $WM_THIRD_PARTY_DIR/VTK-VERSION # # To use the VTK source from the ParaView source tree, simply make an # appropriate link first. For example, # -# (cd $WM_THIRD_PARTY_DIR && ln -s ParaView-v5.2.0/VTK VTK-7.1.0) +# ln -s ParaView-v5.3.0/VTK VTK-7.1.0 # +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ # Run from third-party directory only -cd ${0%/*} || exit 1 -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." +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } . etc/tools/ThirdPartyFunctions . etc/tools/ParaViewFunctions . etc/tools/vtkFunctions #------------------------------------------------------------------------------ -# -# USER OPTIONS: -# ~~~~~~~~~~~~~ -# MPI support: -# use 0 or unset MPI_MAX_PROCS for no upper-limit -withMPI=false -unset MPI_MAX_PROCS +unset vtk_version mesa_version # Purge current values -# MESA graphics support: -withMESA=false -MESA_INCLUDE="/usr/include/GL" -MESA_LIBRARY="/usr/lib$WM_COMPILER_LIB_ARCH/libOSMesa.so" +# vtk version from OpenFOAM etc/config.sh file: +_foamEtc config.sh/vtk -# Set the path to cmake -CMAKE_PATH="" +VTK_VERSION=$vtk_version # New rendering backend (starting with vtk 7?). -# Default to auto-config based on VTK version -withGL2=auto +withGL2=auto # auto-config based on version -# -# NO FURTHER EDITING BELOW THIS LINE -# -#----------------------------------------------------------------------------- -Script=${0##*/} +#------------------------------------------------------------------------------ usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat</dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" exit 1 } #------------------------------------------------------------------------------ @@ -81,7 +82,7 @@ do min=$(sed -n \ -e 's/^.*cmake_minimum.*VERSION *\([0-9.][0-9.]*\).*/\1/p' \ "$dir/CMakeLists.txt" \ - 2>/dev/null) + 2>/dev/null | head -1) if [ -n "$min" ] then diff --git a/sources.txt b/sources.txt index cc7f8e5..5518442 100644 --- a/sources.txt +++ b/sources.txt @@ -1,7 +1,17 @@ Third-Party Sources =================== -OpenFOAM+ v1612 +OpenFOAM-1706 +--------------- +CGAL-4.9.1 +ParaView-5.4.0 +boost_1_64_0 +fftw-3.3.6-pl1 +openmpi-1.10.4 +scotch_6.0.3 + + +OpenFOAM-1612 --------------- CGAL-4.9 ParaView-5.0.1 @@ -11,7 +21,7 @@ openmpi-1.10.4 scotch_6.0.3 -OpenFOAM+ v1606 +OpenFOAM-1606 --------------- CGAL-4.8 ParaView-5.0.1 @@ -21,7 +31,7 @@ openmpi-1.10.2 scotch_6.0.3 -OpenFOAM+ v3.0 +OpenFOAM v3.0+ --------------- CGAL-4.7 ParaView-4.4.0