diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000..54290db --- /dev/null +++ b/BUILD.md @@ -0,0 +1,417 @@ + + +--- + +# OpenFOAM® ThirdParty Build + +OpenFOAM depends to a certain extent on third-party libraries +(*opensource only*). It also provides some interfaces to *opensource* or +*proprietary* libraries. This third-party package contains configurations and +scripts for building third-party packages. It should normally only be used in +conjunction with the corresponding OpenFOAM version. + + +## Configuration of Third-Party Versions + +The distributed make scripts can generally be used for a variety of +versions of the third-party libraries, with the software version +specified on the command-line. For example, + + $ ./makeFFTW -help + usage: makeFFTW [OPTION] [fftw-VERSION] + +If a version is not explicitly specified on the command-line, it will +use the version as specified by the appropriate OpenFOAM +`etc/config.sh/...` entry. + +This approach avoids duplicate entries for the default versions and +ensures the best overall consistency between the OpenFOAM installation +and its corresponding third-party installation. + +--- + +## Before Starting + +0. Review the [system requirements](http://www.openfoam.com/documentation/system-requirements.php) + and decide on the following: + * compiler type/version - if the system compiler is not relatively recent, + you will need a [third-party compiler](#makeGcc) installation. + * MPI type/version. + * ParaView type/version. + * CMake type/version, ... +1. If you are using a system MPI (eg, openmpi), ensure that this environment + has also been properly activated for your user. + Often (but not always) a `mpi-selector` command is available for this purpose. + You may need to open a new shell afterwards for the change to take effect. + Using the following command may help diagnosing things: + + which mpicc + +2. Adjust the OpenFOAM `etc/bashrc`, `etc/config.sh/...` or equivalent + `prefs.sh` files to reflect your preferred configuration. + For many config files, there are several configuration possibilities: + - Define a particular third-party version. + - Use a system installation. + - Disable use of an optional component. + - Define an alternative site-wide central location. + - After making the desired changes, use `wmRefresh` or equivalent to use the configurations. + + +--- + +## Building + +Many components of ThirdParty are *optional* or are invoked +automatically as part of the top-level OpenFOAM `Allwmake`. +Nonetheless it may be necessary or useful to build various +ThirdParty components prior to building OpenFOAM itself. + + +### Build Sequence +1. `makeGcc` _or_ `makeLLVM` *(optional)* + - Makes a third-party [gcc](#gcc-compiler) or [clang](#clang-compiler) installation, + which is needed if the system gcc is [too old](#gcc-compiler). + If your system compiler is recent enough, you can skip this step. + - If you do use this option, you will need the following adjustments to the + OpenFOAM `etc/bashrc` or your equivalent `prefs.sh` file: + - `WM_COMPILER_TYPE=ThirdParty` + - `WM_COMPILER=Gcc48` (for example) + - or `WM_COMPILER=Clang` and adjust the `clang_version` entry in the OpenFOAM + `etc/config.sh/compiler` or equivalent. + - More description is contained in the header comments of the + `makeGcc` and `makeLLVM` files. + - *Attention*: If you are building a newer version of clang, you may need to + update your CMake beforehand. +2. `makeCmake` *(optional)* + - Makes a third-party [CMake](#general-packages) installation, which is + needed if a system CMake does not exist or is [too old](#min-cmake), + - Note that CMake is being used by an number of third-party packages + (CGAL, LLVM, ParaView, VTK, ...) + so this may become an increasingly important aspect of the build. +3. `Allwmake` + - This will be automatically invoked by the top-level OpenFOAM `Allwmake`, but + can also be invoked directly to find possible build errors. + - Builds an mpi library (openmpi or mpich), scotch decomposition, boost, CGAL, FFTW. + - If the optional metis directory is found, it will also be compiled. +4. `makeParaView` *(optional but highly recommended)* + - This is optional, but extremely useful for visualization and for + run-time post-processing function objects. + You can build this at a later point in time, but then you should + remember to rebuild the post-processing function objects and the + reader module as well. +5. Make any additional optional components + + +#### Optional Components + +`makeCGAL` +- Builds third-party boost and CGAL. + Automatically invoked from the ThirdParty `Allwmake`, + but can be invoked directly to resolve possible build errors. + +`makeFFTW` +- Builds third-party FFTW. + Automatically invoked from the ThirdParty `Allwmake`, + but can be invoked directly to resolve possible build errors. + +`makeCCMIO` +- Only required for conversion to/from STARCD/STARCCM+ files. + +`makeTecio` +- Only required for conversion of results to Tecplot format. + +`makeMesa`, `makeVTK` +- Additional support for building offscreen rendering components. + Useful if you want to render on computer servers without graphics cards. + The `makeParaView.example` and `makeVTK.example` files provide some useful + suggestions about compiling such a configuration. + +`makeQt` +- Script to build a [third-party installation of Qt](#makeQt), including qmake. +- Possibly needed for `makeParaView`. + +`makeGperftools` +- Build gperftools (originally Google Performance Tools) + +`minCmake` +- Scour specified directories for CMakeLists.txt and their cmake_minimum. + Report in sorted order. + +`Allclean` +- After building, this script may be used to remove intermediate build information +and save some disk space. + + +## Build Notes + +### Scotch +- The zlib library and zlib development headers are required. + + +### 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-12 is not possible since it fails to create + the necessary `include/GL` directory and `osmesa.h` file. + +### VTK +- Needed for off-screen rendering and run-time post-processing without + ParaView. +- Rather than downloading VTK separately, it is easy to reuse the VTK + sources that are bundled with ParaView. + For example, by using a symbolic link: + + ln -s ParaView-5.2.0/VTK VTK-7.1.0 + + The appropriate VTK version number can be found from the contents of + the `vtkVersion.cmake` file. + For example, + + $ cat ParaView-5.2.0/VTK/CMake/vtkVersion.cmake + + # VTK version number components. + set(VTK_MAJOR_VERSION 7) + set(VTK_MINOR_VERSION 1) + set(VTK_BUILD_VERSION 0) + +### ParaView +- 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. + +### ParaView +- Both CMake and qmake are required when building ParaView. + +#### 5.2.0 +- Compiles without patching. + +#### 4.4.0/5.0.0/5.0.1/5.1.2 +- If using `makeParaView`, the following patches will be automatically + applied (see the `etc/patches` directory): + - Bugfix for STL reader - affects 4.4.0 only. + - Broken installation (ui_pqExportStateWizard.h) - affects 4.4.0/5.0.0/5.0.1/5.1.x + - Building with gcc-6.1.0 - affects 4.4.0/5.0.0/5.0.1 (patch applied for 5.0.1) + - The SciberQuestToolKit plugin fails to compile with gcc-6.1.0 and causes + the compilation of ParaView to halt. The easiest solution is to delete + the ParaView-5.0.1/Plugins/SciberQuestToolKit directory. + + +### Making Qt +- Building a third-party Qt installation (prior to building ParaView) requires + some additional effort, but should nonetheless work smoothly. + +1. Download a [*qt-everywhere-opensource-src*][link Qt] package and + unpack in the third-party directory. +2. Use the `makeQt` script with the QT version number. For example, + + ./makeQt 4.8.7 + +3. Build ParaView using this third-party QT. For example, + + ./makeParaView -qt-4.8.7 5.2.0 + +- ParaView does not yet 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 + central location), you will need to use the `etc/relocateQt` script + afterwards. + + +--- + +## Versions + +### Gcc Compiler + +The minimum version of gcc required is 4.8.0. + +| Name | Location | +|-------------------|--------------------------------------------| +| [gcc][page gcc] | [releases][link gcc] | +| [gmp][page gmp] | system is often ok, otherwise [download][link gmp] | +| [mpfr][page mpfr] | system is often ok, otherwise [download][link mpfr] | +| [mpc][page mpc] | system is often ok, otherwise [download][link mpc] | + + +#### Potential MPFR conflicts + +If you elect to use a third-party version of mpfr, you may experience +conflicts with your installed system mpfr. +On some systems, mpfr is compiled as *non-threaded*, whereas the +third-party will use *threaded* by default. +This can cause some confusion at the linker stage, since it may +resolve the system mpfr first (and find that it is *non-threaded*). + +You can avoid this by one of two means: +1. Use system components for gmp/mpfr/mpc: `makeGcc -system ...` +2. Use third-party mpfr, but without threading: `makeGcc -no-threadsafe ...` + + +#### 32-bit build (on 64-bit) + +If you have a 64-bit system, but wish to have a 32-bit compiler, you +will need to enable multi-lib support for Gcc: `makeGcc -multilib`, +which is normally disabled, since many (most?) 64-bit systems do not +install the 32-bit development libraries by default. + + +### Clang Compiler + +The minimum version of clang required is 3.3. + +*Attention*: If you are building a newer version of clang, you may need to +update your CMake beforehand. +GNU *configure* can only be used prior to clang version 3.9. + + +| Name | Location | +|-----------------------|------------------------| +| [clang][page clang] | [download][link clang] | +| [llvm][page llvm] | [download][link llvm] | + + +### Parallel Processing + +| Name | Location | +|-----------------------|------------------------| +| [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] | + + +### General + +| Name | Location | +|-----------------------|------------------------| +| [CMake][page cmake] | [download][link cmake] | +| [boost][page boost] | [download][link boost] | +| [CGAL][page CGAL] | [download][link CGAL] or [newer][newer CGAL] | +| [FFTW][page FFTW] | [download][link FFTW] | +| [ADF/CGNS][page CGNS], ccm | [link ccmio][link ccmio] | +| [tecio][page tecio] | [link tecio][link tecio] | +| gperftools | [repo][repo gperftools] or [download][link gperftools] | + + +### Visualization + +| Name | Location | +|-----------------------|------------------------| +| [MESA][page mesa] | [download][link mesa] or [older][older mesa] | +| [ParaView][page ParaView] | [download][link ParaView] or older [5.1][older ParaView-51], [5.0][older ParaView-50], [4.4][older ParaView-44] | +| [Qt][page Qt] | [repo][repo Qt] or [download][link Qt]. The newer [Qt5][newer Qt5] is **not** currently supported by ParaView. | + + +### CMake Minimum Requirements + +The minimum CMake requirements for building various components. + + 2.8 llvm-3.4.2 + 2.8.11 CGAL-4.9 + 2.8.12.2 llvm-3.8.0 + 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.5 ParaView-5.1.0 + + + +[page gcc]: http://gcc.gnu.org/releases.html +[page gmp]: http://gmplib.org/ +[page mpfr]: http://www.mpfr.org/ +[page mpc]: http://www.multiprecision.org/ + +[link gcc]: http://gcc.gnu.org/releases.html +[link gmp]: ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2 +[link mpfr]: ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.bz2 +[link mpc]: ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz + + + +[page clang]: http://llvm.org/ +[page llvm]: http://llvm.org/ + +[link clang]: http://llvm.org/releases/3.9.0/cfe-3.9.0.src.tar.xz +[link llvm]: http://llvm.org/releases/3.9.0/llvm-3.9.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 +[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 + + + +[page cmake]: http://www.cmake.org/ +[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 + +[page CGAL]: http://cgal.org +[link CGAL]: https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.8.2/CGAL-4.8.2.tar.xz +[newer CGAL]: https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.9/CGAL-4.9.tar.xz + +[page FFTW]: http://www.fftw.org/ +[link FFTW]: http://www.fftw.org/fftw-3.3.5.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) + +[page tecio]: http://www.tecplot.com/ +[link tecio]: http://www.tecplot.com/my/tecio-library/ (needs registration) + +[repo gperftools]: https://github.com/gperftools/gperftools +[link gperftools]: https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz + + + + +[page ParaView]: http://www.paraview.org/ +[link ParaView]: http://www.paraview.org/files/v5.2/ParaView-v5.2.0.tar.gz + +[older ParaView-44]: http://www.paraview.org/files/v4.4/ParaView-v4.4.0-source.tar.gz +[older ParaView-50]: http://www.paraview.org/files/v5.0/ParaView-v5.0.1-source.tar.gz +[older ParaView-51]: http://www.paraview.org/files/v5.1/ParaView-v5.1.2-source.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 + +[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 + + + +## Additional OpenFOAM Links + +- [Download and installation instructions](http://www.openfoam.com/releases) +- [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) +- [Contacting OpenCFD](http://www.openfoam.com/contact) + +--- + +Copyright 2016 OpenCFD Ltd diff --git a/README.md b/README.md index 8ee070b..41615cc 100644 --- a/README.md +++ b/README.md @@ -40,376 +40,38 @@ and its corresponding third-party installation. ## Before Starting -1. Decide on compiler type/version, - MPI type/version, - ParaView type/version, - CMake type/version, etc. - - If the system compiler is not relatively recent, you will need to use a - [third-party compiler installation](#makeGcc). -2. If you are using a system MPI (eg, openmpi), ensure that this environment - has also been properly activated for your user. - Often (but not always) a `mpi-selector` command is available for this purpose. - You may need to open a new shell afterwards for the change to take effect. - Using the following command may help diagnosing things: - - which mpicc - -3. Adjust the OpenFOAM `etc/bashrc`, `etc/config.sh/...` or equivalent +0. Review the [system requirements](http://www.openfoam.com/documentation/system-requirements.php) + and decide on the following: + * compiler type/version (you may need a third-party compiler installation). + * MPI type/version. + * ParaView type/version. + * CMake type/version, ... +1. Adjust the OpenFOAM `etc/bashrc`, `etc/config.sh/...` or equivalent `prefs.sh` files to reflect your preferred configuration. - For many config files, there are several configuration possibilities: - - Define a particular third-party version. - - Use a system installation. - - Disable use of an optional component. - - Define an alternative site-wide central location. - - After making the desired changes, use `wmRefresh` or equivalent to use the configurations. - +2. Source the updated OpenFOAM environment --- +## Building + +Many components of ThirdParty are *optional* or are invoked +automatically as part of the top-level OpenFOAM `Allwmake`. +Nonetheless it may be necessary or useful to build various +ThirdParty components prior to building OpenFOAM itself. + ## Build Sequence -1. `makeGcc` _or_ `makeLLVM` *(optional)* - - Makes a third-party [gcc](#gcc-compiler) or [clang](#clang-compiler) installation, - which is needed if the system gcc is [too old](#gcc-compiler). - If your system compiler is recent enough, you can skip this step. - - If you do use this option, you will need the following adjustments to the - OpenFOAM `etc/bashrc` or your equivalent `prefs.sh` file: - - `WM_COMPILER_TYPE=ThirdParty` - - `WM_COMPILER=Gcc48` (for example) - - or `WM_COMPILER=Clang` and adjust the `clang_version` entry in the OpenFOAM - `etc/config.sh/compiler` or equivalent. - - More description is contained in the header comments of the - `makeGcc` and `makeLLVM` files. - - *Attention*: If you are building a newer version of clang, you may need to - update your CMake beforehand. + +1. `makeGcc` _or_ `makeLLVM` *(optional)* 2. `makeCmake` *(optional)* - - Makes a third-party [CMake](#general-packages) installation, which is - needed if a system CMake does not exist or is [too old](#min-cmake), - - Note that CMake is being used by an number of third-party packages - (CGAL, LLVM, ParaView, VTK, ...) - so this may become an increasingly important aspect of the build. 3. `Allwmake` - - This will be automatically invoked by the top-level OpenFOAM `Allwmake`, but - can also be invoked directly to find possible build errors. - - Builds an mpi library (openmpi or mpich), scotch decomposition, boost, CGAL, FFTW. - - If the optional metis directory is found, it will also be compiled. + - This will be automatically invoked by the top-level OpenFOAM `Allwmake`. 4. `makeParaView` *(optional but highly recommended)* - - This is optional, but extremely useful for visualization and for - run-time post-processing function objects. - You can build this at a later point in time, but then you should - remember to rebuild the post-processing function objects and the - reader module as well. -5. Make any additional optional components +5. Any other additional optional components -### Optional Components +### Build Details -`makeADIOS` -- Only required for future ADIOS support - -`makeCGAL` -- Builds third-party boost and CGAL. - Automatically invoked from the ThirdParty `Allwmake`, - but can be invoked directly to resolve possible build errors. - -`makeFFTW` -- Builds third-party FFTW. - Automatically invoked from the ThirdParty `Allwmake`, - but can be invoked directly to resolve possible build errors. - -`makeCCMIO` -- Only required for conversion to/from STARCD/STARCCM+ files. - -`makeTecio` -- Only required for conversion of results to Tecplot format. - -`makeMesa`, `makeVTK` -- Additional support for building offscreen rendering components. - Useful if you want to render on computer servers without graphics cards. - The `makeParaView.example` and `makeVTK.example` files provide some useful - suggestions about compiling such a configuration. - -`makeQt` -- Script to build a [third-party installation of Qt](#makeQt), including qmake. -- Possibly needed for `makeParaView`. - -`makeGperftools` -- Build gperftools (originally Google Performance Tools) - -`minCmake` -- Scour specified directories for CMakeLists.txt and their cmake_minimum. - Report in sorted order. - -`Allclean` -- After building, this script may be used to remove intermediate build information -and save some disk space. - - -## Build Notes - -### 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. - -### Scotch -- The zlib library and zlib development headers are required. - - -### Mesa -- Needed for off-screen rendering. -- Building with mesa-12 fails to create an `include/GL` directory and - an `osmesa.h` file - making it fairly useless for off-screen VTK. -- Building with [mesa-11][older mesa] is fine and [mesa-13][linkg mesa] also seems to be okay. - - -### VTK -- Needed for off-screen rendering and run-time post-processing without - ParaView. -- Rather than downloading VTK separately, it is easy to reuse the VTK - sources that are bundled with ParaView. - For example, by using a symbolic link: - - ln -s ParaView-5.2.0/VTK VTK-7.1.0 - - The appropriate VTK version number can be found from the constents of - the `vtkVersion.cmake` file. - For example, - - $ cat ParaView-5.2.0/VTK/CMake/vtkVersion.cmake - - # VTK version number components. - set(VTK_MAJOR_VERSION 7) - set(VTK_MINOR_VERSION 1) - set(VTK_BUILD_VERSION 0) - -### ParaView -- 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. - -### ParaView -- Both CMake and qmake are required when building ParaView. - -#### 5.2.0 -- Compiles without patching. - -#### 4.4.0/5.0.0/5.0.1/5.1.2 -- If using `makeParaView`, the following patches will be automatically - applied (see the `etc/patches` directory): - - Bugfix for STL reader - affects 4.4.0 only. - - Broken installation (ui_pqExportStateWizard.h) - affects 4.4.0/5.0.0/5.0.1/5.1.x - - Building with gcc-6.1.0 - affects 4.4.0/5.0.0/5.0.1 (patch applied for 5.0.1) - - The SciberQuestToolKit plugin fails to compile with gcc-6.1.0 and causes - the compilation of ParaView to halt. The easiest solution is to delete - the ParaView-5.0.1/Plugins/SciberQuestToolKit directory. - - -### Making Qt -- Building a third-party Qt installation (prior to building ParaView) requires - some additional effort, but should nonetheless work smoothly. - -1. Download a [*qt-everywhere-opensource-src*][link Qt] package and - unpack in the third-party directory. -2. Use the `makeQt` script with the QT version number. For example, - - ./makeQt 4.8.7 - -3. Build ParaView using this third-party QT. For example, - - ./makeParaView -qt-4.8.7 5.2.0 - -- ParaView does not yet 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 - central location), you will need to use the `etc/relocateQt` script - afterwards. - - ---- - -## Versions - -### Gcc Compiler - -The minimum version of gcc required is 4.8.0. - -| Name | Location | -|-------------------|--------------------------------------------| -| [gcc][page gcc] | [releases][link gcc] | -| [gmp][page gmp] | system is often ok, otherwise [download][link gmp] | -| [mpfr][page mpfr] | system is often ok, otherwise [download][link mpfr] | -| [mpc][page mpc] | system is often ok, otherwise [download][link mpc] | - - -#### Potential MPFR conflicts - -If you elect to use a third-party version of mpfr, you may experience -conflicts with your installed system mpfr. -On some systems, mpfr is compiled as *non-threaded*, whereas the -third-party will use *threaded* by default. -This can cause some confusion at the linker stage, since it may -resolve the system mpfr first (and find that it is *non-threaded*). - -You can avoid this by one of two means: -1. Use system components for gmp/mpfr/mpc: `makeGcc -system ...` -2. Use third-party mpfr, but without threading: `makeGcc -no-threadsafe ...` - - -#### 32-bit build (on 64-bit) - -If you have a 64-bit system, but wish to have a 32-bit compiler, you -will need to enable multi-lib support for Gcc: `makeGcc -multilib`, -which is normally disabled, since many (most?) 64-bit systems do not -install the 32-bit development libraries by default. - - -### Clang Compiler - -The minimum version of clang required is 3.3. - -*Attention*: If you are building a newer version of clang, you may need to -update your CMake beforehand. -GNU *configure* can only be used prior to clang version 3.9. - - -| Name | Location | -|-----------------------|------------------------| -| [clang][page clang] | [download][link clang] | -| [llvm][page llvm] | [download][link llvm] | - - -### Parallel Processing - -| Name | Location | -|-----------------------|------------------------| -| [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] | - - -### General - -| Name | Location | -|-----------------------|------------------------| -| [CMake][page cmake] | [download][link cmake] | -| [boost][page boost] | [download][link boost] | -| [CGAL][page CGAL] | [download][link CGAL] or [newer][newer CGAL] | -| [FFTW][page FFTW] | [download][link FFTW] | -| [ADF/CGNS][page CGNS], ccm | [link ccmio][link ccmio] | -| [tecio][page tecio] | [link tecio][link tecio] | -| gperftools | [repo][repo gperftools] or [download][link gperftools] | - - -### Visualization - -| Name | Location | -|-----------------------|------------------------| -| [MESA][page mesa] | [download][link mesa] or [older][older mesa] | -| [ParaView][page ParaView] | [download][link ParaView] or older [5.1][older ParaView-51], [5.0][older ParaView-50], [4.4][older ParaView-44] | -| [Qt][page Qt] | [repo][repo Qt] or [download][link Qt]. The newer [Qt5][newer Qt5] is **not** currently supported by ParaView. | - - -### CMake Minimum Requirements - -The minimum CMake requirements for building various components. - - 2.8 ADIOS-1.10.0 - 2.8 llvm-3.4.2 - 2.8 metis-5.1.0 - 2.8.11 CGAL-4.9 - 2.8.12.2 llvm-3.8.0 - 2.8.4 cmake-3.6.0 - 3.3 ParaView-5.1.2 - 3.3 ParaView-v5.2.0 - 3.4.3 llvm-3.9.0.src - 3.5 ParaView-5.1.0 - - - -[page gcc]: http://gcc.gnu.org/releases.html -[page gmp]: http://gmplib.org/ -[page mpfr]: http://www.mpfr.org/ -[page mpc]: http://www.multiprecision.org/ - -[link gcc]: http://gcc.gnu.org/releases.html -[link gmp]: ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2 -[link mpfr]: ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.bz2 -[link mpc]: ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz - - - -[page clang]: http://llvm.org/ -[page llvm]: http://llvm.org/ - -[link clang]: http://llvm.org/releases/3.9.0/cfe-3.9.0.src.tar.xz -[link llvm]: http://llvm.org/releases/3.9.0/llvm-3.9.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 -[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 - - - -[page cmake]: http://www.cmake.org/ -[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 - -[page CGAL]: http://cgal.org -[link CGAL]: https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.8.2/CGAL-4.8.2.tar.xz -[newer CGAL]: https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.9/CGAL-4.9.tar.xz - -[page FFTW]: http://www.fftw.org/ -[link FFTW]: http://www.fftw.org/fftw-3.3.5.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) - -[page tecio]: http://www.tecplot.com/ -[link tecio]: http://www.tecplot.com/my/tecio-library/ (needs registration) - -[repo gperftools]: https://github.com/gperftools/gperftools -[link gperftools]: https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz - - - - -[page ParaView]: http://www.paraview.org/ -[link ParaView]: http://www.paraview.org/files/v5.2/ParaView-v5.2.0.tar.gz - -[page ParaView]: http://www.paraview.org/ -[link ParaView]: http://www.paraview.org/files/v5.2/ParaView-v5.2.0.tar.gz - -[older ParaView-44]: http://www.paraview.org/files/v4.4/ParaView-v4.4.0-source.tar.gz -[older ParaView-50]: http://www.paraview.org/files/v5.0/ParaView-v5.0.1-source.tar.gz -[older ParaView-51]: http://www.paraview.org/files/v5.1/ParaView-v5.1.2-source.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 - -[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 +More details can be found the ThirdParty ./BUILD.md information.