98 Commits
v1606 ... v1712

Author SHA1 Message Date
ea9c2471a8 Merge branch 'develop' into 'master'
Final content for 1712 release

Closes #20 and #18

See merge request Development/ThirdParty-plus!5
2018-01-03 11:32:29 +00:00
03075ef079 STYLE: update some build comments regarding min gcc for clang 2017-12-19 10:21:07 +01:00
6485db81a9 COMP: use 'cc' instead of 'mpicc' on Cray (issue #28)
- the cray 'cc' handles mpi paths, there is no mpicc
2017-12-17 12:19:55 +01:00
5fcd29aa99 STYLE: remove patches and support for older paraview and adios 2017-12-15 14:39:35 +01:00
816173b7c4 CONFIG: update versions
ENH: add support of additional configure options to some make scripts

- remove hard-coded --verbs from makeOPENMPI in favour of letting the
  user provide it via the command-line for makeOPENMPI.

  eg,  makeOPENMPI openmpi-1.10.6 -- --with-verbs=DIRECTORY ...
2017-12-15 11:21:31 +01:00
491b3390bb ENH: add build scripts for KaHIP and METIS 2017-10-11 12:28:04 +02:00
6f32862d26 ENH: add -memcheck config option for makeOPENMPI 2017-10-09 17:26:40 +02:00
bc7fb08810 STYLE: relocated etc/wmakeFiles as makeFiles 2017-09-29 17:13:20 +02:00
0c7fa1cc7c COMP: have scotch use deterministic behaviour (closes #20) 2017-09-29 13:35:50 +02:00
5112b60e58 Merge remote-tracking branch 'origin/master' into develop 2017-09-28 14:03:08 +02:00
bdfdff11c8 COMP: incorrect verbs library directory used (closes #21) 2017-09-28 14:02:05 +02:00
51435f2e56 COMP: change ordering of statements to prevent premature termination after make
COMP: VTK- prefix not being trimmed from the name
2017-09-28 13:20:45 +02:00
c0de94d846 STYLE: drop -thread/-no-thread option for makeOPENMPI
- made redundant by 19f241f. Multiple threads are needed by the
  collated format and are now always enabled.
2017-09-12 09:58:27 +02:00
19f241fae2 ENH: Updated makeOPENMPI script to support new collocated IO 2017-09-07 14:38:19 +01:00
0f9fe6b863 COMP: paraview mpi config not being passed to vtk backend? 2017-08-03 09:42:33 +02:00
7f4a904b90 COMP: no explicit handling of mpi-profiling for openmpi (fixes #18)
- previously explicitly disabled mpi-profiling, but now let openmpi
  configure it itself.

- add config support for mpi-threads
2017-08-03 09:39:33 +02:00
ec80e1df97 COMP: improve consistency for Intel-MPI and non-icc compilers (issue #524) 2017-07-12 11:33:26 +02:00
092d71c3df COMP: improve support for non-system python locations (issue #17) 2017-07-04 00:11:29 +02:00
54356f8f87 Merge branch 'develop' into 'master'
Merge develop into master for v1706 release

Closes #16 and #15

See merge request !4
2017-06-30 10:05:21 +01:00
4a6ab3779f COMP: handle mesa library in lib64 or lib (fixes #16)
- only addresses -mesa-prefix behaviour.
  The -mesa-lib option makes no assumptions at all.

STYLE: update versions in makeParaView.example, makeVTK.example
2017-06-29 10:49:45 +02:00
458d9dadbf CONFIG: revert to openmpi-1.10.4
- this is the same version as OpenFOAM-1612 shipped with and seems to
  have fewer issues than the newer openmpi-2.1.1
2017-06-28 13:55:26 +02:00
aac32ece63 STYLE: update build notes for paraview 2017-06-22 17:53:24 +01:00
62c8476a4e COMP: Updated link to current openmpi 2.1.1 2017-06-21 20:38:48 +01:00
4a0f78084b CONFIG: update links for paraview, qt 2017-06-14 15:25:24 +02:00
986d9120fd CONFIG: update links for boost, CGAL 2017-05-29 17:16:59 +02:00
43cffa29db COMP: update compilation for mesa-17.1.1 2017-05-29 10:53:11 +02:00
ce4c19c717 COMP: adjust to use non-gcc compilers for scotch and ptscotch 2017-04-24 09:49:29 +02:00
c291d5742d CONFIG: update version information for llvm 2017-04-24 09:49:16 +02:00
d2da5b440e ENH: provide make script for MGridGen
- follow the standard *_ARCH_PATH style
2017-04-18 18:37:16 +02:00
59be96faed ENH: remove reliance on OpenFOAM etc/config.sh/functions file.
- similar functionality in etc/tools/ThirdPartyFunctions to improve
  the independence of ThirdParty while reducing clutter in the callers.

- add useGcc function for convenience
- mask seeing our own git-repo when building

STYLE: various items

- eliminate old user-editable configuration in files - now command-line only.
- use *_BUILD_DIR instead of *_BINARY_DIR for more clarity of the purpose
- drop use of '-q' option for wmakeCheckPwd (already has stderr redirect)
- drop checkVersion for makeParaView since it stopped working properly
  with newer paraview version

CONFIG: update list of versions
2017-03-20 12:42:44 +01:00
5d592841fd COMP: update makeMPICH for mpich-3.2
- not necessarily supported by OpenFOAM, but at least the build script
  works again, and the build is now out-of-source.
2017-03-14 15:12:57 +01:00
493d4b01ac ENH: provide -link option for makeCmake
- this creates a cmake-system link to the given cmake version, which
  is a simple means of providing an updated cmake version for the
  OpenFOAM build without actually needing to edit the
  etc/config.sh/paraview file
2017-02-01 17:48:59 +00:00
1189ff23c9 BUG: pkgconfigPrefix calling the incorrect backend
ENH: avoid editing pkgconfig symlinks
2017-02-01 09:49:05 +00:00
5c09a6433f COMP: avoid building CGAL ImageIO lib (fixes #15)
- OpenFOAM doesn't use any of the CGAL image library and the ImageIO
  library adds in an unnecessary OpenGL dependency (reported to fail
  on kubuntu-14.04)

STYLE: adjust documented link to main (non-svn) VisIt project directory
2017-01-25 08:16:14 +01:00
9f6a77a1ab ENH: introduce a separate makeOPENMPI
- makes is easier to quickly build different versions and reduces
  clutter in Allwmake.

- provide some quick '-test' options for makeCGAL, makeFFTW etc
  to reduce duplication of logic in Allwmake.
2017-01-20 16:02:25 +01:00
59432b7b2d ENH: use pkgconfigAdjust when compiling software that has pkgconfig files
- simplifies relocation at a later stage
2017-01-20 14:55:18 +01:00
82595ca823 ENH: provide etc/pkgconfigAdjust etc/pkgconfigPrefix wrappers
- both can operate on several directories, which means that the
  following is possible when relocating an entire third-party
  directory:

     etc/pkgconfigPrefix $(find platforms -type d -name pkgconfig)
2017-01-20 13:32:31 +01:00
d55ae084d4 ENH: generalize and improve pkgconfig editing
- now handles both lib/pkgconfig and lib64/pkgconfig locations
- also adjust includedir= and libdir= entries
2017-01-20 13:32:31 +01:00
e3190722e5 STYLE: add build information for ADIOS 2017-01-20 09:23:22 +01:00
1622a46832 STYLE: clearly document which scripts contain user-configurable settings
- unify cd, check for the cwd and error message
2017-01-20 09:00:51 +01:00
9926569ca1 ENH: add -suffix option for makeParaView and makeVTK
- simple means of distinguishing between types of builds
  (mesa, mpi, python).
2017-01-19 18:30:20 +01:00
fc3ea2f182 ENH: add pkgconf editing into ThirdPartyFunctions
- allows reuse for other packages using pkgconf
2017-01-19 18:30:20 +01:00
907e04f35c COMP: adjust makeParaView for build with mesa 2017-01-19 18:30:20 +01:00
ae464766e6 COMP: patch paraview 5.0.1 for building with osmesa
- reference: https://gitlab.kitware.com/vtk/vtk/merge_requests/1642
2017-01-19 18:30:19 +01:00
45caecb85b COMP: ensure GLES(1) includes are not installed with mesa 2017-01-19 18:30:19 +01:00
705556c3eb ENH: support building of paraview with Qt5
- this is the upcoming default Qt version
2017-01-19 18:30:19 +01:00
122ee3386e COMP: remove ccm fortran bindings as being unnecessary 2017-01-11 10:42:55 +01:00
2461877bf5 BUG: inconsistency in fftw make (closes #14)
- fftw uses the double-precision interface only and thus
  makeFFTW should not have any special single-precision treatment.

- Bug is not apparent if the fftw was previously build with
  double-precision.
2017-01-09 11:23:24 +01:00
0f47e1bc1a Merge branch 'develop' into 'master'
Last-minute fix for typos

See merge request !3
2016-12-23 10:13:32 +00:00
063c34f11f BUG: CC not being properly exported in some make scripts (fixes #12) 2016-12-23 11:08:49 +01:00
4b5eff03fc Merge branch 'develop' into 'master'
Update master prior to v1612 release

See merge request !2
2016-12-20 16:53:45 +00:00
09428646a0 COMP: provide patch for ADIOS 1.11.0, when reading available transformations 2016-12-14 15:30:40 +01:00
c838cae680 CONFIG: adjust clang/llvm link to 3.7.0
- corresponds to the system clang for opensuse leap 42.1, which has
  been used extensively during the development process.
2016-12-14 10:14:26 +01:00
391a6b24ca CONFIG: update patches for paraview 5.0.1, 5.1.0, 5.1.2
- also avoid issues with '+' being treated as a list separator
  (already patched in 5.2)

--
STYLE: reformat version check output (in makeParaView)
2016-12-14 10:14:25 +01:00
4a71fbb426 ENH: retain backup copies when patching files
- allows the user to inspect what has been patched.
- also use fuzzy patching (ignore whitespace) for a bit more robustness
2016-12-13 17:23:22 +01:00
852e88b495 STYLE: align makeParaView with other make scripts
- obtain version by sourcing the coresponding OpenFOAM config file

STYLE: update build documents
2016-11-29 13:01:48 +01:00
fb4a0ee7cd ENH: ensure adios_config information reflects installation and is moveable 2016-11-28 11:27:09 +01:00
74b42821eb STYLE: minor adjustment for documentation
- remove extra scotch readme, already mentioned in regular
  BUILD/README files

- additional sources.txt to note which versions have been shipped.
2016-11-27 18:50:27 +01:00
318e249542 STYLE: reference the location of sources via the sourceBASE variable
- in the future it may be useful to locate all the sources under a
  sub-directory instead
2016-11-27 18:47:06 +01:00
cc2161856b ENH: improve third-party make with central installations
- initial attempt for building CGAL as headers-only, and without
  gmp/mpfr
2016-11-27 16:00:43 +01:00
0f5e1d6732 ENH: initial support for building ParaView with QT5
- still issues with the required version
  eg, system has qt-5.5, but ParaView tries to use qt-5.6
2016-11-23 16:01:55 +01:00
ed0c63889e Merge branch 'master' into develop 2016-11-23 13:30:05 +01:00
a76e575503 STYLE: split up detailed information into a BUILD.md
- this makes the README.md easier to read at a glance
2016-11-23 13:14:57 +01:00
8400503c5f STYLE: report path of cmake,qmake being used
- makes it easier to diagnose problems
2016-11-23 13:14:57 +01:00
a7a5eab921 ENH: provide more detailed description as README.md file (issue #11)
- include comments about building Qt etc.
2016-11-22 01:56:21 +01:00
8688694af0 COMP: Ensure makeQt work (issue #11) 2016-11-22 01:55:46 +01:00
e5f3d03715 ENH: provide more detailed description as README.md file (issue #11)
- include comments about building Qt etc.
2016-11-22 01:51:32 +01:00
9c1fb023c7 COMP: Ensure makeQt work (issue #11) 2016-11-21 23:29:30 +01:00
ba2c04d454 ENH: also support compilation of ParaView-vX.Y.Z source directories (issue #10)
- The ParaView sources mostly unpack into ParaView-v5.2.0, so support
  this directly without forcing people to rename the directory first.
2016-11-21 23:29:10 +01:00
d23b9bf968 CONFIG: use metis 'native' size for float/double
- this follows the change to metisDecomp
2016-11-13 20:26:43 +01:00
223718a8f2 COMP: ensure min compiler versions are properly noted.
- update makeLLVM to build latest clang (3.9.0), which needs cmake.
2016-11-11 19:20:27 +01:00
e2534597e0 COMP: Ensure makeParaView works for current and upcoming paraview (issue #10)
- minor patching is still required for 5.1.2 (July 2016 release).

- no patching is currently needed for 5.2.0-RC4.
  We have supplied the necessary patches upstream.

    - https://gitlab.kitware.com/paraview/paraview/merge_requests/1022
    - https://gitlab.kitware.com/paraview/paraview/merge_requests/1024
2016-11-11 18:56:30 +01:00
ecab02b5aa DEFEATURE: remove make scripts for paraview 3.x (issue #9)
- With paraview 3.14 (Feb 2012) and paraview 3.98 (Dec 2012)
  experience unresolvable build issues. Can no longer compile.
2016-11-11 13:16:07 +01:00
06b4a31573 ENH: provide makeTecio for newest tecplot library
- installs headers and static library into

  ThirdParty/platforms/$WM_ARCH$WM_COMPILER/tecio
2016-11-11 09:56:31 +01:00
0e474dcd51 STYLE: adjust comment to reflect change to wmRefresh 2016-11-10 16:26:26 +01:00
363691ff97 STYLE: inconsistency in scotch, metis library locations
- avoid leaving any duplicate run-time libraries about that are
  not part of the LD_LIBRARY_PATH.

- incorrect ADIOS library path reported
2016-11-04 21:24:45 +01:00
6b8eecffbd BUG: missing check for boost, CGAL lib64/ in Allwmake
- Non-critical since makeCGAL still caught things anyhow.

- Also report the correct locations.
2016-11-04 21:05:43 +01:00
cb7d48b428 DOC: update notes for makeMesa
- building with 12.x still seems not to work
2016-11-04 14:41:06 +01:00
1e75ef584d ENH: update building of ADIOS
- ADIOS source packages now include mxml, which means that it doesn't
  need to be built separately.

- Use OpenFOAM config.sh/ADIOS (if it exists), or explicitly define
  the version to compile. Eg, ./makeADIOS ADIOS-1.10.0
2016-11-04 11:41:12 +01:00
7623d184cd CONFIG: build boost, CGAL into lib64/ (issue #8)
- On 64-bit systems, the library locations for boost, CGAL are changing.

* Boost 1_62_0 and older build into 'lib/'.
* CGAL-4.9 builds into 'lib64/', older versions into 'lib/'.

Future-proof things by using lib$WM_COMPILER_LIB_ARCH for boost and
CGAL targets.
2016-11-04 11:29:47 +01:00
1fd3d5ab4f ENH: make compiler reference general in examples 2016-11-04 11:12:04 +01:00
da8f0c6452 Merge branch 'update-master' into 'master'
Update master

Update master to include stable development changes and bugfixes.

See merge request !1
2016-11-04 09:49:58 +00:00
5bfb563dcc ERRATA: add missing vtkFunctions file
- should have been in commit cd07d9f6bc
2016-11-04 08:31:51 +01:00
26dc62a51f MISC: update README to foundation information 2016-11-03 16:16:49 +01:00
d07150e20e BUG: Allclean removes platforms/ instead of build/ (closes #7)
- Now only cleans the build/ directory.

- Add -all, -current options etc for also removing platforms,
  if wishing a complete clean.
2016-10-14 17:52:56 +02:00
105e8a0d50 BUG: need -lrt when linking scotch on some systems (issue #6) 2016-10-07 11:00:33 +02:00
375de7066d COMP: simplify scotch makefiles
As per patch provided by Bruno Santos @wyldckat to support Raspbian.
http://bugs.openfoam.org/view.php?id=2051

STYLE: drop unneeded linkage against old POSIX librt.so
2016-09-14 10:12:03 +02:00
85180484c3 CONFIG: update cmake variables for paraview with python (issue #5)
- replace PYTHON_INCLUDE_PATH with PYTHON_INCLUDE_DIRS
  (changed in paraview 2014-10-30)

- add check for Python.h for earlier failure.
  Eg, when development headers are missing on the system.
2016-09-14 10:11:03 +02:00
f8e0b17acb ENH: provide makeParaView.example (mpi + mesa)
- an example of compiling for pvserver

- make upper-limit on MPI processes command-line configurable for
  makeParaView and add MPI support into makeVTK
2016-09-08 11:28:33 +02:00
8f68d51717 CONFIG: change default library target for ccm to be static
- Makes it easier to locate for compiling/linking and lets us
  wrap away in a C++ interface to hide low-level C routines.
2016-08-09 09:54:11 +02:00
a5ab962792 STYLE: allow argument passing in makeVTK.example 2016-08-04 16:02:09 +02:00
2453d95ef7 ENH: provide makeADIOS script 2016-08-01 11:26:49 +02:00
cd07d9f6bc ENH: provide makeMesa and makeVTK scripts 2016-08-01 10:45:10 +02:00
5dd6900492 ENH: relocate common functions into ThirdPartyFunctions
- Qualify some paraview-specific functions with 'ParaView' in the name.
  This helps with code-reuse.

STYLE: use lib$WM_COMPILER_LIB_ARCH instead of explicit lib64
2016-07-27 20:14:18 +02:00
5de10e0e5a ENH: improve flexibility of makeGcc for non-gcc builds
- ThirdParty GMP/MPFR may be needed when making CGAL, but previously
  no convenient means of compiling them without also compiling a
  ThirdParty GCC.

  Now support the combination of building GMP or MPFR, without needing
  to build GCC as well. This could benefit people using clang.

- add a '-no-theadsafe' option when building MPFR via the makeGcc
  script. This may help avoid conflicts with existing, older,
  non-thread-safe system MPFR libraries.
2016-07-27 17:38:34 +02:00
b36e02052b CONFIG: enable shared libraries when building clang 2016-07-27 17:02:28 +02:00
c20c2c2509 CONFIG: update paraview patch for paraview-5.1.0
ENH: include ThirdParty platforms when searching for cmake
2016-07-14 09:44:29 +02:00
f3ef77b946 ENH: remove reliance on ParaView_VERSION env variable
- as per the other build scripts, use the OpenFOAM config
  files for the base settings and command-line arguments
  for refinement.

  Note that the $ParaView_DIR (the installation path) contains
  the paraview version information. So there is no need to
  keep a second variable just for that purpose.
2016-07-13 09:42:00 +02:00
50 changed files with 5127 additions and 2670 deletions

171
Allclean
View File

@ -4,59 +4,152 @@
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
# \\/ M anipulation |
# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# AllClean
# Allclean
#
# Description
# Clean script for third-party applications and libraries
# Clean script for ThirdParty applications/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
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
Usage: ${0##*/} [OPTION] [<platform> [ ... <platformN> ]]
options:
-all remove all platforms directories.
-current clean the current platform ($WM_OPTIONS).
-help print the usage
Cleanup intermediate build directories.
Optionally remove specified platform(s) from the ThirdParty platforms
directory $WM_THIRD_PARTY_DIR/platforms
# clean various packages via 'distclean'
for i in openmpi-*
do
[ -d "$i" ] && ( set -x; cd $i && make distclean )
done
# clean various packages via 'realclean'
for i in scotch*/src
do
[ -d "$i" ] && ( set -x; cd $i && make realclean )
done
# clean out-of-source build directories
[ -d platforms ] && ( set -x; rm -rf platforms/* )
USAGE
exit 1
}
# Print help message
if [ "$1" = "-h" -o "$1" = "-help" ]
then
usage
fi
#------------------------------------------------------------------------------
# Clean various packages via 'distclean'
for i in \
openmpi-* metis-* adios-* ADIOS-* gperftools-* qt-* \
gmp-* mpfr-* mpc-* gcc-* llvm-* \
;
do
[ -d "$i" ] && (
echo
echo "${i%/*}"
echo " make distclean"
echo
cd $i && make distclean
)
done
# Clean various packages via 'realclean'
for i in scotch*/src
do
[ -d "$i" ] && (
echo
echo "${i%/*}"
echo " make realclean"
echo
cd $i && make realclean
)
done
# Clean various packages via 'wclean'
for i in libccmio*/Make kahip*/lib/Make
do
[ -d "$i" ] && (
echo
echo "${i%/Make}"
echo " wclean"
echo
cd ${i%/Make} && wclean
)
done
# Clean out-of-source build directories
if [ -d build ]
then
echo
echo "Clean build/ directory"
rm -rf build/*
fi
# -----------------------------------------------------------------------------
#
# Clean platforms directories
#
removePlatform()
{
local platform="$1"
if [ -n "$platform" -a -d "platforms/$platform" ]
then
echo
echo "Cleaning platform '$platform'"
\rm -rf "platforms/$platform"
else
echo
echo "Platform '$platform' not built"
fi
}
if [ "$#" -ge 1 ]
then
echo
echo "Clean platforms/sub-directories"
fi
# Optionally cleanup platforms specified from the arguments
while [ "$#" -ge 1 ]
do
case "$1" in
-all)
echo
echo "Removing all platforms/sub-directories"
echo
\rm -rf platforms/*
break
;;
-current)
echo "Current platform '$WM_OPTIONS'"
removePlatform "$WM_OPTIONS"
;;
*)
removePlatform "$1"
;;
esac
shift
done
#------------------------------------------------------------------------------

625
Allwmake
View File

@ -4,378 +4,42 @@
# \\ / 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.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# Allwmake
#
# Description
# Build script for ThirdParty
# Build script for ThirdParty applications/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
}
[ -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"
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=$WM_THIRD_PARTY_DIR/$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
;;
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:
# ---------------------------------
set -x
cd $MPI_HOME || exit 1 # change to mpich-VERSION
[ -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
# get SCOTCH_VERSION, SCOTCH_ARCH_PATH
if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/scotch)
then
. $settings
else
echo
echo "Error: no config.sh/scotch settings"
echo
fi
echo
echo ========================================
echo "Build Scotch decomposition library $SCOTCH_VERSION"
echo " $SCOTCH_ARCH_PATH"
# this needs generalizing
scotchMakefile=../../etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM-$WM_ARCH_OPTION$WM_LABEL_OPTION
if [ -f $SCOTCH_ARCH_PATH/include/scotch.h \
-a -r $FOAM_EXT_LIBBIN/libscotch.so \
-a -r $FOAM_EXT_LIBBIN/libscotcherrexit.so ]
then
echo " scotch header in $SCOTCH_ARCH_PATH/include"
echo " scotch libs in $FOAM_EXT_LIBBIN"
elif [ -d "$SCOTCH_VERSION" ]
then
(
cd $SCOTCH_VERSION/src || exit 1
applyPatch $SCOTCH_VERSION .. # patch at parent-level
prefixDIR=$SCOTCH_ARCH_PATH
libDIR=$FOAM_EXT_LIBBIN
mkdir -p $prefixDIR 2>/dev/null
mkdir -p $libDIR 2>/dev/null
configOpt="prefix=$prefixDIR libdir=$libDIR"
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"
make realclean 2>/dev/null # for safety
make -j $WM_NCOMPPROCS $configEnv scotch \
&& make $configOpt install
# cleanup, could also remove Makefile.inc
make realclean 2>/dev/null
)
else
echo " Optional component (SCOTCH) was not found"
fi
# build ptscotch if MPI (ThirdParty or system) is available
# and there is a scotch include available (ie, normal scotch was built)
if [ "${FOAM_MPI:-dummy}" != dummy ] && \
[ -f $SCOTCH_ARCH_PATH/include/scotch.h ] || \
{
echo
echo " WARNING: skipping pt-scotch - 'scotch.h' include file not found!"
false
}
then
echo
echo ========================================
echo "Build pt-scotch decomposition library $SCOTCH_VERSION (with $FOAM_MPI)"
echo " $SCOTCH_ARCH_PATH"
if [ -f $SCOTCH_ARCH_PATH/include/$FOAM_MPI/ptscotch.h \
-a -r $FOAM_EXT_LIBBIN/$FOAM_MPI/libptscotch.so \
-a -r $FOAM_EXT_LIBBIN/$FOAM_MPI/libptscotcherrexit.so ]
then
echo " ptscotch header in $SCOTCH_ARCH_PATH/include/$FOAM_MPI"
echo " ptscotch libs in $FOAM_EXT_LIBBIN/$FOAM_MPI"
else
(
echo
set -x
cd $SCOTCH_VERSION/src || exit 1
prefixDIR=$SCOTCH_ARCH_PATH
libDIR=$FOAM_EXT_LIBBIN/$FOAM_MPI
incDIR=$SCOTCH_ARCH_PATH/include/$FOAM_MPI
mkdir -p $prefixDIR 2>/dev/null
mkdir -p $libDIR 2>/dev/null
configOpt="prefix=$prefixDIR libdir=$libDIR includedir=$incDIR"
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"
make realclean 2>/dev/null # for safety
make -j $WM_NCOMPPROCS $configEnv ptscotch \
&& make $configOpt install
# cleanup, could also remove Makefile.inc
make realclean 2>/dev/null
)
fi
# verify existence of scotch include
[ -f $SCOTCH_ARCH_PATH/include/$FOAM_MPI/ptscotch.h ] || {
echo
echo " WARNING: required include file 'ptscotch.h' not found!"
}
fi
#------------------------------------------------------------------------------
# Metis is optional
echo
echo ========================================
echo Build Metis decomposition
# get METIS_VERSION, METIS_ARCH_PATH
if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/metis)
then
. $settings
fi
if [ -d "$METIS_VERSION" ]
then
if [ -f $METIS_ARCH_PATH/include/metis.h \
-a -r $FOAM_EXT_LIBBIN/libmetis.so ]
then
echo " metis header in $METIS_ARCH_PATH/include"
echo " metis libs in $FOAM_EXT_LIBBIN"
echo
else
(
set -x
cd $METIS_VERSION || exit 1
if [ "$WM_PRECISION_OPTION" = "DP" ]
then
FLOAT_PRECISION=64
elif [ "$WM_PRECISION_OPTION" = "SP" ]
then
FLOAT_PRECISION=32
else
echo " Metis pre-configure error:"
echo " WM_PRECISION_OPTION is neither DP nor SP"
exit 1
fi
# Change user settings automatically
sed -i -e 's=\(#define IDXTYPEWIDTH\).*=\1 '$WM_LABEL_SIZE'=' \
-e 's=\(#define REALTYPEWIDTH\).*=\1 '$FLOAT_PRECISION'=' \
include/metis.h
make config shared=1 prefix=$METIS_ARCH_PATH
make -j $WM_NCOMPPROCS install
cp $METIS_ARCH_PATH/lib/libmetis.so $FOAM_EXT_LIBBIN
)
fi
else
echo " Optional component (METIS) was not found"
fi
#------------------------------------------------------------------------------
useGccFlag $@ # Scan arguments for a '-gcc' option
warnBuildIssues()
{
@ -389,58 +53,235 @@ warnBuildIssues()
warnNotFound()
{
echo " Optional component ($1) was not found"
echo
echo "Optional component ($1) was not found"
}
#------------------------------------------------------------------------------
# CGAL is optional
echo
echo ========================================
echo Build CGAL
if [ -d "$CGAL_ARCH_PATH/include" \
-a -r "$CGAL_ARCH_PATH/lib/libCGAL.so" ]
then
# first some information about boost
if [ -d "$BOOST_ARCH_PATH/include/boost" \
-a -r "$BOOST_ARCH_PATH/lib/libboost_system.so" ]
then
echo " BOOST headers in $BOOST_ARCH_PATH/include"
echo " BOOST libs in $BOOST_ARCH_PATH/lib"
elif [ -d "/usr/include/boost" \
-a -r "/usr/lib${WM_COMPILER_LIB_ARCH}/libboost_system.so" ]
then
echo " BOOST headers in /usr/include"
echo " BOOST libs in /usr/lib${WM_COMPILER_LIB_ARCH}"
fi
echo " CGAL headers in $CGAL_ARCH_PATH/include"
echo " CGAL libs in $CGAL_ARCH_PATH/lib"
elif [ -n "$CGAL_ARCH_PATH" ]
then
./makeCGAL || warnBuildIssues CGAL
else
warnNotFound CGAL
fi
# FFTW is optional
echo Start ThirdParty Allwmake
echo ========================================
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" ]
then
./makeFFTW || warnBuildIssues FFTW
else
warnNotFound FFTW
fi
echo Build MPI libraries if required
echo " $MPI_ARCH_PATH"
case "$WM_MPLIB" in
(OPENMPI | MPICH)
./make$WM_MPLIB -test "$MPI_ARCH_PATH" || ./make$WM_MPLIB
;;
esac
#------------------------------------------------------------------------------
# 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)
then
. $settings
else
echo
echo "Error: no config.sh/scotch settings"
echo
fi
echo
echo ========================================
echo "Scotch decomposition ($SCOTCH_VERSION)"
echo " $SCOTCH_ARCH_PATH"
SCOTCH_SOURCE_DIR=$sourceBASE/$SCOTCH_VERSION
# Needs generalizing, but works fairly well
scotchMakefile=../../etc/makeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM
if [ -f $SCOTCH_ARCH_PATH/include/scotch.h \
-a -r $FOAM_EXT_LIBBIN/libscotch.so \
-a -r $FOAM_EXT_LIBBIN/libscotcherrexit.so ]
then
echo " scotch include: $SCOTCH_ARCH_PATH/include"
echo " scotch library: $FOAM_EXT_LIBBIN"
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 $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
}
export CCS="${CC:-$WM_CC}" # CCS (serial compiler) default=$(CC)
export CCP=$(whichMpicc) # CCP (parallel compiler) default=mpicc
# Consistency for Intel-MPI and non-icc compilers
[ -n "$I_MPI_CC" ] || export I_MPI_CC="${CC:-$WM_CC}"
make realclean 2>/dev/null # Extra safety
make -j $WM_NCOMPPROCS scotch \
&& make \
prefix=$prefixDIR \
includedir=$incDIR \
libdir=$libDIR \
install
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 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 - no mpi or <scotch.h> not found"
false
}
then
echo
echo ========================================
echo "pt-scotch decomposition ($SCOTCH_VERSION with $FOAM_MPI)"
echo " $SCOTCH_ARCH_PATH"
if [ -f $SCOTCH_ARCH_PATH/include/$FOAM_MPI/ptscotch.h \
-a -r $FOAM_EXT_LIBBIN/$FOAM_MPI/libptscotch.so \
-a -r $FOAM_EXT_LIBBIN/$FOAM_MPI/libptscotcherrexit.so ]
then
echo " ptscotch include: $SCOTCH_ARCH_PATH/include/$FOAM_MPI"
echo " ptscotch library: $FOAM_EXT_LIBBIN/$FOAM_MPI"
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
incDIR=$SCOTCH_ARCH_PATH/include/$FOAM_MPI
libDIR=$FOAM_EXT_LIBBIN/$FOAM_MPI
mkdir -p $prefixDIR 2>/dev/null
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: ptscotch needs an appropriate Makefile.inc"
exit 1
}
export CCS="${CC:-$WM_CC}" # CCS (serial compiler) default=$(CC)
export CCP=$(whichMpicc) # CCP (parallel compiler) default=mpicc
# Consistency for Intel-MPI and non-icc compilers
[ -n "$I_MPI_CC" ] || export I_MPI_CC="${CC:-$WM_CC}"
make realclean 2>/dev/null # Extra safety
make -j $WM_NCOMPPROCS ptscotch \
&& make \
prefix=$prefixDIR \
includedir=$incDIR \
libdir=$libDIR \
install
make realclean 2>/dev/null || true # Failed cleanup is uncritical
) || warnBuildIssues PTSCOTCH
fi
# 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
#------------------------------------------------------------------------------
echo
echo ========================================
# Get KAHIP_ARCH_PATH
if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/kahip)
then
. $settings
fi
if [ -n "$KAHIP_ARCH_PATH" ]
then
echo KaHIP decomposition
./makeKAHIP -test "$KAHIP_ARCH_PATH" || \
./makeKAHIP || warnBuildIssues KAHIP
else
warnNotFound KAHIP # METIS is optional
fi
#------------------------------------------------------------------------------
echo
echo ========================================
# Get METIS_ARCH_PATH
if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/metis)
then
. $settings
fi
if [ -n "$METIS_ARCH_PATH" ]
then
echo Metis decomposition
./makeMETIS -test "$METIS_ARCH_PATH" || \
./makeMETIS || warnBuildIssues METIS
else
warnNotFound METIS # METIS is optional
fi
#------------------------------------------------------------------------------
echo
echo ========================================
if [ -n "$CGAL_ARCH_PATH" ]
then
echo "CGAL/boost"
./makeCGAL -test "$CGAL_ARCH_PATH" "$BOOST_ARCH_PATH" || \
./makeCGAL || warnBuildIssues CGAL
else
warnNotFound CGAL # CGAL is optional
fi
echo
echo ========================================
if [ -n "$FFTW_ARCH_PATH" ]
then
echo FFTW
./makeFFTW -test "$FFTW_ARCH_PATH" || \
./makeFFTW || warnBuildIssues FFTW
else
warnNotFound FFTW # FFTW is optional
fi
echo
echo ========================================

483
BUILD.md Normal file
View File

@ -0,0 +1,483 @@
<!--
|--------------------------------------------------------------------------|
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | |
| \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. |
| \\/ M anipulation | |
|--------------------------------------------------------------------------|
-->
---
# OpenFOAM&reg; 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.
## Organization
The ThirdParty directory contains a number of build scripts as well as
some directories:
| Directory | Contains
|-------------------|-------------------------------------------------------
| etc/ | auxiliary tools and content used for the build process
| build/ | intermediate build objects
| platforms/ | the installation directories
## Configuration of Third-Party Versions
For most of the build scripts, the default software version
is provided by an 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.
Nonethess, 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]
---
## 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` <a name="makeGcc"></a> *(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 kahip or metis directories are found, they 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
`makeADIOS`
- Only required for [ADIOS](#parallel) support,
which is currently staged in the [add-ons repository][link AddOns].
`makeCGAL`
- Builds [boost](#general-packages) and [CGAL](#general-packages).
Automatically invoked from the ThirdParty `Allwmake`,
but can be invoked directly to resolve possible build errors.
`makeFFTW`
- Builds [FFTW](#general-packages).
Automatically invoked from the ThirdParty `Allwmake`,
but can be invoked directly to resolve possible build errors.
`makeKAHIP`
- Builds [KaHIP](#parallel) decomposition library.
Automatically invoked from the ThirdParty `Allwmake`,
but can be invoked directly to resolve possible build errors.
`makeMETIS`
- Builds [METIS](#parallel) decomposition library.
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.
`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 offer some
suggestions about compiling such a configuration.
`makeQt`
- Script to build a [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)
`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][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.
### 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-v5.4.1/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-v5.4.1/VTK/CMake/vtkVersion.cmake
# VTK version number components.
set(VTK_MAJOR_VERSION 8)
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.
#### 5.4.x
- Compiles without patching.
No known issues with the native OpenFOAM reader.
#### 5.3.0 and older are neither recommended nor supported
- Various compilation issues and known bugs.
### 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 <a name="makeQt"></a>
- 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.4.1
- 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
central location), you will need to use the `etc/relocateQt` script
afterwards.
---
## Versions
### Gcc Compiler <a name="gcc-compiler"></a>
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 <a name="clang-compiler"></a>
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 since GNU *configure* can only be used prior
to clang version 3.9.
If your system gcc is particularly old
(see [minimum gcc requirements for clang](#min-gcc))
you may have additional hurdles to using the newest versions of clang.
| Name | Location
|-----------------------|------------------------
| [clang][page clang] | [download][link clang] or [newer][newer clang]
| [llvm][page llvm] | [download][link llvm] or [newer][newer llvm]
| [openmp][page omp] | [download][link omp] or [newer][newer omp]
### General <a name="general-packages"></a>
| Name | Location
|-----------------------|------------------------
| [CMake][page cmake] | [download][link cmake]
| [boost][page boost] | [download][link boost]
| [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]
| gperftools | [repo][repo gperftools] or [download][link gperftools]
### Parallel Processing <a name="parallel"></a>
| Name | Location
|-----------------------|------------------------
| [openmpi][page openmpi] | [download][link openmpi]. The newer [openmpi][newer openmpi] make exhibit stability issues.
| [adios][page adios] | [repo][repo adios] or [github download][link adios] or [alt download][altlink adios]
| [scotch, ptscotch][page scotch] | [download][link scotch]
| [kahip][page kahip] | [download][link kahip]
| [metis][page metis] | [download][link metis]
### Visualization <a name="viz-version"></a>
| Name | Location
|-----------------------|------------------------
| [MESA][page mesa] | [download][link mesa] or [older 13][older13 mesa], [older 11][older11 mesa]
| [ParaView][page ParaView] | [download][link ParaView]
| [Qt][page Qt] | Either the [older QT4][link Qt4] or the [newer QT5][link Qt5], which only works with ParaView-5.3.0 and later.
### CMake Minimum Requirements <a name="min-cmake"></a>
The minimum CMake requirements for building various components.
2.8 llvm-3.4.2
2.8.11 CGAL-4.9
2.8.11 CGAL-4.11
2.8.12.2 llvm-3.7.0
2.8.12.2 llvm-3.8.0
2.8.4 cmake-3.6.0
3.3 ParaView-5.4.1
3.4.3 llvm-3.9.1
3.4.3 llvm-4.0.0
### GCC Minimum Requirements <a name="min-gcc"></a>
The minimum gcc/g++ requirements for building various components.
4.7 llvm-3.7.0
4.7 llvm-3.6.2
4.7 llvm-3.5.2
4.4 llvm-3.4.2
If your system gcc/g++ is too old to build the desired llvm/clang
version, you may need to build a lower llvm/clang version and then use
that clang compiler for building the newer llvm/clang version.
<!-- gcc-related -->
[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
<!-- clang-related -->
[page llvm]: http://llvm.org/
[page clang]: http://clang.llvm.org/
[page omp]: http://openmp.llvm.org/
[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
[link omp]: http://llvm.org/releases/3.7.1/openmp-3.7.1.src.tar.xz
[newer clang]: http://llvm.org/releases/4.0.1/cfe-4.0.1.src.tar.xz
[newer llvm]: http://llvm.org/releases/4.0.1/llvm-4.0.1.src.tar.xz
[newer omp]: http://llvm.org/releases/4.0.1/openmp-4.0.1.src.tar.xz
<!-- parallel -->
[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.13.0.tar.gz
[altlink adios]: http://users.nccs.gov/%7Epnorbert/adios-1.13.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 kahip]: http://algo2.iti.kit.edu/documents/kahip/
[link kahip]: http://algo2.iti.kit.edu/schulz/software_releases/KaHIP_2.00.tar.gz
[page metis]: http://glaros.dtc.umn.edu/gkhome/metis/metis/overview
[link metis]: http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.1.0.tar.gz
[page openmpi]: http://www.open-mpi.org/
[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
<!-- general -->
[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.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.1/CGAL-4.9.1.tar.xz
[page FFTW]: http://www.fftw.org/
[link FFTW]: http://www.fftw.org/fftw-3.3.7.tar.gz
[page cgns]: http://cgns.github.io/
[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)
[repo gperftools]: https://github.com/gperftools/gperftools
[link gperftools]: https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz
<!-- Visualization -->
[page ParaView]: http://www.paraview.org/
[link ParaView]: http://www.paraview.org/files/v5.4/ParaView-v5.4.1.tar.gz
[page mesa]: http://mesa3d.org/
[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 Qt4]: http://download.qt.io/official_releases/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz
[link Qt5]: http://download.qt.io/official_releases/qt/5.9/5.9.3/single/qt-everywhere-opensource-src-5.9.3.tar.xz
<!-- OpenFOAM -->
[link AddOns]: https://develop.openfoam.com/Community/OpenFOAM-addOns
[link community-projects]: http://www.openfoam.com/community/projects.php
---
<!-- Standard Footer -->
## Additional OpenFOAM Links
- [Community AddOns][link AddOns] repository
- [Collaborative and Community-based Developments][link community-projects]
- [Download](http://www.openfoam.com/download) and
[installation instructions](http://www.openfoam.com/code/build-guide.php)
- [Documentation](http://www.openfoam.com/documentation)
- [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-2017 OpenCFD Ltd

90
README.md Normal file
View File

@ -0,0 +1,90 @@
<!--
|--------------------------------------------------------------------------|
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | |
| \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. |
| \\/ M anipulation | |
|--------------------------------------------------------------------------|
-->
---
# OpenFOAM&reg; ThirdParty
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
For most of the build scripts, the default software version
is provided by an 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.
Nonethess, 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.
---
## Before Starting
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.
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 particular
ThirdParty components prior to building OpenFOAM itself.
### Build Sequence
1. `makeGcc` _or_ `makeLLVM` *(optional)*
2. `makeCmake` *(optional)*
3. `Allwmake`
- This will be automatically invoked by the top-level OpenFOAM `Allwmake`.
4. `makeParaView` *(optional but highly recommended)*
5. Any other additional optional components
### Build Details
More details can be found the ThirdParty BUILD.md information.
<!-- OpenFOAM -->
[link AddOns]: https://develop.openfoam.com/Community/OpenFOAM-addOns
[link community-projects]: http://www.openfoam.com/community/projects.php
---
<!-- Standard Footer -->
## Additional OpenFOAM Links
- [Community AddOns][link AddOns] repository
- [Collaborative and Community-based Developments][link community-projects]
- [Download](http://www.openfoam.com/download) and
[installation instructions](http://www.openfoam.com/code/build-guide.php)
- [Documentation](http://www.openfoam.com/documentation)
- [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-2017 OpenCFD Ltd

View File

@ -1,96 +0,0 @@
# -*- mode: org; -*-
#
#+TITLE: OpenFOAM Third-Party packages
#+AUTHOR: The OpenFOAM Foundation / OpenCFD Ltd.
#+DATE: 2016-06-28
#+LINK: http://www.openfoam.org
#+OPTIONS: author:nil ^:{}
# Copyright (c) 2014-2016 OpenFOAM Foundation.
# Copyright (c) 2016 OpenCFD Ltd.
* Description
Scripts for building third-party packages.
* Build Order:
+ makeGcc (recommended if the system gcc is < 4.7)
+ Allwmake (Builds OpenMPI, Scotch etc.)
+ makeCmake (if the system cmake version is < 2.8.8)
+ makeParaView
*** Optional Build Components:
+ makeLLVM (Replaces makeGcc in the above description
- to use clang as compiler)
+ makeCCMIO (Only required for conversion of STAR-CCM+ meshes)
+ Allclean (Only required to save disk space)
* Versions and locations to download the third party packages
*** Gcc C++ Compiler
The minimum version of gcc required is 4.5.0
+ gcc http://gcc.gnu.org/releases.html
+ gmp http://gmplib.org/
ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2
+ mpfr http://www.mpfr.org/
ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.bz2
+ mpc http://www.multiprecision.org/
ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
*** Parallel Processing
***** Scotch
+ Scotch/PtScotch: https://gforge.inria.fr/frs/download.php/file/34099/scotch_6.0.3.tar.gz
***** OpenMPI
+ OpenMPI: http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.2.tar.bz2
*** ParaView
+ cmake http://www.cmake.org/files/v3.5/cmake-3.5.2.tar.gz
+ ParaView-4.4.0 http://www.paraview.org/files/v4.4/ParaView-v4.4.0-source.tar.gz
+ ParaView-5.0.1 http://www.paraview.org/files/v5.0/ParaView-v5.0.1-source.tar.gz
but may need patching to compile (See [[Notes]]).
*** CGAL
+ CGAL https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.8/CGAL-4.8.tar.xz
+ boost https://sourceforge.net/projects/boost/files/boost/1.61.0/boost_1_61_0.tar.bz2/download
*** Miscellaneous
+ FFTW http://www.fftw.org/fftw-3.3.4.tar.gz
+ libccmio http://portal.nersc.gov/svn/visit/trunk/third_party/libccmio-2.6.1.tar.gz
* Notes
*** Building ParaView-4.3.1/4.4.0/5.0.0/5.0.1
The ParaView-4.3.1/4.4.0/5.0.0 source-pack provided by KitWare will not
build and install correctly without a minor correction: lines 653-656
(650-653 in ParaView-5.0.0, 659-662 in ParaView-5.0.1) must be removed or
commented from file
/ThirdParty-???/ParaView-[45].?.?/Qt/Components/CMakeLists.txt/ after
unpacking and renaming the ParaView-[45].?.? directory. This is because the
file ui_pqExportStateWizard.h referred to in
#+begin_src C
if(PARAVIEW_INSTALL_DEVELOPMENT_FILES)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ui_pqExportStateWizard.h"
DESTINATION "${VTK_INSTALL_INCLUDE_DIR}")
endif()
#+end_src
does not exist and cannot be installed causing the build and installation to
fail.
Additionally for ParaView-4.4.0 there is a bug in the STL reader.
(see http://www.openfoam.org/mantisbt/view.php?id=1887).
For ParaView-4.4.0 and ParaView-5.0.1,
the necessary patches are supplied with the ThirdParty repository
(see the etc/patches directory) and are applied when building paraview.
*** Building ParaView-5.0.1 with gcc-6.1.0
***** Add support for gcc-6.?.?
The following cmake files
+ ParaView-5.0.1/VTK/CMake/vtkCompilerExtras.cmake
+ ParaView-5.0.1/VTK/CMake/GenerateExportHeader.cmake
specifically limit the gcc versions supported.
To add support gcc-6.?.? replace the '[345]' with '[3456]'.
This patch is also supplied with the ThirdParty repository and
applied when building paraview.
***** SciberQuestToolKit
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.
*** Building ParaView-4.1.0
On Ubuntu 14.10 and higher, OpenSuSE 13.2 and probably other recent
GNU/Linux distributions there is an issue in the GL libraries requiring a
change to the vtkXOpenGLRenderWindow.cxx file in ParaView: Uncomment line 30
#define GLX_GLXEXT_LEGACY
# --------------------------------------------------------------------------

69
SOURCES.txt Normal file
View File

@ -0,0 +1,69 @@
Short summary of third-party software versions for recent OpenFOAM versions.
OpenFOAM-1712
---------------
CGAL-4.9.1
ParaView-5.4.1 *minor*
boost_1_64_0
fftw-3.3.7 *minor*
openmpi-1.10.4
scotch_6.0.3
kahip-2.00d *new*
OpenFOAM-1706
---------------
CGAL-4.9.1 *minor*
ParaView-5.4.0 *update*
boost_1_64_0 *update*
fftw-3.3.6-pl1 *minor*
openmpi-1.10.4
scotch_6.0.3
OpenFOAM-1612
---------------
CGAL-4.9 *update*
ParaView-5.0.1 *update*
boost_1_62_0 *update*
fftw-3.3.5 *minor*
openmpi-1.10.4 *minor*
scotch_6.0.3
OpenFOAM-1606
---------------
CGAL-4.8 *update*
ParaView-5.0.1 *update*
boost_1_61_0 *new*
fftw-3.3.4 *new*
openmpi-1.10.2 *minor*
scotch_6.0.3
OpenFOAM-v3.0+
---------------
CGAL-4.7 *update*
ParaView-4.4.0 *update*
openmpi-1.10.0 *update*
scotch_6.0.3
OpenFOAM-v2.4
---------------
CGAL-4.6 *update*
ParaView-4.1.0
openmpi-1.8.5 *update*
scotch_6.0.3 *update*
---------------
OpenFOAM-v2.3
---------------
CGAL-4.3
ParaView-4.1.0
openmpi-1.6.5
scotch_6.0.0
---------------

70
etc/makeFiles/kahip/files Normal file
View File

@ -0,0 +1,70 @@
/* NOTE: make any changes to this file in etc/wmakeFiles/ */
interface/kaHIP_interface.cpp
/* List obtained from SConscript, libkaffpa_files = [ ... ] entry */
data_structure/graph_hierarchy.cpp
algorithms/strongly_connected_components.cpp
algorithms/topological_sort.cpp
algorithms/push_relabel.cpp
io/graph_io.cpp
tools/quality_metrics.cpp
tools/random_functions.cpp
tools/graph_extractor.cpp
tools/misc.cpp
tools/partition_snapshooter.cpp
partition/graph_partitioner.cpp
partition/w_cycles/wcycle_partitioner.cpp
partition/coarsening/coarsening.cpp
partition/coarsening/contraction.cpp
partition/coarsening/edge_rating/edge_ratings.cpp
partition/coarsening/matching/matching.cpp
partition/coarsening/matching/random_matching.cpp
partition/coarsening/matching/gpa/path.cpp
partition/coarsening/matching/gpa/gpa_matching.cpp
partition/coarsening/matching/gpa/path_set.cpp
partition/coarsening/clustering/node_ordering.cpp
partition/coarsening/clustering/size_constraint_label_propagation.cpp
partition/initial_partitioning/initial_partitioning.cpp
partition/initial_partitioning/initial_partitioner.cpp
partition/initial_partitioning/initial_partition_bipartition.cpp
partition/initial_partitioning/initial_refinement/initial_refinement.cpp
partition/initial_partitioning/bipartition.cpp
partition/initial_partitioning/initial_node_separator.cpp
partition/uncoarsening/uncoarsening.cpp
partition/uncoarsening/separator/area_bfs.cpp
partition/uncoarsening/separator/vertex_separator_algorithm.cpp
partition/uncoarsening/separator/vertex_separator_flow_solver.cpp
partition/uncoarsening/refinement/cycle_improvements/greedy_neg_cycle.cpp
partition/uncoarsening/refinement/cycle_improvements/problem_factory.cpp
partition/uncoarsening/refinement/cycle_improvements/augmented_Qgraph.cpp
partition/uncoarsening/refinement/mixed_refinement.cpp
partition/uncoarsening/refinement/label_propagation_refinement/label_propagation_refinement.cpp
partition/uncoarsening/refinement/refinement.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/2way_fm_refinement/two_way_fm.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/flow_refinement/two_way_flow_refinement.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/flow_refinement/boundary_bfs.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/flow_refinement/flow_solving_kernel/cut_flow_problem_solver.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/flow_refinement/most_balanced_minimum_cuts/most_balanced_minimum_cuts.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/quotient_graph_refinement.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/complete_boundary.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/partial_boundary.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/quotient_graph_scheduling/quotient_graph_scheduling.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/quotient_graph_scheduling/simple_quotient_graph_scheduler.cpp
partition/uncoarsening/refinement/quotient_graph_refinement/quotient_graph_scheduling/active_block_quotient_graph_scheduler.cpp
partition/uncoarsening/refinement/kway_graph_refinement/kway_graph_refinement.cpp
partition/uncoarsening/refinement/kway_graph_refinement/kway_graph_refinement_core.cpp
partition/uncoarsening/refinement/kway_graph_refinement/kway_graph_refinement_commons.cpp
partition/uncoarsening/refinement/cycle_improvements/augmented_Qgraph_fabric.cpp
partition/uncoarsening/refinement/cycle_improvements/advanced_models.cpp
partition/uncoarsening/refinement/kway_graph_refinement/multitry_kway_fm.cpp
partition/uncoarsening/refinement/node_separators/greedy_ns_local_search.cpp
partition/uncoarsening/refinement/node_separators/fm_ns_local_search.cpp
partition/uncoarsening/refinement/node_separators/localized_fm_ns_local_search.cpp
algorithms/cycle_search.cpp
partition/uncoarsening/refinement/cycle_improvements/cycle_refinement.cpp
partition/uncoarsening/refinement/tabu_search/tabu_search.cpp
LIB = $(FOAM_EXT_LIBBIN)/libkahip

View File

@ -0,0 +1,15 @@
/*
* NOTE: make any changes to this file in etc/wmakeFiles/
* Must use -DNDEBUG to disable kahip debug mode.
* Using -DMODE_NODESEP is not strictly required for building the library.
*/
EXE_INC = \
${c++LESSWARN} \
${COMP_OPENMP} \
-DNDEBUG -DMODE_NODESEP \
-I$(KAHIP_LIB_SRC) \
-I$(KAHIP_LIB_SRC)/partition \
-I$(KAHIP_LIB_SRC)/partition/uncoarsening/refinement/quotient_graph_refinement/flow_refinement
LIB_LIBS =

View File

@ -0,0 +1,22 @@
/* NOTE: make any changes to this file in etc/makeFiles/ */
libadf/ADF_interface.c
libadf/ADF_internals.c
libccmio/ccmio.c
libccmio/ccmiocore.c
libccmio/ccmioprivate.c
libccmio/ccmioutility.c
libccmio/ccmioversion.c
/*
* CGNS library not needed by ccmio, retain for documentation purposes only
*
libcgns/adf_cond.c
libcgns/adf_ftoc.c
libcgns/cgns_error.c
libcgns/cgns_internals.c
libcgns/cgnslib.c
*/
LIB = $(FOAM_EXT_LIBBIN)/libccmio

View File

@ -0,0 +1,3 @@
/* NOTE: make any changes to this file in etc/makeFiles/ */
/* EXE_INC = */

View File

@ -0,0 +1,45 @@
#-------------------------------*- makefile -*---------------------------------
# OpenFOAM notes:
#
# WM_CFLAGS, WM_LDFLAGS contain "-m32 -fPIC" etc
# WM_LABEL_SIZE == 64 for 'long' instead of 'int' for OpenFOAM labels
#
# - compiled without pthread
#
# Normally set CCS, CCP by caller
EXE =
LIB = .so
OBJ = .o
AR = $(CC)
ARFLAGS = $(WM_CFLAGS) -shared -o
CCS ?= $(CC)
CCP ?= mpicc
CCD = $(CCP)
CFLAGS = $(WM_CFLAGS) -O3 \
-DCOMMON_FILE_COMPRESS_GZ \
-DCOMMON_RANDOM_FIXED_SEED \
-DSCOTCH_DETERMINISTIC \
-DSCOTCH_RENAME \
-Drestrict=__restrict
# 32-bit vs. 64-bit labels
ifeq ($(WM_LABEL_SIZE),64)
CFLAGS += -DINTSIZE64
endif
CLIBFLAGS = -shared
LDFLAGS = -Xlinker --no-as-needed $(WM_LDFLAGS) -lz -lm -lrt
MAKE = make
CP = cp
CAT = cat
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = echo
LEX = flex -Pscotchyy -olex.yy.c
YACC = bison -pscotchyy -y -b y
#------------------------------------------------------------------------------

View File

@ -1,13 +0,0 @@
#!/bin/sh
# simple script to generate patches
paraview=ParaView-5.0.1
for i in \
$paraview/VTK/CMake/vtkCompilerExtras.cmake \
$paraview/VTK/CMake/GenerateExportHeader.cmake \
$paraview/Qt/Components/CMakeLists.txt \
;
do
diff -uw $i.orig $i
done

View File

@ -1,50 +0,0 @@
--- ParaView-4.4.0/VTK/IO/Geometry/vtkSTLReader.cxx.orig 2015-09-11 19:59:24.000000000 +0200
+++ ParaView-4.4.0/VTK/IO/Geometry/vtkSTLReader.cxx 2016-06-19 12:59:50.769770143 +0200
@@ -448,7 +448,7 @@
done = done || (fscanf(fp,"%s", line)==EOF);
}
}
- if (!done)
+ else if (!done)
{
done = (fgets(line, 255, fp) == 0);
lineCount++;
--- ParaView-5.0.1/VTK/CMake/vtkCompilerExtras.cmake.orig 2016-03-28 17:07:10.000000000 +0200
+++ ParaView-5.0.1/VTK/CMake/vtkCompilerExtras.cmake 2016-06-11 15:10:14.820958942 +0200
@@ -32,7 +32,7 @@
OUTPUT_VARIABLE _gcc_version_info
ERROR_VARIABLE _gcc_version_info)
- string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]*"
+ string (REGEX MATCH "[3-6]\\.[0-9]\\.[0-9]*"
_gcc_version "${_gcc_version_info}")
if(NOT _gcc_version)
string (REGEX REPLACE ".*\\(GCC\\).*([34]\\.[0-9]).*" "\\1.0"
--- ParaView-5.0.1/VTK/CMake/GenerateExportHeader.cmake.orig 2016-03-28 17:07:10.000000000 +0200
+++ ParaView-5.0.1/VTK/CMake/GenerateExportHeader.cmake 2016-06-11 15:12:16.344357746 +0200
@@ -166,7 +166,7 @@
execute_process(COMMAND ${CMAKE_C_COMPILER} ARGS --version
OUTPUT_VARIABLE _gcc_version_info
ERROR_VARIABLE _gcc_version_info)
- string(REGEX MATCH "[345]\\.[0-9]\\.[0-9]*"
+ string(REGEX MATCH "[3-6]\\.[0-9]\\.[0-9]*"
_gcc_version "${_gcc_version_info}")
# gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the
# patch level, handle this here:
--- ParaView-5.0.1/Qt/Components/CMakeLists.txt.orig 2016-06-13 09:27:27.827849525 +0200
+++ ParaView-5.0.1/Qt/Components/CMakeLists.txt 2016-06-13 09:29:28.599318445 +0200
@@ -656,10 +656,10 @@
#the pqSGExportStateWizard has subclasses that directly access
#the UI file, and currently we don't have a clean way to break this hard
#dependency, so for no we install this ui file.
-if(PARAVIEW_INSTALL_DEVELOPMENT_FILES)
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ui_pqExportStateWizard.h"
- DESTINATION "${VTK_INSTALL_INCLUDE_DIR}")
-endif()
+#OPENFOAM patch#if(PARAVIEW_INSTALL_DEVELOPMENT_FILES)
+#OPENFOAM patch# install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ui_pqExportStateWizard.h"
+#OPENFOAM patch# DESTINATION "${VTK_INSTALL_INCLUDE_DIR}")
+#OPENFOAM patch#endif()
#IF (NOT PV_INSTALL_NO_DEVELOPMENT)
# # Headers

View File

@ -1,39 +0,0 @@
--- ParaView-5.0.1/VTK/CMake/vtkCompilerExtras.cmake.orig 2016-03-28 17:07:10.000000000 +0200
+++ ParaView-5.0.1/VTK/CMake/vtkCompilerExtras.cmake 2016-06-11 15:10:14.820958942 +0200
@@ -32,7 +32,7 @@
OUTPUT_VARIABLE _gcc_version_info
ERROR_VARIABLE _gcc_version_info)
- string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]*"
+ string (REGEX MATCH "[3-6]\\.[0-9]\\.[0-9]*"
_gcc_version "${_gcc_version_info}")
if(NOT _gcc_version)
string (REGEX REPLACE ".*\\(GCC\\).*([34]\\.[0-9]).*" "\\1.0"
--- ParaView-5.0.1/VTK/CMake/GenerateExportHeader.cmake.orig 2016-03-28 17:07:10.000000000 +0200
+++ ParaView-5.0.1/VTK/CMake/GenerateExportHeader.cmake 2016-06-11 15:12:16.344357746 +0200
@@ -166,7 +166,7 @@
execute_process(COMMAND ${CMAKE_C_COMPILER} ARGS --version
OUTPUT_VARIABLE _gcc_version_info
ERROR_VARIABLE _gcc_version_info)
- string(REGEX MATCH "[345]\\.[0-9]\\.[0-9]*"
+ string(REGEX MATCH "[3-6]\\.[0-9]\\.[0-9]*"
_gcc_version "${_gcc_version_info}")
# gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the
# patch level, handle this here:
--- ParaView-5.0.1/Qt/Components/CMakeLists.txt.orig 2016-06-13 09:27:27.827849525 +0200
+++ ParaView-5.0.1/Qt/Components/CMakeLists.txt 2016-06-13 09:29:28.599318445 +0200
@@ -656,10 +656,10 @@
#the pqSGExportStateWizard has subclasses that directly access
#the UI file, and currently we don't have a clean way to break this hard
#dependency, so for no we install this ui file.
-if(PARAVIEW_INSTALL_DEVELOPMENT_FILES)
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ui_pqExportStateWizard.h"
- DESTINATION "${VTK_INSTALL_INCLUDE_DIR}")
-endif()
+#OPENFOAM patch#if(PARAVIEW_INSTALL_DEVELOPMENT_FILES)
+#OPENFOAM patch# install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ui_pqExportStateWizard.h"
+#OPENFOAM patch# DESTINATION "${VTK_INSTALL_INCLUDE_DIR}")
+#OPENFOAM patch#endif()
#IF (NOT PV_INSTALL_NO_DEVELOPMENT)
# # Headers

76
etc/pkgconfigAdjust Executable file
View File

@ -0,0 +1,76 @@
#!/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, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# 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<<USAGE
usage: ${0##*/} [OPTION] [directory1 [... directoryN]]
options:
-help
Adjust pkgconfig files after relocating third-party files.
Locates pkgconfig files under the lib/ or lib64/ directories and adjusts them
to use '${prefix}' instead of absolute directory paths where possible.
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Process options/arguments
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
-h | -help) usage ;;
*)
pkgconfigAdjust "$1"
;;
esac
shift
done
#------------------------------------------------------------------------------

73
etc/pkgconfigPrefix Executable file
View File

@ -0,0 +1,73 @@
#!/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, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# 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<<USAGE
usage: ${0##*/} [OPTION] [directory1 [... directoryN]]
options:
-help
Set the 'prefix=' entry for pkgconfig files.
The pkgconfig files are located under lib/pkgconfig or lib64/pkgconfig.
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Process options/arguments
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
-h | -help) usage ;;
*)
pkgconfigNewPrefix "$1"
;;
esac
shift
done
#------------------------------------------------------------------------------

View File

@ -4,75 +4,65 @@
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
# \\/ M anipulation |
# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# etc/relocateQt
#
# Description
# Change prefix when relocating qt installation
# Change prefix when relocating QT installation
#
# ----------------------------------------------
# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE
#------------------------------------------------------------------------------
qtVERSION=4.7.2
#------------------------------------------------------------------------------
# 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 (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
. etc/tools/QtFunctions
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: ${0##*/} [OPTION] [VERSION]
usage: ${0##*/} [OPTION] [qt-VERSION]
options:
-force create qt.conf and edit pkgconfig to use \${prefix}
-force Create qt.conf and edit pkgconfig to use \${prefix}
-help
Adjust prefix in qt.conf and pkgconfig files after relocating third-party
with a QT installation.
* adjust relocation prefix for $qtVERSION
USAGE
exit 1
}
#------------------------------------------------------------------------------
unset optForce
unset forceOpt
# parse options
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
;;
'') ;; # Ignore empty
-h | -help) usage ;;
-f | -force)
forceOpt=true
optForce=true
;;
[1-9]* | qt-[1-9]*)
-qt-[1-9]* | [1-9]* | qt-*)
# -qt-VERSION, VERSION, qt-VERSION, qt-everywhere-opensource-src-VERSION
qtVERSION="${1%%/}";
qtVERSION="${qtVERSION#qt-}"
qtVERSION="${qtVERSION##*-}"
;;
*)
die "unknown option/argument: '$1'"
@ -82,10 +72,16 @@ do
done
#------------------------------------------------------------------------------
prefixDIR=$installBASE/qt-$qtVERSION
QT_ARCH_PATH=$installBASE/qt-$qtVERSION
[ "${forceOpt:-false}" = true ] && finalizeQt
changePrefix
[ -n "$qtVERSION" ] || die "No QT version specified"
[ -d "$QT_ARCH_PATH" ] || die "No QT installation"
if [ "${optForce:-false}" = true ]
then
# Create qt.conf and adjust locations to use '${prefix}' internally
finalizeQt
fi
pkgconfigNewPrefix $QT_ARCH_PATH
# ----------------------------------------------------------------- end-of-file
# -----------------------------------------------------------------------------

View File

@ -1,502 +0,0 @@
#---------------------------------*- sh -*-------------------------------------
# ========= |
# \\ / 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.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/tools/ParaViewFunctions
#
# Description
# ParaView make/install helper functions
#
#------------------------------------------------------------------------------
# buildBASE, installBASE defined from tools/ThirdPartyFunctions
#
# Where things are or should be put
# ParaView_VERSION and ParaView_MAJOR should already have been set
#
# ParaView_SOURCE_DIR : location of the original sources
# ParaView_BINARY_DIR : location of the build
# ParaView_DIR : location of the installed program
#
setDirs()
{
ParaView_SOURCE_DIR=$WM_THIRD_PARTY_DIR/ParaView-$ParaView_VERSION
[ -d "$ParaView_SOURCE_DIR" ] || {
echo "did not find ParaView-$ParaView_VERSION in these directories:"
echo " WM_THIRD_PARTY_DIR=$WM_THIRD_PARTY_DIR"
echo
echo "abort build"
exit 1
}
# ParaView_BINARY_DIR=$buildBASE/ParaView-$ParaView_VERSION-$OBJ_ADD
ParaView_BINARY_DIR=$buildBASE/ParaView-$ParaView_VERSION
# ParaView_DIR=$installBASE/ParaView-$ParaView_VERSION-$OBJ_ADD
ParaView_DIR=$installBASE/ParaView-$ParaView_VERSION
export ParaView_SOURCE_DIR ParaView_BINARY_DIR ParaView_DIR
echo
echo "ParaView_SOURCE_DIR=$ParaView_SOURCE_DIR"
echo "ParaView_BINARY_DIR=$ParaView_BINARY_DIR"
echo "ParaView_DIR=$ParaView_DIR"
# Forcefully override the .git path for the ParaView source code directory
export GIT_DIR=$ParaView_SOURCE_DIR/.git
}
#
# Set ParaView_VERSION and adjust ParaView_MAJOR accordingly
#
# $1 can contain something something like 4.4.0, paraview-4.4.0, ParaView-4.0.0
#
setVersion()
{
[ $# -gt 0 ] || {
echo "Error: function setVersion() called without an argument"
exit 1
}
ParaView_VERSION="${1##*-}"
# The major version is "<digits>.<digits>"
ParaView_MAJOR=$(echo $ParaView_VERSION | \
sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/')
export ParaView_VERSION ParaView_MAJOR
}
#------------------------------------------------------------------------------
#
# Compare version information (specified vs what is found in CMakeLists.txt)
# Parse this type of content:
# set (PARAVIEW_VERSION_FULL "3.98.1")
#
checkVersion()
{
local ver=$(
sed -ne 's/^ *set *( *PARAVIEW_VERSION_FULL[ "]*\([.0-9]*\).*$/\1/ip' \
$ParaView_SOURCE_DIR/CMakeLists.txt
)
if [ "$ParaView_VERSION" != "$ver" ]
then
echo "MISMATCH!"
echo " specified $ParaView_VERSION"
echo " found ${ver:-NONE}"
fi
}
#
# Set CMake cache variables
#
addCMakeVariable()
{
while [ -n "$1" ]
do
CMAKE_VARIABLES="$CMAKE_VARIABLES -D$1"
shift
done
}
#
# Verbose makefiles
#
addVerbosity()
{
if [ "${withVERBOSE:=false}" = true ]
then
addCMakeVariable "CMAKE_VERBOSE_MAKEFILE=TRUE"
fi
}
#
# Define options for mpi support
#
addMpiSupport()
{
if [ "${withMPI:=false}" != true ]
then
return
fi
OBJ_ADD="$OBJ_ADD-mpi"
addCMakeVariable "PARAVIEW_USE_MPI=ON VTK_USE_MPI=ON"
addCMakeVariable "VTK_MPI_MAX_NUMPROCS=$MPI_MAX_PROCS"
}
#
# Define options for python support
#
addPythonSupport()
{
if [ "${withPYTHON:=false}" != true ]
then
return
fi
OBJ_ADD="$OBJ_ADD-py"
if pythonBin=$(which python 2>/dev/null)
then
if [ -n "$PYTHON_LIBRARY" ]
then
# Check $PYTHON_LIBRARY if it has been set
if [ ! -e "$PYTHON_LIBRARY" ]
then
echo "*** Error: libpython not found at location specified " \
"by -pythnon-lib input: PYTHON_LIBRARY=$PYTHON_LIBRARY"
fi
else
# Try to get $PYTHON_LIBRARY from dynamically linked binary
PYTHON_LIBRARY=$(ldd $pythonBin | \
sed -ne '/libpython/s/.* => \(.*\) (.*/\1/p')
[ -e "$PYTHON_LIBRARY" ] || {
echo "*** Error: Unable to determine path to python library."
}
fi
[ -e "$PYTHON_LIBRARY" ] || {
echo " Please set the full path to the python library "
echo " (including libpython) using the -python-lib option, "
echo " or deactivate python support by not using the -python "
echo " option"
exit 1
}
pythonMajor=$(echo $PYTHON_LIBRARY | sed 's/.*libpython\(.*\)\.so.*/\1/')
pythonInclude=/usr/include/python$pythonMajor
# Note - we could also allow for a PYTHON_INCLUDE variable ...
[ -d "$pythonInclude" ] || {
echo " No python headers found in $pythonInclude/"
echo " Please install python headers or deactivate "
echo " python support by not using the -python option"
exit 1
}
addCMakeVariable "PARAVIEW_ENABLE_PYTHON=ON"
addCMakeVariable "PYTHON_INCLUDE_PATH=$pythonInclude"
addCMakeVariable "PYTHON_LIBRARY=$PYTHON_LIBRARY"
echo "----"
echo "Python information:"
echo " executable : $pythonBin"
echo " version : $pythonMajor"
echo " include path : $pythonInclude"
echo " library : $PYTHON_LIBRARY"
unset pythonBin pythonInclude pythonMajor
else
echo "*** Error: python not found"
echo "*** Deactivate python support by not using the -python "
echo "*** option"
exit 1
fi
}
#
# Define options for mesa support
#
addMesaSupport()
{
if [ "${withMESA:=false}" != true ]
then
return
fi
if [ -d "$MESA_INCLUDE" -a -f "$MESA_LIBRARY" ]
then
OBJ_ADD="$OBJ_ADD-mesa"
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
fi
}
addQtSupport()
{
QtVersion=none
if [ "${withQT:=false}" != true ]
then
return
fi
addCMakeVariable "PARAVIEW_BUILD_QT_GUI=ON"
unset qmakeExe
if [ -n "$QMAKE_PATH" ]
then
if [ -d "$QMAKE_PATH" ]
then
if [ -x "$QMAKE_PATH/qmake" ]
then
qmakeExe=$QMAKE_PATH/qmake
elif [ -x "$QMAKE_PATH/bin/qmake" ]
then
qmakeExe=$QMAKE_PATH/bin/qmake
fi
elif [ -x "$QMAKE_PATH" ]
then
qmakeExe=$QMAKE_PATH
fi
if [ -n "$qmakeExe" ]
then
# Use absolute path
if [ "${qmakeExe#/}" = "$qmakeExe" ]
then
qmakeExe="$(cd ${qmakeExe%/qmake} 2>/dev/null && pwd)/qmake"
fi
else
echo
echo "qmake not found under specified QMAKE_PATH"
echo " QMAKE_PATH=$QMAKE_PATH"
echo "leaving unspecified"
echo
fi
fi
# Default to using qmake from the path
if [ -n "$qmakeExe" ]
then
addCMakeVariable "QT_QMAKE_EXECUTABLE:FILEPATH=$qmakeExe"
else
qmakeExe=qmake
fi
# Check qmake can be found
if type $qmakeExe >/dev/null 2>&1
then
# Check the Qt version selected
# parse -> "Using Qt version X.Y.Z in ..."
QtVersion=$($qmakeExe -query QT_VERSION)
# Split Major.Minor.Revision - could also use IFS hacking
set -- $(echo "$QtVersion" | sed -e 's/\./ /g')
QtMajor=$1
QtMinor=$2
if [ $QtMajor -ne 4 -o $QtMajor -eq 4 -a $QtMinor -lt 5 ]
then
echo "*** Error: Qt version provided < 4.5"
echo "*** Please use the -qmake option to specify the location of a version of Qt >= 4.5 and < 5.0"
echo "*** e.g."
echo "*** -qmake /usr/local/qt-4.6.2/bin/qmake"
echo "*** -qmake $installBASE/qt-4.6.2/bin/qmake"
exit 1
fi
else
echo "*** Error: cannot find qmake either at \$QMAKE_PATH or in current \$PATH"
exit 1
fi
}
#
# Configure via cmake, but don't actually build anything
#
configParaView()
{
unset cmakeExe
if [ -n "$CMAKE_PATH" ]
then
if [ -d "$CMAKE_PATH" ]
then
if [ -x "$CMAKE_PATH/cmake" ]
then
cmakeExe=$CMAKE_PATH/cmake
elif [ -x "$CMAKE_PATH/bin/cmake" ]
then
cmakeExe=$CMAKE_PATH/bin/cmake
fi
elif [ -x "$CMAKE_PATH" ]
then
cmakeExe=$CMAKE_PATH
fi
if [ -n "$cmakeExe" ]
then
# Use absolute path
if [ "${cmakeExe#/}" = "$cmakeExe" ]
then
cmakeExe="$(cd ${cmakeExe%/cmake} 2>/dev/null && pwd)/cmake"
fi
else
echo
echo "cmake not found under specified CMAKE_PATH"
echo " CMAKE_PATH=$CMAKE_PATH"
echo "leaving unspecified"
echo
fi
fi
# Default to using cmake from the path
if [ -z "$cmakeExe" ]
then
cmakeExe=cmake
fi
# Remove any existing build folder and recreate
if [ -d $ParaView_BINARY_DIR ]
then
echo "removing old build directory"
echo " $ParaView_BINARY_DIR"
rm -rf $ParaView_BINARY_DIR
fi
mkdir -p $ParaView_BINARY_DIR
cd $ParaView_BINARY_DIR || exit 1 # Change to build folder
echo "----"
echo "Configuring paraview-$ParaView_VERSION (major version: $ParaView_MAJOR)"
echo " MPI support : ${withMPI:-false}"
echo " Python support : ${withPYTHON:-false}"
echo " MESA support : ${withMESA:-false}"
echo " GL2 rendering : false"
echo " Qt dev support : ${withQT:-false}"
echo " Source : $ParaView_SOURCE_DIR"
echo " Build : $ParaView_BINARY_DIR"
echo " Target : $ParaView_DIR"
echo "----"
echo
echo "$cmakeExe" \
-DCMAKE_INSTALL_PREFIX:PATH=$ParaView_DIR \
$CMAKE_VARIABLES \
$ParaView_SOURCE_DIR
echo
echo "----"
echo
# Run cmake to create Makefiles
$cmakeExe -Wno-dev \
-DCMAKE_INSTALL_PREFIX:PATH=$ParaView_DIR \
$CMAKE_VARIABLES \
$ParaView_SOURCE_DIR
}
#
# Invoke make
# also link bin/ to lib/paraview-* for development without installation
#
makeParaView()
{
cd $ParaView_BINARY_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
}
#
# Install the program
#
installParaView()
{
cd $ParaView_BINARY_DIR || exit 1 # Change to build folder
echo " Installing ParaView to $ParaView_DIR"
make install
# hack for missing files after install of version 3.14.1
echo "Copying missing files to install folder"
CMAKE_SRC_DIR=$ParaView_SOURCE_DIR/CMake
CMAKE_INSTALL_DIR=$ParaView_DIR/lib/paraview-$ParaView_MAJOR/CMake
cp -f $ParaView_SOURCE_DIR/ParaViewUse.cmake $CMAKE_INSTALL_DIR
cp -f $CMAKE_SRC_DIR/generate_proxydocumentation.cmake $CMAKE_INSTALL_DIR
cp -f $CMAKE_SRC_DIR/smxml_to_xml.xsl $CMAKE_INSTALL_DIR
cp -f $CMAKE_SRC_DIR/xml_to_html.xsl $CMAKE_INSTALL_DIR
cp -f $CMAKE_SRC_DIR/xml_to_wiki.xsl.in $CMAKE_INSTALL_DIR
cp -f $CMAKE_SRC_DIR/generate_qhp.cmake $CMAKE_INSTALL_DIR
unset CMAKE_SRC_DIR CMAKE_INSTALL_DIR
# --- end hack
cat<< INFO
---
Installation complete for paraview-$ParaView_VERSION
Now update the environment by running:
wmREFRESH
---
INFO
}
#------------------------------------------------------------------------------
# Clear the referenced variables before using any of the functions
unset withMPI withVERBOSE
unset withQT QMAKE_PATH
unset withMESA MESA_INCLUDE MESA_LIBRARY
unset withPYTHON PYTHON_INCLUDE PYTHON_LIBRARY
unset CMAKE_VARIABLES
unset OBJ_ADD
# Start with these general settings
addCMakeVariable "VTK_USE_TK:BOOL=OFF"
addCMakeVariable "BUILD_SHARED_LIBS:BOOL=ON VTK_USE_RPATH:BOOL=OFF"
addCMakeVariable "CMAKE_BUILD_TYPE:STRING=Release"
# Include development files in "make install"
addCMakeVariable "PARAVIEW_INSTALL_DEVELOPMENT:BOOL=ON"
# Don't build test tree
addCMakeVariable "BUILD_TESTING:BOOL=OFF"
# remove dependency on WebKit
# addCMakeVariable VTK_QT_USE_WEBKIT:BOOL=OFF
#------------------------------------------------------------------------------

View File

@ -3,23 +3,11 @@
# \\ / 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.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# File
# etc/tools/ParaViewFunctions
@ -27,45 +15,75 @@
# Description
# ParaView make/install helper functions
#
# Note
# Obtaining paths via 'python-config' is possible, but may not always
# resolve properly:
#
# python-config --includes
# >>
# -I/usr/include/python2.7 -I/usr/include/python2.7
#
# python-config --libs
# >>
# -lpython2.7 -lpthread -ldl -lutil -lm
#
#------------------------------------------------------------------------------
# buildBASE, installBASE defined from tools/ThirdPartyFunctions
# Variables referenced by the functions. Initialization at the end of the file.
unset CMAKE_VARIABLES
unset withVERBOSE
unset withMPI MPI_MAX_PROCS
unset withQT QT_VERSION QMAKE_PATH
unset withMESA MESA_INCLUDE MESA_LIBRARY withOSMESA
unset withPYTHON PYTHON_INCLUDE PYTHON_LIBRARY
unset withGL2
BUILD_TYPE=Release # The cmake build type
# sourceBASE, buildBASE, installBASE and BUILD_SUFFIX
# are defined in tools/ThirdPartyFunctions
#------------------------------------------------------------------------------
#
# Where things are or should be put
# ParaView_VERSION and ParaView_MAJOR should already have been set
#
# ParaView_SOURCE_DIR : location of the original sources
# ParaView_BINARY_DIR : location of the build
# ParaView_BUILD_DIR : location of the build
# ParaView_DIR : location of the installed program
#
setDirs()
setParaViewDirs()
{
ParaView_SOURCE_DIR=$WM_THIRD_PARTY_DIR/ParaView-$ParaView_VERSION
set -- "ParaView-$ParaView_VERSION" "ParaView-v$ParaView_VERSION"
unset ParaView_SOURCE_DIR
for i
do
ParaView_SOURCE_DIR="$sourceBASE/$i"
[ -d "$ParaView_SOURCE_DIR" ] && break
done
[ -d "$ParaView_SOURCE_DIR" ] || {
echo "did not find ParaView-$ParaView_VERSION in these directories:"
echo " WM_THIRD_PARTY_DIR=$WM_THIRD_PARTY_DIR"
echo "Did not locate ParaView version:"
while [ "$#" -ge 1 ]; do echo " $1"; shift; done
echo
echo "In the directory:"
echo " $sourceBASE"
echo
echo "abort build"
exit 1
}
# ParaView_BINARY_DIR=$buildBASE/ParaView-$ParaView_VERSION-$OBJ_ADD
ParaView_BINARY_DIR=$buildBASE/ParaView-$ParaView_VERSION
ParaView_BUILD_DIR=$buildBASE/ParaView-$ParaView_VERSION$BUILD_SUFFIX
ParaView_DIR=$installBASE/ParaView-$ParaView_VERSION$BUILD_SUFFIX
# ParaView_DIR=$installBASE/ParaView-$ParaView_VERSION-$OBJ_ADD
ParaView_DIR=$installBASE/ParaView-$ParaView_VERSION
export ParaView_SOURCE_DIR ParaView_BINARY_DIR ParaView_DIR
export ParaView_SOURCE_DIR ParaView_BUILD_DIR ParaView_DIR
echo
echo "ParaView_SOURCE_DIR=$ParaView_SOURCE_DIR"
echo "ParaView_BINARY_DIR=$ParaView_BINARY_DIR"
echo "ParaView_BUILD_DIR=$ParaView_BUILD_DIR"
echo "ParaView_DIR=$ParaView_DIR"
# Forcefully override the .git path for the ParaView source code directory
export GIT_DIR=$ParaView_SOURCE_DIR/.git
export GIT_DIR=$ParaView_SOURCE_DIR/.git # Mask seeing our own git-repo
}
@ -74,10 +92,10 @@ setDirs()
#
# $1 can contain something something like 4.4.0, paraview-4.4.0, ParaView-4.0.0
#
setVersion()
setParaViewVersion()
{
[ $# -gt 0 ] || {
echo "Error: function setVersion() called without an argument"
echo "Error: function setParaViewVersion() called without an argument"
exit 1
}
@ -93,35 +111,15 @@ setVersion()
#------------------------------------------------------------------------------
#
# Compare version information (specified vs what is found in CMakeLists.txt)
# Parse this type of content:
# set (PARAVIEW_VERSION_FULL "5.0.1")
#
checkVersion()
{
local ver=$(
sed -ne 's/^ *set *( *PARAVIEW_VERSION_FULL[ "]*\([.0-9]*\).*$/\1/ip' \
$ParaView_SOURCE_DIR/CMakeLists.txt
)
if [ "$ParaView_VERSION" != "$ver" ]
then
echo "MISMATCH!"
echo " specified $ParaView_VERSION"
echo " found ${ver:-NONE}"
fi
}
#
# Set CMake cache variables
#
addCMakeVariable()
{
while [ -n "$1" ]
local i
for i
do
CMAKE_VARIABLES="$CMAKE_VARIABLES -D$1"
shift
[ -n "$i" ] && CMAKE_VARIABLES="$CMAKE_VARIABLES -D$i"
done
}
@ -133,7 +131,7 @@ addVerbosity()
{
if [ "${withVERBOSE:=false}" = true ]
then
addCMakeVariable "CMAKE_VERBOSE_MAKEFILE=TRUE"
addCMakeVariable "CMAKE_VERBOSE_MAKEFILE=TRUE"
fi
}
@ -148,10 +146,11 @@ addMpiSupport()
return
fi
OBJ_ADD="$OBJ_ADD-mpi"
addCMakeVariable "PARAVIEW_USE_MPI=ON VTK_USE_MPI=ON"
addCMakeVariable "VTK_MPI_MAX_NUMPROCS=$MPI_MAX_PROCS"
addCMakeVariable "PARAVIEW_USE_MPI=ON" "VTK_USE_MPI=ON"
if [ "${MPI_MAX_PROCS:=0}" -gt 1 ]
then
addCMakeVariable "VTK_MPI_MAX_NUMPROCS=$MPI_MAX_PROCS"
fi
}
@ -160,70 +159,91 @@ addMpiSupport()
#
addPythonSupport()
{
if [ "${withPYTHON:=false}" != true ]
if [ "${withPYTHON:-false}" != true ]
then
return
fi
OBJ_ADD="$OBJ_ADD-py"
local pythonBin pythonConfig pythonMajor
if pythonBin=$(which python 2>/dev/null)
then
if [ -n "$PYTHON_LIBRARY" ]
then
# Check $PYTHON_LIBRARY if it has been set
if [ ! -e "$PYTHON_LIBRARY" ]
then
echo "*** Error: libpython not found at location specified " \
"by -pythnon-lib input: PYTHON_LIBRARY=$PYTHON_LIBRARY"
fi
else
# Try to get $PYTHON_LIBRARY from dynamically linked binary
PYTHON_LIBRARY=$(ldd $pythonBin | \
sed -ne '/libpython/s/.* => \(.*\) (.*/\1/p')
[ -e "$PYTHON_LIBRARY" ] || {
echo "*** Error: Unable to determine path to python library."
}
fi
[ -e "$PYTHON_LIBRARY" ] || {
echo " Please set the full path to the python library "
echo " (including libpython) using the -python-lib option, "
echo " or deactivate python support by not using the -python "
echo " option"
exit 1
}
pythonMajor=$(echo $PYTHON_LIBRARY | sed 's/.*libpython\(.*\)\.so.*/\1/')
pythonInclude=/usr/include/python$pythonMajor
# Note - we could also allow for a PYTHON_INCLUDE variable ...
[ -d "$pythonInclude" ] || {
echo " No python headers found in $pythonInclude/"
echo " Please install python headers or deactivate "
echo " python support by not using the -python option"
exit 1
}
addCMakeVariable "PARAVIEW_ENABLE_PYTHON=ON"
addCMakeVariable "PYTHON_INCLUDE_PATH=$pythonInclude"
addCMakeVariable "PYTHON_LIBRARY=$PYTHON_LIBRARY"
echo "----"
echo "Python information:"
echo " executable : $pythonBin"
echo " version : $pythonMajor"
echo " include path : $pythonInclude"
echo " library : $PYTHON_LIBRARY"
unset pythonBin pythonInclude pythonMajor
else
pythonBin=$(which python 2>/dev/null) || {
echo "*** Error: python not found"
echo "*** Deactivate python support by not using the -python "
echo "*** option"
exit 1
}
if [ -n "$PYTHON_LIBRARY" ]
then
# PYTHON_LIBRARY set:
[ -e "$PYTHON_LIBRARY" ] || \
echo "*** Error: libpython not found at location specified " \
"by -python-lib : PYTHON_LIBRARY=$PYTHON_LIBRARY"
else
# Fallback: get PYTHON_LIBRARY from dynamically linked binary
PYTHON_LIBRARY=$(ldd $pythonBin | \
sed -ne '/libpython/s/^.* => \(.*\) (.*/\1/p')
[ -e "$PYTHON_LIBRARY" ] || {
echo "*** Error: Unable to determine path to python library."
}
fi
[ -e "$PYTHON_LIBRARY" ] || {
echo " Please set the full path to the python library "
echo " (including libpython) using the -python-lib option, "
echo " or deactivate python support by not using the -python "
echo " option"
exit 1
}
# Guess major from library
pythonMajor=$(echo $PYTHON_LIBRARY | sed 's/.*libpython\(.*\)\.so.*/\1/')
if [ -n "$PYTHON_INCLUDE" ]
then
# PYTHON_INCLUDE set:
[ -d "$PYTHON_INCLUDE" -a -f "$PYTHON_INCLUDE/Python.h" ] || \
echo "*** Error: Python.h not found at location specified " \
"by -python-include : PYTHON_INCLUDE=$PYTHON_INCLUDE"
elif pythonConfig=$(which python-config 2>/dev/null)
then
# Guess from python-config
# parse '-I/usr/include/python2.7 -I/usr/include/python2.7'
# -> '/usr/include/python2.7'
PYTHON_INCLUDE=$(python-config --includes | sed -ne 's/^-I\([^ ][^ ]*\).*$/\1/p')
else
# Fallback to system headers
PYTHON_INCLUDE=/usr/include/python$pythonMajor
fi
[ -d "$PYTHON_INCLUDE" -a -f "$PYTHON_INCLUDE/Python.h" ] || {
echo " No python headers found in $PYTHON_INCLUDE/"
echo " Please install python headers or deactivate "
echo " python support by not using the -python option"
exit 1
}
addCMakeVariable "PARAVIEW_ENABLE_PYTHON=ON"
addCMakeVariable "PYTHON_INCLUDE_DIRS=$PYTHON_INCLUDE"
addCMakeVariable "PYTHON_LIBRARY=$PYTHON_LIBRARY"
echo "----"
echo "Python information:"
echo " executable : $pythonBin"
echo " version : $pythonMajor"
echo " include path : $PYTHON_INCLUDE"
echo " library : $PYTHON_LIBRARY"
}
@ -239,19 +259,17 @@ addMesaSupport()
if [ -d "$MESA_INCLUDE" -a -f "$MESA_LIBRARY" ]
then
OBJ_ADD="$OBJ_ADD-mesa"
addCMakeVariable "VTK_OPENGL_HAS_OSMESA=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
}
@ -263,88 +281,79 @@ 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
unset qmakeExe
if [ -n "$QMAKE_PATH" ]
# Check qmake can be found and handle version differences
qmake=$(findQtMake)
if QT_VERSION=$($qmake -query QT_VERSION 2>/dev/null)
then
if [ -d "$QMAKE_PATH" ]
then
if [ -x "$QMAKE_PATH/qmake" ]
then
qmakeExe=$QMAKE_PATH/qmake
elif [ -x "$QMAKE_PATH/bin/qmake" ]
then
qmakeExe=$QMAKE_PATH/bin/qmake
fi
elif [ -x "$QMAKE_PATH" ]
then
qmakeExe=$QMAKE_PATH
fi
addCMakeVariable "PARAVIEW_BUILD_QT_GUI=ON"
if [ -n "$qmakeExe" ]
then
# Use absolute path
if [ "${qmakeExe#/}" = "$qmakeExe" ]
then
qmakeExe="$(cd ${qmakeExe%/qmake} 2>/dev/null && pwd)/qmake"
fi
else
echo
echo "qmake not found under specified QMAKE_PATH"
echo " QMAKE_PATH=$QMAKE_PATH"
echo "leaving unspecified"
echo
fi
fi
case "$QT_VERSION" in
(3.* | 4.[0-4]*)
# QT is too old
cat <<ERROR
----
Error: ${0##*/}
# Default to using qmake from the path
if [ -n "$qmakeExe" ]
then
addCMakeVariable "QT_QMAKE_EXECUTABLE:FILEPATH=$qmakeExe"
else
qmakeExe=qmake
fi
# Check qmake can be found
if type $qmakeExe >/dev/null 2>&1
then
# Check the Qt version selected
# parse -> "Using Qt version X.Y.Z in ..."
QtVersion=$($qmakeExe -query QT_VERSION)
# Split Major.Minor.Revision - could also use IFS hacking
set -- $(echo "$QtVersion" | sed -e 's/\./ /g')
QtMajor=$1
QtMinor=$2
if [ $QtMajor -lt 4 -o $QtMajor -eq 4 -a $QtMinor -lt 5 ]
then
echo "*** Error: Qt version provided < 4.5"
echo "*** Please use the -qmake option to specify the location of a version of Qt >= 4.5"
echo "*** e.g."
echo "*** -qmake /usr/local/qt-4.6.2/bin/qmake"
echo "*** -qmake $installBASE/qt-4.6.2/bin/qmake"
QT version ($QT_VERSION) provided < 4.5
Please use the -qmake option to specify the location of a newer QT version
For example,
... -qmake /usr/local/qt-4.6.2/bin/qmake
... -qmake $installBASE/qt-4.6.2/bin/qmake
----
ERROR
exit 1
fi
;;
(4.*)
# Default changed to Qt5 with paraview 5.2.1, so specify explicitly
addCMakeVariable "PARAVIEW_QT_VERSION=4"
# Non-system installation - specify location of qmake
if [ "$qmake" != /usr/bin/qmake ]
then
addCMakeVariable "QT_QMAKE_EXECUTABLE=$qmake"
fi
;;
(5.*)
# Default changed to Qt5 with paraview 5.2.1, so specify explicitly
addCMakeVariable "PARAVIEW_QT_VERSION=5"
# Non-system installation - find CMake config files
if [ "$qmake" != /usr/bin/qmake ] \
&& qtLib="$($qmake -query QT_INSTALL_LIBS)/cmake/Qt5" \
&& [ -d "$qtLib" ]
then
addCMakeVariable "Qt5_DIR=$qtLib"
fi
;;
esac
else
echo "*** Error: cannot find qmake either at \$QMAKE_PATH or in current \$PATH"
QT_VERSION=none
echo "Error: cannot find qmake either at \$QMAKE_PATH or in current \$PATH"
echo
exit 1
fi
}
@ -364,57 +373,20 @@ patchParaView()
#
configParaView()
{
unset cmakeExe
if [ -n "$CMAKE_PATH" ]
then
if [ -d "$CMAKE_PATH" ]
then
if [ -x "$CMAKE_PATH/cmake" ]
then
cmakeExe=$CMAKE_PATH/cmake
elif [ -x "$CMAKE_PATH/bin/cmake" ]
then
cmakeExe=$CMAKE_PATH/bin/cmake
fi
elif [ -x "$CMAKE_PATH" ]
then
cmakeExe=$CMAKE_PATH
fi
if [ -n "$cmakeExe" ]
then
# Use absolute path
if [ "${cmakeExe#/}" = "$cmakeExe" ]
then
cmakeExe="$(cd ${cmakeExe%/cmake} 2>/dev/null && pwd)/cmake"
fi
else
echo
echo "cmake not found under specified CMAKE_PATH"
echo " CMAKE_PATH=$CMAKE_PATH"
echo "leaving unspecified"
echo
fi
fi
# Default to using cmake from the path
if [ -z "$cmakeExe" ]
then
cmakeExe=cmake
fi
local cmake=$(findCMake)
# Remove any existing build folder and recreate
if [ -d $ParaView_BINARY_DIR ]
if [ -d $ParaView_BUILD_DIR ]
then
echo "removing old build directory"
echo " $ParaView_BINARY_DIR"
rm -rf $ParaView_BINARY_DIR
echo " $ParaView_BUILD_DIR"
rm -rf $ParaView_BUILD_DIR
fi
mkdir -p $ParaView_BINARY_DIR
mkdir -p $ParaView_BUILD_DIR
addCMakeVariable "CMAKE_BUILD_TYPE:STRING=$buildType"
addCMakeVariable "CMAKE_BUILD_TYPE=$BUILD_TYPE"
cd $ParaView_BINARY_DIR || exit 1 # Change to build folder
cd $ParaView_BUILD_DIR || exit 1 # Change to build folder
echo "----"
echo "Configuring paraview-$ParaView_VERSION (major version: $ParaView_MAJOR)"
@ -422,15 +394,16 @@ configParaView()
echo " Python support : ${withPYTHON:-false}"
echo " MESA support : ${withMESA:-false}"
echo " GL2 rendering : ${withGL2:-false}"
echo " Qt dev support : ${withQT:-false}"
echo " QT dev support : ${withQT:-true}"
echo " Source : $ParaView_SOURCE_DIR"
echo " Build : $ParaView_BINARY_DIR"
echo " Build : $ParaView_BUILD_DIR"
echo " Target : $ParaView_DIR"
echo " Build type : $buildType"
echo " cmake : $cmake"
echo " Build suffix : ${BUILD_SUFFIX:-none}"
echo "----"
echo
echo "$cmakeExe" \
-DCMAKE_INSTALL_PREFIX:PATH=$ParaView_DIR \
echo "$cmake" \
-DCMAKE_INSTALL_PREFIX=$ParaView_DIR \
$CMAKE_VARIABLES \
$ParaView_SOURCE_DIR
echo
@ -438,8 +411,8 @@ configParaView()
echo
# Run cmake to create Makefiles
$cmakeExe \
-DCMAKE_INSTALL_PREFIX:PATH=$ParaView_DIR \
$cmake \
-DCMAKE_INSTALL_PREFIX=$ParaView_DIR \
$CMAKE_VARIABLES \
$ParaView_SOURCE_DIR
}
@ -451,7 +424,7 @@ configParaView()
#
makeParaView()
{
cd $ParaView_BINARY_DIR || exit 1 # Change to build folder
cd $ParaView_BUILD_DIR || exit 1 # Change to build folder
echo " Starting make"
time make -j $WM_NCOMPPROCS
echo " Done make"
@ -470,40 +443,49 @@ makeParaView()
#
installParaView()
{
cd $ParaView_BINARY_DIR || exit 1 # Change to build folder
cd $ParaView_BUILD_DIR || exit 1 # Change to build folder
echo " Installing ParaView to $ParaView_DIR"
make install
cat<< INFO
---
Installation complete for paraview-$ParaView_VERSION
Now update the environment by running:
wmREFRESH
---
# System or non-system installation of QT?
local qmake qtLib QT_VERSION
if qmake=$(findQtMake 2>/dev/null)
then
qtLib=$($qmake -query QT_INSTALL_LIBS)
QT_VERSION=$($qmake -query QT_VERSION 2>/dev/null)
fi
/bin/cat<<INFO
====
Installation complete for paraview-$ParaView_VERSION with qt-${QT_VERSION:-none}
ParaView_DIR=$ParaView_DIR
You may need to update the OpenFOAM environment by running:
wmRefresh
INFO
# Non-system installation of QT?
if [ "$qmake" != /usr/bin/qmake -a -d "$qtLib" ]
then
/bin/cat<<INFO
And adjust your LD_LIBRARY_PATH to include the following:
$qtLib
INFO
fi
echo "===="
}
#------------------------------------------------------------------------------
# Clear the referenced variables before using any of the functions
unset withMPI withVERBOSE
unset withQT QMAKE_PATH
unset withMESA MESA_INCLUDE MESA_LIBRARY
unset withPYTHON PYTHON_INCLUDE PYTHON_LIBRARY
unset CMAKE_VARIABLES
unset OBJ_ADD
unset buildType
# Start with these general settings
addCMakeVariable "BUILD_SHARED_LIBS:BOOL=ON VTK_USE_RPATH:BOOL=OFF"
addCMakeVariable "BUILD_SHARED_LIBS=ON" "BUILD_TESTING=OFF"
# Include development files in "make install"
addCMakeVariable "PARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
# Don't build test tree
addCMakeVariable "BUILD_TESTING:BOOL=OFF"
addCMakeVariable "PARAVIEW_INSTALL_DEVELOPMENT_FILES=ON"
#------------------------------------------------------------------------------

View File

@ -3,146 +3,61 @@
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
# \\/ M anipulation |
# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# File
# etc/tools/QtFunction
#
# Description
# Functions for helping relocate a QT installation
# To be loaded *after* etc/tools/ThirdPartyFunctions
#
#------------------------------------------------------------------------------
# Qt-related variables. Initialization at the end of the file.
qtTYPE=qt-everywhere-opensource-src
unset qtVERSION # No default version
#------------------------------------------------------------------------------
#
# create a qt.conf file in the QT bin/
# this can be modified easily if the qt installation gets relocated
# Create a qt.conf file in the QT bin/
# - this can be modified easily if the qt installation is relocated
#
createQtConf()
{
echo "create:"
echo " $prefixDIR/bin/qt.conf"
local confFile="$QT_ARCH_PATH/bin/qt.conf"
[ -n "$prefixDIR" -a -d "$prefixDIR/bin" ] || {
echo "Error: prefixDIR not correctly set"
return
}
if [ -n "$QT_ARCH_PATH" -a -d "$QT_ARCH_PATH/bin" ]
then
/bin/cat << QT_CONF > $confFile
[Paths]
Prefix=$QT_ARCH_PATH
QT_CONF
echo " created qt.conf"
echo "[Paths]" > $prefixDIR/bin/qt.conf
echo "Prefix=$prefixDIR" >> $prefixDIR/bin/qt.conf
else
echo "Error: QT_ARCH_PATH not correctly set"
fi
}
#
# adjust pkgconfig information
# to generalize *location=, -L/... and -I/...
# to use ${prefix}
#
adjustPkgConfig()
{
echo "edit pkgconfig:"
echo " $prefixDIR/lib/pkgconfig/*.pc"
[ -n "$prefixDIR" -a -d "$prefixDIR/lib/pkgconfig" ] || {
echo "Error: prefixDIR not correctly set"
return
}
(
cd $prefixDIR/lib/pkgconfig || exit
unset nfiles
for i in *.pc
do
if [ -f "$i" ]
then
nfiles="x$nfiles"
sed -i \
-e 's@\(location=\)'"$prefixDIR/"'@\1${prefix}/@' \
-e 's@\(-[IL]\)'"$prefixDIR/"'@\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 " $prefixDIR"
echo "edit:"
echo " $prefixDIR/bin/qt.conf"
echo " $prefixDIR/lib/pkgconfig/*.pc"
[ -n "$prefixDIR" -a -d "$prefixDIR/bin" -a -d "$prefixDIR/lib/pkgconfig" ] || {
echo "Error: prefixDIR not correctly set"
return
}
# adjust qt.conf
for i in $prefixDIR/bin/qt.conf
do
if [ -f "$i" ]
then
nfiles="x$nfiles"
sed -i \
-e 's@^\([Pp]refix=\).*$@\1'"$prefixDIR@" \
$i
echo " edited 1 file"
fi
done
# adjust pkgconfig files
(
cd $prefixDIR/lib/pkgconfig || exit
unset nfiles
for i in *.pc
do
if [ -f "$i" ]
then
nfiles="x$nfiles"
sed -i \
-e 's@^\([Pp]refix=\).*$@\1'"$prefixDIR@" \
$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
# -----------------------------------------------------------------------------

View File

@ -3,38 +3,99 @@
# \\ / 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.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# File
# etc/tools/ThirdPartyFunctions
#
# Description
# Functions for managing the third-party packages
# Various functions used in building ThirdParty packages
#
# Define the standard buildBASE and installBASE for the platform
# Define WM_NCOMPPROCS always.
#------------------------------------------------------------------------------
# Define the normal build and prefix directories
# The normal locations for source, build and installation (prefix-dir)
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 <mpicc> by default or <mpiicc> if possible for INTELMPI.
# Cray doesn't have <mpicc>, but its <cc> manages mpi paths directly.
# NOTE: could further refine based on $CC or $WM_CC, but not yet needed
whichMpicc()
{
local mpicc=$(command -v mpicc)
case "$WM_MPLIB" in
(INTELMPI)
mpicc=$(command -v mpiicc) # Intel <mpiicc> available?
;;
(CRAY-MPI*)
: ${mpicc:=cc} # Cray <cc> if there is no <mpicc>
;;
esac
echo "${mpicc:-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
@ -49,7 +110,6 @@ else
WM_NCOMPPROCS=1
fi
export WM_NCOMPPROCS
# echo "Building on $WM_NCOMPPROCS cores"
#
@ -85,6 +145,247 @@ _foamIsSystem()
}
#
# 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 foundExe
if [ -n "$CMAKE_PATH" ]
then
# Check as directory
if [ -d "$CMAKE_PATH" ]
then
for candidate in \
$CMAKE_PATH/cmake \
$CMAKE_PATH/bin/cmake \
;
do
if [ -f "$candidate" -a -x "$candidate" ]
then
foundExe=$candidate
break
fi
done
fi
# Check as file, include ThirdParty installation in the search
if [ -z "$foundExe" ]
then
for candidate in \
$CMAKE_PATH \
$installBASE/$CMAKE_PATH/bin/cmake \
$installBASE/cmake-$CMAKE_PATH/bin/cmake \
;
do
if [ -f "$candidate" -a -x "$candidate" ]
then
foundExe=$candidate
break
fi
done
fi
if [ -n "$foundExe" ]
then
# Use absolute path
if [ "${foundExe#/}" = "$foundExe" ]
then
foundExe="$(cd ${foundExe%/cmake} 2>/dev/null && pwd)/cmake"
fi
echo "Using cmake=$foundExe" 1>&2
echo $foundExe
return 0
else
cat << NOT_FOUND 1>&2
'cmake' not found under specified CMAKE_PATH
CMAKE_PATH=$CMAKE_PATH
reverting to using command from path
NOT_FOUND
fi
fi
# 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
#
# 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 foundExe
if [ -n "$QMAKE_PATH" ]
then
# Check as directory
if [ -d "$QMAKE_PATH" ]
then
for candidate in \
$QMAKE_PATH/qmake \
$QMAKE_PATH/bin/qmake \
;
do
if [ -f "$candidate" -a -x "$candidate" ]
then
foundExe=$candidate
break
fi
done
fi
# Check as file, include ThirdParty installation in the search
if [ -z "$foundExe" ]
then
for candidate in \
$QMAKE_PATH \
$installBASE/$QMAKE_PATH/bin/qmake \
$installBASE/qt-$QMAKE_PATH/bin/qmake \
;
do
if [ -f "$candidate" -a -x "$candidate" ]
then
foundExe=$candidate
break
fi
done
fi
if [ -n "$foundExe" ]
then
# Use absolute path
if [ "${foundExe#/}" = "$foundExe" ]
then
foundExe="$(cd ${foundExe%/qmake} 2>/dev/null && pwd)/qmake"
fi
echo "Using qmake=$foundExe" 1>&2
echo $foundExe
return 0
else
cat << NOT_FOUND 1>&2
'qmake' not found under specified QMAKE_PATH
QMAKE_PATH=$QMAKE_PATH
reverting to using command from path
NOT_FOUND
fi
fi
# Default to use the path, try resolving (so we know what we are using)
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
}
#
# Download file $1 from url $2 into download/ directory
#
@ -108,14 +409,12 @@ downloadFile()
#
# Copy Make/{files,options} from etc/wmakeFiles/PACKAGE
# Copy Make/{files,options} from etc/makeFiles/PACKAGE
#
# $1 = PACKAGE
# $2 = TARGET DIRECTORY (optional)
cpMakeFiles()
{
set +x
[ "$#" -eq 1 -o "$#" -eq 2 ] || {
echo "cpMakeFiles called with incorrect number of arguments $@"
return 1
@ -125,7 +424,7 @@ cpMakeFiles()
local dst="${2:-.}"
echo "cpMakeFiles" $pkg $dst
wmakeFiles=$WM_THIRD_PARTY_DIR/etc/wmakeFiles/$pkg
wmakeFiles=$WM_THIRD_PARTY_DIR/etc/makeFiles/$pkg
for i in $(cd $wmakeFiles && find . -type f)
do
@ -147,8 +446,6 @@ cpMakeFiles()
cp $wmakeFiles/$i $dst/$d/Make/$b
fi
done
set -x
}
@ -181,7 +478,7 @@ applyPatch()
else
echo "apply patch for $pkg"
touch "$sentinel"
patch -p1 < $patch 2>&1 | tee $sentinel
patch -b -l -p1 < $patch 2>&1 | tee $sentinel
fi
)
else

195
etc/tools/vtkFunctions Normal file
View File

@ -0,0 +1,195 @@
#---------------------------------*- sh -*-------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# File
# etc/tools/vtkFunctions
#
# Description
# VTK (library) make/install helper functions.
# To be loaded *after* etc/tools/ParaViewFunctions
#
#------------------------------------------------------------------------------
# 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_BUILD_DIR : location of the build
# VTK_DIR : location of the installed program
#
setVtkDirs()
{
set -- "VTK-$VTK_VERSION" "VTK-v$VTK_VERSION"
unset VTK_SOURCE_DIR
for i
do
VTK_SOURCE_DIR="$sourceBASE/$i"
[ -d "$VTK_SOURCE_DIR" ] && break
done
[ -d "$VTK_SOURCE_DIR" ] || {
echo "Did not locate VTK version:"
while [ "$#" -ge 1 ]; do echo " $1"; shift; done
echo
echo "In the directory:"
echo " $sourceBASE"
echo
echo "abort build"
exit 1
}
VTK_BUILD_DIR=$buildBASE/VTK-$VTK_VERSION$BUILD_SUFFIX
VTK_DIR=$installBASE/VTK-$VTK_VERSION$BUILD_SUFFIX
export VTK_SOURCE_DIR VTK_BUILD_DIR VTK_DIR
echo
echo "VTK_SOURCE_DIR=$VTK_SOURCE_DIR"
echo "VTK_BUILD_DIR=$VTK_BUILD_DIR"
echo "VTK_DIR=$VTK_DIR"
export GIT_DIR=$VTK_SOURCE_DIR/.git # Mask seeing our own git-repo
}
#
# Set VTK_VERSION and adjust VTK_MAJOR accordingly
#
# $1 can contain something something like 4.4.0, vtk-4.4.0, VTK-4.0.0
#
setVtkVersion()
{
[ $# -gt 0 ] || {
echo "Error: function setVtkVersion() called without an argument"
exit 1
}
VTK_VERSION="${1##*-}"
# The major version is "<digits>.<digits>"
VTK_MAJOR=$(echo $VTK_VERSION | \
sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/')
export VTK_VERSION VTK_MAJOR
}
#------------------------------------------------------------------------------
#
# Apply source-code patch if possible
#
patchVTK()
{
applyPatch "vtk-$VTK_VERSION" "$VTK_SOURCE_DIR"
}
#
# Configure via cmake, but don't actually build anything
#
configVTK()
{
local cmake=$(findCMake)
# Remove any existing build folder and recreate
if [ -d $VTK_BUILD_DIR ]
then
echo "removing old build directory"
echo " $VTK_BUILD_DIR"
rm -rf $VTK_BUILD_DIR
fi
mkdir -p $VTK_BUILD_DIR
addCMakeVariable "CMAKE_BUILD_TYPE=$BUILD_TYPE"
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_BUILD_DIR"
echo " Target : $VTK_DIR"
echo " cmake : $cmake"
echo " Build suffix : ${BUILD_SUFFIX:-none}"
echo "----"
echo
echo "$cmake" \
-DCMAKE_INSTALL_PREFIX=$VTK_DIR \
$CMAKE_VARIABLES \
$VTK_SOURCE_DIR
echo
echo "----"
echo
# Run cmake to create Makefiles
$cmake \
-DCMAKE_INSTALL_PREFIX=$VTK_DIR \
$CMAKE_VARIABLES \
$VTK_SOURCE_DIR
}
#
# Invoke make
# also link bin/ to lib/paraview-* for development without installation
#
makeVTK()
{
cd $VTK_BUILD_DIR || exit 1 # Change to build folder
echo " Starting make"
time make -j $WM_NCOMPPROCS
# Remove lib if it is a link
# (how this was previously handled before 'make install' worked)
[ -L lib ] && rm -f lib 2>/dev/null
echo " Done make" # Last statement for clean return code
}
#
# Install the program
#
installVTK()
{
cd $VTK_BUILD_DIR || exit 1 # Change to build folder
echo " Installing VTK to $VTK_DIR"
make install
/bin/cat<<INFO
====
Installation complete for vtk-$VTK_VERSION as
VTK_DIR=$VTK_DIR
====
INFO
}
#------------------------------------------------------------------------------
# Start with these general settings
addCMakeVariable "BUILD_SHARED_LIBS=ON" "BUILD_TESTING=OFF"
#------------------------------------------------------------------------------

View File

@ -1,27 +0,0 @@
/* NOTE: make any changes to this file in etc/wmakeFiles/ */
adf = libadf
$(adf)/ADF_fortran_2_c.c
$(adf)/ADF_interface.c
$(adf)/ADF_internals.c
ccmio = libccmio
$(ccmio)/ccmio.c
$(ccmio)/ccmiocore.c
$(ccmio)/ccmioprivate.c
$(ccmio)/ccmioutility.c
$(ccmio)/ccmioversion.c
/*
* the cgns library is not used by ccmio
* retain for documentation purposes only
*
cgns = libcgns
$(cgns)/adf_cond.c
$(cgns)/adf_ftoc.c
$(cgns)/cgns_error.c
$(cgns)/cgns_internals.c
$(cgns)/cgnslib.c
*/
LIB = $(FOAM_EXT_LIBBIN)/libccmio

View File

@ -1,3 +0,0 @@
/* NOTE: make any changes to this file in etc/wmakeFiles/ */
/* EXE_INC = */

View File

@ -1,21 +0,0 @@
EXE =
LIB = .so
OBJ = .o
MAKE = make
AR = gcc
ARFLAGS = -m32 -shared -o
CAT = cat
CCS = gcc
CCP = mpicc
CCD = mpicc
CFLAGS = -m32 -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Drestrict=__restrict
CLIBFLAGS = -shared -fPIC
LDFLAGS = -Xlinker --no-as-needed -L$MPI_ARCH_PATH/lib -m32 -lz -lm -lrt
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = echo
YACC = bison -pscotchyy -y -b y

View File

@ -1,21 +0,0 @@
EXE =
LIB = .so
OBJ = .o
MAKE = make
AR = gcc
ARFLAGS = -shared -o
CAT = cat
CCS = gcc
CCP = mpicc
CCD = mpicc
CFLAGS = -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Drestrict=__restrict
CLIBFLAGS = -shared -fPIC
LDFLAGS = -Xlinker --no-as-needed -lz -lm -lrt
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = echo
YACC = bison -pscotchyy -y -b y

View File

@ -1,21 +0,0 @@
EXE =
LIB = .so
OBJ = .o
MAKE = make
AR = gcc
ARFLAGS = -shared -o
CAT = cat
CCS = gcc
CCP = mpicc
CCD = mpicc
CFLAGS = -O3 -DINTSIZE64 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Drestrict=__restrict
CLIBFLAGS = -shared -fPIC
LDFLAGS = -Xlinker --no-as-needed -lz -lm -lrt
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = echo
YACC = bison -pscotchyy -y -b y

362
makeADIOS Executable file
View File

@ -0,0 +1,362 @@
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeADIOS
#
# Description
# Build script for ADIOS
#
# ----------------------------------------------
# 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
#------------------------------------------------------------------------------
# ADIOS version from OpenFOAM etc/config.sh file:
_foamEtc config.sh/ADIOS
adiosPACKAGE=${adios_version:-adios-none}
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: ${0##*/} [OPTION] [adios-VERSION] [-- configure-options]
options:
-cmake PATH With cmake from the path given
-gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
* Build ADIOS
$adiosPACKAGE
USAGE
exit 1
}
#------------------------------------------------------------------------------
# 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"
[ -n "$WM_CXXFLAGS" ] && export CXXFLAGS="$WM_CXXFLAGS"
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
--) break;; # Extra configure options (leave on $@ for later detection)
-h | -help) usage ;;
-gcc) useGcc ;;
-cmake)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
CMAKE_PATH="${2%%/}"
shift
;;
ADIOS-[1-9]* | adios-[1-9]* | ADIOS-git* | adios-git*)
adiosPACKAGE="${1%%/}"
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
[ -n "$adiosPACKAGE" ] || die "The adios-VERSION was not specified"
# Nothing to build
if _foamIsNone "$adiosPACKAGE"
then
echo "Using adios-none (skip ThirdParty build of ADIOS)"
exit 0
elif _foamIsSystem "$adiosPACKAGE"
then
echo "Using adios-system"
exit 0
fi
#------------------------------------------------------------------------------
#
# Build ADIOS
# ADIOS_SOURCE_DIR : location of the original sources
# ADIOS_ARCH_PATH : installation directory
ADIOS_SOURCE_DIR=$sourceBASE/$adiosPACKAGE
ADIOS_ARCH_PATH=$installBASE/$adiosPACKAGE
: ${FOAM_MPI:=dummy}
echo
echo ========================================
echo "Build adios library $adiosPACKAGE for $FOAM_MPI"
echo
#
# Manual adjustments to adios config
#
adjustADIOS()
{
# Rename libraries according to FOAM_MPI
(
cd $ADIOS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH || exit 1
if [ "$FOAM_MPI" != dummy ]
then
\mv -f libadios.a libadios_$FOAM_MPI.a
\mv -f libadiosread.a libadiosread_$FOAM_MPI.a
fi
\mv -f libadios_nompi.a libadios_dummy.a
\mv -f libadiosread_nompi.a libadiosread_dummy.a
echo
echo "ADIOS library renamed to libadios_$FOAM_MPI"
echo
)
# We don't need/use XML things
\rm -f $ADIOS_ARCH_PATH/bin/adios_lint
# Replace resolved paths with variables
echo "Adjust prefix for ADIOS"
for i in \
$ADIOS_ARCH_PATH/bin/adios_config \
$ADIOS_ARCH_PATH/etc/adios_config.flags \
;
do
[ -f "$i" ] || {
echo " no such file - '$i'"
continue
}
if sed -i -e 's|'"$WM_THIRD_PARTY_DIR"'|$WM_THIRD_PARTY_DIR|g' $i
then
echo " '$i'"
else
echo " problems with '$i'"
fi
done
# Adjust the config flags file:
# * Remove references to Fortran libraries (disabled in configure)
# * Remove references to deprecated version 1 API
# * Cleanup excessive whitespace
# * Handle renamed libraries:
# - libadios -> libadios_$FOAM_MPI
# - libadios_nompi -> libadios_dummy
#
echo "Adjust library names for ADIOS"
for i in \
$ADIOS_ARCH_PATH/etc/adios_config.flags \
;
do
[ -f "$i" ] || {
echo " no such file - '$i'"
continue
}
if sed -i \
-e '/_FLIB=/d' \
-e '/_V1_INC=/d' \
-e 's| *| |g' \
-e 's|\(-ladios[a-z]*_\)nompi |\1dummy |g' \
$i
then
echo " '$i'"
else
echo " problems with '$i'"
fi
if [ "$FOAM_MPI" != dummy ]
then
sed -i -e 's|\(-ladios[a-z]*\) |\1_'"$FOAM_MPI |g" $i || \
echo " problems with '$i'"
fi
done
}
#
# List ADIOS methods/configuration
#
listMethods()
{
[ -f $ADIOS_ARCH_PATH/bin/adios_config ] || {
echo "Warning: no adios_config"
return 1
}
echo "==============="
# May have problems listing parallel methods (eg, transport key missing)
if $ADIOS_ARCH_PATH/bin/adios_config -m >/dev/null 2>&1
then
$ADIOS_ARCH_PATH/bin/adios_config -m 2>/dev/null
else
echo "Warning: could not list parallel methods"
# Fallback to serial methods
$ADIOS_ARCH_PATH/bin/adios_config -s -m 2>/dev/null
fi || echo "Warning: could not list configured methods"
echo "==============="
}
# Needs future adjustment
# - for shared library
# - for mpi-specific library locations
if [ -f $ADIOS_ARCH_PATH/include/adios.h \
-a -r $ADIOS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libadios_${FOAM_MPI}.a ]
then
echo " ADIOS header in $ADIOS_ARCH_PATH/include"
### echo " ADIOS libs in $FOAM_EXT_LIBBIN" # dynamic
echo " ADIOS libs in $ADIOS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" # static
listMethods
elif [ -z "$CMAKE_PATH" ]
then
echo "Starting build: $adiosPACKAGE (using configure)"
echo
(
# Configuration options:
unset configOpt
# Add InfiniBand support
ibDir=/usr/local/ofed
if [ -d "$ibDir" -a "$FOAM_MPI" != dummy ]
then
configOpt="$configOpt --with-infiniband=$ibDir"
fi
# Transport layers
if [ -f /usr/include/bzlib.h ]
then
configOpt="$configOpt --with-bzip2"
fi
if [ -f /usr/include/zlib.h ]
then
configOpt="$configOpt --with-zlib"
fi
# Other types of support
## configOpt="$configOpt --with-hdf5=..."
## configOpt="$configOpt --with-lustre=..."
## configOpt="$configOpt --enable-research-transports"
# Additional configure options
if [ "$1" = "--" ]
then
shift
configOpt="$configOpt $@"
fi
# End of configuration options
# ----------------------------
buildDIR=$buildBASE/$adiosPACKAGE
cd $ADIOS_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
[ -e Makefile ] && make distclean 2>/dev/null
applyPatch $adiosPACKAGE $ADIOS_SOURCE_DIR
# Remove any existing build folder and recreate
rm -rf $ADIOS_ARCH_DIR
rm -rf $buildDIR 2>/dev/null
mkdir -p $buildDIR
[ -f configure ] || {
echo "no configure for $adiosPACKAGE ... trying autogen"
./autogen.sh
}
# May not work properly with FOAM_MPI = dummy
if [ "$FOAM_MPI" = dummy ]
then
configOpt="$configOpt --without-mpi"
else
CC=mpicc
CXX=mpicxx
fi
# Install into lib64/
cd $buildDIR && $ADIOS_SOURCE_DIR/configure \
--prefix=$ADIOS_ARCH_PATH \
--libdir=$ADIOS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \
--disable-fortran \
--with-pic \
--without-fastbit \
$configOpt \
&& make -j $WM_NCOMPPROCS all \
&& make install \
&& echo "Built: $adiosPACKAGE" \
&& adjustADIOS \
&& listMethods
) || {
echo "Error building: $adiosPACKAGE"
}
else
# CMake options often lag the configure ones
echo "Starting build: $adiosPACKAGE (using cmake)"
echo
(
buildDIR=$buildBASE/$adiosPACKAGE
cd $ADIOS_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
applyPatch $adiosPACKAGE $ADIOS_SOURCE_DIR
# Remove any existing build folder and recreate
rm -rf $ADIOS_ARCH_DIR
rm -rf $buildDIR 2>/dev/null
mkdir -p $buildDIR
# May not work properly with FOAM_MPI = dummy
if [ "$FOAM_MPI" = dummy ]
then
configOpt="$configOpt --without-mpi"
else
CC=mpicc
CXX=mpicxx
fi
cmake=$(findCMake)
# Install into lib64/
cd $buildDIR && $cmake \
-DCMAKE_INSTALL_PREFIX=$ADIOS_ARCH_PATH \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_FORTRAN=FALSE \
${WM_QUIET:+-DCMAKE_RULE_MESSAGES=OFF} \
$ADIOS_SOURCE_DIR \
&& make -j $WM_NCOMPPROCS all \
&& make install \
&& echo "Built: $adiosPACKAGE" \
&& adjustADIOS \
&& listMethods
) || {
echo "Error building: $adiosPACKAGE"
}
fi
# -----------------------------------------------------------------------------

133
makeCCMIO
View File

@ -4,56 +4,42 @@
# \\ / 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.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeCCMIO
#
# Description
# Build CD-adapco's ccmio library
# Build the libccmio library
#
# ----------------------------------------------
# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE
#------------------------------------------------------------------------------
# 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=libso
#------------------------------------------------------------------------------
# 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
}
[ -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()
{
exec 1>&2
@ -62,13 +48,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,15 +66,16 @@ options:
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
;;
'') ;; # Ignore empty
-h | -help) usage ;;
-gcc) useGcc ;;
lib|libso)
targetType="$1"
;;
@ -101,39 +89,58 @@ do
shift
done
# assert: directory must be available
[ -d "${ccmioPACKAGE}" ] || die "missing source directory '$ccmioPACKAGE'"
#------------------------------------------------------------------------------
CCMIO_ARCH_PATH=$installBASE/$ccmioPACKAGE
#
# Build LIBCCMIO
#
echo "---------------"
(
cd $ccmioPACKAGE || exit 1
incDIR=$CCMIO_ARCH_PATH/include/libccmio
libDIR=$CCMIO_ARCH_PATH/lib
CCMIO_SOURCE_DIR=$sourceBASE/$ccmioPACKAGE
CCMIO_ARCH_PATH=$installBASE/$ccmioPACKAGE
mkdir -p $incDIR 2>/dev/null
mkdir -p $libDIR 2>/dev/null
# Sources must be available
[ -d "$CCMIO_SOURCE_DIR" ] || die "Missing sources: '$ccmioPACKAGE'"
#
# Manual installation
#
install()
{
# Ensure a clean build next time
wclean
local incdir=$CCMIO_ARCH_PATH/include/libccmio
# Make headers available:
mkdir -m 0755 -p $incdir
/bin/cp -pv libccmio/ccmio*.h $incdir
}
echo "Starting build: $ccmioPACKAGE ($targetType)"
echo
(
cd $CCMIO_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
rm -rf $CCMIO_ARCH_PATH
rm -f $FOAM_EXT_LIBBIN/libccmio.so
libdir=$CCMIO_ARCH_PATH/lib
cpMakeFiles libccmio 2>/dev/null
set +x
if wmake $targetType
# Place static libraries in sub-directory:
if [ "$targetType" = lib ]
then
# 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
mkdir -m 0755 -p $libdir 2>/dev/null
export FOAM_EXT_LIBBIN=$libdir
fi
)
wmake -j $WM_NCOMPPROCS -s $targetType \
&& echo "Built: ccmio" \
&& install
) || {
echo "Error building: ccmio"
exit 1
}
#------------------------------------------------------------------------------

275
makeCGAL
View File

@ -4,23 +4,11 @@
# \\ / 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.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeCGAL
@ -34,14 +22,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 include: $dir/include"
echo " CGAL library: $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 include: $root/include"
echo " boost library: $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
_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/CGAL)
_foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/compiler)
# 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}
@ -49,25 +74,16 @@ 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<<USAGE
usage: $Script [OPTION] [CGAL-VERSION] [boost-VERSION] [gmp-VERSION] [mpfr-VERSION]
usage: ${0##*/} [OPTION] [CGAL-VERSION] [boost-VERSION] [gmp-VERSION] [mpfr-VERSION]
options:
-cmake PATH with cmake from the path given
-gcc force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-no-lib compile CGAL for use in headers only mode (since CGAL 4.9)
-system use system versions for boost/gmp/mpfr
-help
@ -80,47 +96,55 @@ options:
Normally builds against ThirdParty boost and gmp/mpfr when possible.
To override this behaviour (and use the system boost and/or gmp/mpfr),
simply specify a 'system' version. For example,
$Script boost-system gmp-system
${0##*/} boost-system gmp-system
Use gmp-none to disable use of gmp/mpfr (eg, not available)
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Ensure CMake gets the correct C/C++ compiler
[ -n "$WM_CC" ] && export CC="$WM_CCX"
# Compiler settings for CMake/configure
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
unset optHeadersOnly
# Parse options
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 ;;
-cmake)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
CMAKE_PATH="${2%%/}"
shift
;;
-sys*)
gmpPACKAGE="gmp-system"
mpfrPACKAGE="mpfr-system"
boostPACKAGE="boost-system"
unset BOOST_ARCH_PATH # avoid inconsistency
;;
gmp-[4-9]* | gmp-system)
-no-lib)
optHeadersOnly=true
;;
gmp-[4-9]* | gmp-system | gmp-none)
gmpPACKAGE="${1%%/}"
;;
mpfr-[2-9]* | mpfr-system)
mpfr-[2-9]* | mpfr-system | mpfr-none)
mpfrPACKAGE="${1%%/}"
;;
CGAL-[0-9]*)
cgalPACKAGE="${1%%/}"
unset CGAL_ARCH_PATH # avoid inconsistency
;;
boost-[0-9]* | boost_[0-9]* | boost-system )
boostPACKAGE="${1%%/}"
unset BOOST_ARCH_PATH # avoid inconsistency
;;
*)
die "unknown option/argument: '$1'"
@ -131,13 +155,13 @@ done
[ -n "$cgalPACKAGE" ] || die "The cgal-VERSION was not specified"
# nothing to build
if _foamIsNone "$boostPACKAGE"
# Nothing to build
if _foamIsNone $boostPACKAGE
then
echo "Using boost-none (skip ThirdParty build of BOOST/CGAL)"
exit 0
fi
if _foamIsNone "$cgalPACKAGE"
if _foamIsNone $cgalPACKAGE
then
echo "Using cgal-none (skip ThirdParty build of CGAL)"
exit 0
@ -146,39 +170,47 @@ fi
#------------------------------------------------------------------------------
#
# Build Boost
# For 64-bit
# - Third-Party builds into 'lib'
# For 64-bit:
# - system is normally built into 'lib64'
# - use Third-Party 'lib64' for consistency.
# Boost 1_62_0 and older normally build into 'lib'.
#
# BOOST_ARCH_PATH : installation directory
# BOOST_SOURCE_DIR : location of the original sources
BOOST_ARCH_PATH=$installBASE/$boostPACKAGE
BOOST_SOURCE_DIR=$WM_THIRD_PARTY_DIR/$boostPACKAGE
BOOST_SOURCE_DIR=$sourceBASE/$boostPACKAGE
: ${BOOST_ARCH_PATH:=$installBASE/$boostPACKAGE} # Fallback
if [ -d "$BOOST_ARCH_PATH" ]
then
boostInc="$BOOST_ARCH_PATH/include"
boostLib="$BOOST_ARCH_PATH/lib"
elif _foamIsSystem $BOOST_ARCH_PATH
boostInc="$BOOST_ARCH_PATH/include"
boostLib="$BOOST_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH"
if _foamIsSystem $boostPACKAGE
then
echo "Using boost-system (skip ThirdParty build of BOOST)"
boostInc="/usr/include"
boostLib="/usr/lib$WM_COMPILER_LIB_ARCH"
else
echo "Starting build: boost"
echo
# Tagged as 'system' but could actually point to a central location
[ -d "$BOOST_ARCH_PATH/include" ] || {
boostInc="/usr/include"
boostLib="/usr/lib$WM_COMPILER_LIB_ARCH"
}
boostInc="$BOOST_ARCH_PATH/include"
boostLib="$BOOST_ARCH_PATH/lib"
elif [ -f "$boostInc/boost/version.hpp" ]
then
echo "Using $boostPACKAGE"
else
echo "Starting build: $boostPACKAGE"
echo
# Absolute path for --libdir
(
cd $BOOST_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
rm -rf $BOOST_ARCH_PATH
./bootstrap.sh \
--prefix=$BOOST_ARCH_PATH \
--libdir=$boostLib \
--with-libraries=thread \
--with-libraries=system \
&& ./bjam toolset=$WM_CC -j $WM_NCOMPPROCS install \
@ -190,7 +222,7 @@ else
fi
# nothing left to build
if _foamIsSystem "$cgalPACKAGE"
if _foamIsSystem $cgalPACKAGE
then
echo "Using cgal-system (skip ThirdParty build of CGAL)"
exit 0
@ -225,26 +257,37 @@ SUMMARY
#------------------------------------------------------------------------------
#
# Build CGAL
# For 64-bit
# - Third-Party builds into 'lib'
# For 64-bit:
# - system is normally built into 'lib64'
# - use Third-Party 'lib64' for consistency.
# CGAL-4.9 normally builds into 'lib64', older versions into 'lib'.
#
# CGAL_SOURCE_DIR : location of the original sources
# CGAL_BINARY_DIR : location of the build
# CGAL_DIR : location of the installed program
# CGAL_BUILD_DIR : location of the build
# CGAL_ARCH_PATH : installation directory
CGAL_SOURCE_DIR=$WM_THIRD_PARTY_DIR/$cgalPACKAGE
CGAL_BINARY_DIR=$buildBASE/$cgalPACKAGE
CGAL_ARCH_PATH=$installBASE/$cgalPACKAGE
CGAL_DIR=$CGAL_ARCH_PATH
CGAL_SOURCE_DIR=$sourceBASE/$cgalPACKAGE
CGAL_BUILD_DIR=$buildBASE/$cgalPACKAGE
: ${CGAL_ARCH_PATH:=$installBASE/$cgalPACKAGE} # Fallback
#
# gmp/mpfr installed without compiler name
# gmp/mpfr are installed without compiler name
installBASE=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH
GMP_ARCH_PATH=$installBASE/$gmpPACKAGE
MPFR_ARCH_PATH=$installBASE/$mpfrPACKAGE
# Enable/disable gmp/mpfr together
if _foamIsNone $gmpPACKAGE || _foamIsNone $mpfrPACKAGE
then
GMP_ARCH_PATH=none
MPFR_ARCH_PATH=none
elif _foamIsSystem $GMP_ARCH_PATH || _foamIsSystem $MPFR_ARCH_PATH
then
GMP_ARCH_PATH=system # for an accurate record
MPFR_ARCH_PATH=system
fi
#
# build information recorded for later use
#
@ -255,12 +298,18 @@ recordCGALinfo()
CGAL_VERSION=$(sed -ne 's/^ *# *define *CGAL_VERSION_NR *\([0-9][0-9]*\).*$/\1/p' $CGAL_ARCH_PATH/include/CGAL/version.h 2>/dev/null)
cat<<BUILD_INFO > $buildInfoFile
# Information from OpenFOAM build on '$(date)'
#
CGAL=${CGAL_ARCH_PATH##*/}
BOOST=${BOOST_ARCH_PATH##*/}
GMP=${GMP_ARCH_PATH##*/}
MPFR=${MPFR_ARCH_PATH##*/}
CGAL_VERSION=$CGAL_VERSION
BOOST_VERSION=$BOOST_VERSION
CGAL_lib=lib$WM_COMPILER_LIB_ARCH
BOOST_lib=lib$WM_COMPILER_LIB_ARCH
CGAL_HEADER_ONLY=${optHeadersOnly:-false}
BUILD_INFO
}
@ -287,6 +336,8 @@ cgalIsCurrent()
local info=$(cat $buildInfoFile 2>/dev/null)
[ -n "$info" ] || return 1
local libDirName="lib$WM_COMPILER_LIB_ARCH"
echo "checking information from existing build ..."
echo " ${CGAL_ARCH_PATH}"
@ -295,10 +346,13 @@ cgalIsCurrent()
infoValueEq GMP "${GMP_ARCH_PATH##*/}" "$info" || return 1
infoValueEq MPFR "${MPFR_ARCH_PATH##*/}" "$info" || return 1
infoValueEq BOOST_VERSION "${BOOST_VERSION}" "$info" || return 1
infoValueEq CGAL_lib "$libDirName" "$info" || return 1
infoValueEq BOOST_lib "$libDirName" "$info" || return 1
return 0
}
if cgalIsCurrent
then
echo " ${CGAL_ARCH_PATH##*/} build appears to be up-to-date - skipping"
@ -308,25 +362,37 @@ fi
(
# Remove any existing build folder and recreate
if [ -d $CGAL_BINARY_DIR ]
if [ -d $CGAL_BUILD_DIR ]
then
echo "removing old build directory"
echo " $CGAL_BINARY_DIR"
rm -rf $CGAL_BINARY_DIR
echo " $CGAL_BUILD_DIR"
rm -rf $CGAL_BUILD_DIR
fi
mkdir -p $CGAL_BINARY_DIR
mkdir -p $CGAL_BUILD_DIR
cd $CGAL_BINARY_DIR || exit 1
cd $CGAL_BUILD_DIR || exit 1
export GIT_DIR=$CGAL_SOURCE_DIR/.git # Mask seeing our own git-repo
unset configBoost configGmp configMpfr
echo "----"
echo "Configuring $cgalPACKAGE with boost $BOOST_VERSION"
echo " Source : $CGAL_SOURCE_DIR"
echo " Build : $CGAL_BINARY_DIR"
echo " Target : $CGAL_DIR"
echo " Build : $CGAL_BUILD_DIR"
echo " Target : $CGAL_ARCH_PATH"
if [ -d "$BOOST_ARCH_PATH" ]
# See http://doc.cgal.org/latest/Manual/installation.html
if _foamIsSystem $boostPACKAGE
then
echo " system : boost"
# Tagged as 'system' but could actually point to a central location
if [ -d "$BOOST_ARCH_PATH/include" ]
then
configBoost="-DBOOST_ROOT=$BOOST_ARCH_PATH"
fi
## For system - possible that /usr/lib64 not being found?
## configBoost="-DBoost_LIBRARY_DIRS=$boostLib"
elif [ -d "$BOOST_ARCH_PATH" ]
then
echo " ThirdParty : boost"
configBoost=$(cat <<CMAKE_OPTIONS
@ -338,16 +404,17 @@ fi
-DBoost_SYSTEM_LIBRARY_RELEASE=$boostLib/libboost_system.so
-DBoost_VERSION=$BOOST_VERSION
CMAKE_OPTIONS
)
else
echo " system : boost"
configBoost=$(cat <<CMAKE_OPTIONS
-DBOOST_LIBRARYDIR=$boostLib
CMAKE_OPTIONS
)
fi
if [ -d "$GMP_ARCH_PATH" ]
if _foamIsSystem $GMP_ARCH_PATH
then
echo " system : gmp"
elif _foamIsNone $GMP_ARCH_PATH
then
echo " disabled : gmp"
configGmp="-DCGAL_DISABLE_GMP=TRUE" # Also used for mpfr
elif [ -d "$GMP_ARCH_PATH" ]
then
echo " ThirdParty : gmp"
configGmp=$(cat <<CMAKE_OPTIONS
@ -359,10 +426,17 @@ CMAKE_OPTIONS
CMAKE_OPTIONS
)
else
echo " system : gmp"
echo " system : gmp (did not find $GMP_ARCH_PATH)"
fi
if [ -d "$MPFR_ARCH_PATH" ]
if _foamIsSystem $MPFR_ARCH_PATH
then
echo " system : mpfr"
elif _foamIsNone $MPFR_ARCH_PATH
then
echo " disabled : mpfr"
configGmp="-DCGAL_DISABLE_GMP=TRUE" # Also used for mpfr
elif [ -d "$MPFR_ARCH_PATH" ]
then
echo " ThirdParty : mpfr"
configMpfr=$(cat <<CMAKE_OPTIONS
@ -372,17 +446,26 @@ CMAKE_OPTIONS
CMAKE_OPTIONS
)
else
echo " system : mpfr"
echo " system : mpfr (did not find $MPFR_ARCH_PATH)"
fi
cmake=$(findCMake)
# For CGAL < 4.9, for installation into lib64/, not lib/
# Name only (not path) for CGAL_INSTALL_LIB_DIR
echo "----"
set -x
cmake \
$cmake \
-DCMAKE_INSTALL_PREFIX=$CGAL_ARCH_PATH \
-DCGAL_INSTALL_LIB_DIR=lib$WM_COMPILER_LIB_ARCH \
-DCMAKE_BUILD_TYPE=Release \
-DWITH_CGAL_ImageIO=OFF \
-DWITH_CGAL_Qt5=OFF \
${optHeadersOnly:+-DCGAL_HEADER_ONLY=TRUE} \
$configBoost $configGmp $configMpfr \
${WM_QUIET:+-DCMAKE_RULE_MESSAGES=OFF} \
$CGAL_SOURCE_DIR \
&& set +x \
&& make -j $WM_NCOMPPROCS \
&& make install || exit 1

132
makeCmake
View File

@ -4,77 +4,70 @@
# \\ / 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.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeCmake
#
# Description
# Build script for cmake
# Build script for cmake.
#
# The '-link' option can be used to create a 'cmake-system' pointing
# to this version.
#
# ----------------------------------------------
# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE
#------------------------------------------------------------------------------
# Special purpose script, no default cmake version.
unset cmakePACKAGE
#------------------------------------------------------------------------------
# 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
#------------------------------------------------------------------------------
# Special purpose script - no default version.
unset cmakePACKAGE
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: ${0##*/} [OPTION] [cmake-VERSION]
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"
# parse options
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%%/}"
@ -88,37 +81,60 @@ done
[ -n "$cmakePACKAGE" ] || die "The cmake-VERSION was not specified"
#------------------------------------------------------------------------------
CMAKE_ARCH_PATH=$installBASE/$cmakePACKAGE
if _foamIsSystem "$cmakePACKAGE"
then
unset optLink # basic sanity - cannot
fi
#------------------------------------------------------------------------------
#
# Build CMAKE
#
echo "---------------"
# CMAKE_SOURCE_DIR : location of the original sources
# CMAKE_ARCH_PATH : installation directory
CMAKE_SOURCE_DIR=$sourceBASE/$cmakePACKAGE
CMAKE_ARCH_PATH=$installBASE/$cmakePACKAGE
if [ -d "$CMAKE_ARCH_PATH" -a -r "$CMAKE_ARCH_PATH/bin/cmake" ]
then
echo "Already built: $cmakePACKAGE"
else
echo "Starting build: $cmakePACKAGE"
(
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
mkdir -p $buildDIR
cd $buildDIR
$CMAKE_SOURCE_DIR/bootstrap \
--prefix=$CMAKE_ARCH_PATH \
&& time make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $cmakePACKAGE"
) || {
echo "Error building: $cmakePACKAGE"
exit 1
}
fi
if [ "$optLink" = true -a -x "$CMAKE_ARCH_PATH/bin/cmake" ]
then
(
sourceDIR=$WM_THIRD_PARTY_DIR/$cmakePACKAGE
buildDIR=$buildBASE/$cmakePACKAGE
cd $sourceDIR || exit 1
make distclean 2>/dev/null
rm -rf $buildDIR
mkdir -p $buildDIR
cd $buildDIR
$sourceDIR/bootstrap --prefix=$CMAKE_ARCH_PATH \
&& time make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $cmakePACKAGE"
) || {
echo "Error building: $cmakePACKAGE"
exit 1
}
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
#------------------------------------------------------------------------------

107
makeFFTW
View File

@ -3,24 +3,12 @@
# ========= |
# \\ / 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
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeFFTW
@ -28,34 +16,45 @@
# 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 include: $dir/include"
echo " fftw library: $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
#------------------------------------------------------------------------------
Script="${0##*/}"
# FFTW version from OpenFOAM etc/config.sh file:
_foamEtc config.sh/FFTW
fftwPACKAGE=${fftw_version:-fftw-system}
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: $Script [OPTION] [fftw-VERSION]
usage: ${0##*/} [OPTION] [fftw-VERSION]
options:
-gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
@ -67,8 +66,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"
@ -76,16 +74,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%%/}"
;;
@ -98,14 +90,12 @@ done
[ -n "$fftwPACKAGE" ] || die "The fftw-VERSION was not specified"
# nothing to build
# Nothing to build
if _foamIsNone "$fftwPACKAGE"
then
echo "Using fftw-none (skip ThirdParty build of FFTW)"
exit 0
fi
if _foamIsSystem "$fftwPACKAGE"
elif _foamIsSystem "$fftwPACKAGE"
then
echo "Using fftw-system (skip ThirdParty build of FFTW)"
exit 0
@ -121,9 +111,10 @@ fi
# - system is normally built into 'lib64'
#
# FFTW_SOURCE_DIR : location of the original sources
# FFTW_ARCH_PATH : installation directory
FFTW_SOURCE_DIR=$sourceBASE/$fftwPACKAGE
FFTW_ARCH_PATH=$installBASE/$fftwPACKAGE
FFTW_SOURCE_DIR=$WM_THIRD_PARTY_DIR/$fftwPACKAGE
if [ -r "$FFTW_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libfftw3.so" ]
then
@ -133,20 +124,10 @@ else
echo
(
# configuration options:
unset configOpt
# Single-precision needed?
if [ "${WM_PRECISION_OPTION}" = SP ]
then
configOpt="$configOpt --enable-single"
fi
# end of configuration options
# ----------------------------
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
@ -159,15 +140,15 @@ else
--libdir=$FFTW_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \
--enable-shared --disable-static \
--disable-fortran \
$configOpt \
&& 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
}
fi
#------------------------------------------------------------------------------

156
makeGcc
View File

@ -4,23 +4,11 @@
# \\ / 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.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeGcc
@ -40,13 +28,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,26 +52,16 @@ 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<<USAGE
usage: $Script [OPTION] [gcc-VERSION] [gmp-VERSION] [mpfr-VERSION] [mpc-VERSION]
usage: ${0##*/} [OPTION] [gcc-VERSION] [gmp-VERSION] [mpfr-VERSION] [mpc-VERSION]
options:
-multilib for 64-bit systems with 32-bit support required
-no-multilib for 64-bit systems without 32-bit support (DEFAULT)
-no-threadsafe disable mpfr thread-safe (default is auto-detect)
-system use system versions for gmp/mpfr/mpc
-help
@ -87,23 +75,26 @@ USAGE
exit 1
}
#------------------------------------------------------------------------------
# build 32-bit libraries on 64-bit systems (normally not needed)
# Build 32-bit libraries on 64-bit systems (normally not needed)
optMultilib=disable
unset optThreadSafe # unset=auto
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
;;
'') ;; # Ignore empty
-h | -help) usage ;;
-multi*)
optMultilib=enable
;;
-no-multi*)
optMultilib=disable
;;
-no-thread*)
optThreadSafe=disable
;;
-sys*)
gmpPACKAGE="gmp-system"
mpfrPACKAGE="mpfr-system"
@ -118,7 +109,7 @@ do
mpc-[0-9]* | mpc-system)
mpcPACKAGE="${1%%/}"
;;
gcc-[4-9]*)
gcc-[4-9]* | gcc-system)
gccPACKAGE="${1%%/}"
;;
*)
@ -161,6 +152,18 @@ GMP_ARCH_PATH=$installBASE/$gmpPACKAGE
MPFR_ARCH_PATH=$installBASE/$mpfrPACKAGE
MPC_ARCH_PATH=$installBASE/$mpcPACKAGE
# Prefix <dir> 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
@ -176,10 +179,11 @@ else
echo "Starting build: $gmpPACKAGE"
echo
(
sourceDIR=$WM_THIRD_PARTY_DIR/$gmpPACKAGE
sourceDIR=$sourceBASE/$gmpPACKAGE
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
@ -191,6 +195,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"
@ -200,9 +205,15 @@ 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 <<CONFIG_OPTIONS
--with-gmp-include=$GMP_ARCH_PATH/include
--with-gmp-lib=$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
CONFIG_OPTIONS
)
else
unset configGMP
fi
@ -220,22 +231,27 @@ else
echo "Starting build: $mpfrPACKAGE"
echo
(
sourceDIR=$WM_THIRD_PARTY_DIR/$mpfrPACKAGE
sourceDIR=$sourceBASE/$mpfrPACKAGE
buildDIR=$buildBASE/$mpfrPACKAGE
cd $sourceDIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
make distclean 2>/dev/null
rm -rf $buildDIR
mkdir -p $buildDIR
cd $buildDIR
unset configOpt
# explicitly enable/disable thread-safe
[ -n "$optThreadSafe" ] && configOpt="--${optThreadSafe}-thread-safe"
set -x
$sourceDIR/configure ABI=$ABI \
--prefix=$MPFR_ARCH_PATH \
--libdir=$MPFR_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \
--with-gmp-include=$GMP_ARCH_PATH/include \
--with-gmp-lib=$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \
--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"
@ -245,9 +261,15 @@ 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 <<CONFIG_OPTIONS
--with-mpfr-include=$MPFR_ARCH_PATH/include \
--with-mpfr-lib=$MPFR_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
CONFIG_OPTIONS
)
else
unset configMPFR
fi
@ -265,10 +287,11 @@ else
echo "Starting build: $mpcPACKAGE"
echo
(
sourceDIR=$WM_THIRD_PARTY_DIR/$mpcPACKAGE
sourceDIR=$sourceBASE/$mpcPACKAGE
buildDIR=$buildBASE/$mpcPACKAGE
cd $sourceDIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
make distclean 2>/dev/null
rm -rf $buildDIR
@ -279,10 +302,8 @@ else
$sourceDIR/configure ABI=$ABI \
--prefix=$MPC_ARCH_PATH \
--libdir=$MPC_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \
--with-gmp-include=$GMP_ARCH_PATH/include \
--with-gmp-lib=$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \
--with-mpfr-include=$MPFR_ARCH_PATH/include \
--with-mpfr-lib=$MPFR_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \
$configGMP $configMPFR \
&& set +x \
&& make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $mpcPACKAGE"
@ -292,9 +313,15 @@ 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 <<CONFIG_OPTIONS
--with-mpc-include=$MPC_ARCH_PATH/include \
--with-mpc-lib=$MPC_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
CONFIG_OPTIONS
)
else
unset configMPC
fi
@ -309,24 +336,24 @@ echo "---------------"
if [ -d $GCC_ARCH_PATH ]
then
echo "Already built: $gccPACKAGE"
elif _foamIsSystem $GCC_ARCH_PATH
then
echo "Using gcc-system"
else
echo "Starting build: $gccPACKAGE"
echo
(
sourceDIR=$WM_THIRD_PARTY_DIR/$gccPACKAGE
sourceDIR=$sourceBASE/$gccPACKAGE
buildDIR=$buildBASE/$gccPACKAGE
cd $sourceDIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
make distclean 2>/dev/null
rm -rf $buildDIR
mkdir -p $buildDIR
cd $buildDIR
_foamIsSystem "$GMP_ARCH_PATH" && GMP_ARCH_PATH=/usr # revert to system
_foamIsSystem "$MPFR_ARCH_PATH" && MPFR_ARCH_PATH=/usr # revert to system
_foamIsSystem "$MPC_ARCH_PATH" && MPC_ARCH_PATH=/usr # revert to system
unset configOpt
# with/without multi-lib (32-bit support on 64-bit systems)
[ -n "$optMultilib" ] && configOpt="--${optMultilib}-multilib"
@ -334,19 +361,14 @@ else
set -x
$sourceDIR/configure \
--prefix=$GCC_ARCH_PATH \
--with-gmp-include=$GMP_ARCH_PATH/include \
--with-gmp-lib=$GMP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \
--with-mpfr-include=$MPFR_ARCH_PATH/include \
--with-mpfr-lib=$MPFR_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \
--with-mpc-include=$MPC_ARCH_PATH/include \
--with-mpc-lib=$MPC_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \
--with-pkgversion=OpenFOAM \
--enable-languages=c,c++ \
--enable-__cxa_atexit \
--enable-libstdcxx-allocator=new \
--with-system-zlib \
$configOpt \
$configGMP $configMPFR $configMPC $configOpt \
MAKEINFO=missing \
&& set +x \
&& make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $gccPACKAGE"

View File

@ -4,23 +4,11 @@
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation
# \\/ M anipulation |
# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeGperftools
@ -28,29 +16,33 @@
# Description
# Build script for gperftools
#
# Note
#
# ----------------------------------------------
# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE
#------------------------------------------------------------------------------
gperftoolsPACKAGE=gperftools-svn
#------------------------------------------------------------------------------
# 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
#------------------------------------------------------------------------------
# Gperftools version from OpenFOAM etc/config.sh file:
_foamEtc config.sh/gperftools
gperftoolsPACKAGE=${gperftools_version:-gperftools-system}
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: ${0##*/} [gperftools-VERSION]
options:
-gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
* build gperftools
$gperftoolsPACKAGE
@ -58,16 +50,20 @@ usage: ${0##*/} [gperftools-VERSION]
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Compiler settings for CMake/configure
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
# parse options
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
;;
gperftools-[0-9]* | gperftools-svn*)
'') ;; # Ignore empty
-h | -help) usage ;;
-gcc) useGcc ;;
gperftools-[0-9]* | gperftools-svn* | gperftools-git)
gperftoolsPACKAGE="${1%%/}"
;;
*)
@ -77,42 +73,55 @@ do
shift
done
#------------------------------------------------------------------------------
# build/install without compiler name
prefixDIR=$installBASE/$gperftoolsPACKAGE
[ -n "$gperftoolsPACKAGE" ] || die "The gperftools-VERSION was not specified"
# Nothing to build
if _foamIsNone $gperftoolsPACKAGE
then
echo "Using gperftools-none (skip ThirdParty build of gperftools)"
exit 0
elif _foamIsSystem $gperftoolsPACKAGE
then
echo "Using gperftools-system (skip ThirdParty build of gperftools)"
exit 0
fi
#------------------------------------------------------------------------------
#
# Build gperftools
#
GPERFTOOLS_SOURCE_DIR=$sourceBASE/$gperftoolsPACKAGE
GPERFTOOLS_ARCH_PATH=$installBASE/$gperftoolsPACKAGE
echo "---------------"
if [ -d "$prefixDIR" ]
if [ -d "$GPERFTOOLS_ARCH_PATH" ]
then
echo "Already built: $gperftoolsPACKAGE"
else
echo "Starting build: $gperftoolsPACKAGE"
(
sourceDIR=$WM_THIRD_PARTY_DIR/$gperftoolsPACKAGE
buildDIR=$buildBASE/$gperftoolsPACKAGE
(
buildDIR=$buildBASE/$gperftoolsPACKAGE
cd $sourceDIR || exit 1
make distclean 2>/dev/null
cd $GPERFTOOLS_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
[ -e Makefile ] && make distclean 2>/dev/null
rm -rf $buildDIR
mkdir -p $buildDIR
cd $buildDIR
rm -rf $GPERFTOOLS_ARCH_PATH
rm -rf $buildDIR
mkdir -p $buildDIR
cd $buildDIR
# remove old junk
rm -rf $prefixDIR
$sourceDIR/configure \
--prefix=$prefixDIR \
&& make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $gperftoolsPACKAGE" \
) || {
echo "Error building: $gperftoolsPACKAGE"
exit 1
}
set -x
$GPERFTOOLS_SOURCE_DIR/configure \
--prefix=$GPERFTOOLS_ARCH_PATH \
&& set +x \
&& make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $gperftoolsPACKAGE" \
) || {
echo "Error building: $gperftoolsPACKAGE"
exit 1
}
fi
#------------------------------------------------------------------------------

193
makeKAHIP Executable file
View File

@ -0,0 +1,193 @@
#!/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, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeKAHIP
#
# Description
# Build the KaHIP library (int32 only).
#
# ----------------------------------------------
# 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" # <- KAHIP_ARCH_PATH
if [ -d "$dir/include" ]
then
for lib in \
$FOAM_EXT_LIBBIN/libkahip.so \
$dir/lib/libkahip.a \
$dir/lib/libkahip.so \
$dir/lib$WM_COMPILER_LIB_ARCH/libkahip.a \
$dir/lib$WM_COMPILER_LIB_ARCH/libkahip.so \
;
do
if [ -r "$lib" ]
then
echo " kahip include: $dir/include"
echo " kahip library: ${lib%/*}"
exit 0
fi
done
fi
exit 2
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
}
[ -n "$FOAM_EXT_LIBBIN" ] || {
echo "Error (${0##*/}) : \$FOAM_EXT_LIBBIN not set"
echo " Check your OpenFOAM environment and installation"
exit 1
}
. etc/tools/ThirdPartyFunctions
#------------------------------------------------------------------------------
_foamEtc config.sh/kahip
kahipPACKAGE=${KAHIP_VERSION:-kahip-system}
targetType=libso
#------------------------------------------------------------------------------
usage()
{
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
/bin/cat<<USAGE
Usage: ${0##*/} [OPTION] [lib|libso] [kahip-VERSION]
options:
-gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
* Compile KaHIP
$kahipPACKAGE
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
-h | -help) usage ;;
-gcc) useGcc ;;
lib|libso)
targetType="$1"
;;
kahip-[1-9]* | kahip-git)
kahipPACKAGE="${1%%/}"
unset KAHIP_ARCH_PATH # Avoid inconsistency
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
[ -n "$kahipPACKAGE" ] || die "The kahip-VERSION was not specified"
# Nothing to build
if _foamIsNone $kahipPACKAGE
then
echo "Using kahip-none (skip ThirdParty build of KAHIP)"
exit 0
elif _foamIsSystem $kahipPACKAGE
then
echo "Using kahip-system"
exit 0
fi
#------------------------------------------------------------------------------
#
# Build KaHIP
#
# KAHIP_ARCH_PATH : installation directory
# KAHIP_SOURCE_DIR : location of the original sources
KAHIP_SOURCE_DIR=$sourceBASE/$kahipPACKAGE
KAHIP_ARCH_PATH=$installBASE/$kahipPACKAGE
[ -d "$KAHIP_SOURCE_DIR" ] || {
echo "Missing sources: '$kahipPACKAGE'"
exit 1
}
#
# Manual installation
#
install()
{
# Ensure a clean build next time
wclean
local bindir=$KAHIP_ARCH_PATH/bin
local incdir=$KAHIP_ARCH_PATH/include
local libdir=$KAHIP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
mkdir -m 0755 -p $incdir
/bin/cp -pv \
$KAHIP_SOURCE_DIR/interface/kaHIP_interface.h \
$incdir
}
echo "Starting build: $kahipPACKAGE ($targetType)"
echo
(
cd $KAHIP_SOURCE_DIR/lib || exit 1
export GIT_DIR=$KAHIP_SOURCE_DIR/.git # Mask seeing our own git-repo
rm -rf $KAHIP_ARCH_PATH
rm -f $FOAM_EXT_LIBBIN/libkahip.so
libdir=$KAHIP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
cpMakeFiles kahip 2>/dev/null
if [ -e ../interface -a ! -e interface ]
then
ln -s ../interface interface
fi
# Place static libraries in sub-directory:
if [ "$targetType" = lib ]
then
mkdir -m 0755 -p $libdir 2>/dev/null
export FOAM_EXT_LIBBIN=$libdir
fi
# Location of lib sources for wmake
export KAHIP_LIB_SRC=$PWD
wmake -j $WM_NCOMPPROCS -s $targetType \
&& echo "Built: kahip" \
&& install
) || {
echo "Error building: kahip"
exit 1
}
#------------------------------------------------------------------------------

197
makeLLVM
View File

@ -4,23 +4,11 @@
# \\ / 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.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeLLVM
@ -30,55 +18,52 @@
#
# 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.1.src.tar.xz
# mv llvm-4.0.1.src llvm-4.0.1
#
# 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
# 2) Unpack Clang (also know as cfe):
# tar -xJf cfe-4.0.1.src.tar.xz
# mv cfe-4.0.1.src llvm-4.0.1/tools/clang
#
# - 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
# 3) Unpack openmp (optional):
# tar -xJf openmp-4.0.1.src.tar.xz
# mv openmp-4.0.1.src llvm-4.0.1/tools/openmp
#
# ----------------------------------------------
# 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
#------------------------------------------------------------------------------
Script=${0##*/}
[ "${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
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: $Script [OPTION] [llvm-VERSION]
usage: ${0##*/} [OPTION] [llvm-VERSION]
options:
-cmake PATH with cmake from the path given
-gcc force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
* build llvm/clang
@ -87,20 +72,30 @@ options:
USAGE
exit 1
}
#-----------------------------------------------------------------------------
# Compiler settings for CMake/configure
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
# parse options
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
'') ;; # Ignore empty
-h | -help) usage ;;
-gcc) useGcc ;;
-cmake)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
CMAKE_PATH="${2%%/}"
shift
;;
llvm-[0-9]* | llvm-svn*)
llvmPACKAGE="${1%%/}"
;;
[1-9]*)
llvmPACKAGE="llvm-${1%%/}"
;;
*)
die "unknown option/argument: '$1'"
;;
@ -111,20 +106,19 @@ done
[ -n "$llvmPACKAGE" ] || die "The llvm-VERSION was not specified"
#------------------------------------------------------------------------------
# build/install without compiler name
# Build/install locations without a compiler name
buildBASE=$WM_THIRD_PARTY_DIR/build/$WM_ARCH$WM_COMPILER_ARCH
installBASE=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH
LLVM_ARCH_PATH=$installBASE/$llvmPACKAGE
# Build LLVM (clang)
# LLVM_SOURCE_DIR : location of the original sources
# LLVM_BUILD_DIR : location of the build
# LLVM_ARCH_PATH : location of the installed program
# - Strip any trailing '.src' from the proper names
# name of source directory
# - may have a llvm/ subdirectory, depending on how the sources were fetched
#
sourceDIR=$WM_THIRD_PARTY_DIR/$llvmPACKAGE
if [ -f $sourceDIR/llvm/configure ]
then
sourceDIR=$sourceDIR/llvm
fi
LLVM_SOURCE_DIR=$sourceBASE/$llvmPACKAGE
LLVM_BUILD_DIR=$buildBASE/${llvmPACKAGE%%.src}
LLVM_ARCH_PATH=$installBASE/${llvmPACKAGE%%.src}
#
# Build LLVM
@ -133,30 +127,67 @@ echo "---------------"
if [ -d $LLVM_ARCH_PATH ]
then
echo "Already built: $llvmPACKAGE"
else
echo "Starting build: $llvmPACKAGE"
elif [ -z "$CMAKE_PATH" ] && $LLVM_SOURCE_DIR/configure -help >/dev/null 2>&1
then
# configure can be used prior to 3.9.0
# but use cmake if someone explicitly mentioned -cmake on the command-line
echo "Starting build: $llvmPACKAGE (using configure)"
echo
(
cd $sourceDIR || exit 1
make distclean 2>/dev/null
(
cd $LLVM_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
make distclean 2>/dev/null
buildDIR=$buildBASE/$llvmPACKAGE
rm -rf $buildDIR
mkdir -p $buildDIR
cd $buildDIR
rm -rf $LLVM_BUILD_DIR
mkdir -p $LLVM_BUILD_DIR
cd $LLVM_BUILD_DIR
set -x
$LLVM_SOURCE_DIR/configure \
--prefix=$LLVM_ARCH_PATH \
--with-gcc-toolchain=$(which gcc | sed s%/bin/gcc%%) \
--enable-optimized \
--enable-shared \
&& set +x \
&& make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $llvmPACKAGE"
) || {
echo "Error building: $llvmPACKAGE"
exit 1
}
else
# CMake used with 3.9.0 and later
echo "Starting build: $llvmPACKAGE (using cmake)"
echo
(
cd $LLVM_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
rm -rf $LLVM_BUILD_DIR
mkdir -p $LLVM_BUILD_DIR
cd $LLVM_BUILD_DIR
cmake=$(findCMake)
set -x
$cmake \
-DCMAKE_INSTALL_PREFIX=$LLVM_ARCH_PATH \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
$LLVM_SOURCE_DIR \
&& set +x \
&& make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $llvmPACKAGE"
) || {
echo "Error building: $llvmPACKAGE"
exit 1
}
set -x
$sourceDIR/configure \
--prefix=$LLVM_ARCH_PATH \
--with-gcc-toolchain=$(which gcc | sed s%/bin/gcc%%) \
--enable-optimized \
&& make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $llvmPACKAGE"
) || {
echo "Error building: $llvmPACKAGE"
exit 1
}
fi
#------------------------------------------------------------------------------

189
makeMETIS Executable file
View File

@ -0,0 +1,189 @@
#!/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, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeMETIS
#
# Description
# Build script for METIS
#
# ----------------------------------------------
# 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" # <- METIS_ARCH_PATH
if [ -d "$dir/include" ]
then
for lib in \
$FOAM_EXT_LIBBIN/libmetis.so \
$dir/lib/libmetis.a \
$dir/lib/libmetis.so \
$dir/lib$WM_COMPILER_LIB_ARCH/libmetis.a \
$dir/lib$WM_COMPILER_LIB_ARCH/libmetis.so \
;
do
if [ -r "$lib" ]
then
echo " metis include: $dir/include"
echo " metis library: ${lib%/*}"
exit 0
fi
done
fi
exit 2
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
}
[ -n "$FOAM_EXT_LIBBIN" ] || {
echo "Error (${0##*/}) : \$FOAM_EXT_LIBBIN not set"
echo " Check your OpenFOAM environment and installation"
exit 1
}
. etc/tools/ThirdPartyFunctions
#------------------------------------------------------------------------------
_foamEtc config.sh/metis
metisPACKAGE=${METIS_VERSION:-metis-system}
targetType=libso
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: ${0##*/} [OPTION] [lib|libso] [METIS-VERSION]
options:
-gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
* build METIS with
${metisPACKAGE:-'unspecified metis version'}
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Compiler settings for CMake/configure
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
-h | -help) usage ;;
-gcc) useGcc ;;
lib|libso)
targetType="$1"
;;
metis-[0-9]*)
metisPACKAGE="${1%%/}"
unset METIS_ARCH_PATH # Avoid inconsistency
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
[ -n "$metisPACKAGE" ] || die "The metis-VERSION was not specified"
# Nothing to build
if _foamIsNone $metisPACKAGE
then
echo "Using metis-none (skip ThirdParty build of METIS)"
exit 0
elif _foamIsSystem $metisPACKAGE
then
echo "Using metis-system"
exit 0
fi
#------------------------------------------------------------------------------
#
# Build METIS
#
# METIS_ARCH_PATH : installation directory
# METIS_SOURCE_DIR : location of the original sources
METIS_SOURCE_DIR=$sourceBASE/$metisPACKAGE
: ${METIS_ARCH_PATH:=$installBASE$WM_PRECISION_OPTION$WM_LABEL_OPTION/$metisPACKAGE}
[ -d "$METIS_SOURCE_DIR" ] || {
echo "Missing sources: '$metisPACKAGE'"
exit 1
}
#
# Manual installation (of library)
#
install()
{
local libdir=$METIS_ARCH_PATH/lib
if [ "$targetType" = libso ]
then
\mv $libdir/libmetis.so $FOAM_EXT_LIBBIN
rmdir $libdir 2>/dev/null # Failed rmdir is uncritical
echo "Installing: $FOAM_EXT_LIBBIN/libmetis.so"
fi
return 0
}
echo "Starting build: $metisPACKAGE ($targetType)"
echo
(
# Configuration options:
unset configOpt
if [ "$targetType" = libso ]
then
configOpt="shared=1"
fi
cd $METIS_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
rm -rf $METIS_ARCH_PATH
rm -f $FOAM_EXT_LIBBIN/libmetis.so
# Adjust metis integer size to match OpenFOAM label-size
sed -i -e 's=\(#define IDXTYPEWIDTH\).*=\1 '$WM_LABEL_SIZE'=' \
include/metis.h
# No config option for the library location.
# - build normally and use mv to relocate it
make config $configOpt prefix=$METIS_ARCH_PATH \
&& make -j $WM_NCOMPPROCS install \
&& echo "Built: metis" \
&& install
) || {
echo "Error building: metis"
exit 1
}
#------------------------------------------------------------------------------

174
makeMGridGen Executable file
View File

@ -0,0 +1,174 @@
#!/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, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# 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<<USAGE
usage: ${0##*/} [OPTION] [mgridgen-VERSION]
options:
-gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
* Build MGridGen
$mgridgenPACKAGE
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Compiler settings for CMake/configure
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
;;
-gcc)
useGcc # Use gcc/g++
;;
mgridgen-[1-9]* | MGridGen-[1-9]* | parmgridgen-[1-9]* | ParMGridGen-[1-9]*)
mgridgenPACKAGE="${1%%/}"
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
[ -n "$mgridgenPACKAGE" ] || die "The mgridgen-VERSION was not specified"
# Nothing to build
if _foamIsNone "$mgridgenPACKAGE"
then
echo "Using mgridgen-none (skip ThirdParty build of MGridGen)"
exit 0
elif _foamIsSystem "$mgridgenPACKAGE"
then
echo "Using mgridgen-system"
exit 0
fi
#------------------------------------------------------------------------------
#
# Build MGridGen
# MGRIDGEN_SOURCE_DIR : location of the original sources
# MGRIDGEN_ARCH_PATH : installation directory
MGRIDGEN_SOURCE_DIR=$WM_THIRD_PARTY_DIR/$mgridgenPACKAGE
MGRIDGEN_ARCH_PATH=$installBASE$WM_PRECISION_OPTION$WM_LABEL_OPTION/$mgridgenPACKAGE
: ${FOAM_MPI:=dummy}
echo
echo ========================================
echo "Build mgridgen library $mgridgenPACKAGE"
echo
#
# Manual installation
#
install()
{
echo "Install into $MGRIDGEN_ARCH_PATH"
local bindir=$MGRIDGEN_ARCH_PATH/bin
local incdir=$MGRIDGEN_ARCH_PATH/include
local libdir=$MGRIDGEN_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
for dir in $MGRIDGEN_ARCH_PATH $bindir $incdir $libdir
do
mkdir -m 0755 -p $dir
done
cp -vf mgridgen.h $incdir
cp -vf libmgrid.a $libdir
cp -vf mgridgen $bindir
chmod -R 0644 $incdir/* $libdir/*
chmod -R 0755 $bindir/*
}
# Needs future adjustment
# - for shared library
# - for mpi-specific library locations
if [ -f $MGRIDGEN_ARCH_PATH/include/mgridgen.h \
-a -r $MGRIDGEN_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmgrid.a ]
then
echo " MGridGen header in $MGRIDGEN_ARCH_PATH/include"
echo " MGridGen libs in $MGRIDGEN_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH" # static
echo
else
(
cd $MGRIDGEN_SOURCE_DIR || exit 1
[ -e Makefile ] && make realclean 2>/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
#------------------------------------------------------------------------------

178
makeMPICH Executable file
View File

@ -0,0 +1,178 @@
#!/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, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# 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<<USAGE
usage: ${0##*/} [OPTION] [mpich-VERSION] [-- configure-options]
options:
-gcc force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
* build mpich with
${mpiPACKAGE:-'unspecified mpich version'}
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Compiler settings for CMake/configure
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
--) break;; # Extra configure options (leave on $@ for later detection)
-h | -help) usage ;;
-gcc) useGcc ;;
mpich*)
mpiPACKAGE="${1%%/}"
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
[ -n "$mpiPACKAGE" ] || die "The mpich-VERSION was not specified"
# Nothing to build
if _foamIsNone "$mpiPACKAGE"
then
echo "Using mpich-none (skip ThirdParty build of mpich)"
exit 0
elif _foamIsSystem "$mpiPACKAGE"
then
echo "Using mpich-system (skip ThirdParty build of mpich)"
exit 0
fi
#------------------------------------------------------------------------------
#
# Build mpich
#
# MPI_SOURCE_DIR : location of the original sources
# MPI_ARCH_PATH : installation directory
MPI_SOURCE_DIR=$sourceBASE/$mpiPACKAGE
MPI_ARCH_PATH=$installBASE/$mpiPACKAGE
if [ -r "$MPI_ARCH_PATH/lib_ARCH/libmpi.so" ]
then
echo "Already has shared library"
elif [ -r "$MPI_ARCH_PATH/lib/libmpi.a" ]
then
echo "Already has static library"
else
echo "Starting build: $WM_MPLIB ($mpiPACKAGE)"
echo
(
# Configuration options:
unset configOpt
# Additional configure options
if [ "$1" = "--" ]
then
shift
configOpt="$configOpt $@"
fi
# End of configuration options
# ----------------------------
cd $MPI_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
[ -e Makefile ] && make distclean 2>/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
#------------------------------------------------------------------------------

218
makeMesa Executable file
View File

@ -0,0 +1,218 @@
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeMesa
#
# Description
# Build script for Mesa
#
# Note
# 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, mesa-13.x and mesa-17.x seems to be okay.
#
# ----------------------------------------------
# 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
#------------------------------------------------------------------------------
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
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: ${0##*/} [OPTION] mesa-VERSION [-- configure-options]
options:
-gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
* build Mesa with
${mesaPACKAGE:-'unspecified MESA version'}
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Compiler settings for CMake/configure
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
# Non-standard location for clang?
case "$WM_COMPILER_TYPE-$WM_COMPILER" in
ThirdParty-Clang*)
thirdPartyClang=true
;;
*)
unset thirdPartyClang
;;
esac
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
--) break;; # Extra configure options (leave on $@ for later detection)
-h | -help) usage ;;
-gcc)
useGcc
unset thirdPartyClang
;;
mesa-*)
mesaPACKAGE="${1%%/}"
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
[ -n "$mesaPACKAGE" ] || die "The mesa-VERSION was not specified"
# Nothing to build
if _foamIsNone "$mesaPACKAGE"
then
echo "Using mesa-none (skip ThirdParty build of MESA)"
exit 0
elif _foamIsSystem "$mesaPACKAGE"
then
echo "Using mesa-system (skip ThirdParty build of MESA)"
exit 0
fi
#------------------------------------------------------------------------------
# Locate third-party clang as required
if [ "$thirdPartyClang" = true ]
then
thirdPartyClang=$(command -v clang) || {
echo "Error: could not properly locate clang"
exit 2
}
# Root installation directory
thirdPartyClang=${thirdPartyClang%/bin/clang}
[ -d "$thirdPartyClang" ] || {
echo "Error: could not properly locate clang"
exit 2
}
fi
#------------------------------------------------------------------------------
#
# Build MESA
# For 64-bit
# - MESA itself will normally build into 'lib64'.
#
# MESA_SOURCE_DIR : location of the original sources
# MESA_ARCH_DIR : installation directory
MESA_SOURCE_DIR=$sourceBASE/$mesaPACKAGE
MESA_ARCH_PATH=$installBASE/$mesaPACKAGE
#
# Manual adjustments to mesa
# - avoid GLES (GLES1) since <GLES/gl.h> may mask the <GL/gl.h> 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
if [ -d "$thirdPartyClang" ]
then
configOpt="$configOpt --with-llvm-prefix=$thirdPartyClang"
fi
# Additional configure options
if [ "$1" = "--" ]
then
shift
configOpt="$configOpt $@"
fi
# End of configuration options
# ----------------------------
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
rm -rf $buildDIR
mkdir -p $buildDIR
cd $buildDIR
echo "----"
echo "Building $mesaPACKAGE"
echo " Source : $MESA_SOURCE_DIR"
echo " Target : $MESA_ARCH_PATH"
if [ -d "$thirdPartyClang" ]
then
echo " Clang : $thirdPartyClang"
fi
echo "----"
# Possibly for older mesa versions (see paraview wiki)
# CXXFLAGS="-O2 -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \
# CFLAGS="-O2 -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \
## autoreconf -fi
set -x
$MESA_SOURCE_DIR/configure \
--prefix=$MESA_ARCH_PATH \
--disable-xvmc \
--disable-glx \
--disable-dri \
--disable-gbm \
--disable-egl \
--disable-gles1 \
--enable-texture-float \
--enable-gallium-osmesa --with-gallium-drivers=swrast \
$configOpt \
&& set +x \
&& make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built $mesaPACKAGE" \
&& adjustMESA
) || {
echo "Error building: MESA"
exit 1
}
# -----------------------------------------------------------------------------

201
makeOPENMPI Executable file
View File

@ -0,0 +1,201 @@
#!/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, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# 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<<USAGE
usage: ${0##*/} [OPTION] [openmpi-VERSION] [-- configure-options]
options:
-gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-memcheck Configure with --enable-memcheck (requires valgrind.h)
-threaded Configure with --enable-mpi-thread-multiple
-no-threaded Configure with --disable-mpi-thread-multiple
-help
* build openmpi with
${mpiPACKAGE:-'unspecified openmpi version'}
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Compiler settings for CMake/configure
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
unset optMemchecker optThreaded
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
--) break;; # Extra configure options (leave on $@ for later detection)
-h | -help) usage ;;
-gcc) useGcc ;;
-memcheck*) optMemchecker=true ;;
-thread*) optThreaded=enable ;;
-no-thread*) optThreaded=disable ;;
openmpi-[0-9]* | openmpi_[0-9]* | openmpi-system )
mpiPACKAGE="${1%%/}"
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
[ -n "$mpiPACKAGE" ] || die "The openmpi-VERSION was not specified"
# Nothing to build
if _foamIsNone "$mpiPACKAGE"
then
echo "Using openmpi-none (skip ThirdParty build of openmpi)"
exit 0
elif _foamIsSystem "$mpiPACKAGE"
then
echo "Using openmpi-system (skip ThirdParty build of openmpi)"
exit 0
fi
#------------------------------------------------------------------------------
#
# Build openmpi
#
# MPI_SOURCE_DIR : location of the original sources
# MPI_ARCH_PATH : installation directory
MPI_SOURCE_DIR=$sourceBASE/$mpiPACKAGE
MPI_ARCH_PATH=$installBASE/$mpiPACKAGE
if [ -r "$MPI_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmpi.so" ]
then
echo "Already has shared library: $MPI_ARCH_PATH"
elif [ -r "$MPI_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmpi.a" ]
then
echo "Already has static library: $MPI_ARCH_PATH"
else
echo "Starting build: $WM_MPLIB ($mpiPACKAGE)"
echo
(
# Configuration options:
# Start with GridEngine support - builds without external libraries
configOpt="--with-sge"
if [ -n "$optMemchecker" ]
then
configOpt="$configOpt --enable-memchecker --with-valgrind"
fi
# --enable-mpi-thread-multiple / --disable-mpi-thread-multiple
if [ -n "$optThreaded" ]
then
configOpt="$configOpt --${optThreaded}-mpi-thread-multiple"
fi
# Additional configure options
if [ "$1" = "--" ]
then
shift
configOpt="$configOpt $@"
fi
# End of configuration options
# ----------------------------
buildDIR=$buildBASE/$mpiPACKAGE
cd $MPI_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
[ -e Makefile ] && make distclean 2>/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 \
$configOpt \
&& set +x \
&& make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $mpiPACKAGE" \
&& pkgconfigAdjust $MPI_ARCH_PATH
) || {
echo "Error building: $mpiPACKAGE"
exit 1
}
fi
#------------------------------------------------------------------------------

14
makeOPENMPI.example Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
# An example for building OPENMPI with particular settings
openmpi=openmpi-1.10.6
# InfiniBand support
verbs="--with-verbs=/usr/local/ofed --with-verbs-lib=/usr/local/ofed/lib64"
# unset verbs
./makeOPENMPI $openmpi -- \
$verbs \
"$@"
#------------------------------------------------------------------------------

View File

@ -4,117 +4,89 @@
# \\ / 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.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeParaView
#
# Description
# Make and install paraview 4 or 5
# - place the paraview source under $WM_THIRD_PARTY_DIR/ParaView-VERSION
# (note capitalisation)
# Make and install ParaView.
# The ParaView sources should be located under one of these locations:
# - $WM_THIRD_PARTY_DIR/ParaView-VERSION
# - $WM_THIRD_PARTY_DIR/ParaView-vVERSION
#
# Note the capitalization of ParaView in the directory names.
#
# ----------------------------------------------
# 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:
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/lib64/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/lib64/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
#
# NO FURTHER EDITING BELOW THIS LINE
#
#-----------------------------------------------------------------------------
Script=${0##*/}
withGL2=auto # auto-config based on version
#------------------------------------------------------------------------------
usage() {
exec 1>&2
: ${ParaView_VERSION:=none} # some dummy value for usage information
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: $Script [OPTION] [paraview-VERSION] [CMAKE-OPTION]
usage: ${0##*/} [OPTION] [paraview-VERSION] [CMAKE-OPTION]
options:
-gcc force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-rebuild for repeated builds (-make -install) *use with caution*
-gl2 with new rendering backend (if not already enabled)
-mesa with mesa (if not already enabled)
-mpi with mpi (if not already enabled)
-python with python (if not already enabled)
-cmake PATH with the cmake version corresponding to the cmake path given
-gl2 with new rendering backend (default: auto)
-mesa with mesa
-mesa-prefix DIR location of mesa installation (sets -mesa-include, -mesa-lib)
-mesa-include DIR location of mesa headers (current: ${MESA_INCLUDE:-none})
-mesa-lib PATH path to mesa library (current: ${MESA_LIBRARY:-none})
-mpi with mpi
-mpi=N with max 'N' mpi processes. N=0 for no upper-limit.
-python with python
-python-include DIR
location of python headers (current: ${PYTHON_INCLUDE:-none})
-python-lib PATH path to python library (current: ${PYTHON_LIBRARY:-none})
-cmake PATH with cmake from the path given
-qmake PATH with the Qt version corresponding to the qmake path given
-qt with extra Qt gui support (if not already enabled)
-qt-VER with Qt version corresponding to
\$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/qt-VER/bin/qmake
-gcc force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-verbose verbose output in Makefiles
-version VER specify an alternative version (current value: $ParaView_VERSION)
-version VER specify an alternative version (current: $ParaView_VERSION)
-major VER specify an alternative major version for special builds
-buildType NAME specify the build type (default: Release)
-mesa-include DIR
location of mesa headers (current value: ${MESA_INCLUDE:-none})
-mesa-lib PATH path to mesa library (current value: ${MESA_LIBRARY:-none})
-python-lib PATH path to python library (current value: ${PYTHON_LIBRARY:-none})
-suffix NAME specify a suffix to distinguish the build
-help
The -no-FEATURE option can be used to forcibly disable these features:
mesa mpi python qt
-no-gl2 | -no-mesa | -no-mpi | -no-python | -no-qt
CMake options start with a capital letter and contain an '='.
For example,
$Script BUILD_TESTING=ON
${0##*/} BUILD_TESTING=ON
to add tests
For finer control, the build stages can be selected or deselected individually:
@ -126,58 +98,41 @@ For finer control, the build stages can be selected or deselected individually:
* Make and install paraview-$ParaView_VERSION located under
\$WM_THIRD_PARTY_DIR/ParaView-$ParaView_VERSION
-> \$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-$ParaView_VERSION
-> \$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-$ParaView_VERSION$BUILD_SUFFIX
To make a different paraview version, simply specify on the command-line.
For example,
./makeParaview 4.4.0
./makeParaview 5.4.1
Or change the \$WM_PROJECT_DIR/etc/config.sh/paraview settings.
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"
#
# add options based on script name:
#
case "$Script" in *-mesa*) withMESA=true;; esac
case "$Script" in *-mpi*) withMPI=true;; esac
case "$Script" in *-python*) withPYTHON=true;; esac
case "$Script" in *-qt*) withQT=true;; esac
# Set initial ParaView_MAJOR based on current value of ParaView_VERSION
setVersion ${ParaView_VERSION:-none}
#
# various building stages
#
# Various building stages
unset runPATCH runCONFIG runMAKE runINSTALL
runDEFAULT=true
buildType=Release
# parse options
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
;;
'') ;; # Ignore empty
-h | -help) usage ;;
-gcc) useGcc ;;
[0-9]* | paraview-[0-9]* | ParaView-[0-9]*) # paraview version
setVersion "${1%%/}"
setParaViewVersion "${1%%/}"
;;
[A-Z]*=*) # cmake variables
addCMakeVariable "$1"
;;
-gcc)
export CC=gcc # use gcc/g++
export CXX=g++
;;
-patch) # stage 0: patch sources
runPATCH=true
unset runDEFAULT
@ -220,22 +175,45 @@ do
-mesa)
withMESA=true
;;
-osmesa)
echo
echo "The -osmesa option is currently ignored"
echo
# withMESA=true
# withOSMESA=true
;;
-no-mesa)
withMESA=false
withOSMESA=false
;;
-mesa-prefix)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
withMESA=true
MESA_INCLUDE="${2%%/}/include"
# Could be under (lib64 | lib)
MESA_LIBRARY="${2%%/}/lib$WM_COMPILER_LIB_ARCH/libOSMesa.so"
[ -f "$MESA_LIBRARY" ] || MESA_LIBRARY="${2%%/}/lib/libOSMesa.so"
shift
;;
-mesa-include)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
MESA_INCLUDE="$2"
withMESA=true
MESA_INCLUDE="${2%%/}"
shift
;;
-mesa-lib)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
MESA_LIBRARY="$2"
withMESA=true
MESA_LIBRARY="${2%%/}"
shift
;;
-mpi)
withMPI=true
;;
-mpi=[0-9]*) # mpi and max mpi processes
withMPI=true
MPI_MAX_PROCS="${1##*=}"
;;
-no-mpi)
withMPI=false
;;
@ -245,19 +223,26 @@ do
-no-python)
withPYTHON=false
;;
-python-include)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
withPYTHON=true
PYTHON_INCLUDE="${2%%/}"
shift
;;
-python-lib)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
PYTHON_LIBRARY="$2"
withPYTHON=true
PYTHON_LIBRARY="${2%%/}"
shift
;;
-cmake)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
CMAKE_PATH=$2
CMAKE_PATH="${2%%/}"
shift
;;
-qmake)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
QMAKE_PATH=$2
QMAKE_PATH="${2%%/}"
shift
;;
-qt)
@ -267,6 +252,7 @@ do
withQT=false
;;
-qt-[1-9]*)
withQT=true
QMAKE_PATH="$installBASE/${1##-}"
;;
-verbose)
@ -274,7 +260,7 @@ do
;;
-version)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
setVersion "${2%%/}"
setParaViewVersion "${2%%/}"
shift
;;
-major)
@ -284,7 +270,12 @@ do
;;
-buildType)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
buildType="$2"
BUILD_TYPE="$2"
shift
;;
-suffix)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
setBuildSuffix "$2"
shift
;;
*)
@ -296,7 +287,7 @@ done
[ -n "$ParaView_VERSION" ] || die "The paraview-VERSION was not specified"
# nothing to build
# Nothing to build
if _foamIsNone "$ParaView_VERSION"
then
echo "Using paraview-none (skip ThirdParty build of ParaView)"
@ -322,6 +313,16 @@ then
: ${runINSTALL:=true}
fi
if [ "$withMESA" = true ]
then
: ${withQT:=false} # No QT unless explicitly requested
addCMakeVariable "VTK_USE_X=OFF"
# addCMakeVariable "OPENGL_INCLUDE_DIR=IGNORE"
# addCMakeVariable "OPENGL_gl_LIBRARY=IGNORE"
# addCMakeVariable "OPENGL_xmesa_INCLUDE_DIR=IGNORE"
## seems to be unnecessary => addCMakeVariable "VTK_USE_OFFSCREEN=OFF"
fi
# Set configure options
#~~~~~~~~~~~~~~~~~~~~~~
@ -332,7 +333,7 @@ addMesaSupport # set MESA-specific options
addGL2Support # new rendering backend
addQtSupport # add extra Qt support
setDirs # where things are or should be put
setParaViewDirs # where things are or should be put
# Build and install
@ -353,11 +354,10 @@ Features selected
qt ${withQT:-false}
---------------------
Version information
qt ${QtVersion:-none}
version ${ParaView_VERSION:-unknown}
paraview ${ParaView_VERSION:-unknown}
major ${ParaView_MAJOR:-unknown}
build ${buildType:-Release}
$(checkVersion)
build ${BUILD_TYPE:-unknown}
qt ${QT_VERSION:-none}
---------------------
SUMMARY

16
makeParaView.example Executable file
View File

@ -0,0 +1,16 @@
#!/bin/sh
# An example for building particular combinations of ParaView with
# - mpi (0 = no upper-limit on processes)
# - mesa
# 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 \
"$@"
#------------------------------------------------------------------------------

View File

@ -1,330 +0,0 @@
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / 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.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# makeParaView3
#
# Description
# Make and install paraview for version 3.14.1 and higher
# - place the paraview source under $WM_THIRD_PARTY_DIR/ParaView-VERSION
# (note capitalisation)
#
#------------------------------------------------------------------------------
# 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
}
. etc/tools/ThirdPartyFunctions
. etc/tools/ParaView3Functions
#------------------------------------------------------------------------------
#
# USER OPTIONS:
# ~~~~~~~~~~~~~
# MPI support:
withMPI=false
MPI_MAX_PROCS=32
# 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/lib64/libpython2.6.so.1.0"
# MESA graphics support:
withMESA=false
MESA_INCLUDE="/usr/include/GL"
MESA_LIBRARY="/usr/lib64/libOSMesa.so"
# 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=""
#
# NO FURTHER EDITING BELOW THIS LINE
#
#-----------------------------------------------------------------------------
Script=${0##*/}
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: $Script [OPTION] [paraview-VERSION] [CMAKE-OPTION]
options:
-rebuild for repeated builds (-make -install) *use with caution*
-mesa with mesa (if not already enabled)
-mpi with mpi (if not already enabled)
-python with python (if not already enabled)
-cmake PATH with the cmake version corresponding to the cmake path given
-qmake PATH with the Qt version corresponding to the qmake path given
-qt with extra Qt gui support (if not already enabled)
-qt-VER with Qt version corresponding to
\$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/qt-VER/bin/qmake
-gcc force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-verbose verbose output in Makefiles
-version VER specify an alternative version (current value: $ParaView_VERSION)
-major VER specify an alternative major version for special builds
-mesa-include DIR
location of mesa headers (current value: ${MESA_INCLUDE:-none})
-mesa-lib PATH path to mesa library (current value: ${MESA_LIBRARY:-none})
-python-lib PATH path to python library (current value: ${PYTHON_LIBRARY:-none})
-help
The -no-FEATURE option can be used to forcibly disable these features:
mesa mpi python qt
CMake options start with a capital letter and contain an '='.
For example,
$Script BUILD_TESTING=ON PARAVIEW_GENERATE_PROXY_DOCUMENTATION=OFF
to add tests and avoid building documentation
For finer control, the build stages can be selected or deselected individually:
-config -no-config
-make -no-make
-install -no-install
* Make and install paraview-$ParaView_VERSION located under
\$WM_THIRD_PARTY_DIR/ParaView-$ParaView_VERSION
-> \$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-$ParaView_VERSION
To make a different paraview version, simply specify on the command-line.
For example,
./makeParaview 3.14.1
USAGE
exit 1
}
#------------------------------------------------------------------------------
# ensure CMake gets the correct C/C++ compiler
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
#
# add options based on script name:
#
case "$Script" in *-mesa*) withMESA=true;; esac
case "$Script" in *-mpi*) withMPI=true;; esac
case "$Script" in *-python*) withPYTHON=true;; esac
case "$Script" in *-qt*) withQT=true;; esac
# Set initial ParaView_MAJOR based on current value of ParaView_VERSION
setVersion ${ParaView_VERSION:-none}
#
# various building stages
#
unset runCONFIG runMAKE runINSTALL
runDEFAULT=true
# parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
;;
[0-9]* | paraview-[0-9]* | ParaView-[0-9]*) # paraview version
setVersion "${1%%/}"
;;
[A-Z]*=*) # cmake variables
addCMakeVariable "$1"
;;
-gcc)
export CC=gcc # use gcc/g++
export CXX=g++
;;
-config) # stage 1: config only
runCONFIG=true
unset runDEFAULT
;;
-no-config)
runCONFIG=false
;;
-make) # stage 2: make only
runMAKE=true
unset runDEFAULT
;;
-no-make)
runMAKE=false
;;
-install) # stage 3: install only
runINSTALL=true
unset runDEFAULT
;;
-no-install)
runINSTALL=false
;;
-rebuild) # shortcut for rebuilding
runMAKE=true
runINSTALL=true
unset runDEFAULT
;;
-mesa)
withMESA=true
;;
-no-mesa)
withMESA=false
;;
-mesa-include)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
MESA_INCLUDE="$2"
shift
;;
-mesa-lib)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
MESA_LIBRARY="$2"
shift
;;
-mpi)
withMPI=true
;;
-no-mpi)
withMPI=false
;;
-python)
withPYTHON=true
;;
-no-python)
withPYTHON=false
;;
-python-lib)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
PYTHON_LIBRARY="$2"
shift
;;
-cmake)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
CMAKE_PATH=$2
shift
;;
-qmake)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
QMAKE_PATH=$2
shift
;;
-qt)
withQT=true
;;
-no-qt)
withQT=false
;;
-qt-[1-9]*)
QMAKE_PATH="$installBASE/${1##-}"
;;
-verbose)
withVERBOSE=true
;;
-version)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
setVersion "${2%%/}"
shift
;;
-major)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
export ParaView_MAJOR="$2"
shift
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
[ -n "$ParaView_VERSION" ] || die "The paraview-VERSION was not specified"
# nothing to build
if _foamIsNone "$ParaView_VERSION"
then
echo "Using paraview-none (skip ThirdParty build of ParaView)"
exit 0
fi
if [ "$runDEFAULT" = true ]
then
: ${runCONFIG:=true}
: ${runMAKE:=true}
: ${runINSTALL:=true}
fi
# Set configure options
#~~~~~~~~~~~~~~~~~~~~~~
addVerbosity # verbose makefiles
addMpiSupport # set MPI-specific options
addPythonSupport # set Python-specific options
addMesaSupport # set MESA-specific options
addQtSupport # add extra Qt support
setDirs # where things are or should be put
# Build and install
# ~~~~~~~~~~~~~~~~~
cat<<SUMMARY
Build stages selected
---------------------
-config ${runCONFIG:-false}
-make ${runMAKE:-false}
-install ${runINSTALL:-false}
---------------------
Features selected
mesa ${withMESA:-false}
mpi ${withMPI:-false}
python ${withPYTHON:-false}
qt ${withQT:-false}
---------------------
Version information
qt ${QtVersion:-none}
version ${ParaView_VERSION:-unknown}
major ${ParaView_MAJOR:-unknown}
$(checkVersion)
---------------------
SUMMARY
[ "$runCONFIG" = true ] && configParaView
[ "$runMAKE" = true ] && makeParaView
[ "$runINSTALL" = true ] && installParaView
echo
echo Done
#------------------------------------------------------------------------------

187
makeQt
View File

@ -4,137 +4,166 @@
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
# \\/ M anipulation |
# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeQt
#
# Description
# Build script for qt-everywhere-opensource-src
# Build script for QT (the qt-everywhere-opensource-src package)
#
# ----------------------------------------------
# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE
#------------------------------------------------------------------------------
qtVERSION=4.7.3
qtTYPE=qt-everywhere-opensource-src
#------------------------------------------------------------------------------
# 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
. etc/tools/QtFunctions
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: ${0##*/} [OPTION] [VERSION]
usage: ${0##*/} [OPTION] [qt-VERSION] [-- configure-options]
options:
-gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
* build $qtTYPE, version $qtVERSION
* build $qtTYPE, version ${qtVERSION:-undefined}
USAGE
exit 1
}
#------------------------------------------------------------------------------
# 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"
# ensure configure gets the correct C/C++ compiler
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
# parse options
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
;;
-gcc)
export CC=gcc # use gcc/g++
export CXX=g++
;;
[1-9]* | qt-[1-9]*)
'') ;; # Ignore empty
--) break;; # Extra configure options (leave on $@ for later detection)
-h | -help) usage ;;
-gcc) useGcc ;;
-qt-[1-9]* | [1-9]* | qt-*)
# -qt-VERSION, VERSION, qt-VERSION, qt-everywhere-opensource-src-VERSION
qtVERSION="${1%%/}";
qtVERSION="${qtVERSION#qt-}"
qtVERSION="${qtVERSION##*-}"
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
qtPACKAGE=$qtTYPE-$qtVERSION
# Nothing to build
if _foamIsNone "$qtPACKAGE"
then
echo "Using qt-none (skip ThirdParty build of QT)"
exit 0
elif _foamIsSystem "$qtPACKAGE"
then
echo "Using qt-system"
exit 0
fi
#------------------------------------------------------------------------------
qtPACKAGE=$qtTYPE-$qtVERSION
prefixDIR=$installBASE/qt-$qtVERSION
#
# Build QT
#
echo "---------------"
if [ -d "$prefixDIR" -a -r "$prefixDIR/bin/qmake" ]
QT_SOURCE_DIR=$sourceBASE/$qtPACKAGE
QT_ARCH_PATH=$installBASE/qt-$qtVERSION
echo
echo ========================================
echo "Build Qt $qtPACKAGE"
echo
if [ -d "$QT_ARCH_PATH" -a -r "$QT_ARCH_PATH/bin/qmake" ]
then
echo "Already built: Qt-$qtVERSION"
else
echo "Starting build: Qt-$qtVERSION"
(
sourceDIR=$WM_THIRD_PARTY_DIR/$qtPACKAGE
buildDIR=$buildBASE/$qtPACKAGE
(
# Configuration options:
unset configOpt
configOpt="$configOpt -nomake examples"
cd $sourceDIR || exit 1
make distclean 2>/dev/null
case "$qtVERSION" in
4*) # QT-4
# Without demos.
configOpt="$configOpt -nomake demos"
rm -rf $buildDIR
mkdir -p $buildDIR
cd $buildDIR
# Without old qt3 transition code
configOpt="$configOpt -no-qt3support"
# remove old junk
rm -rf $prefixDIR
# Without WebKit - uses std:tr1 and does not compile with c++11
# Fortunately WebKit is now optional for ParaView
configOpt="$configOpt -no-webkit"
;;
# remove any remnants from a previous shadow build
rm -f "$sourceDIR/.qmake.cache" 2>/dev/null
rm -f "$sourceDIR/src/corelib/global/qconfig.h" 2>/dev/null
rm -f "$sourceDIR/src/corelib/global/qconfig.cpp" 2>/dev/null
*) # QT-5
# Avoid too many X11 system dependencies.
configOpt="$configOpt -qt-xcb"
;;
esac
# compile as opensource, accepting LGPL conditions
echo "yes" | \
$sourceDIR/configure \
--prefix=$prefixDIR \
-opensource \
-nomake demos \
-nomake examples \
&& time make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: Qt-$qtVERSION" \
&& finalizeQt
) || {
echo "Error building: Qt-$qtVERSION"
exit 1
}
# Additional configure options
if [ "$1" = "--" ]
then
shift
configOpt="$configOpt $@"
fi
# End of configuration options
# ----------------------------
buildDIR=$buildBASE/$qtPACKAGE
cd $QT_SOURCE_DIR || exit 1
export GIT_DIR=$PWD/.git # Mask seeing our own git-repo
[ -e Makefile ] && make distclean 2>/dev/null
# Remove any existing build folder and recreate
rm -rf $QT_ARCH_DIR
rm -rf $buildDIR 2>/dev/null
mkdir -p $buildDIR
# Remove any remnants from a previous shadow build
rm -f "$QT_SOURCE_DIR/.qmake.cache" 2>/dev/null
rm -f "$QT_SOURCE_DIR/src/corelib/global/qconfig.h" 2>/dev/null
rm -f "$QT_SOURCE_DIR/src/corelib/global/qconfig.cpp" 2>/dev/null
cd $buildDIR || exit 1
# Compile as opensource, accepting LGPL conditions (yes)
echo yes | $QT_SOURCE_DIR/configure \
-prefix $QT_ARCH_PATH \
-opensource \
$configOpt \
&& time make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: Qt-$qtVERSION" \
&& finalizeQt
) || {
echo "Error building: Qt-$qtVERSION"
exit 1
}
fi
# ----------------------------------------------------------------- end-of-file
# -----------------------------------------------------------------------------

186
makeTecio Executable file
View File

@ -0,0 +1,186 @@
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeTecio
#
# 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
#------------------------------------------------------------------------------
# Boost version (headers only) from OpenFOAM etc/config.sh file:
_foamEtc config.sh/CGAL
boostPACKAGE=${boost_version:-boost-system}
tecioPACKAGE=tecio
targetType=lib
#------------------------------------------------------------------------------
usage()
{
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
/bin/cat<<USAGE
Usage: ${0##*/} [OPTION] [boost-VERSION] [tecio-VERSION]
options:
-cmake PATH With cmake from the path given
-gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX
-help
* Compile the proprietary libtecio library
$tecioPACKAGE
with $boostPACKAGE
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Compiler settings for CMake/configure
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
-h | -help) usage ;;
-gcc) useGcc ;;
-cmake)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
CMAKE_PATH="${2%%/}"
shift
;;
boost-[0-9]* | boost_[0-9]* | boost-system )
boostPACKAGE="${1%%/}"
;;
tecio*)
tecioPACKAGE="${1%%/}"
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
#------------------------------------------------------------------------------
# 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"
if _foamIsSystem $boostPACKAGE
then
echo "Using boost-system"
# Tagged as 'system' but could actually point to a central location
[ -d "$BOOST_ARCH_PATH/include" ] || {
boostInc="/usr/include"
}
elif [ -f "$boostInc/boost/version.hpp" ]
then
echo "Using $boostPACKAGE"
fi
if [ -d "$TECIO_SOURCE_DIR" ]
then
(
# Remove any existing build folder and recreate
if [ -d $TECIO_BUILD_DIR ]
then
echo "removing old build directory"
echo " $TECIO_BUILD_DIR"
rm -rf $TECIO_BUILD_DIR
fi
mkdir -p $TECIO_BUILD_DIR
rm -rf $TECIO_ARCH_PATH
unset configBoost
echo "----"
echo "Configuring $tecioPACKAGE with boost $BOOST_VERSION"
echo " Source : $TECIO_SOURCE_DIR"
echo " Build : $TECIO_BUILD_DIR"
echo " Target : $TECIO_ARCH_PATH"
if [ -d "$BOOST_ARCH_PATH" ]
then
echo " Boost : ThirdParty (${BOOST_ARCH_PATH##*/})"
else
echo " Boost : system"
fi
cmake=$(findCMake)
echo "----"
set -x
cd $TECIO_BUILD_DIR && $cmake \
-DCMAKE_INSTALL_PREFIX=$TECIO_ARCH_PATH \
-DCMAKE_BUILD_TYPE=Release \
-DBoost_INCLUDE_DIR=$boostInc \
$TECIO_SOURCE_DIR \
&& make -j $WM_NCOMPPROCS \
&& { \
# Tecio doesn't offer to install, but fortunately only a few files,
# so just install in a single directory
mkdir -p $TECIO_ARCH_PATH 2>/dev/null
/bin/cp -pv \
$TECIO_BUILD_DIR/libtecio.a \
$TECIO_SOURCE_DIR/TECIO.h \
$TECIO_SOURCE_DIR/tecio_Exports.h \
$TECIO_ARCH_PATH
chmod 0644 $TECIO_ARCH_PATH/*
} \
&& echo "Built: $tecioPACKAGE"
) || {
echo "Error building: $tecioPACKAGE"
}
fi
#------------------------------------------------------------------------------

304
makeVTK Executable file
View File

@ -0,0 +1,304 @@
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeVTK
#
# Description
# Make and install VTK.
# The VTK sources should be located under one of these locations:
# - $WM_THIRD_PARTY_DIR/VTK-VERSION
#
# To use the VTK source from the ParaView source tree, simply make an
# appropriate link first. For example,
#
# 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%/*} && 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
#------------------------------------------------------------------------------
unset vtk_version mesa_version # Purge current values
# vtk version from OpenFOAM etc/config.sh file:
_foamEtc config.sh/vtk
VTK_VERSION="${vtk_version##*-}" # Without prefix
# New rendering backend (starting with vtk 7?).
withGL2=auto # auto-config based on version
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: ${0##*/} [OPTION] [vtk-VERSION] [CMAKE-OPTION]
options:
-gcc force g++ instead of the value from \$WM_CXX
-rebuild for repeated builds (-make -install) *use with caution*
-gl2 with new rendering backend (default: auto)
-mesa with mesa (if not already enabled)
-mesa-prefix DIR location of mesa installation
-mesa-include DIR location of mesa headers (current: ${MESA_INCLUDE:-none})
-mesa-lib PATH path to mesa library (current: ${MESA_LIBRARY:-none})
-osmesa with off-screen mesa only
-mpi with mpi
-mpi=N with max 'N' mpi processes. N=0 for no upper-limit.
-cmake PATH with cmake from the path given
-verbose verbose output in Makefiles
-version VER specify an alternative version (current: $VTK_VERSION)
-buildType NAME specify the build type (default: Release)
-suffix NAME specify a suffix to distinguish the build
-help
The -no-FEATURE option can be used to forcibly disable these features:
-no-gl2 | -no-mesa | -no-mpi
CMake options start with a capital letter and contain an '='.
For example,
${0##*/} BUILD_TESTING=ON
to add tests and avoid building documentation
For finer control, the build stages can be selected or deselected individually:
-patch -no-patch
-config -no-config
-make -no-make
-install -no-install
* Make and install VTK-$VTK_VERSION located under
\$WM_THIRD_PARTY_DIR/VTK-$VTK_VERSION
-> \$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/VTK-$VTK_VERSION$BUILD_SUFFIX
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Compiler settings for CMake/configure
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
# Various building stages
unset runPATCH runCONFIG runMAKE runINSTALL
runDEFAULT=true
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
-h | -help) usage ;;
-gcc) useGcc ;;
[0-9]* | vtk-[0-9]* | VTK-[0-9]*) # VTK version
setVtkVersion "${1%%/}"
;;
[A-Z]*=*) # cmake variables
addCMakeVariable "$1"
;;
-patch) # stage 0: patch sources
runPATCH=true
unset runDEFAULT
;;
-no-patch)
runPATCH=false
;;
-config) # stage 1: config only
runCONFIG=true
unset runDEFAULT
;;
-no-config)
runCONFIG=false
;;
-make) # stage 2: make only
runMAKE=true
unset runDEFAULT
;;
-no-make)
runMAKE=false
;;
-install) # stage 3: install only
runINSTALL=true
unset runDEFAULT
;;
-no-install)
runINSTALL=false
;;
-rebuild) # shortcut for rebuilding
runMAKE=true
runINSTALL=true
unset runDEFAULT
;;
-gl2)
withGL2=true
;;
-no-gl2)
withGL2=false
;;
-mesa)
withMESA=true
;;
-osmesa)
withMESA=true
withOSMESA=true
;;
-no-mesa)
withMESA=false
withOSMESA=false
;;
-mesa-prefix)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
withMESA=true
MESA_INCLUDE="${2%%/}/include"
# Could be under (lib64 | lib)
MESA_LIBRARY="${2%%/}/lib$WM_COMPILER_LIB_ARCH/libOSMesa.so"
[ -f "$MESA_LIBRARY" ] || MESA_LIBRARY="${2%%/}/lib/libOSMesa.so"
shift
;;
-mesa-include)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
withMESA=true
MESA_INCLUDE="${2%%/}"
shift
;;
-mesa-lib)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
withMESA=true
MESA_LIBRARY="${2%%/}"
shift
;;
-mpi)
withMPI=true
;;
-mpi=[0-9]*) # mpi and max mpi processes
withMPI=true
MPI_MAX_PROCS="${1##*=}"
;;
-no-mpi)
withMPI=false
;;
-cmake)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
CMAKE_PATH="${2%%/}"
shift
;;
-verbose)
withVERBOSE=true
;;
-version)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
setVtkVersion "${2%%/}"
VTK_VERSION="${2%%/}"
shift
;;
-buildType)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
BUILD_TYPE="$2"
shift
;;
-suffix)
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
setBuildSuffix "$2"
shift
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
[ -n "$VTK_VERSION" ] || die "The vtk-VERSION was not specified"
# Version-specific adjustments
if [ "$withGL2" = auto ]
then
if [ "${VTK_VERSION%%.*}" -lt 7 ]
then
withGL2=false
else
withGL2=true
fi
fi
if [ "$runDEFAULT" = true ]
then
: ${runPATCH:=true}
: ${runCONFIG:=true}
: ${runMAKE:=true}
: ${runINSTALL:=true}
fi
# Set configure options
#~~~~~~~~~~~~~~~~~~~~~~
addVerbosity # verbose makefiles
addMpiSupport # set MPI-specific options
addMesaSupport # set MESA-specific options
addGL2Support # new rendering backend
# Set off-screen options
if [ "$withOSMESA" = true ]
then
addCMakeVariable "VTK_USE_X=OFF"
addCMakeVariable "OPENGL_INCLUDE_DIR=$MESA_INCLUDE"
addCMakeVariable "OPENGL_gl_LIBRARY=$MESA_LIBRARY"
addCMakeVariable "OPENGL_glu_LIBRARY=$MESA_LIBRARY"
addCMakeVariable "OPENGL_xmesa_INCLUDE_DIR=$MESA_INCLUDE"
fi
setVtkDirs # where things are or should be put
# Build and install
# ~~~~~~~~~~~~~~~~~
cat<<SUMMARY
Build stages selected
---------------------
-patch ${runPATCH:-false}
-config ${runCONFIG:-false}
-make ${runMAKE:-false}
-install ${runINSTALL:-false}
---------------------
Features selected
mesa ${withMESA:-false}
mpi ${withMPI:-false}
---------------------
Version information
vtk ${VTK_VERSION:-unknown}
build ${BUILD_TYPE:-unknown}
---------------------
SUMMARY
[ "$runPATCH" = true ] && patchVTK
[ "$runCONFIG" = true ] && configVTK
[ "$runMAKE" = true ] && makeVTK
[ "$runINSTALL" = true ] && installVTK
echo
echo Done
#------------------------------------------------------------------------------

16
makeVTK.example Executable file
View File

@ -0,0 +1,16 @@
#!/bin/sh
# An example for building particular combinations of VTK with
# - mesa (off-screen only)
vtk=VTK-8.1.0
# mesa=mesa-11.2.2
# mesa=mesa-13.0.3
mesa=mesa-17.1.1
./makeVTK \
$vtk \
-osmesa \
-mesa-prefix $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$mesa \
"$@"
#------------------------------------------------------------------------------

86
minCmake Executable file
View File

@ -0,0 +1,86 @@
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# minCmake
#
# Description
# Scour CMakeLists.txt files to report the cmake_minimum required.
#
# ----------------------------------------------
# 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
}
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: ${0##*/} [OPTION] [dir1 ... dirN]
options:
-help
* Scour specified directories for CMakeLists.txt and their cmake_minimum.
* Without any arguments, select all first level directories.
USAGE
exit 1
}
#------------------------------------------------------------------------------
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
;;
-*)
usage "unknown option: '$1'"
;;
*)
break
;;
esac
shift
done
# Nothing specified - use first level of unpacked directories
[ "$#" -gt 0 ] || set -- $(find -mindepth 1 -maxdepth 1 -type d)
for dir
do
dir="${dir#./}" # Remove leading "./"
dir="${dir%/}" # Remove trailing "/"
min=$(sed -n \
-e 's/^.*cmake_minimum.*VERSION *\([0-9.][0-9.]*\).*/\1/p' \
"$dir/CMakeLists.txt" \
2>/dev/null | head -1)
if [ -n "$min" ]
then
# Remove trailing ".0" from version
echo "${min%.0}" "${dir#sources/}"
fi
done \
| sort -n -k 1 \
| xargs printf " %-10s %s\n"
# Use 4 leading spaces for easier pasting as Markdown
#------------------------------------------------------------------------------