1 | #!/bin/bash
|
---|
2 | set -eu
|
---|
3 |
|
---|
4 |
|
---|
5 | # TODO:
|
---|
6 | # - Add support for,
|
---|
7 | # - MUMPS
|
---|
8 | # - PETSc
|
---|
9 | #
|
---|
10 | # See Also:
|
---|
11 | # - configs/4/static/CMakeLists.txt
|
---|
12 | # - http://gmsh.info/doc/texinfo/gmsh.html#Compiling-the-source-code
|
---|
13 | #
|
---|
14 |
|
---|
15 | ## Constants
|
---|
16 | #
|
---|
17 | VER="4.10.5"
|
---|
18 |
|
---|
19 | PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
|
---|
20 |
|
---|
21 | # Find libgfortran so that we do not have to hardcode it.
|
---|
22 | #
|
---|
23 | # TODO:
|
---|
24 | # - Move this to etc/environment.sh
|
---|
25 | #
|
---|
26 | echo "Finding libgfortran..."
|
---|
27 | LIBGFORTRAN=$(find /usr -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
|
---|
28 | LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
|
---|
29 |
|
---|
30 | # Cleanup
|
---|
31 | rm -rf ${PREFIX} src
|
---|
32 | mkdir -p ${PREFIX} src
|
---|
33 |
|
---|
34 | # Download source
|
---|
35 | $ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
|
---|
36 |
|
---|
37 | # Unpack source
|
---|
38 | tar -xvzf gmsh-${VER}-source.tgz
|
---|
39 |
|
---|
40 | # Move source to 'src' directory
|
---|
41 | mv gmsh-${VER}-source/* src
|
---|
42 | rm -rf gmsh-${VER}-source
|
---|
43 |
|
---|
44 | # Configure
|
---|
45 | #
|
---|
46 | # NOTE:
|
---|
47 | # - Option -DENABLE_FLTK=0 is used because we do not need GUI.
|
---|
48 | # - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG
|
---|
49 | # movies.
|
---|
50 | # - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not
|
---|
51 | # importing STEP/IGES files.
|
---|
52 | # - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we
|
---|
53 | # do not need to support Apple Touch bar (does not affect compilation on
|
---|
54 | # Linux).
|
---|
55 | #
|
---|
56 | cd src
|
---|
57 | cmake \
|
---|
58 | -DCMAKE_INSTALL_PREFIX="${PREFIX}" \
|
---|
59 | -DENABLE_BUILD_DYNAMIC=1 \
|
---|
60 | -DENABLE_BUILD_SHARED=1 \
|
---|
61 | -DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" \
|
---|
62 | -DENABLE_BLAS_LAPACK=1 \
|
---|
63 | -DENABLE_EIGEN=0 \
|
---|
64 | -DENABLE_FLTK=0 \
|
---|
65 | -DENABLE_MPEG_ENCODE=0 \
|
---|
66 | -DENABLE_MPI=1 \
|
---|
67 | -DENABLE_OCC=0 \
|
---|
68 | -DENABLE_TOUCHBAR=0 \
|
---|
69 | -DMETIS_ROOT="${METIS_ROOT}"
|
---|
70 |
|
---|
71 | # Compile and install
|
---|
72 | if [ $# -eq 0 ]; then
|
---|
73 | make
|
---|
74 | make install
|
---|
75 | else
|
---|
76 | make -j $1
|
---|
77 | make -j $1 install
|
---|
78 | fi
|
---|
79 |
|
---|
80 | # Make necessary link on RHEL
|
---|
81 | if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
|
---|
82 | cd ${PREFIX}
|
---|
83 | ln -s ./lib64 ./lib
|
---|
84 | fi
|
---|