Index: ../trunk-jpl/externalpackages/boost/install-1.7-linux-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/boost/install-1.7-linux-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/boost/install-1.7-linux-static.sh (revision 25860)
@@ -6,9 +6,7 @@
#
VER="1_73_0"
-## Envrionment
-#
-export BOOST_ROOT="${ISSM_DIR}/externalpackages/boost"
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
@@ -17,17 +15,17 @@
tar -zxvf boost_${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source into 'src' directory
-mv boost_${VER}/* src/
+mv boost_${VER}/* src
rm -rf boost_${VER}
# Configure
cd src
./bootstrap.sh \
- --prefix="${BOOST_ROOT}/install" \
+ --prefix=${PREFIX} \
--with-python=python2.7
# Modify project config to enable MPI
Index: ../trunk-jpl/externalpackages/boost/install-1.7-linux-valgrind.sh
===================================================================
--- ../trunk-jpl/externalpackages/boost/install-1.7-linux-valgrind.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/boost/install-1.7-linux-valgrind.sh (revision 25860)
@@ -6,9 +6,7 @@
#
VER="1_73_0"
-## Envrionment
-#
-export BOOST_ROOT="${ISSM_DIR}/externalpackages/boost"
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
@@ -17,11 +15,11 @@
tar -zxvf boost_${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source into 'src' directory
-mv boost_${VER}/* src/
+mv boost_${VER}/* src
rm -rf boost_${VER}
# Copy customized source and config files to 'src' directory
@@ -30,7 +28,7 @@
# Configure
cd src
./bootstrap.sh \
- --prefix="${BOOST_ROOT}/install" \
+ --prefix=${PREFIX} \
--with-python=python2.7
# Modify project config to enable MPI
Index: ../trunk-jpl/externalpackages/boost/install-1.7-linux.sh
===================================================================
--- ../trunk-jpl/externalpackages/boost/install-1.7-linux.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/boost/install-1.7-linux.sh (revision 25860)
@@ -6,9 +6,7 @@
#
VER="1_73_0"
-## Envrionment
-#
-export BOOST_ROOT="${ISSM_DIR}/externalpackages/boost"
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
@@ -17,17 +15,17 @@
tar -zxvf boost_${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source into 'src' directory
-mv boost_${VER}/* src/
+mv boost_${VER}/* src
rm -rf boost_${VER}
# Configure
cd src
./bootstrap.sh \
- --prefix="${BOOST_ROOT}/install" \
+ --prefix=${PREFIX} \
--with-python=python2.7
# Modify project config to enable MPI
Index: ../trunk-jpl/externalpackages/boost/install-1.7-mac-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/boost/install-1.7-mac-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/boost/install-1.7-mac-static.sh (revision 25860)
@@ -6,9 +6,11 @@
#
VER="1_73_0"
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
+
## Environment
#
-export BOOST_ROOT="${ISSM_DIR}/externalpackages/boost"
+export LDFLAGS="-Wl,-headerpad_max_install_names"
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
@@ -17,17 +19,17 @@
tar -zxvf boost_${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source into 'src' directory
-mv boost_${VER}/* src/
+mv boost_${VER}/* src
rm -rf boost_${VER}
# Configure
cd src
./bootstrap.sh \
- --prefix="${BOOST_ROOT}/install" \
+ --prefix=${PREFIX} \
--with-python=python2.7
# Modify project config to enable MPI
@@ -40,4 +42,4 @@
#
# TODO: Reconfigure so that dynamic libraries are not compiled at all
#
-rm -f $(find ${BOOST_ROOT}/install/lib -name *.dylib)
+rm -f $(find ${PREFIX}/lib -name *.dylib)
Index: ../trunk-jpl/externalpackages/boost/install-1.7-mac.sh
===================================================================
--- ../trunk-jpl/externalpackages/boost/install-1.7-mac.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/boost/install-1.7-mac.sh (revision 25860)
@@ -6,9 +6,10 @@
#
VER="1_73_0"
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
+
## Environment
#
-export BOOST_ROOT="${ISSM_DIR}/externalpackages/boost"
export LDFLAGS="-Wl,-headerpad_max_install_names"
# Download source
@@ -18,17 +19,17 @@
tar -zxvf boost_${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source into 'src' directory
-mv boost_${VER}/* src/
+mv boost_${VER}/* src
rm -rf boost_${VER}
# Configure
cd src
./bootstrap.sh \
- --prefix=${BOOST_ROOT}/install \
+ --prefix=${PREFIX} \
--with-python=python2.7
# Modify project config to enable MPI
@@ -48,7 +49,7 @@
# - Modify the source to apply absolute paths to the library ids so that
# patching it after the fact with install_name_tool is not necessary.
#
-cd ${BOOST_ROOT}/install/lib
+cd ${PREFIX}/lib
for name in *.dylib; do
- install_name_tool -id ${BOOST_ROOT}/install/lib/${name} ${name} 2>/dev/null
+ install_name_tool -id ${PREFIX}/lib/${name} ${name} 2>/dev/null
done
Index: ../trunk-jpl/externalpackages/chaco/install.sh
===================================================================
--- ../trunk-jpl/externalpackages/chaco/install.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/chaco/install.sh (revision 25860)
@@ -9,7 +9,7 @@
PREFIX="${ISSM_DIR}/externalpackages/chaco/install" # Set to location where external package should be installed
# Cleanup
-rm -rf ${PREFIX} src Chaco-${VER}
+rm -rf ${PREFIX} src
mkdir -p ${PREFIX} src
# Download source
Index: ../trunk-jpl/externalpackages/gdal/install-3-netcdf-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gdal/install-3-netcdf-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gdal/install-3-netcdf-static.sh (nonexistent)
@@ -1,63 +0,0 @@
-#!/bin/bash
-set -eu
-
-
-# TODO
-# - May want to supply path to Python instead of, effectively, using result of
-# `which python`
-#
-
-## Constants
-#
-VER="3.1.1"
-
-HDF5_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-NETCDF_ROOT="${ISSM_DIR}/externalpackages/netcdf/install"
-PROJ_ROOT="${ISSM_DIR}/externalpackages/proj/install"
-ZLIB_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-
-## Environment
-#
-export CC=mpicc
-export CXX=mpicxx
-export LDFLAGS="-L${HDF5_ROOT}/lib" # Need to do this so HDF5 symbols referenced in NETCDF library are found at link time
-export LIBS="-lhdf5_hl -lhdf5" # Need to do this so HDF5 symbols referenced in NETCDF library are found at link time
-export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # Need this to properly set destination root for Python libraries on macOS (should not affect Linux build; do not need for this configuration, but including it for consistency)
-
-# Cleanup
-rm -rf install src
-mkdir install src
-
-# Download source
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
-
-# Unpack source
-tar -zxvf gdal-$VER.tar.gz
-
-# Move source into 'src' directory
-mv gdal-$VER/* src
-rm -rf gdal-$VER
-
-# Configure
-cd src
-./configure \
- --prefix="${PREFIX}" \
- --enable-fast-install \
- --disable-shared \
- --without-ld-shared \
- --enable-static \
- --with-pic \
- --with-libz="${ZLIB_ROOT}" \
- --with-hdf5="${HDF5_ROOT}" \
- --with-netcdf="${NETCDF_ROOT}" \
- --with-proj="${PROJ_ROOT}" \
- --with-pg=no
-
-# Compile and install
-if [ $# -eq 0 ]; then
- make
- make install
-else
- make -j $1
- make -j $1 install
-fi
Property changes on: ../trunk-jpl/externalpackages/gdal/install-3-netcdf-static.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gdal/install-3-netcdf.sh
===================================================================
--- ../trunk-jpl/externalpackages/gdal/install-3-netcdf.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gdal/install-3-netcdf.sh (nonexistent)
@@ -1,49 +0,0 @@
-#!/bin/bash
-set -eu
-
-
-# Constants
-#
-VER="3.1.1"
-
-HDF5_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-NETCDF_ROOT="${ISSM_DIR}/externalpackages/netcdf/install"
-PROJ_ROOT="${ISSM_DIR}/externalpackages/proj/install"
-ZLIB_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-
-## Environment
-#
-export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # Need this to properly set destination root for Python libraries on macOS (should not affect Linux build; do not need for this configuration, but including it for consistency)
-
-# Cleanup
-rm -rf install src
-mkdir install src
-
-# Download source
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
-
-# Unpack source
-tar -zxvf gdal-$VER.tar.gz
-
-# Move source into 'src' directory
-mv gdal-$VER/* src
-rm -rf gdal-$VER
-
-# Configure
-cd src
-./configure \
- --prefix="${PREFIX}" \
- --enable-fast-install \
- --with-libz="${ZLIB_ROOT}" \
- --with-hdf5="${HDF5_ROOT}" \
- --with-netcdf="${NETCDF_ROOT}" \
- --with-proj="${PROJ_ROOT}"
-
-# Compile and install
-if [ $# -eq 0 ]; then
- make
- make install
-else
- make -j $1
- make -j $1 install
-fi
Property changes on: ../trunk-jpl/externalpackages/gdal/install-3-netcdf.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gdal/install-3-python-netcdf-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gdal/install-3-python-netcdf-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gdal/install-3-python-netcdf-static.sh (nonexistent)
@@ -1,64 +0,0 @@
-#!/bin/bash
-set -eu
-
-
-# TODO
-# - May want to supply path to Python instead of, effectively, using result of
-# `which python`
-#
-
-## Constants
-#
-VER="3.1.1"
-
-HDF5_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-NETCDF_ROOT="${ISSM_DIR}/externalpackages/netcdf/install"
-PROJ_ROOT="${ISSM_DIR}/externalpackages/proj/install"
-ZLIB_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-
-## Environment
-#
-export CC=mpicc
-export CXX=mpicxx
-export LDFLAGS="-L${HDF5_ROOT}/lib" # Need to do this so HDF5 symbols referenced in NETCDF library are found at link time
-export LIBS="-lhdf5_hl -lhdf5" # Need to do this so HDF5 symbols referenced in NETCDF library are found at link time
-export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # Need this to properly set destination root for Python libraries on macOS (should not affect Linux build; do not need for this configuration, but including it for consistency)
-
-# Cleanup
-rm -rf install src
-mkdir install src
-
-# Download source
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
-
-# Unpack source
-tar -zxvf gdal-$VER.tar.gz
-
-# Move source into 'src' directory
-mv gdal-$VER/* src
-rm -rf gdal-$VER
-
-# Configure
-cd src
-./configure \
- --prefix="${PREFIX}" \
- --enable-fast-install \
- --disable-shared \
- --without-ld-shared \
- --enable-static \
- --with-pic \
- --with-python \
- --with-libz="${ZLIB_ROOT}" \
- --with-hdf5="${HDF5_ROOT}" \
- --with-netcdf="${NETCDF_ROOT}" \
- --with-proj="${PROJ_ROOT}" \
- --with-pg=no
-
-# Compile and install
-if [ $# -eq 0 ]; then
- make
- make install
-else
- make -j $1
- make -j $1 install
-fi
Property changes on: ../trunk-jpl/externalpackages/gdal/install-3-python-netcdf-static.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gdal/install-3-python-netcdf.sh
===================================================================
--- ../trunk-jpl/externalpackages/gdal/install-3-python-netcdf.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gdal/install-3-python-netcdf.sh (nonexistent)
@@ -1,54 +0,0 @@
-#!/bin/bash
-set -eu
-
-
-## TODO
-# - May want to supply path to Python instead of, effectively, using result of `which python`
-#
-
-## Constants
-#
-VER="3.1.1"
-
-HDF5_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-NETCDF_ROOT="${ISSM_DIR}/externalpackages/netcdf/install"
-PROJ_ROOT="${ISSM_DIR}/externalpackages/proj/install"
-ZLIB_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-
-## Environment
-#
-export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # Need this to properly set destination root for Python libraries on macOS (should not affect Linux build)
-
-# Cleanup
-rm -rf install src
-mkdir install src
-
-# Download source
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
-
-# Unpack source
-tar -zxvf gdal-$VER.tar.gz
-
-# Move source into 'src' directory
-mv gdal-$VER/* src
-rm -rf gdal-$VER
-
-# Configure
-cd src
-./configure \
- --prefix="${PREFIX}" \
- --enable-fast-install \
- --with-python \
- --with-libz="${ZLIB_ROOT}" \
- --with-hdf5="${HDF5_ROOT}" \
- --with-netcdf="${NETCDF_ROOT}" \
- --with-proj="${PROJ_ROOT}"
-
-# Compile and install
-if [ $# -eq 0 ]; then
- make
- make install
-else
- make -j $1
- make -j $1 install
-fi
Property changes on: ../trunk-jpl/externalpackages/gdal/install-3-python-netcdf.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gmsh/install-4-mac-python-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmsh/install-4-mac-python-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmsh/install-4-mac-python-static.sh (nonexistent)
@@ -1,68 +0,0 @@
-#!/bin/bash
-set -eu
-
-
-# TODO:
-# - Add support for,
-# - BLAS_LAPACK
-# - MUMPS
-# - NUMPY
-# - PETSC4PY
-# - PETSC
-# (see configs/4/mac/static/CMakeLists.txt)
-#
-
-## Constants
-#
-VER="4.5.6"
-
-PETSC_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-
-# Cleanup
-rm -rf install src
-mkdir install src
-
-# Download source
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
-
-# Untar source
-tar -xvzf gmsh-${VER}-source.tgz
-
-# Move source to 'src' directory
-mv gmsh-${VER}-source/* src
-rm -rf gmsh-${VER}-source
-
-# Copy customized source and config files to 'src' directory
-cp configs/${VER}/mac/static/CMakeLists.txt src
-
-# Configure
-#
-# NOTE:
-# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
-# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG
-# movies.
-# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not
-# importing STEP/IGES files.
-# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we
-# do not need to support Apple Touch bar.
-#
-cd install
-cmake ../src \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_INSTALL_PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" \
- -DENABLE_BUILD_LIB=1 \
- -DENABLE_FLTK=0 \
- -DENABLE_MPEG_ENCODE=0 \
- -DENABLE_MPI=1 \
- -DENABLE_OCC=0 \
- -DENABLE_TOUCHBAR=0 \
- -DMETIS_ROOT="${PETSC_ROOT}"
-
-# Compile and install
-if [ $# -eq 0 ]; then
- make
- make install
-else
- make -j $1
- make -j $1 install
-fi
Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4-mac-python-static.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gmsh/install-win64-precompiled.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmsh/install-win64-precompiled.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmsh/install-win64-precompiled.sh (nonexistent)
@@ -1,24 +0,0 @@
-#!/bin/bash
-set -eu
-
-# Set gmsh version
-VER="3.0.5"
-
-# Set tarball name
-TARBALL_NAME="gmsh-${VER}-win64-precompiled"
-TARBALL=${TARBALL_NAME}.tar.gz
-
-# Clean up from previous installation
-rm -rf install
-
-# Download Windows 64-bit precompiled gmsh from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/${TARBALL}" "${TARBALL}"
-
-# Untar gmsh
-tar -xvzf $TARBALL
-
-# Rename untarred dir
-mv $TARBALL_NAME install
-
-# Clean up
-rm -f $TARBALL
Property changes on: ../trunk-jpl/externalpackages/gmsh/install-win64-precompiled.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gmsh/install-4-linux-python-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmsh/install-4-linux-python-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmsh/install-4-linux-python-static.sh (nonexistent)
@@ -1,67 +0,0 @@
-#!/bin/bash
-set -eu
-
-
-# TODO:
-# - Add support for,
-# - BLAS_LAPACK
-# - MUMPS
-# - NUMPY
-# - PETSC4PY
-# - PETSC
-# (see configs/4/linux/static/CMakeLists.txt)
-#
-
-## Constants
-#
-VER="4.5.6"
-
-PETSC_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-
-# Cleanup
-rm -rf install src
-mkdir install src
-
-# Download source
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
-
-# Untar source
-tar -xvzf gmsh-${VER}-source.tgz
-
-# Move source to 'src' directory
-mv gmsh-${VER}-source/* src
-rm -rf gmsh-${VER}-source
-
-# Copy customized source and config files to 'src' directory
-cp configs/${VER}/static/CMakeLists.txt src
-
-# Configure
-#
-# NOTE:
-# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
-# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG
-# movies.
-# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not
-# importing STEP/IGES files.
-# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we
-# do not need to support Apple Touch bar.
-#
-cd install
-cmake ../src \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_INSTALL_PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" \
- -DENABLE_BUILD_LIB=1 \
- -DENABLE_FLTK=0 \
- -DENABLE_MPEG_ENCODE=0 \
- -DENABLE_MPI=1 \
- -DENABLE_OCC=0 \
- -DMETIS_ROOT="${PETSC_ROOT}"
-
-# Compile and install
-if [ $# -eq 0 ]; then
- make
- make install
-else
- make -j $1
- make -j $1 install
-fi
Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4-linux-python-static.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh (nonexistent)
@@ -1,63 +0,0 @@
-#!/bin/bash
-set -eu
-
-
-# TODO:
-# - Add support for,
-# - BLAS_LAPACK
-# - MUMPS
-# - PETSC
-# (see configs/4/linux/static/CMakeLists.txt)
-#
-
-## Constants
-#
-VER="4.5.6"
-
-PETSC_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-
-# Cleanup
-rm -rf install src
-mkdir install src
-
-# Download source
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
-
-# Untar source
-tar -xvzf gmsh-${VER}-source.tgz
-
-# Move source to 'src' directory
-mv gmsh-${VER}-source/* src
-rm -rf gmsh-${VER}-source
-
-# Copy customized source and config files to 'src' directory
-cp configs/${VER}/static/CMakeLists.txt src
-
-# Configure
-#
-# NOTE:
-# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
-# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG
-# movies.
-# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not
-# importing STEP/IGES files.
-#
-cd install
-cmake ../src \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_INSTALL_PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" \
- -DENABLE_BUILD_LIB=1 \
- -DENABLE_FLTK=0 \
- -DENABLE_MPEG_ENCODE=0 \
- -DENABLE_MPI=1 \
- -DENABLE_OCC=0 \
- -DMETIS_ROOT="${PETSC_ROOT}"
-
-# Compile and install
-if [ $# -eq 0 ]; then
- make
- make install
-else
- make -j $1
- make -j $1 install
-fi
Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gmsh/install-mac-precompiled.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmsh/install-mac-precompiled.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmsh/install-mac-precompiled.sh (nonexistent)
@@ -1,23 +0,0 @@
-#!/bin/bash
-set -eu
-
-# Set gmsh version
-GMSH_VER="3.0.5"
-
-# Set tarball name
-GMSH_TARBALL_NAME="gmsh-${GMSH_VER}-mac-precompiled"
-
-# Clean up from previous installation
-rm -f $GMSH_TARBALL_NAME.tar.gz
-rm -rf install src
-
-# Download Mac precompiled gmsh from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/${GMSH_TARBALL_NAME}.tar.gz" "${GMSH_TARBALL_NAME}.tar.gz"
-
-# Untar gmsh
-tar -xvzf $GMSH_TARBALL_NAME.tar.gz
-
-# Copy gmsh to path expected by packager
-mkdir install
-cp gmsh install
-rm gmsh
Property changes on: ../trunk-jpl/externalpackages/gmsh/install-mac-precompiled.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh (nonexistent)
@@ -1,65 +0,0 @@
-#!/bin/bash
-set -eu
-
-
-# TODO:
-# - Add support for,
-# - BLAS_LAPACK
-# - MUMPS
-# - PETSC
-# (see configs/4/mac/static/CMakeLists.txt)
-#
-
-## Constants
-#
-VER="4.5.6"
-
-PETSC_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-
-# Cleanup
-rm -rf install src
-mkdir install src
-
-# Download source
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
-
-# Untar source
-tar -xvzf gmsh-${VER}-source.tgz
-
-# Move source to 'src' directory
-mv gmsh-${VER}-source/* src
-rm -rf gmsh-${VER}-source
-
-# Copy customized source and config files to 'src' directory
-cp configs/${VER}/mac/static/CMakeLists.txt src
-
-# Configure
-#
-# NOTE:
-# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
-# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG
-# movies.
-# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not
-# importing STEP/IGES files.
-# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we
-# do not need to support Apple Touch bar.
-#
-cd install
-cmake ../src \
- -DCMAKE_INSTALL_PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" \
- -DENABLE_BUILD_LIB=1 \
- -DENABLE_FLTK=0 \
- -DENABLE_MPEG_ENCODE=0 \
- -DENABLE_MPI=1 \
- -DENABLE_OCC=0 \
- -DENABLE_TOUCHBAR=0 \
- -DMETIS_ROOT="${PETSC_ROOT}"
-
-# Compile and install
-if [ $# -eq 0 ]; then
- make
- make install
-else
- make -j $1
- make -j $1 install
-fi
Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gmsh/configs/4.5.6/mac/static/CMakeLists.txt
===================================================================
--- ../trunk-jpl/externalpackages/gmsh/configs/4.5.6/mac/static/CMakeLists.txt (revision 25859)
+++ ../trunk-jpl/externalpackages/gmsh/configs/4.5.6/mac/static/CMakeLists.txt (nonexistent)
@@ -1,2141 +0,0 @@
-# Gmsh - Copyright (C) 1997-2020 C. Geuzaine, J.-F. Remacle
-#
-# See the LICENSE.txt file for license information. Please report all
-# issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
-
-cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
-
-# do not warn about non-definition of WIN32 on Cygwin
-set(CMAKE_LEGACY_CYGWIN_WIN32 0)
-
-# if CMAKE_BUILD_TYPE is specified use it; otherwise set the default
-# build type to "RelWithDebInfo" ("-O2 -g" with gcc) prior to calling
-# project()
-if(DEFINED CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose build type")
-else()
- set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose build type")
-endif()
-
-project(gmsh CXX C)
-
-# this variable controls the default value of the options which are normally set
-# to ON (useful if you want to configure a minimal version of Gmsh: e.g. "cmake
-# -DDEFAULT=0 -DENABLE_POST=1 -DENABLE_PARSER=1")
-set(DEFAULT ON CACHE INTERNAL "Default value for enabled-by-default options")
-
-macro(opt OPTION HELP VALUE)
- option(ENABLE_${OPTION} ${HELP} ${VALUE})
- set(OPT_TEXI "${OPT_TEXI}\n@item ENABLE_${OPTION}\n${HELP} (default: ${VALUE})")
-endmacro()
-
-opt(3M "Enable proprietary 3M extension" OFF)
-opt(ACIS "Enable ACIS geometrical models (experimental)" ${DEFAULT})
-opt(ALGLIB "Enable ALGLIB (used by some mesh optimizers)" ${DEFAULT})
-opt(ANN "Enable ANN (used for fast point search in mesh/post)" ${DEFAULT})
-opt(BAMG "Enable Bamg 2D anisotropic mesh generator" ${DEFAULT})
-opt(BLAS_LAPACK "Enable BLAS/Lapack for linear algebra (required for meshing)" ON)
-opt(BLOSSOM "Enable Blossom algorithm (needed for full quad meshing)" ${DEFAULT})
-opt(BUILD_LIB "Enable 'lib' target for building static Gmsh library" OFF)
-opt(BUILD_SHARED "Enable 'shared' target for building shared Gmsh library" OFF)
-opt(BUILD_DYNAMIC "Enable dynamic Gmsh executable (linked with shared library)" OFF)
-opt(BUILD_ANDROID "Enable Android NDK library target (experimental)" OFF)
-opt(BUILD_IOS "Enable iOS library target (experimental)" OFF)
-opt(CGNS "Enable CGNS import/export (experimental)" ${DEFAULT})
-opt(CGNS_CPEX0045 "Enable high-order CGNS import/export following CPEX0045 (experimental)" OFF)
-opt(CAIRO "Enable Cairo to render fonts (experimental)" ${DEFAULT})
-opt(CXX11 "Enable C++11" ON)
-opt(C99 "Enable C99" ON)
-opt(PROFILE "Enable profiling compiler flags" OFF)
-opt(DINTEGRATION "Enable discrete integration (needed for levelsets)" ${DEFAULT})
-opt(DOMHEX "Enable experimental DOMHEX code" ${DEFAULT})
-opt(FLTK "Enable FLTK graphical user interface (requires mesh/post)" ${DEFAULT})
-opt(GETDP "Enable GetDP solver (linked as a library, experimental)" ${DEFAULT})
-opt(GMM "Enable GMM linear solvers (simple alternative to PETSc)" ${DEFAULT})
-opt(GMP "Enable GMP for Kbipack (advanced)" ON)
-opt(GRAPHICS "Enable building graphics lib even without GUI (advanced)" OFF)
-opt(HXT "Enable HXT library (for reparametrization and meshing)" ${DEFAULT})
-opt(KBIPACK "Enable Kbipack (neeeded by homology solver)" ${DEFAULT})
-opt(MATHEX "Enable Mathex expression parser (used by plugins and options)" ${DEFAULT})
-opt(MED "Enable MED mesh and post file formats" ${DEFAULT})
-opt(MESH "Enable mesh module (required by GUI)" ${DEFAULT})
-opt(METIS "Enable Metis mesh partitioner" ${DEFAULT})
-opt(MMG3D "Enable MMG3D 3D anisotropic mesh refinement" ${DEFAULT})
-opt(MPEG_ENCODE "Enable built-in MPEG movie encoder" ${DEFAULT})
-opt(MPI "Enable MPI (experimental, not used for meshing)" OFF)
-opt(MSVC_STATIC_RUNTIME "Enable static Visual C++ runtime" OFF)
-opt(MUMPS "Enable MUMPS sparse direct linear solver" OFF)
-opt(NETGEN "Enable Netgen 3D frontal mesh generator" ${DEFAULT})
-opt(NUMPY "Enable fullMatrix and numpy array conversion for private API" OFF)
-opt(PETSC4PY "Enable petsc4py wrappers for petsc matrices for private API" OFF)
-opt(OCC "Enable OpenCASCADE CAD kernel" ${DEFAULT})
-opt(OCC_CAF "Enable OpenCASCADE CAF module (for STEP/IGES attributes)" ${DEFAULT})
-opt(OCC_STATIC "Link OpenCASCADE static instead of dynamic libraries (requires ENABLE_OCC)" OFF)
-opt(OCC_TBB "Add TBB libraries in list of OCC libraries" OFF)
-opt(ONELAB "Enable ONELAB solver interface" ${DEFAULT})
-opt(ONELAB_METAMODEL "Enable ONELAB metamodels (experimental)" ${DEFAULT})
-opt(OPENACC "Enable OpenACC" OFF)
-opt(OPENMP "Enable OpenMP" OFF)
-opt(OPTHOM "Enable high-order mesh optimization tools" ${DEFAULT})
-opt(OS_SPECIFIC_INSTALL "Enable OS-specific (e.g. app bundle) installation" OFF)
-opt(OSMESA "Enable OSMesa for offscreen rendering (experimental)" OFF)
-opt(P4EST "Enable p4est for enabling automatic mesh size firld (experimental)" OFF)
-opt(PACKAGE_STRIP "Strip symbols in install packages to reduce install size" ON)
-opt(PARSER "Enable GEO file parser (required for .geo/.pos files)" ${DEFAULT})
-opt(PETSC "Enable PETSc linear solvers (required for SLEPc)" OFF)
-opt(PLUGINS "Enable post-processing plugins" ${DEFAULT})
-opt(POST "Enable post-processing module (required by GUI)" ${DEFAULT})
-opt(POPPLER "Enable Poppler for displaying PDF documents (experimental)" OFF)
-opt(PRIVATE_API "Enable private API" OFF)
-opt(QUADTRI "Enable QuadTri structured meshing extensions" ${DEFAULT})
-opt(REVOROPT "Enable Revoropt (used for CVT remeshing)" OFF)
-opt(SLEPC "Enable SLEPc eigensolvers" OFF)
-opt(SOLVER "Enable built-in finite element solvers (required for compounds)" ${DEFAULT})
-opt(SYSTEM_CONTRIB "Use system versions of contrib libraries, when possible" OFF)
-opt(TCMALLOC "Enable libtcmalloc (fast malloc that does not release memory)" OFF)
-opt(TOUCHBAR "Enable Apple Touch bar" ${DEFAULT})
-opt(VISUDEV "Enable additional visualization capabilities for development purposes" OFF)
-opt(VOROPP "Enable voro++ (for hex meshing, experimental)" ${DEFAULT})
-opt(WRAP_JAVA "Enable generation of Java wrappers for private API" OFF)
-opt(WRAP_PYTHON "Enable generation of Python wrappers for private API" OFF)
-opt(ZIPPER "Enable Zip file compression/decompression" OFF)
-
-set(GMSH_MAJOR_VERSION 4)
-set(GMSH_MINOR_VERSION 5)
-set(GMSH_PATCH_VERSION 6)
-set(GMSH_EXTRA_VERSION "")
-set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION}")
-
-if(NOT GMSH_RELEASE)
- find_package(Git)
- if(GIT_FOUND)
- execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ERROR_QUIET
- OUTPUT_VARIABLE GIT_COMMIT_HASH
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- endif()
- if(GIT_COMMIT_HASH)
- set(GMSH_EXTRA_VERSION "${GMSH_EXTRA_VERSION}-git-${GIT_COMMIT_HASH}")
- endif()
- set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION_TEXI} (development version)")
-endif()
-
-set(GMSH_VERSION "${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}")
-set(GMSH_VERSION "${GMSH_VERSION}.${GMSH_PATCH_VERSION}${GMSH_EXTRA_VERSION}")
-set(GMSH_SHORT_LICENSE "GNU General Public License")
-
-set(GMSH_API api/gmsh.h api/gmshc.h api/gmsh.h_cwrap)
-
-if(ENABLE_PRIVATE_API)
- message(WARNING "The private API is unsupported and undocumented. It is meant "
- "for expert Gmsh developers, not for regular Gmsh users, who should rely "
- "on the stable public API (gmsh/api) instead. If you are repackaging Gmsh, "
- "e.g. for a Linux distribution, please DO NOT distribute the private API "
- "(i.e. all the internal headers) and ship the stable public API instead "
- "(i.e. only the headers and modules in gmsh/api).")
- file(GLOB_RECURSE HEADERS Common/*.h Numeric/*.h Geo/*.h Mesh/*.h Solver/*.h
- Post/*.h Graphics/*.h contrib/kbipack/*.h contrib/DiscreteIntegration/*.h
- contrib/HighOrderMeshOptimizer/*.h contrib/MeshOptimizer/*.h
- contrib/MeshQualityOptimizer/*.h)
- set(GMSH_PRIVATE_API ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h
- ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h ${HEADERS})
- get_property(IAMCHILD DIRECTORY PROPERTY PARENT_DIRECTORY)
- if(IAMCHILD)
- set(GMSH_PRIVATE_API ${GMSH_PRIVATE_API} PARENT_SCOPE)
- endif()
-endif()
-
-set(ONELAB_PY contrib/onelab/python/onelab.py)
-set(GMSH_PY api/gmsh.py)
-set(GMSH_JL api/gmsh.jl)
-
-if(${CMAKE_MAJOR_VERSION} GREATER 2)
- string(TIMESTAMP DATE "%Y%m%d")
-else()
- execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE DATE
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-endif()
-
-if(NOT DATE)
- set(DATE "unknown")
-endif()
-set(GMSH_DATE "${DATE}")
-
-if(NOT GMSH_HOST)
- execute_process(COMMAND hostname OUTPUT_VARIABLE HOSTNAME
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(NOT HOSTNAME)
- set(HOSTNAME "unknown")
- endif()
- set(GMSH_HOST "${HOSTNAME}")
-endif()
-
-if(NOT GMSH_PACKAGER)
- execute_process(COMMAND whoami OUTPUT_VARIABLE PACKAGER
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(NOT PACKAGER)
- set(PACKAGER "unknown")
- endif()
- string(REPLACE "\\" " " PACKAGER ${PACKAGER})
- set(GMSH_PACKAGER "${PACKAGER}")
-endif()
-
-if(APPLE)
- set(GMSH_OS "MacOSX")
-elseif(CYGWIN OR MSYS)
- # detect if we use the MinGW compilers on Cygwin - if we do, handle the build
- # as a pure Windows build
- if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
- CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
- OUTPUT_VARIABLE CXX_COMPILER_MACHINE
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(CXX_COMPILER_MACHINE MATCHES "mingw")
- set(GMSH_OS "Windows")
- set(WIN32 1)
- add_definitions(-DWIN32)
- endif()
- endif()
-else()
- set(GMSH_OS "${CMAKE_SYSTEM_NAME}")
-endif()
-
-include(CheckTypeSize)
-include(CheckFunctionExists)
-include(CheckIncludeFile)
-include(CheckCXXCompilerFlag)
-include(CheckCCompilerFlag)
-
-macro(set_config_option VARNAME STRING)
- set(${VARNAME} TRUE)
- list(APPEND CONFIG_OPTIONS ${STRING})
- message(STATUS "Found " ${STRING})
-endmacro()
-
-# check if the machine is 64 bits (this is more reliable than using
-# CMAKE_SIZEOF_VOID_P, which does not seem to work e.g. on some Suse
-# machines)
-check_type_size("void*" SIZEOF_VOID_P)
-if(SIZEOF_VOID_P EQUAL 8)
- set_config_option(HAVE_64BIT_SIZE_T "64Bit")
-endif()
-
-# append 32/64 to the build name on Linux and Windows
-if(NOT APPLE)
- if(HAVE_64BIT_SIZE_T)
- set(GMSH_OS "${GMSH_OS}64")
- else()
- set(GMSH_OS "${GMSH_OS}32")
- endif()
-endif()
-
-if(NOT ENABLE_BUILD_SHARED)
- if(ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
- set(ENABLE_BUILD_DYNAMIC ON)
- endif()
-endif()
-
-if(ENABLE_BUILD_DYNAMIC)
- set(GMSH_OS "${GMSH_OS}-sdk")
-endif()
-
-if(APPLE)
- # FIXME: change this once we understand rpaths - the options below do not work
- set(CMAKE_MACOSX_RPATH 0)
-else()
- # make sure that dynamic libraries can be found when installing/ displacing the
- # binaries: from https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/
- # RPATH-handling:
-
- # use, i.e. don't skip the full RPATH for the build tree
- set(CMAKE_SKIP_BUILD_RPATH FALSE)
-
- # when building, don't use the install RPATH already (but later on when
- # installing)
- set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
-
- # add the automatically determined parts of the RPATH which point to
- # directories outside the build tree to the install RPATH
- set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-
- # the RPATH to be used when installing, but only if it's not a system directory
- list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib"
- isSystemDir)
- if("${isSystemDir}" STREQUAL "-1")
- set(CMAKE_INSTALL_RPATH "\\\$ORIGIN/../lib")
- endif()
-endif()
-
-if(MSVC)
- # remove annoying warning about bool/int cast performance
- set(GMSH_CONFIG_PRAGMAS "#pragma warning(disable:4800 4244 4267)")
- foreach(VAR
- CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
- CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
- CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
- CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
- if(ENABLE_MSVC_STATIC_RUNTIME AND ${VAR} MATCHES "/MD")
- string(REGEX REPLACE "/MD" "/MT" ${VAR} "${${VAR}}")
- endif()
- if(NOT ${VAR} MATCHES "/MP") # enable parallel compilation
- set(${VAR} "${${VAR}} /MP")
- endif()
- endforeach()
- if(ENABLE_PRIVATE_API)
- if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
- # automatically export .def file with all symbols (requires CMake 3.4);
- # depending on the compiling options this might lead to more than 64k export
- # symbols; just trim the .def file to keep the ones you need
- set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
- endif()
- endif()
-endif()
-
-if(ENABLE_OPENMP)
- find_package(OpenMP)
- if(OpenMP_FOUND)
- set_config_option(HAVE_OPENMP "OpenMP")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
- elseif(APPLE AND EXISTS "/opt/local/lib/libomp")
- # just for testing the official Apple compiler with macports' libomp
- set_config_option(HAVE_OPENMP "OpenMP[MacPorts]")
- set(CMAKE_C_FLAGS
- "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp")
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp")
- list(APPEND EXTERNAL_LIBRARIES "-L/opt/local/lib/libomp -lomp")
- elseif(APPLE AND EXISTS "/usr/local/lib/libomp.dylib")
- set_config_option(HAVE_OPENMP "OpenMP[usr/local]")
- set(CMAKE_C_FLAGS
- "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp")
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp")
- list(APPEND EXTERNAL_LIBRARIES "-lomp")
- endif()
-endif()
-
-if(ENABLE_OPENACC)
- find_package(OpenACC)
- if(OpenACC_C_FOUND AND OpenACC_CXX_FOUND)
- set_config_option(HAVE_OPENACC "OpenACC")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenACC_C_FLAGS}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenACC_CXX_FLAGS}")
- endif()
-endif()
-
-if(ENABLE_CXX11)
- # in recent cmake versions we could do e.g. set(CMAKE_CXX_STANDARD 11)
- check_cxx_compiler_flag("-std=c++11" STDCXX11)
- if(STDCXX11)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
- endif()
-endif()
-
-if(ENABLE_C99)
- # in recent cmake versions we could do e.g. set(CMAKE_C_STANDARD 99)
- check_c_compiler_flag("-std=c99" STDC99)
- if(STDC99)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
- endif()
-endif()
-
-if(ENABLE_PROFILE)
- # Using the perf set of profiling tools doesn't work without the frame
- # pointer and a common optimisation is to remove it
- check_cxx_compiler_flag("-fno-omit-frame-pointer" FNOFP)
- if(FNOFP)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
- endif()
-endif()
-
-macro(append_gmsh_src DIRNAME FILES)
- foreach(FILE ${FILES})
- list(APPEND LIST ${DIRNAME}/${FILE})
- endforeach()
- set(GMSH_SRC ${GMSH_SRC};${LIST} PARENT_SCOPE)
- set(GMSH_DIRS ${GMSH_DIRS};${DIRNAME} PARENT_SCOPE)
-endmacro()
-
-macro(find_all_libraries VARNAME LISTNAME PATH SUFFIX)
- set(${VARNAME})
- list(LENGTH ${LISTNAME} NUM_LIST)
- foreach(LIB ${${LISTNAME}})
- if("${PATH}" STREQUAL "")
- find_library(FOUND_LIB ${LIB} PATH_SUFFIXES ${SUFFIX})
- else()
- find_library(FOUND_LIB ${LIB} PATHS ${PATH} NO_DEFAULT_PATH)
- endif()
- if(FOUND_LIB)
- list(APPEND ${VARNAME} ${FOUND_LIB})
- endif()
- unset(FOUND_LIB CACHE)
- endforeach()
- list(LENGTH ${VARNAME} NUM_FOUND_LIBRARIES)
- if(NUM_FOUND_LIBRARIES LESS NUM_LIST)
- set(${VARNAME})
- endif()
-endmacro()
-
-macro(set_compile_flags LISTNAME FLAGS)
- foreach(FILE ${${LISTNAME}})
- get_source_file_property(PROP ${FILE} COMPILE_FLAGS)
- if(PROP)
- set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${PROP} ${FLAGS}")
- else()
- set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${FLAGS}")
- endif()
- endforeach()
-endmacro()
-
-if(ENABLE_BLAS_LAPACK)
- if(BLAS_LAPACK_LIBRARIES)
- # use libs as specified in the BLAS_LAPACK_LIBRARIES variable
- set_config_option(HAVE_BLAS "Blas[custom]")
- set_config_option(HAVE_LAPACK "Lapack[custom]")
- set(LAPACK_LIBRARIES ${BLAS_LAPACK_LIBRARIES})
- else()
- if(MSVC)
- # on Windows with Visual C++ try really hard to find blas/lapack *without*
- # requiring a Fortran compiler: 1) try to find the Intel MKL libs using
- # the standard search path; if not found 2) try to get the reference
- # blas/lapack libs (useful for users with no Fortran compiler and no MKL
- # license, who can just download our precompiled "gmsh-dep" package)
- if(HAVE_64BIT_SIZE_T)
- set(MKL_PATH em64t/lib)
- set(MKL_LIBS_REQUIRED libguide40 mkl_intel_lp64 mkl_intel_thread mkl_core)
- else()
- set(MKL_PATH ia32/lib)
- set(MKL_LIBS_REQUIRED libguide40 mkl_intel_c mkl_intel_thread mkl_core)
- endif()
- find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[mkl]")
- set_config_option(HAVE_LAPACK "Lapack[mkl]")
- else()
- set(REFLAPACK_LIBS_REQUIRED lapack blas g2c gcc)
- find_all_libraries(LAPACK_LIBRARIES REFLAPACK_LIBS_REQUIRED "" "")
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[ref]")
- set_config_option(HAVE_LAPACK "Lapack[ref]")
- endif()
- endif()
- elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- # on Linux try to find the Intel MKL without a Fortran compiler
- if(HAVE_64BIT_SIZE_T)
- set(MKL_PATH lib/em64t)
- else()
- set(MKL_PATH lib/32)
- endif()
- set(MKL_LIBS_REQUIRED mkl_gf_lp64 iomp5 mkl_gnu_thread mkl_core guide pthread)
- find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
- if(NOT LAPACK_LIBRARIES)
- # match lapack 9.0 on 64bit
- set(MKL_LIBS_REQUIRED mkl_lapack mkl_em64t guide)
- find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
- endif()
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[mkl]")
- set_config_option(HAVE_LAPACK "Lapack[mkl]")
- else()
- # on Linux also try to find ATLAS without a Fortran compiler, because
- # cmake ships with a buggy FindBLAS e.g. on Ubuntu Lucid Lynx
- set(ATLAS_LIBS_REQUIRED lapack f77blas cblas atlas)
- find_all_libraries(LAPACK_LIBRARIES ATLAS_LIBS_REQUIRED "" "")
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[atlas]")
- set_config_option(HAVE_LAPACK "Lapack[atlas]")
- else()
- # try with generic names
- set(GENERIC_LIBS_REQUIRED lapack blas pthread)
- find_all_libraries(LAPACK_LIBRARIES GENERIC_LIBS_REQUIRED "" "")
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[generic]")
- set_config_option(HAVE_LAPACK "Lapack[generic]")
- find_library(GFORTRAN_LIB gfortran)
- if(GFORTRAN_LIB)
- list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB})
- endif()
- endif()
- endif()
- endif()
- elseif(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
- # on SunOS we know blas and lapack are available in sunperf
- set(LAPACK_LIBRARIES -library=sunperf)
- set_config_option(HAVE_BLAS "Blas[sunperf]")
- set_config_option(HAVE_LAPACK "Lapack[sunperf]")
- elseif(APPLE)
- # on Mac we also know that blas and lapack are available
- set(LAPACK_LIBRARIES "-llapack -lblas")
- set_config_option(HAVE_BLAS "Blas[veclib]")
- set_config_option(HAVE_LAPACK "Lapack[veclib]")
- endif()
-
- if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
- # if we haven't found blas and lapack check for OpenBlas
- set(OPENBLAS_LIBS_REQUIRED openblas)
- find_all_libraries(LAPACK_LIBRARIES OPENBLAS_LIBS_REQUIRED "" "")
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[openblas]")
- set_config_option(HAVE_LAPACK "Lapack[openblas]")
- find_library(GFORTRAN_LIB gfortran)
- if(GFORTRAN_LIB)
- list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB})
- endif()
- endif()
- endif()
-
- if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
- # if we still haven't found blas and lapack, use the standard cmake tests,
- # which require a working Fortran compiler
- enable_language(Fortran)
- find_package(BLAS)
- if(BLAS_FOUND)
- set_config_option(HAVE_BLAS "Blas")
- find_package(LAPACK)
- if(LAPACK_FOUND)
- set_config_option(HAVE_LAPACK "Lapack")
- else()
- set(LAPACK_LIBRARIES ${BLAS_LIBRARIES})
- endif()
- if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
- if(CMAKE_Fortran_COMPILER MATCHES "gfortran")
- list(APPEND LAPACK_LIBRARIES gfortran)
- elseif(CMAKE_Fortran_COMPILER MATCHES "f95")
- list(APPEND LAPACK_LIBRARIES gfortran)
- elseif(CMAKE_Fortran_COMPILER MATCHES "g77")
- list(APPEND LAPACK_LIBRARIES g2c)
- endif()
- elseif(CMAKE_Fortran_COMPILER MATCHES "pgi")
- list(APPEND LAPACK_LIBRARIES -pgf77libs)
- endif()
- endif()
- endif()
-
- if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
- message(WARNING "Could not find Blas or Lapack: most meshing algorithms "
- "will not be functional")
- endif()
-
- endif()
-endif()
-
-if(ENABLE_TCMALLOC)
- find_library(TCMALLOC tcmalloc)
- if(TCMALLOC)
- set_config_option(HAVE_TCMALLOC "TCMalloc")
- list(APPEND EXTERNAL_LIBRARIES ${TCMALLOC})
- endif()
-endif()
-
-add_subdirectory(Common)
-add_subdirectory(Numeric)
-add_subdirectory(Geo)
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh AND ENABLE_MESH)
- add_subdirectory(Mesh)
- set_config_option(HAVE_MESH "Mesh")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Solver AND ENABLE_SOLVER)
- add_subdirectory(Solver)
- set_config_option(HAVE_SOLVER "Solver")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Post AND ENABLE_POST)
- add_subdirectory(Post)
- set_config_option(HAVE_POST "Post")
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Plugin AND ENABLE_PLUGINS)
- add_subdirectory(Plugin)
- set_config_option(HAVE_PLUGINS "Plugins")
- endif()
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Parser AND ENABLE_PARSER)
- add_subdirectory(Parser)
- set_config_option(HAVE_PARSER "Parser")
-endif()
-
-if(ENABLE_VISUDEV)
- set_config_option(HAVE_VISUDEV "VisuDev")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fltk AND ENABLE_FLTK)
- # first, try to use fltk-config for fltk >= 1.3 (FindFLTK is buggy on Unix,
- # where e.g. xft and xinerama options are not dealt with)
- find_program(FLTK_CONFIG_SCRIPT fltk-config)
- if(FLTK_CONFIG_SCRIPT)
- execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --api-version
- OUTPUT_VARIABLE FLTK_VERSION)
- string(STRIP "${FLTK_VERSION}" FLTK_VERSION)
- if(FLTK_VERSION VERSION_GREATER 1.1)
- add_subdirectory(Fltk)
- set_config_option(HAVE_FLTK "Fltk")
- message(STATUS "Using fltk-config script for Fltk " ${FLTK_VERSION})
- execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --includedir
- OUTPUT_VARIABLE FLTK_INCLUDE_DIR)
- string(STRIP ${FLTK_INCLUDE_DIR} FLTK_INCLUDE_DIR)
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR})
- # On linux (at least OpenSuSE) the following directories are
- # not existing (everything is in /usr/include). To avoid warnings
- # check existance of these directories before adding them
- if(EXISTS ${FLTK_INCLUDE_DIR}/FL/images)
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/FL/images)
- endif()
- if(EXISTS ${FLTK_INCLUDE_DIR}/jpeg)
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/jpeg)
- endif()
- if(EXISTS ${FLTK_INCLUDE_DIR}/zlib)
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/zlib)
- endif()
- if(EXISTS ${FLTK_INCLUDE_DIR}/png)
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/png)
- endif()
- execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --ldflags
- OUTPUT_VARIABLE FLTK_LIBRARIES)
- string(STRIP ${FLTK_LIBRARIES} FLTK_LIBRARIES)
- string(REGEX MATCH "fltk[_ ]jpeg" FLTK_JPEG ${FLTK_LIBRARIES})
- string(REGEX MATCH "fltk[_ ]z" FLTK_Z ${FLTK_LIBRARIES})
- string(REGEX MATCH "fltk[_ ]png" FLTK_PNG ${FLTK_LIBRARIES})
- endif()
- endif()
- # then try the built-in FindFLTK module
- if(NOT HAVE_FLTK)
- set(FLTK_SKIP_FORMS TRUE)
- set(FLTK_SKIP_FLUID TRUE)
- find_package(FLTK)
- if(FLTK_FOUND)
- add_subdirectory(Fltk)
- set_config_option(HAVE_FLTK "Fltk")
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR})
- # find fltk jpeg
- find_library(FLTK_JPEG NAMES fltk_jpeg fltkjpeg)
- if(FLTK_JPEG)
- list(APPEND EXTERNAL_LIBRARIES ${FLTK_JPEG})
- foreach(DIR ${FLTK_INCLUDE_DIR})
- list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/jpeg)
- endforeach()
- endif()
- # find fltk zlib
- find_library(FLTK_Z NAMES fltk_z fltkz)
- if(FLTK_Z)
- list(APPEND EXTERNAL_LIBRARIES ${FLTK_Z})
- foreach(DIR ${FLTK_INCLUDE_DIR})
- list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/zlib)
- endforeach()
- endif()
- # find fltk png
- find_library(FLTK_PNG NAMES fltk_png fltkpng)
- if(FLTK_PNG)
- list(APPEND EXTERNAL_LIBRARIES ${FLTK_PNG})
- foreach(DIR ${FLTK_INCLUDE_DIR})
- list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/png)
- endforeach()
- endif()
- endif()
- endif()
- # workaround for Fedora/Suse messing up fltk-config (see issue #417)
- if(HAVE_FLTK AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- string(REGEX MATCH "X11" FLTK_X11 ${FLTK_LIBRARIES})
- if(NOT FLTK_X11)
- find_package(X11)
- if(X11_FOUND)
- list(APPEND EXTERNAL_INCLUDES ${X11_INCLUDE_DIR})
- list(APPEND EXTERNAL_LIBRARIES ${X11_LIBRARIES})
- endif()
- endif()
- endif()
-endif()
-
-if(APPLE AND HAVE_FLTK AND ENABLE_TOUCHBAR)
- if(CMAKE_OSX_DEPLOYMENT_TARGET)
- if(${CMAKE_OSX_DEPLOYMENT_TARGET} VERSION_GREATER 10.11)
- set(GMSH_SRC ${GMSH_SRC};Fltk/touchBar.mm)
- set_config_option(HAVE_TOUCHBAR "TouchBar")
- endif()
- endif()
-endif()
-
-if(ENABLE_ONELAB)
- set_config_option(HAVE_ONELAB "ONELAB")
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab)
- if(ENABLE_ONELAB_METAMODEL)
- add_subdirectory(contrib/onelab)
- include_directories(contrib/onelab)
- set_config_option(HAVE_ONELAB_METAMODEL "ONELABMetamodel")
- endif()
- file(COPY ${ONELAB_PY} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
- endif()
-endif()
-
-if(ENABLE_BUILD_IOS)
- find_file(CMAKE_TOOLCHAIN_FILE "ios.cmake")
- if(NOT CMAKE_TOOLCHAIN_FILE)
- message(FATAL_ERROR "Cannot compile Gmsh for iOS without a toolchain")
- endif()
- add_definitions(-DBUILD_IOS)
-endif()
-
-if(HAVE_FLTK OR ENABLE_GRAPHICS)
- if(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS OR NOT HAVE_ONELAB)
- message(SEND_ERROR "Cannot compile GUI without Mesh, Post, Plugin and ONELAB")
- endif()
-
- if(FLTK_JPEG)
- set_config_option(HAVE_LIBJPEG "Jpeg[fltk]")
- else()
- find_package(JPEG)
- if(JPEG_FOUND)
- set_config_option(HAVE_LIBJPEG "Jpeg")
- list(APPEND EXTERNAL_LIBRARIES ${JPEG_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${JPEG_INCLUDE_DIR})
- endif()
- endif()
-
- if(FLTK_Z)
- set_config_option(HAVE_LIBZ "Zlib[fltk]")
- else()
- find_package(ZLIB)
- if(ZLIB_FOUND)
- set_config_option(HAVE_LIBZ "Zlib")
- list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
- endif()
- endif()
-
- if(HAVE_LIBZ)
- if(FLTK_PNG)
- set_config_option(HAVE_LIBPNG "Png[fltk]")
- else()
- find_package(PNG)
- if(PNG_FOUND)
- set_config_option(HAVE_LIBPNG "Png")
- list(APPEND EXTERNAL_LIBRARIES ${PNG_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${PNG_INCLUDE_DIR})
- endif()
- endif()
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mpeg_encode AND
- ENABLE_MPEG_ENCODE)
- add_subdirectory(contrib/mpeg_encode)
- include_directories(contrib/mpeg_encode/headers)
- set_config_option(HAVE_MPEG_ENCODE "Mpeg")
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M AND ENABLE_3M)
- add_subdirectory(contrib/3M)
- include_directories(contrib/3M)
- set_config_option(HAVE_3M "3M")
- endif()
-
- if(ENABLE_OSMESA)
- find_library(OSMESA_LIB OSMesa)
- if(OSMESA_LIB)
- set_config_option(HAVE_OSMESA "OSMesa")
- list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB})
- endif()
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Graphics)
- set(OpenGL_GL_PREFERENCE "LEGACY")
- find_package(OpenGL REQUIRED)
- if(OPENGL_GLU_FOUND AND OPENGL_FOUND)
- add_subdirectory(Graphics)
- set_config_option(HAVE_OPENGL "OpenGL")
- else()
- message(SEND_ERROR "Could not find GLU: disabling OpenGL support")
- endif()
- endif()
-endif()
-
-if(ENABLE_ANN)
- find_library(ANN_LIB ANN PATH_SUFFIXES lib)
- find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN)
- if(ENABLE_SYSTEM_CONTRIB AND ANN_LIB AND ANN_INC)
- message(STATUS "Using system version of ANN")
- list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB})
- list(APPEND EXTERNAL_INCLUDES ${ANN_INC})
- set_config_option(HAVE_ANN "Ann[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ANN)
- add_subdirectory(contrib/ANN)
- include_directories(contrib/ANN/include)
- set_config_option(HAVE_ANN "Ann")
- endif()
-endif()
-
-if(ENABLE_ALGLIB)
- find_library(ALGLIB_LIB alglib PATH_SUFFIXES lib)
- find_path(ALGLIB_INC "stdafx.h" PATH_SUFFIXES include)
- if(ENABLE_SYSTEM_CONTRIB AND ALGLIB_LIB AND ALGLIB_INC)
- list(APPEND EXTERNAL_LIBRARIES ${ALGLIB_LIB})
- list(APPEND EXTERNAL_INCLUDES ${ALGLIB_INC})
- set_config_option(HAVE_ALGLIB "ALGLIB[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ALGLIB)
- add_subdirectory(contrib/ALGLIB)
- include_directories(contrib/ALGLIB)
- set_config_option(HAVE_ALGLIB "ALGLIB")
- endif()
-endif()
-
-if(HAVE_FLTK AND ENABLE_CAIRO)
- find_library(CAIRO_LIB cairo)
- find_path(CAIRO_INC "cairo/cairo.h" PATH_SUFFIXES include)
- if(CAIRO_INC AND CAIRO_LIB)
- set_config_option(HAVE_CAIRO "Cairo")
- list(APPEND EXTERNAL_LIBRARIES ${CAIRO_LIB})
- list(APPEND EXTERNAL_INCLUDES ${CAIRO_INC})
- endif()
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/DiscreteIntegration AND
- ENABLE_DINTEGRATION)
- add_subdirectory(contrib/DiscreteIntegration)
- include_directories(contrib/DiscreteIntegration)
- set_config_option(HAVE_DINTEGRATION "DIntegration")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/HighOrderMeshOptimizer AND
- EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshOptimizer AND
- EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshQualityOptimizer AND
- ENABLE_OPTHOM AND HAVE_MESH)
- add_subdirectory(contrib/HighOrderMeshOptimizer)
- include_directories(contrib/HighOrderMeshOptimizer)
- add_subdirectory(contrib/MeshOptimizer)
- include_directories(contrib/MeshOptimizer)
- include_directories(${CMAKE_CURRENT_BINARY_DIR}/contrib/MeshOptimizer)
- add_subdirectory(contrib/MeshQualityOptimizer)
- include_directories(contrib/MeshQualityOptimizer)
- set_config_option(HAVE_OPTHOM "OptHom")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/domhex AND
- ENABLE_DOMHEX AND HAVE_MESH)
- add_subdirectory(contrib/domhex)
- include_directories(contrib/domhex)
- set_config_option(HAVE_DOMHEX "DomHex")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/QuadTri AND
- ENABLE_QUADTRI AND HAVE_MESH)
- add_subdirectory(contrib/QuadTri)
- include_directories(contrib/QuadTri)
- set_config_option(HAVE_QUADTRI "QuadTri")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/kbipack AND ENABLE_KBIPACK)
- set_config_option(HAVE_KBIPACK "Kbipack")
- add_subdirectory(contrib/kbipack)
- include_directories(contrib/kbipack)
- if(ENABLE_GMP)
- find_library(GMP_LIB libgmp.a)
- find_path(GMP_INC "gmp.h" PATH_SUFFIXES src include)
- endif()
- if(GMP_LIB AND GMP_INC)
- set_config_option(HAVE_GMP "GMP")
- list(APPEND EXTERNAL_LIBRARIES ${GMP_LIB})
- list(APPEND EXTERNAL_INCLUDES ${GMP_INC})
- else()
- message(STATUS "GMP not found: Kbipack uses long int")
- endif()
-endif()
-
-if(ENABLE_MATHEX)
- find_library(MATHEX_LIB mathex PATH_SUFFIXES lib)
- find_path(MATHEX_INC "mathex.h" PATH_SUFFIXES src include)
- if(ENABLE_SYSTEM_CONTRIB AND MATHEX_LIB AND MATHEX_INC)
- list(APPEND EXTERNAL_LIBRARIES ${MATHEX_LIB})
- list(APPEND EXTERNAL_INCLUDES ${MATHEX_INC})
- set_config_option(HAVE_MATHEX "MathEx[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MathEx)
- add_subdirectory(contrib/MathEx)
- include_directories(contrib/MathEx)
- set_config_option(HAVE_MATHEX "MathEx")
- endif()
-endif()
-
-if(ENABLE_MPI)
- find_package(MPI)
- if(MPI_FOUND)
- set_config_option(HAVE_MPI "MPI")
- list(APPEND EXTERNAL_INCLUDES ${MPI_CXX_INCLUDE_PATH})
- list(APPEND EXTERNAL_LIBRARIES ${MPI_CXX_LIBRARIES})
- set(CMAKE_C_COMPILER ${MPI_C_COMPILER})
- set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER})
- set(CMAKE_Fortran_COMPILER ${MPI_Fortran_COMPILER})
- endif()
-endif()
-
-if(ENABLE_POPPLER)
- find_library(POPPLER_LIB poppler)
- find_library(POPPLER_CPP_LIB poppler-cpp)
- find_path(POPPLER_INC "poppler/cpp/poppler-document.h" PATH_SUFFIXES src include)
- if(POPPLER_LIB AND POPPLER_INC)
- set_config_option(HAVE_POPPLER "Poppler")
- list(APPEND EXTERNAL_LIBRARIES ${POPPLER_LIB})
- list(APPEND EXTERNAL_LIBRARIES ${POPPLER_CPP_LIB})
- list(APPEND EXTERNAL_INCLUDES ${POPPLER_INC})
- endif()
-endif()
-
-if(ENABLE_P4EST)
- find_library(P4EST_LIB p4est)
- find_path(P4EST_INC "p4est.h" PATH_SUFFIXES src)
- find_library(SC_LIB sc)
- if(P4EST_LIB AND P4EST_INC AND SC_LIB)
- set_config_option(HAVE_P4EST "P4est")
- list(APPEND EXTERNAL_LIBRARIES ${P4EST_LIB} ${SC_LIB})
- list(APPEND EXTERNAL_INCLUDES ${P4EST_INC})
- endif()
-endif()
-
-if(HAVE_MESH OR HAVE_SOLVER)
- if(ENABLE_METIS)
- if(METIS_ROOT)
- find_library(METIS_LIB metis PATHS ${METIS_ROOT} PATH_SUFFIXES lib)
- find_path(METIS_INC "metis.h" PATHS ${METIS_ROOT} PATH_SUFFIXES include)
- list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB})
- list(APPEND EXTERNAL_INCLUDES ${METIS_INC})
- set_config_option(HAVE_METIS "Metis")
- else()
- find_library(METIS_LIB metis PATH_SUFFIXES lib)
- find_path(METIS_INC "metis.h" PATH_SUFFIXES include)
- if(ENABLE_SYSTEM_CONTRIB AND METIS_LIB AND METIS_INC)
- message(STATUS "Using system version of METIS")
- list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB})
- list(APPEND EXTERNAL_INCLUDES ${METIS_INC})
- set_config_option(HAVE_METIS "Metis[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/metis)
- add_definitions(-DUSE_GKREGEX)
- add_subdirectory(contrib/metis)
- include_directories(contrib/metis/include contrib/metis/libmetis
- contrib/metis/GKlib)
- set_config_option(HAVE_METIS "Metis")
- endif()
- endif()
- endif()
-endif()
-
-if(HAVE_MESH)
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh/tetgenBR.cxx)
- set_config_option(HAVE_TETGENBR "TetGen/BR")
- endif()
-
- if(ENABLE_VOROPP)
- find_library(VOROPP_LIB voro++ PATH_SUFFIXES lib)
- find_path(VOROPP_INC "voro++.hh" PATH_SUFFIXES include)
- if(ENABLE_SYSTEM_CONTRIB AND VOROPP_LIB AND VOROPP_INC)
- message(STATUS "Using system version of voro++")
- list(APPEND EXTERNAL_LIBRARIES ${VOROPP_LIB})
- list(APPEND EXTERNAL_INCLUDES ${VOROPP_INC})
- set_config_option(HAVE_VOROPP "Voro++[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/voro++)
- add_subdirectory(contrib/voro++)
- include_directories(contrib/voro++/src)
- set_config_option(HAVE_VOROPP "Voro++")
- endif()
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/blossom AND ENABLE_BLOSSOM)
- add_subdirectory(contrib/blossom)
- include_directories(contrib/blossom/MATCH contrib/blossom/concorde97
- contrib/blossom/concorde97/INCLUDE)
- set_config_option(HAVE_BLOSSOM "Blossom")
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Netgen AND ENABLE_NETGEN)
- add_subdirectory(contrib/Netgen)
- include_directories(contrib/Netgen contrib/Netgen/libsrc/include
- contrib/Netgen/nglib)
- set_config_option(HAVE_NETGEN "Netgen")
- add_definitions(-DNO_PARALLEL_THREADS -DNOTCL)
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/bamg AND ENABLE_BAMG)
- add_subdirectory(contrib/bamg)
- include_directories(contrib/bamg contrib/bamg/bamglib)
- set_config_option(HAVE_BAMG "Bamg")
- endif()
-
- if(ENABLE_MMG3D)
- find_library(MMG3D_LIB mmg3d PATH_SUFFIXES lib)
- find_path(MMG3D_INC "libmmg3d.h" PATH_SUFFIXES src include)
- if(ENABLE_SYSTEM_CONTRIB AND MMG3D_LIB AND MMG3D_INC)
- list(APPEND EXTERNAL_LIBRARIES ${MMG3D_LIB})
- list(APPEND EXTERNAL_INCLUDES ${MMG3D_INC})
- set_config_option(HAVE_MMG3D "Mmg3d[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mmg3d)
- add_subdirectory(contrib/mmg3d)
- include_directories(contrib/mmg3d/build/sources)
- set_config_option(HAVE_MMG3D "Mmg3d")
- endif()
- endif()
-endif()
-
-if(ENABLE_MED OR ENABLE_CGNS)
- find_package(HDF5)
- if(HDF5_FOUND)
- set(HDF5_LIB "${HDF5_C_LIBRARIES}")
- list(APPEND EXTERNAL_INCLUDES ${HDF5_INCLUDE_DIRS})
- if(ENABLE_MED)
- find_library(MED_LIB medC)
- if(MED_LIB)
- set_config_option(HAVE_MED "Med")
- list(APPEND EXTERNAL_LIBRARIES ${MED_LIB})
- endif()
- endif()
- if(ENABLE_CGNS)
- find_library(CGNS_LIB cgns HINTS ENV CGNS_ROOT PATH_SUFFIXES lib)
- find_path(CGNS_INC "cgnslib.h" HINTS ENV CGNS_ROOT PATH_SUFFIXES include)
- if(CGNS_LIB AND CGNS_INC)
- set_config_option(HAVE_LIBCGNS "Cgns")
- list(APPEND EXTERNAL_LIBRARIES ${CGNS_LIB})
- list(APPEND EXTERNAL_INCLUDES ${CGNS_INC})
- if(ENABLE_CGNS_CPEX0045)
- set_config_option(HAVE_LIBCGNS_CPEX0045 "Cgns_CPEX0045")
- endif()
- endif()
- endif()
- if(MED_LIB OR CGNS_LIB)
- list(APPEND EXTERNAL_LIBRARIES ${HDF5_LIB})
- find_library(SZ_LIB NAMES szlib sz)
- if(SZ_LIB)
- list(APPEND EXTERNAL_LIBRARIES ${SZ_LIB})
- endif()
- if(NOT HAVE_LIBZ) # necessary for non-GUI builds
- find_package(ZLIB)
- if(ZLIB_FOUND)
- set_config_option(HAVE_LIBZ "Zlib")
- list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
- endif()
- endif()
- endif()
- else()
- message(STATUS "HDF5 not found")
- endif()
-endif()
-
-if(HAVE_SOLVER)
- if(ENABLE_GMM)
- find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm)
- if(ENABLE_SYSTEM_CONTRIB AND GMM_INC)
- message(STATUS "Using system version of GMM")
- list(APPEND EXTERNAL_INCLUDES ${GMM_INC})
- set_config_option(HAVE_GMM "Gmm[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/gmm)
- include_directories(contrib/gmm)
- set_config_option(HAVE_GMM "Gmm")
- endif()
- endif()
-
- if(ENABLE_PETSC)
- if(PETSC_DIR)
- set(ENV_PETSC_DIR ${PETSC_DIR})
- else()
- set(ENV_PETSC_DIR $ENV{PETSC_DIR})
- endif()
- if(PETSC_ARCH)
- set(ENV_PETSC_ARCH ${PETSC_ARCH})
- else()
- set(ENV_PETSC_ARCH $ENV{PETSC_ARCH})
- endif()
- set(PETSC_POSSIBLE_CONF_FILES
- ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables
- ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc-conf/petscvariables
- ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc/conf/petscvariables)
- foreach(FILE ${PETSC_POSSIBLE_CONF_FILES})
- if(EXISTS ${FILE})
- # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH)
- message(STATUS "Using PETSc dir: ${ENV_PETSC_DIR}")
- message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}")
- # find includes by parsing the petscvariables file
- file(STRINGS ${FILE} PETSC_VARIABLES NEWLINE_CONSUME)
- endif()
- endforeach()
- if(PETSC_VARIABLES)
- # try to find PETSC_CC_INCLUDES for PETSc >= 3.4
- string(REGEX MATCH "PETSC_CC_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
- ${PETSC_VARIABLES})
- if(PETSC_PACKAGES_INCLUDES)
- string(REPLACE "PETSC_CC_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
- ${PETSC_PACKAGES_INCLUDES})
- else()
- # try to find PETSC_PACKAGES_INCLUDES in older versions
- list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include)
- list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
- string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
- ${PETSC_VARIABLES})
- string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
- ${PETSC_PACKAGES_INCLUDES})
- endif()
- if(PETSC_PACKAGES_INCLUDES)
- if(PETSC_PACKAGES_INCLUDES)
- string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
- string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
- foreach(VAR ${PETSC_PACKAGES_INCLUDES})
- # seem to include unexisting directories (/usr/include/lib64)
- # check to avoid warnings
- if(EXISTS ${VAR})
- list(APPEND EXTERNAL_INCLUDES ${VAR})
- endif()
- endforeach()
- endif()
- endif()
- # find libraries (<= 3.0)
- set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc)
- find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED
- ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "")
- # petsc 3.1 creates only one library (libpetsc)
- if(NOT PETSC_LIBS)
- find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib
- NO_DEFAULT_PATH)
- endif()
- if(PETSC_LIBS)
- set_config_option(HAVE_PETSC "PETSc")
- if(NOT HAVE_BLAS)
- set_config_option(HAVE_BLAS "Blas[petsc]")
- endif()
- if(NOT HAVE_LAPACK)
- set_config_option(HAVE_LAPACK "Lapack[petsc]")
- endif()
- endif()
- # find slepc (needs to be linked in before petsc)
- if(ENABLE_SLEPC)
- if(SLEPC_DIR)
- set(ENV_SLEPC_DIR ${SLEPC_DIR})
- else()
- set(ENV_SLEPC_DIR $ENV{SLEPC_DIR})
- endif()
- find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib
- NO_DEFAULT_PATH)
- if(SLEPC_LIB)
- find_path(SLEPC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR} PATH_SUFFIXES include
- ${ENV_PETSC_ARCH}/include include/slepc NO_DEFAULT_PATH)
- if(SLEPC_INC)
- message(STATUS "Using SLEPc dir: ${ENV_SLEPC_DIR}")
- set_config_option(HAVE_SLEPC "SLEPc")
- list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
- list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC})
- find_path(SLEPC_INC2 "slepcconf.h" PATHS ${ENV_SLEPC_DIR}
- PATH_SUFFIXES ${ENV_PETSC_ARCH}/include NO_DEFAULT_PATH)
- if(SLEPC_INC2)
- list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2})
- endif()
- endif()
- endif()
- endif()
- list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
- # find additional libraries to link with
- string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES})
- if(PLIBS)
- string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS})
- string(STRIP ${PLIBS} PLIBS)
- list(APPEND EXTERNAL_LIBRARIES "${PLIBS}")
- endif()
- string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES})
- if(PLIBS_BASIC)
- string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC})
- string(STRIP ${PLIBS_BASIC} PLIBS_BASIC)
- separate_arguments(PLIBS_BASIC)
- list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}")
- endif()
- string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES})
- if(LLIBS)
- string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS})
- string(STRIP ${LLIBS} LLIBS)
- list(APPEND EXTERNAL_LIBRARIES "${LLIBS}")
- endif()
- else()
- # new-style PETSc installations (in standard system directories)
- find_library(PETSC_LIBS petsc)
- find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc)
- if(PETSC_LIBS AND PETSC_INC)
- set_config_option(HAVE_PETSC "PETSc")
- if(ENABLE_SLEPC)
- find_library(SLEPC_LIB slepc)
- find_path(SLEPC_INC "slepc.h" PATH_SUFFIXES include/slepc)
- if(SLEPC_LIB AND SLEPC_INC)
- set_config_option(HAVE_SLEPC "SLEPc")
- list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
- list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC})
- endif()
- endif()
- list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
- list(APPEND EXTERNAL_INCLUDES ${PETSC_INC})
- endif()
- endif()
- endif()
-
- if(ENABLE_MUMPS AND HAVE_BLAS AND HAVE_LAPACK)
- set(MUMPS_LIBS_REQUIRED smumps dmumps cmumps zmumps mumps_common pord)
- if(NOT ENABLE_MPI)
- list(APPEND MUMPS_LIBS_REQUIRED mpiseq)
- endif()
- find_all_libraries(MUMPS_LIBRARIES MUMPS_LIBS_REQUIRED "" "lib")
- find_path(SMUMPS_INC "smumps_c.h" PATH_SUFFIXES src include)
- find_path(DMUMPS_INC "dmumps_c.h" PATH_SUFFIXES src include)
- find_path(CMUMPS_INC "cmumps_c.h" PATH_SUFFIXES src include)
- find_path(ZMUMPS_INC "zmumps_c.h" PATH_SUFFIXES src include)
- if(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC)
- set_config_option(HAVE_MUMPS "MUMPS")
- list(APPEND EXTERNAL_LIBRARIES ${MUMPS_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${SMUMPS_INC})
- list(APPEND EXTERNAL_INCLUDES ${DMUMPS_INC})
- list(APPEND EXTERNAL_INCLUDES ${CMUMPS_INC})
- list(APPEND EXTERNAL_INCLUDES ${ZMUMPS_INC})
- find_library(GFORTRAN_LIB gfortran)
- if(GFORTRAN_LIB)
- list(APPEND EXTERNAL_LIBRARIES ${GFORTRAN_LIB})
- endif()
- if(ENABLE_GMM) # use GMM/MUMPS interface
- add_definitions(-DGMM_USES_MUMPS)
- endif()
- endif()
- endif()
-
- if(ENABLE_GETDP)
- find_library(GETDP_LIB GetDP)
- find_path(GETDP_INC "GetDP.h" PATH_SUFFIXES getdp)
- if(GETDP_LIB AND GETDP_INC)
- set_config_option(HAVE_GETDP "GetDP")
- list(APPEND EXTERNAL_LIBRARIES ${GETDP_LIB})
- list(APPEND EXTERNAL_INCLUDES ${GETDP_INC})
- endif()
- endif()
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt AND
- ENABLE_HXT AND HAVE_METIS)
- set_config_option(HAVE_HXT "Hxt")
- add_subdirectory(contrib/hxt)
- include_directories(BEFORE contrib/hxt)
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/hxt_tetDelaunay.c)
- set_config_option(HAVE_HXT3D "Hxt3D")
- endif()
- if(MSVC)
- # Visual C++ does not support C99 - force compilation as C++ code
- file(GLOB_RECURSE HXT_SRC contrib/hxt/*.c)
- set_compile_flags(HXT_SRC "/TP")
- endif()
- check_include_file("immintrin.h" HAVE_IMMINTRIN_H)
- if(NOT HAVE_IMMINTRIN_H)
- add_definitions(-DHAVE_NO_IMMINTRIN_H)
- endif()
- if(HAVE_PETSC)
- add_definitions(-DHXT_HAVE_PETSC)
- endif()
- if(CMAKE_C_COMPILER MATCHES "pgi")
- add_definitions(-DHAVE_NO_OPENMP_SIMD)
- endif()
-endif()
-
-if(ENABLE_OCC)
- set(OCC_MINIMAL_VERSION "6.9.1")
- if(WIN32)
- if(HAVE_64BIT_SIZE_T)
- set(OCC_SYS_NAME win64)
- else()
- set(OCC_SYS_NAME win32)
- endif()
- else()
- set(OCC_SYS_NAME ${CMAKE_SYSTEM_NAME})
- endif()
- find_path(OCC_INC "Standard_Version.hxx" HINTS ENV CASROOT PATH_SUFFIXES
- inc include include/oce opencascade include/opencascade
- occt include/occt)
- if(OCC_INC)
- file(STRINGS ${OCC_INC}/Standard_Version.hxx
- OCC_MAJOR REGEX "#define OCC_VERSION_MAJOR.*")
- file(STRINGS ${OCC_INC}/Standard_Version.hxx
- OCC_MINOR REGEX "#define OCC_VERSION_MINOR.*")
- file(STRINGS ${OCC_INC}/Standard_Version.hxx
- OCC_MAINT REGEX "#define OCC_VERSION_MAINTENANCE.*")
- if(OCC_MAJOR AND OCC_MINOR AND OCC_MAINT)
- string(REGEX MATCH "[0-9]+" OCC_MAJOR "${OCC_MAJOR}")
- string(REGEX MATCH "[0-9]+" OCC_MINOR "${OCC_MINOR}")
- string(REGEX MATCH "[0-9]+" OCC_MAINT "${OCC_MAINT}")
- set(OCC_VERSION "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
- message(STATUS "Found OpenCASCADE version ${OCC_VERSION} in ${OCC_INC}")
- endif()
- endif()
- if(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION})
- message(WARNING "Gmsh requires OpenCASCADE >= ${OCC_MINIMAL_VERSION}. "
- "Use CMAKE_PREFIX_PATH or the CASROOT environment variable "
- "to explicitely specify the installation path of OpenCASCADE")
- elseif(OCC_INC)
- set(OCC_LIBS_REQUIRED
- # subset of DataExchange
- TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKXSBase
- # ModelingAlgorithms
- TKOffset TKFeat TKFillet TKBool TKMesh TKHLR TKBO TKPrim TKShHealing
- TKTopAlgo TKGeomAlgo
- # ModelingData
- TKBRep TKGeomBase TKG3d TKG2d
- # FoundationClasses
- TKMath TKernel)
- if(ENABLE_OCC_TBB)
- list(APPEND OCC_LIBS_REQUIRED tbb tbbmalloc)
- endif()
- list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS_REQUIRED)
- if(OCC_LIBS)
- message(STATUS "OCC libraries specified explicitly: " ${OCC_LIBS})
- list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS)
- else()
- set(OCC_LIBS)
- foreach(OCC ${OCC_LIBS_REQUIRED})
- if(ENABLE_OCC_STATIC)
- set(LIBNAME lib${OCC}.a)
- else()
- set(LIBNAME ${OCC})
- endif()
- find_library(OCC_LIB ${LIBNAME} HINTS ENV CASROOT PATH_SUFFIXES
- lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib)
- if(OCC_LIB)
- list(APPEND OCC_LIBS ${OCC_LIB})
- else()
- message(STATUS "OCC lib " ${LIBNAME} " not Found")
- endif()
- unset(OCC_LIB CACHE)
- endforeach()
- list(LENGTH OCC_LIBS NUM_OCC_LIBS)
- endif()
- endif()
-
- # additional OCC libraries to handle reading of STEP/IGES attributes. Oh my...
- if(ENABLE_OCC_CAF)
- find_package(Freetype)
- if(FREETYPE_FOUND)
- set(OCC_CAF_LIBS_REQUIRED
- TKXDESTEP TKXDEIGES TKXCAF TKLCAF TKVCAF TKCAF TKV3d TKService TKCDF)
- list(LENGTH OCC_CAF_LIBS_REQUIRED NUM_OCC_CAF_LIBS_REQUIRED)
- set(OCC_CAF_LIBS)
- foreach(OCC ${OCC_CAF_LIBS_REQUIRED})
- find_library(OCC_CAF_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES
- lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib)
- if(OCC_CAF_LIB)
- list(APPEND OCC_CAF_LIBS ${OCC_CAF_LIB})
- else()
- message(STATUS "OCC CAF lib " ${OCC} " not Found")
- endif()
- unset(OCC_CAF_LIB CACHE)
- endforeach()
- list(LENGTH OCC_CAF_LIBS NUM_OCC_CAF_LIBS)
- endif()
- endif()
-
- # append OCC CAF libraries first...
- if(NUM_OCC_CAF_LIBS EQUAL NUM_OCC_CAF_LIBS_REQUIRED)
- set_config_option(HAVE_OCC_CAF "OpenCASCADE-CAF")
- list(APPEND EXTERNAL_LIBRARIES ${OCC_CAF_LIBS} ${FREETYPE_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${FREETYPE_INCLUDE_DIRS})
- if(WIN32)
- list(APPEND EXTERNAL_LIBRARIES "windowscodecs")
- list(APPEND EXTERNAL_LIBRARIES "ole32")
- endif()
- endif()
-
- # then append OCC libraries
- if(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED)
- set_config_option(HAVE_OCC "OpenCASCADE")
- list(APPEND EXTERNAL_LIBRARIES ${OCC_LIBS})
- list(APPEND EXTERNAL_INCLUDES ${OCC_INC})
- if(HAVE_64BIT_SIZE_T)
- add_definitions(-D_OCC64)
- endif()
- if(WIN32)
- list(APPEND EXTERNAL_LIBRARIES "winspool")
- add_definitions(-DOCC_CONVERT_SIGNALS)
- elseif(MSVC)
- add_definitions(-DWNT)
- endif()
- endif()
-endif()
-
-if(ENABLE_ACIS)
- find_library(ACIS_LIB SpaACIS PATH_SUFFIXES bin/maci386)
- if(ACIS_LIB)
- find_path(ACIS_INC "kernapi.hxx" PATH_SUFFIXES include)
- if(ACIS_INC)
- set_config_option(HAVE_ACIS "Acis")
- list(APPEND EXTERNAL_LIBRARIES ${ACIS_LIB})
- list(APPEND EXTERNAL_INCLUDES ${ACIS_INC})
- endif()
- endif()
-endif()
-
-if(ENABLE_ZIPPER)
- if(ENABLE_BUILD_IOS)
- set_config_option(HAVE_LIBZ "Zlib")
- endif()
- if(NOT HAVE_LIBZ) # necessary for non-GUI builds
- find_package(ZLIB)
- if(ZLIB_FOUND)
- set_config_option(HAVE_LIBZ "Zlib")
- list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
- endif()
- endif()
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/zipper AND HAVE_LIBZ)
- add_subdirectory(contrib/zipper)
- include_directories(contrib/zipper)
- set_config_option(HAVE_ZIPPER "Zipper")
- endif()
-endif()
-
-if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON)
- find_package(SWIG REQUIRED)
- include(${SWIG_USE_FILE})
- find_package(PythonLibs)
- if(SWIG_FOUND AND PYTHONLIBS_FOUND)
- message(STATUS "Found SWIG version " ${SWIG_VERSION})
- find_package(PythonInterp)
- string(SUBSTRING ${SWIG_VERSION} 0 1 SWIG_MAJOR_VERSION)
- if(SWIG_MAJOR_VERSION EQUAL 1)
- message(WARNING "Python bindings require SWIG >= 2: disabling Python")
- else()
- set_config_option(HAVE_PYTHON "Python")
- mark_as_advanced(CLEAR PYTHON_LIBRARY PYTHON_INCLUDE_DIR)
- if(ENABLE_NUMPY)
- if (NOT NUMPY_INC)
- EXEC_PROGRAM (${PYTHON_EXECUTABLE}
- ARGS "-c \"import numpy; print(numpy.get_include())\""
- OUTPUT_VARIABLE NUMPY_INC
- RETURN_VALUE NUMPY_NOT_FOUND)
- endif()
- if(NUMPY_INC)
- list(APPEND EXTERNAL_INCLUDES ${NUMPY_INC})
- set_config_option(HAVE_NUMPY "Numpy")
- endif()
- endif()
- if(HAVE_PETSC)
- if(ENABLE_PETSC4PY)
- EXECUTE_PROCESS(
- COMMAND ${PYTHON_EXECUTABLE} -c "import petsc4py; print(petsc4py.get_include())"
- OUTPUT_VARIABLE PETSC4PY_INC
- RESULT_VARIABLE PETSC4PY_NOT_FOUND
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(PETSC4PY_INC)
- list(APPEND EXTERNAL_INCLUDES ${PETSC4PY_INC})
- set_config_option(HAVE_PETSC4PY "PETSc4py")
- endif()
- endif()
- endif()
- endif()
- endif()
-endif()
-
-check_function_exists(vsnprintf HAVE_VSNPRINTF)
-if(NOT HAVE_VSNPRINTF AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
- set_config_option(HAVE_NO_VSNPRINTF "NoVsnprintf")
-endif()
-
-check_include_file(sys/socket.h HAVE_SYS_SOCKET_H)
-if(HAVE_SYS_SOCKET_H)
- set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
-endif()
-check_type_size(socklen_t SOCKLEN_T_SIZE)
-set(CMAKE_EXTRA_INCLUDE_FILES)
-if(NOT SOCKLEN_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
- set_config_option(HAVE_NO_SOCKLEN_T "NoSocklenT")
-endif()
-
-check_include_file(stdint.h HAVE_STDINT_H)
-if(HAVE_STDINT_H)
- set(CMAKE_EXTRA_INCLUDE_FILES stdint.h)
-else()
- set_config_option(HAVE_NO_STDINT_H "NoStdintH")
-endif()
-check_type_size(intptr_t INTPTR_T_SIZE)
-set(CMAKE_EXTRA_INCLUDE_FILES)
-if(NOT INTPTR_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
- set_config_option(HAVE_NO_INTPTR_T "NoIntptrT")
-endif()
-
-check_include_file(dlfcn.h DLFCN_H)
-if(DLFCN_H)
- set_config_option(HAVE_DLOPEN "Dlopen")
- list(APPEND EXTERNAL_LIBRARIES ${CMAKE_DL_LIBS})
-endif()
-
-if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- check_include_file(linux/joystick.h LINUX_JOYSTICK_H)
- if(LINUX_JOYSTICK_H)
- set_config_option(HAVE_LINUX_JOYSTICK "LinuxJoystick")
- endif()
-endif()
-
-if(WIN32)
- add_definitions(-D_USE_MATH_DEFINES)
- list(APPEND EXTERNAL_LIBRARIES winmm wsock32 ws2_32 psapi)
-endif()
-
-if(MSVC)
- add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE)
-endif()
-
-# add C functions API
-set(GMSH_SRC ${GMSH_SRC};api/gmshc.cpp)
-
-# force full warnings to encourage everybody to write clean(er) code
-check_cxx_compiler_flag("-Wall" WALL)
-if(WALL AND NOT MSVC)
- file(GLOB_RECURSE WALL_SRC Common/*.cpp Fltk/*.cpp FunctionSpace/*.cpp
- Geo/*.cpp Graphics/*.cpp Mesh/*.cpp Numeric/*.cpp Parser/*.cpp
- Plugin/*.cpp Post/*.cpp Solver/*.cpp)
- set(WF "-Wall")
- check_cxx_compiler_flag("-Wint-to-void-pointer-cast" WCAST)
- if(WCAST)
- set(WF "${WF} -Wno-int-to-void-pointer-cast")
- endif()
- check_cxx_compiler_flag("-Wdeprecated-declarations" WDEPREC)
- if(WDEPREC)
- # FIXME: remove this when we have fixed the deprecated GLU code for OpenGL3
- set(WF "${WF} -Wno-deprecated-declarations")
- endif()
- check_cxx_compiler_flag("-Wmisleading-indentation" WIND)
- if(WIND)
- set(WF "${WF} -Wno-misleading-indentation")
- endif()
- set_compile_flags(WALL_SRC ${WF})
-endif()
-
-# don't issue warnings for contributed libraries
-check_cxx_compiler_flag("-w" NOWARN)
-if(NOWARN)
- file(GLOB_RECURSE NOWARN_SRC contrib/*.cpp contrib/*.cc contrib/*.cxx contrib/*.c)
- set_compile_flags(NOWARN_SRC "-w")
-endif()
-
-# disable compile optimization on some known problematic files
-check_cxx_compiler_flag("-O0" NOOPT)
-if(NOOPT OR ENABLE_BUILD_IOS)
- if(ENABLE_BUILD_IOS) # optimized iOS 10 64 bits screws somewhere in Geo
- file(GLOB_RECURSE NOOPT_SRC Numeric/robustPredicates.cpp Geo/G*.cpp Mesh/BDS.cpp
- Parser/Gmsh.tab.cpp contrib/blossom/* Mesh/Background*)
- else()
- file(GLOB_RECURSE NOOPT_SRC Numeric/robustPredicates.cpp Mesh/BDS.cpp
- Parser/Gmsh.tab.cpp contrib/blossom/* contrib/bamg/* Mesh/Background*)
- endif()
- set_compile_flags(NOOPT_SRC "-O0")
-endif()
-
-# do not use arithmetic contraction in predicates.cpp
-# if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
-# set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
-# COMPILE_FLAGS "/fp:strict")
-# elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
-# set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
-# COMPILE_FLAGS "-fno-unsafe-math-optimizations -ffp-contract=off")
-# elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel")
-# set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
-# COMPILE_FLAGS "-fp-model strict")
-# endif()
-
-# enable Revoropt and set compile flags for the corresponding plugin
-if(ENABLE_REVOROPT)
- find_path(EIGEN3_INC "eigen3/Eigen/Dense")
- if(EIGEN3_INC AND HAVE_MESH AND HAVE_PLUGINS AND HAVE_ANN AND HAVE_ALGLIB)
- list(APPEND EXTERNAL_INCLUDES ${EIGEN3_INC} contrib/Revoropt/include)
- message(STATUS "using contrib/Revoropt")
- set_config_option(HAVE_REVOROPT "Revoropt")
- add_definitions(-DUSE_ANN)
- get_source_file_property(PROP Plugin/CVTRemesh.cpp COMPILE_FLAGS)
- if(PROP)
- set_source_files_properties(Plugin/CVTRemesh.cpp PROPERTIES
- COMPILE_FLAGS "${PROP} -std=c++11")
- else()
- set_source_files_properties(Plugin/CVTRemesh.cpp PROPERTIES
- COMPILE_FLAGS "-std=c++11")
- endif()
- else()
- message(WARNING "Revoropt requires Eigen3, Mesh, Plugins, ANN and ALGLIB")
- endif()
-endif()
-
-list(SORT CONFIG_OPTIONS)
-set(GMSH_CONFIG_OPTIONS "")
-foreach(OPT ${CONFIG_OPTIONS})
- set(GMSH_CONFIG_OPTIONS "${GMSH_CONFIG_OPTIONS} ${OPT}")
-endforeach()
-
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshConfig.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshVersion.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h)
-
-# the texi version file is modified in the source directory (not ideal, but
-# since git tracks the contents of the file this is acceptable as it will only
-# change when the actual version is changed - not for each git hash)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi.in
- ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi)
-
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.txt
- ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION})
-
-# process cmake environment variables so we can append them to the -I include
-# commands. This is not recommended (we should only use the cache variables) but
-# it is very convenient: otherwise we have to remember providing the
-# -D... options to cmake for each new build.
-set(ENV_CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
-set(ENV_CMAKE_INCLUDE_PATH $ENV{CMAKE_INCLUDE_PATH})
-if(UNIX)
- if(ENV_CMAKE_PREFIX_PATH)
- string(REPLACE ":" ";" ENV_CMAKE_PREFIX_PATH ${ENV_CMAKE_PREFIX_PATH})
- endif()
- if(ENV_CMAKE_INCLUDE_PATH)
- string(REPLACE ":" ";" ENV_CMAKE_INCLUDE_PATH ${ENV_CMAKE_INCLUDE_PATH})
- endif()
-endif()
-list(APPEND EXTERNAL_INCLUDES ${CMAKE_INCLUDE_PATH} ${ENV_CMAKE_INCLUDE_PATH})
-list(APPEND EXTERNAL_INCLUDES ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH})
-foreach(DIR ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH})
- list(APPEND EXTERNAL_INCLUDES ${DIR}/include)
-endforeach()
-
-if(EXTERNAL_INCLUDES)
- list(REMOVE_DUPLICATES EXTERNAL_INCLUDES)
-endif()
-
-if(HAVE_FLTK)
- set(LINK_LIBRARIES ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES}
- ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES})
-elseif(HAVE_OPENGL)
- set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${OPENGL_LIBRARIES}
- ${LAPACK_LIBRARIES})
-else()
- set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
-endif()
-
-# try to use static gfortran on static builds (cannot do this on dynamic builds
-# as e.g. Debian compiles libgfortran.a without -fPIC: sigh...)
-if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENABLE_BUILD_SHARED)
- find_library(GFORTRAN_STATIC libgfortran.a)
- if(GFORTRAN_STATIC)
- set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES)
- message(STATUS "Using static libgfortran")
- foreach(STR ${LINK_LIBRARIES})
- string(REPLACE "-lgfortran" ${GFORTRAN_STATIC} STR2 ${STR})
- list(APPEND LINK_LIBRARIES2 ${STR2})
- endforeach()
- set(LINK_LIBRARIES ${LINK_LIBRARIES2})
- endif()
-endif()
-
-# Linux-specific linking
-if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- if(HAVE_OCC)
- find_library(RT_LIB rt)
- if(RT_LIB)
- list(APPEND LINK_LIBRARIES ${RT_LIB})
- endif()
- endif()
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Intel")
- add_definitions(-fPIC)
- endif()
-endif()
-
-# we could specify include dirs more selectively, but this is simpler
-include_directories(Common Fltk Geo Graphics Mesh Solver Numeric Parser
- Plugin Post api ${EXTERNAL_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/Common)
-
-# set this for external codes that might include this CMakeList file
-set(GMSH_EXTERNAL_INCLUDE_DIRS ${EXTERNAL_INCLUDES} CACHE
- STRING "External include directories" FORCE)
-set(GMSH_EXTERNAL_LIBRARIES ${LINK_LIBRARIES} CACHE
- STRING "External libraries" FORCE)
-
-# group sources for easier navigation in IDEs
-foreach(DIR ${GMSH_DIRS})
- string(REGEX REPLACE "\\+" "\\\\+" DIR ${DIR})
- source_group(${DIR} REGULAR_EXPRESSION ${DIR}/.*)
-endforeach()
-
-# static library target
-if(ENABLE_BUILD_LIB)
- add_library(lib STATIC ${GMSH_SRC})
- set_target_properties(lib PROPERTIES OUTPUT_NAME gmsh)
- if(MSVC)
- set_target_properties(lib PROPERTIES DEBUG_POSTFIX d)
- if(ENABLE_MSVC_STATIC_RUNTIME)
- set_target_properties(lib PROPERTIES LINK_FLAGS_RELEASE "/nodefaultlib:LIBCMT")
- endif()
- endif()
-endif()
-
-# shared library target
-if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
- add_library(shared SHARED ${GMSH_SRC})
- set_target_properties(shared PROPERTIES OUTPUT_NAME gmsh
- VERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}
- SOVERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION})
- if(WIN32)
- set_target_properties(shared PROPERTIES PREFIX "" IMPORT_PREFIX ""
- IMPORT_SUFFIX ".lib" COMPILE_FLAGS "-DGMSH_DLL -DGMSH_DLL_EXPORT")
- endif()
- target_link_libraries(shared ${LINK_LIBRARIES})
- if(MSVC AND ENABLE_MSVC_STATIC_RUNTIME)
- message(STATUS "Note: By enabling ENABLE_MSVC_STATIC_RUNTIME, shared library "
- "won't link. In MSVC change /MT to /MD in the shared project properties")
- endif()
-endif()
-
-# binary targets
-if(HAVE_FLTK)
- if(ENABLE_BUILD_DYNAMIC)
- add_executable(gmsh WIN32 Common/Main.cpp)
- target_link_libraries(gmsh shared)
- else()
- add_executable(gmsh WIN32 Common/Main.cpp ${GMSH_SRC})
- endif()
- # we could add this to create a minimal app bundle even without install
- # if(APPLE AND NOT ENABLE_OS_SPECIFIC_INSTALL)
- # set_target_properties(gmsh PROPERTIES MACOSX_BUNDLE ON
- # MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_dev.plist)
- # endif()
-else()
- if(ENABLE_BUILD_DYNAMIC)
- add_executable(gmsh Common/Main.cpp)
- target_link_libraries(gmsh shared)
- else()
- add_executable(gmsh Common/Main.cpp ${GMSH_SRC})
- endif()
-endif()
-target_link_libraries(gmsh ${LINK_LIBRARIES})
-
-# Windows specific linker options
-if(WIN32 AND NOT MSVC)
- set(FLAGS "-Wl,--stack,16777216 -mwindows")
- if(HAVE_64BIT_SIZE_T)
- set(FLAGS "${FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win64Icon.res")
- else()
- set(FLAGS "${FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win32Icon.res")
- endif()
- set_target_properties(gmsh PROPERTIES LINK_FLAGS "${FLAGS} -static")
- if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
- set_target_properties(shared PROPERTIES LINK_FLAGS -static)
- endif()
- # remove -Wl,-Bdynamic flags
- set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS)
- set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS)
-elseif(MSVC)
- set_target_properties(gmsh PROPERTIES LINK_FLAGS "/STACK:16777216 /SAFESEH:NO")
-endif()
-
-# android target
-if(ENABLE_BUILD_ANDROID)
- find_file(CMAKE_TOOLCHAIN_FILE "android.toolchain.cmake")
- if(NOT CMAKE_TOOLCHAIN_FILE)
- message(FATAL_ERROR "Cannot compile Gmsh for android without android-cmake")
- endif()
- add_definitions(-D_GLIBCXX_USE_C99_MATH=1)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
- set(CMAKE_BUILD_TYPE Release)
- set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR})
- set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/libs/)
- add_definitions(-DBUILD_ANDROID)
- add_definitions(-DPICOJSON_USE_LOCALE=0)
- add_library(androidGmsh SHARED ${GMSH_SRC})
- set_target_properties(androidGmsh PROPERTIES OUTPUT_NAME gmsh)
- target_link_libraries(androidGmsh ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
- add_custom_command(TARGET androidGmsh POST_BUILD COMMAND
- ${CMAKE_STRIP} ${LIBRARY_OUTPUT_PATH}/libgmsh.so)
-endif()
-
-# parser target
-find_program(BISON bison)
-find_program(FLEX flex)
-if(BISON AND FLEX)
- add_custom_target(parser
- COMMAND ${BISON} -p gmsh_yy --output Gmsh.tab.cpp -d Gmsh.y
- COMMAND ${FLEX} -P gmsh_yy -o Gmsh.yy.cpp Gmsh.l
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Parser)
-endif()
-
-if(UNIX)
- # cannot use cmake's file search functions here (they would only find files
- # existing at configuration time)
- add_custom_target(purge
- COMMAND rm -f `find . -name *~ -o -name *~~`
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- add_custom_target(etags
- COMMAND etags `find . -name *.cpp -o -name *.h -o -name *.y`
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-endif()
-
-if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
- CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
- OUTPUT_VARIABLE CXX_COMPILER_VERSION
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-else()
- set(CXX_COMPILER_VERSION "Unknown")
-endif()
-
-set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt)
-set(SDK_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/SDK.txt)
-set(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt)
-set(CREDITS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CREDITS.txt)
-set(CHANGELOG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.txt)
-file(GLOB TUTORIAL_GEO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/?*.*)
-file(GLOB TUTORIAL_CPP_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/c++/?*.*)
-file(GLOB TUTORIAL_C_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/c/?*.*)
-file(GLOB TUTORIAL_PY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/python/?*.*)
-file(GLOB TUTORIAL_JL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/julia/?*.*)
-file(GLOB DEMOS ${CMAKE_CURRENT_SOURCE_DIR}/demos/*)
-foreach(SUBDIR ${DEMOS})
- if(IS_DIRECTORY ${SUBDIR})
- list(APPEND DEMOS_DIRS ${SUBDIR})
- endif()
-endforeach()
-set(TEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo)
-file(GLOB TEX_SRC ${TEX_DIR}/*.texi)
-set(TEX_OBJ ${TEX_DIR}/gmsh.aux ${TEX_DIR}/gmsh.cp ${TEX_DIR}/gmsh.cps
- ${TEX_DIR}/gmsh.fn ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.ky
- ${TEX_DIR}/gmsh.log ${TEX_DIR}/gmsh.pdf ${TEX_DIR}/gmsh.pg ${TEX_DIR}/gmsh.toc
- ${TEX_DIR}/gmsh.tp ${TEX_DIR}/gmsh.tps ${TEX_DIR}/gmsh.txt ${TEX_DIR}/gmsh.vr)
-
-macro(unix2dos VARNAME)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unix2dos)
- set(UNIX2DOS_FILES)
- foreach(FILE ${${VARNAME}})
- file(READ ${FILE} F0)
- get_filename_component(N ${FILE} NAME)
- if(CYGWIN)
- string(REGEX REPLACE "\n" "\r\n" F1 "${F0}")
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F1}")
- else() # if not in Cygwin, cmake adds '\r's automatically
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F0}")
- endif()
- list(APPEND UNIX2DOS_FILES ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N})
- endforeach()
- set(${VARNAME} ${UNIX2DOS_FILES})
-endmacro()
-
-if(WIN32)
- if(ENABLE_OS_SPECIFIC_INSTALL)
- set(GMSH_BIN .)
- set(GMSH_LIB .)
- set(GMSH_DOC .)
- set(GMSH_MAN .)
- set(GMSH_INC .)
- else()
- include(GNUInstallDirs)
- set(GMSH_BIN ${CMAKE_INSTALL_BINDIR})
- set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR})
- set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR})
- set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1)
- set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR})
- endif()
- if(CYGWIN)
- unix2dos(GMSH_API)
- if(ENABLE_PRIVATE_API)
- unix2dos(GMSH_PRIVATE_API)
- endif()
- unix2dos(WELCOME_FILE)
- unix2dos(SDK_FILE)
- unix2dos(LICENSE_FILE)
- unix2dos(CREDITS_FILE)
- unix2dos(CHANGELOG_FILE)
- unix2dos(TUTORIAL_GEO_FILES)
- unix2dos(TUTORIAL_CPP_FILES)
- unix2dos(TUTORIAL_C_FILES)
- unix2dos(TUTORIAL_PY_FILES)
- unix2dos(TUTORIAL_JL_FILES)
- foreach(DIR ${DEMOS_DIRS})
- file(GLOB DEMO_FILES ${DIR}/?*.*)
- unix2dos(DEMO_FILES)
- endforeach()
- endif()
-elseif(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
- # set these so that the files get installed nicely in the MacOSX
- # .app bundle
- set(GMSH_BIN ../MacOS)
- set(GMSH_LIB ../MacOS)
- set(GMSH_DOC ../../..)
- set(GMSH_MAN ../../..)
- set(GMSH_INC ../MacOS)
-else()
- include(GNUInstallDirs)
- set(GMSH_BIN ${CMAKE_INSTALL_BINDIR})
- set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR})
- set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR})
- set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1)
- set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR})
-endif()
-
-# FIXME: change this once we understand rpaths
-if(APPLE)
- if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
- set_target_properties(shared PROPERTIES INSTALL_NAME_DIR
- ${CMAKE_INSTALL_PREFIX}/${GMSH_LIB})
- endif()
-endif()
-
-# mark targets as optional so we can install them separately if needed
-# (e.g. "make lib" or "make shared" followed by "make install/fast")
-install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL)
-if(ENABLE_BUILD_LIB)
- install(TARGETS lib DESTINATION ${GMSH_LIB} OPTIONAL)
-endif()
-if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
- install(TARGETS shared DESTINATION ${GMSH_LIB} OPTIONAL)
-endif()
-
-if(ENABLE_ONELAB)
- install(FILES ${ONELAB_PY} DESTINATION ${GMSH_BIN})
-endif()
-if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
- install(FILES ${GMSH_API} DESTINATION ${GMSH_INC})
- install(FILES ${GMSH_PY} DESTINATION ${GMSH_LIB})
- install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB})
- if(ENABLE_PRIVATE_API)
- install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh)
- endif()
-endif()
-if(INSTALL_SDK_README)
- configure_file(${SDK_FILE} ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/README.txt DESTINATION .)
-endif()
-install(FILES ${WELCOME_FILE} DESTINATION ${GMSH_DOC} RENAME README.txt)
-install(FILES ${LICENSE_FILE} DESTINATION ${GMSH_DOC})
-install(FILES ${CREDITS_FILE} DESTINATION ${GMSH_DOC})
-install(FILES ${CHANGELOG_FILE} DESTINATION ${GMSH_DOC})
-install(FILES ${TUTORIAL_GEO_FILES} DESTINATION ${GMSH_DOC}/tutorial)
-install(FILES ${TUTORIAL_CPP_FILES} DESTINATION ${GMSH_DOC}/tutorial/c++)
-install(FILES ${TUTORIAL_C_FILES} DESTINATION ${GMSH_DOC}/tutorial/c)
-install(FILES ${TUTORIAL_PY_FILES} DESTINATION ${GMSH_DOC}/tutorial/python)
-install(FILES ${TUTORIAL_JL_FILES} DESTINATION ${GMSH_DOC}/tutorial/julia)
-foreach(DIR ${DEMOS_DIRS})
- get_filename_component(DEMOS_DIR_NAME ${DIR} NAME)
- file(GLOB DEMO_FILES ${DIR}/?*.*)
- install(FILES ${DEMO_FILES} DESTINATION ${GMSH_DOC}/demos/${DEMOS_DIR_NAME})
-endforeach()
-if(UNIX AND NOT CYGWIN)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/gmsh.1 DESTINATION ${GMSH_MAN})
-endif()
-
-add_custom_target(get_headers
- COMMAND ${CMAKE_COMMAND} -E make_directory Headers/gmsh
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
-foreach(FILE ${GMSH_API})
- add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND}
- -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-endforeach()
-if(ENABLE_PRIVATE_API)
- foreach(FILE ${GMSH_PRIVATE_API})
- add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND}
- -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- endforeach()
-endif()
-
-find_program(MAKEINFO makeinfo)
-if(MAKEINFO)
- add_custom_command(OUTPUT ${TEX_DIR}/gmsh.info DEPENDS ${TEX_SRC}
- COMMAND ${MAKEINFO} --split-size 1000000
- ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
- add_custom_target(info DEPENDS ${TEX_DIR}/gmsh.info)
- add_custom_command(OUTPUT ${TEX_DIR}/gmsh.txt DEPENDS ${TEX_SRC}
- COMMAND ${MAKEINFO} --plaintext -o gmsh.txt
- ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
- add_custom_target(txt DEPENDS ${TEX_DIR}/gmsh.txt)
- add_custom_command(OUTPUT ${TEX_DIR}/gmsh.html DEPENDS ${TEX_SRC}
- COMMAND ${MAKEINFO} --html --css-ref=http://gmsh.info/gmsh.css
- --no-split --set-customization-variable
- EXTRA_HEAD=''
- ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
- add_custom_target(html DEPENDS ${TEX_DIR}/gmsh.html)
- install(FILES ${TEX_DIR}/gmsh.html DESTINATION ${GMSH_DOC} OPTIONAL)
-else()
- add_custom_target(html COMMAND ${CMAKE_COMMAND} -E touch ${TEX_DIR}/gmsh.html)
-endif()
-
-find_program(TEXI2PDF texi2pdf)
-if(TEXI2PDF)
- add_custom_command(OUTPUT ${TEX_DIR}/gmsh.pdf DEPENDS ${TEX_SRC}
- COMMAND ${TEXI2PDF} ARGS gmsh.texi
- WORKING_DIRECTORY ${TEX_DIR})
- add_custom_target(pdf DEPENDS ${TEX_DIR}/gmsh.pdf)
- install(FILES ${TEX_DIR}/gmsh.pdf DESTINATION ${GMSH_DOC} OPTIONAL)
-endif()
-
-execute_process(COMMAND ${CMAKE_COMMAND} -E echo
- "@c This file was generated by cmake: do not edit manually!\n${OPT_TEXI}"
- OUTPUT_FILE cmake_options.texi)
-
-if(MAKEINFO AND TEXI2PDF)
- add_custom_target(doc COMMAND ${CMAKE_COMMAND} -E tar zcf
- ${CMAKE_CURRENT_BINARY_DIR}/gmsh-${GMSH_VERSION}-doc.tgz
- CREDITS.txt LICENSE.txt CHANGELOG.txt
- doc/gmsh.1 doc/texinfo/gmsh.html doc/texinfo/gmsh.info
- doc/texinfo/gmsh.pdf doc/texinfo/gmsh.txt
- COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ}
- DEPENDS ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.txt
- ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.pdf
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-endif()
-
-if(MAKEINFO OR TEXI2PDF)
- add_custom_target(clean_doc COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ})
-endif()
-
-if(APPLE AND ENABLE_BUILD_LIB)
- file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_framework.plist F0)
- string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}")
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info_framework.plist "${F1}")
- get_target_property(LIBNAME lib LOCATION) # depracated
- #set(LIBNAME $) # FIXME: use this in the future
- add_custom_target(framework DEPENDS lib
- COMMAND ${CMAKE_COMMAND} -E remove_directory gmsh.framework
- COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Headers
- COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Resources
- COMMAND ${CMAKE_COMMAND} -E copy ${LIBNAME} gmsh.framework/gmsh
- COMMAND ${CMAKE_COMMAND} -E copy Info_framework.plist
- gmsh.framework/Resources/Info.plist
- COMMAND ${CMAKE_COMMAND} -E create_symlink . gmsh.framework/Headers/gmsh
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
- foreach(FILE ${GMSH_API})
- add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
- ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- endforeach()
- if(ENABLE_PRIVATE_API)
- foreach(FILE ${GMSH_PRIVATE_API})
- add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
- ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- endforeach()
- endif()
-endif()
-
-set(CPACK_PACKAGE_VENDOR "Christophe Geuzaine and Jean-Francois Remacle")
-set(CPACK_PACKAGE_VERSION_MAJOR ${GMSH_MAJOR_VERSION})
-set(CPACK_PACKAGE_VERSION_MINOR ${GMSH_MINOR_VERSION})
-set(CPACK_PACKAGE_VERSION_PATCH ${GMSH_PATCH_VERSION})
-set(CPACK_PACKAGE_DESCRIPTION_FILE ${WELCOME_FILE})
-set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
- "3D finite element mesh generator with built-in CAD engine and post-processor")
-if(GMSH_EXTRA_VERSION MATCHES "-git.*") # so that we'll overwrite the archives
- set(CPACK_PACKAGE_FILE_NAME gmsh-git-${GMSH_OS})
- set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-git-source)
-else()
- set(CPACK_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-${GMSH_OS})
- set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-source)
-endif()
-set(CPACK_PACKAGE_INSTALL_DIRECTORY "gmsh")
-set(CPACK_RESOURCE_FILE_LICENSE ${LICENSE_FILE})
-set(CPACK_RESOURCE_FILE_README ${WELCOME_FILE})
-set(CPACK_RESOURCE_FILE_WELCOME ${WELCOME_FILE})
-set(CPACK_PACKAGE_EXECUTABLE "gmsh")
-if(ENABLE_PACKAGE_STRIP)
- set(CPACK_STRIP_FILES TRUE)
-else()
- set(CPACK_STRIP_FILES FALSE)
-endif()
-set(CPACK_SOURCE_GENERATOR TGZ)
-set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_BINARY_DIR}" "/CVS/" "/.svn" "/.git"
- "~$" "DS_Store$" "GmshConfig.h$" "GmshVersion.h$" "/benchmarks/" "/tmp/"
- "/bin/" "/lib/" "/nightly/" "GPATH" "GRTAGS" "GSYMS" "GTAGS" "/HTML/"
- "/contrib/3M/" "/contrib/Parasolid/")
-
-if(UNIX)
- # make sure we remove previous installs before doing the next one (on Mac for
- # example "make package; make package_source" would lead to huge file lists
- # getting generated due to the 'Applications' symlink in the bundle)
- set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages")
-endif()
-
-if(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
- set(CPACK_GENERATOR Bundle)
- set(CPACK_BUNDLE_NAME Gmsh)
- file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_app.plist F0)
- string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}")
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info.plist "${F1}")
- set(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
- set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
- if(PACKAGER STREQUAL "geuzaine - removed: we sign on a separate machine")
- # codesigning requires CMake >= 3.2
- set(CPACK_BUNDLE_APPLE_CERT_APP "Developer ID Application: Christophe Geuzaine")
- endif()
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsGeo.icns DESTINATION .
- RENAME GmshGeo.icns)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsMsh.icns DESTINATION .
- RENAME GmshMsh.icns)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsSol.icns DESTINATION .
- RENAME GmshSol.icns)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsPos.icns DESTINATION .
- RENAME GmshPos.icns)
- set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
-elseif(WIN32)
- set(CPACK_GENERATOR ZIP)
-else()
- set(CPACK_GENERATOR TGZ)
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/gmshpy AND
- ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON AND HAVE_PYTHON)
- add_subdirectory(utils/wrappers/gmshpy)
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/java AND
- ENABLE_PRIVATE_API AND ENABLE_WRAP_JAVA)
- add_subdirectory(utils/wrappers/java)
-endif()
-
-include(CPack)
-
-if(NOT DISABLE_GMSH_TESTS)
- # disabling tests is useful when including this CMakeLists in an external project
- include(CTest)
- file(GLOB_RECURSE TESTFILES
- tutorial/*.geo demos/*.geo benchmarks/?d/*.geo benchmarks/extrude/*.geo
- benchmarks/occ/*.geo)
- # disable this test for now on our Linux32 machine - the current config
- # crashes on the OCC STL generation
- if(${GMSH_OS} MATCHES "Linux32")
- list(REMOVE_ITEM TESTFILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/t18.geo)
- endif()
- foreach(TESTFILE ${TESTFILES})
- # use relative path for Cygwin/MinGW (the pure win exe built with the MinGW
- # compilers does not understand a full Cygwin-style path)
- FILE(RELATIVE_PATH TEST ${CMAKE_CURRENT_BINARY_DIR} ${TESTFILE})
- if(HAVE_OCC OR NOT ${TEST} MATCHES "boolean" OR NOT ${TEST} MATCHES "occ")
- add_test(${TEST} ./gmsh ${TEST} -3 -nopopup -o ./tmp.msh)
- endif()
- endforeach()
- # test c++ api tutorials with dynamic builds (except on 32 bit windows for
- # now: our win32 setup does not currently handle exceptions)
- if(ENABLE_BUILD_DYNAMIC AND NOT ${GMSH_OS} MATCHES "Windows32")
- file(GLOB_RECURSE TESTFILES tutorial/c++/*.cpp)
- foreach(TESTFILE ${TESTFILES})
- get_filename_component(TEST ${TESTFILE} NAME_WE)
- add_executable(${TEST} WIN32 ${TESTFILE})
- target_link_libraries(${TEST} shared)
- if(WIN32 AND NOT MSVC)
- set_target_properties(${TEST} PROPERTIES LINK_FLAGS "-mwindows -static")
- endif()
- add_test(${TEST}_cpp ${TEST})
- endforeach()
- endif()
-endif()
-
-message(STATUS "")
-message(STATUS "Gmsh ${GMSH_VERSION} has been configured for ${GMSH_OS}")
-message(STATUS "")
-message(STATUS " * Build options:" ${GMSH_CONFIG_OPTIONS})
-message(STATUS " * Build type: " ${CMAKE_BUILD_TYPE})
-message(STATUS " * C compiler: " ${CMAKE_C_COMPILER})
-message(STATUS " * C++ compiler: " ${CMAKE_CXX_COMPILER})
-message(STATUS " * Install prefix: " ${CMAKE_INSTALL_PREFIX})
-message(STATUS "")
-
-mark_as_advanced(GMSH_EXTRA_VERSION
- ACIS_LIB ANN_INC ANN_LIB CAIRO_LIB CAIRO_INC CGNS_INC GMM_INC
- GMP_INC GMP_LIB MMG3D_INC MMG3D_LIB HDF5_LIB
- MED_LIB OCC_INC SZ_LIB
- PETSC_LIBS SLEPC_INC SLEPC_INC2 SLEPC_LIB
- BISON FLEX MAKEINFO TEXI2PDF FLTK_CONFIG_SCRIPT
- GMSH_EXTERNAL_INCLUDE_DIRS GMSH_EXTERNAL_LIBRARIES)
Index: ../trunk-jpl/externalpackages/gmsh/configs/4.7.0/mac/static/CMakeLists.txt
===================================================================
--- ../trunk-jpl/externalpackages/gmsh/configs/4.7.0/mac/static/CMakeLists.txt (revision 25859)
+++ ../trunk-jpl/externalpackages/gmsh/configs/4.7.0/mac/static/CMakeLists.txt (nonexistent)
@@ -1,2191 +0,0 @@
-# Gmsh - Copyright (C) 1997-2020 C. Geuzaine, J.-F. Remacle
-#
-# See the LICENSE.txt file for license information. Please report all
-# issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
-
-cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
-
-# if CMAKE_BUILD_TYPE is specified use it; otherwise set the default
-# build type to "RelWithDebInfo" ("-O2 -g" with gcc) prior to calling
-# project()
-if(DEFINED CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose build type")
-else()
- set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose build type")
-endif()
-
-project(gmsh CXX C)
-
-# require C++11 and request C99
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_C_STANDARD 99)
-
-# this variable controls the default value of the options which are normally set
-# to ON (useful if you want to configure a minimal version of Gmsh: e.g. "cmake
-# -DDEFAULT=0 -DENABLE_POST=1 -DENABLE_PARSER=1")
-set(DEFAULT ON CACHE INTERNAL "Default value for enabled-by-default options")
-
-macro(opt OPTION HELP VALUE)
- option(ENABLE_${OPTION} ${HELP} ${VALUE})
- set(OPT_TEXI "${OPT_TEXI}\n@item ENABLE_${OPTION}\n${HELP} (default: ${VALUE})")
-endmacro()
-
-opt(3M "Enable proprietary 3M extension" OFF)
-opt(ALGLIB "Enable ALGLIB (used by some mesh optimizers)" ${DEFAULT})
-opt(ANN "Enable ANN (used for fast point search in mesh/post)" ${DEFAULT})
-opt(BAMG "Enable Bamg 2D anisotropic mesh generator" ${DEFAULT})
-opt(BLAS_LAPACK "Enable BLAS/Lapack for linear algebra (if Eigen if disabled)" OFF)
-opt(BLOSSOM "Enable Blossom algorithm (needed for full quad meshing)" ${DEFAULT})
-opt(BUILD_LIB "Enable 'lib' target for building static Gmsh library" OFF)
-opt(BUILD_SHARED "Enable 'shared' target for building shared Gmsh library" OFF)
-opt(BUILD_DYNAMIC "Enable dynamic Gmsh executable (linked with shared library)" OFF)
-opt(BUILD_ANDROID "Enable Android NDK library target (experimental)" OFF)
-opt(BUILD_IOS "Enable iOS library target (experimental)" OFF)
-opt(CGNS "Enable CGNS import/export (experimental)" ${DEFAULT})
-opt(CGNS_CPEX0045 "Enable high-order CGNS import/export following CPEX0045 (experimental)" OFF)
-opt(CAIRO "Enable Cairo to render fonts (experimental)" ${DEFAULT})
-opt(PROFILE "Enable profiling compiler flags" OFF)
-opt(DINTEGRATION "Enable discrete integration (needed for levelsets)" ${DEFAULT})
-opt(DOMHEX "Enable experimental DOMHEX code" ${DEFAULT})
-opt(EIGEN "Enable Eigen for linear algebra (instead of Blas/Lapack)" ON)
-opt(FLTK "Enable FLTK graphical user interface (requires mesh/post)" ${DEFAULT})
-opt(GETDP "Enable GetDP solver (linked as a library, experimental)" ${DEFAULT})
-opt(GMM "Enable GMM linear solvers (simple alternative to PETSc)" ${DEFAULT})
-opt(GMP "Enable GMP for Kbipack (advanced)" ON)
-opt(GRAPHICS "Enable building graphics lib even without GUI (advanced)" OFF)
-opt(HXT "Enable HXT library (for reparametrization and meshing)" ${DEFAULT})
-opt(KBIPACK "Enable Kbipack (neeeded by homology solver)" ${DEFAULT})
-opt(MATHEX "Enable Mathex expression parser (used by plugins and options)" ${DEFAULT})
-opt(MED "Enable MED mesh and post file formats" ${DEFAULT})
-opt(MESH "Enable mesh module (required by GUI)" ${DEFAULT})
-opt(METIS "Enable Metis mesh partitioner" ${DEFAULT})
-opt(MMG "Enable Mmg mesh adaptation interface" ${DEFAULT})
-opt(MPEG_ENCODE "Enable built-in MPEG movie encoder" ${DEFAULT})
-opt(MPI "Enable MPI (experimental, not used for meshing)" OFF)
-opt(MSVC_STATIC_RUNTIME "Enable static Visual C++ runtime" OFF)
-opt(MUMPS "Enable MUMPS sparse direct linear solver" OFF)
-opt(NETGEN "Enable Netgen 3D frontal mesh generator" ${DEFAULT})
-opt(NUMPY "Enable fullMatrix and numpy array conversion for private API" OFF)
-opt(PETSC4PY "Enable petsc4py wrappers for petsc matrices for private API" OFF)
-opt(OCC "Enable OpenCASCADE CAD kernel" ${DEFAULT})
-opt(OCC_CAF "Enable OpenCASCADE CAF module (for STEP/IGES attributes)" ${DEFAULT})
-opt(OCC_STATIC "Link OpenCASCADE static instead of dynamic libraries (requires ENABLE_OCC)" OFF)
-opt(OCC_TBB "Add TBB libraries in list of OCC libraries" OFF)
-opt(ONELAB "Enable ONELAB solver interface" ${DEFAULT})
-opt(ONELAB_METAMODEL "Enable ONELAB metamodels (experimental)" ${DEFAULT})
-opt(OPENACC "Enable OpenACC" OFF)
-opt(OPENMP "Enable OpenMP" OFF)
-opt(OPTHOM "Enable high-order mesh optimization tools" ${DEFAULT})
-opt(OS_SPECIFIC_INSTALL "Enable OS-specific (e.g. app bundle) installation" OFF)
-opt(OSMESA "Enable OSMesa for offscreen rendering (experimental)" OFF)
-opt(P4EST "Enable p4est for enabling automatic mesh size field (experimental)" OFF)
-opt(PACKAGE_STRIP "Strip symbols in install packages to reduce install size" ON)
-opt(PARSER "Enable GEO file parser (required for .geo/.pos scripts)" ${DEFAULT})
-opt(PETSC "Enable PETSc linear solvers (required for SLEPc)" OFF)
-opt(PLUGINS "Enable post-processing plugins" ${DEFAULT})
-opt(POST "Enable post-processing module (required by GUI)" ${DEFAULT})
-opt(POPPLER "Enable Poppler for displaying PDF documents (experimental)" OFF)
-opt(PRIVATE_API "Enable private API" OFF)
-opt(PRO "Enable PRO extensions" ${DEFAULT})
-opt(QUADTRI "Enable QuadTri structured meshing extensions" ${DEFAULT})
-opt(REVOROPT "Enable Revoropt (used for CVT remeshing)" OFF)
-opt(RPATH "Use RPATH in dynamically linked targets" ON)
-opt(SLEPC "Enable SLEPc eigensolvers" OFF)
-opt(SOLVER "Enable built-in finite element solvers (required for reparametrization)" ${DEFAULT})
-opt(SYSTEM_CONTRIB "Use system versions of contrib libraries, when possible" OFF)
-opt(TCMALLOC "Enable libtcmalloc (fast malloc that does not release memory)" OFF)
-opt(TOUCHBAR "Enable Apple Touch bar" ${DEFAULT})
-opt(VISUDEV "Enable additional visualization capabilities for development purposes" OFF)
-opt(VOROPP "Enable voro++ (for hex meshing, experimental)" ${DEFAULT})
-opt(WRAP_JAVA "Generate SWIG Java wrappers for private API" OFF)
-opt(WRAP_PYTHON "Generate SWIG Python wrappers for private API (not used by public API)" OFF)
-opt(ZIPPER "Enable Zip file compression/decompression" OFF)
-
-set(GMSH_MAJOR_VERSION 4)
-set(GMSH_MINOR_VERSION 7)
-set(GMSH_PATCH_VERSION 0)
-if(NOT GMSH_EXTRA_VERSION)
- set(GMSH_EXTRA_VERSION "")
-endif()
-set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION}")
-set(GMSH_EXTRA_VERSION_ORIG ${GMSH_EXTRA_VERSION})
-
-if(NOT GMSH_RELEASE)
- find_package(Git)
- if(GIT_FOUND)
- execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ERROR_QUIET
- OUTPUT_VARIABLE GIT_COMMIT_HASH
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- endif()
- if(GIT_COMMIT_HASH)
- set(GMSH_EXTRA_VERSION "${GMSH_EXTRA_VERSION}-git-${GIT_COMMIT_HASH}")
- endif()
- set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION_TEXI} (development version)")
-endif()
-
-set(GMSH_SHORT_VERSION
- "${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}")
-set(GMSH_VERSION "${GMSH_SHORT_VERSION}${GMSH_EXTRA_VERSION}")
-set(GMSH_SHORT_LICENSE "GNU General Public License")
-
-set(GMSH_GITLAB_PREFIX "https://gitlab.onelab.info/gmsh/gmsh")
-if(GMSH_RELEASE)
- set(GMSH_GITLAB_PREFIX "${GMSH_GITLAB_PREFIX}/blob/gmsh_${GMSH_SHORT_VERSION}")
-else()
- set(GMSH_GITLAB_PREFIX "${GMSH_GITLAB_PREFIX}/blob/master")
-endif()
-
-set(GMSH_API api/gmsh.h api/gmshc.h api/gmsh.h_cwrap)
-
-if(ENABLE_PRIVATE_API)
- message(WARNING "The private API is unsupported and undocumented. It is meant "
- "for expert Gmsh developers, not for regular Gmsh users, who should rely "
- "on the stable public API (gmsh/api) instead.")
- file(GLOB_RECURSE HEADERS Common/*.h Numeric/*.h Geo/*.h Mesh/*.h Solver/*.h
- Post/*.h Plugin/*.h Graphics/*.h contrib/kbipack/*.h
- contrib/DiscreteIntegration/*.h contrib/HighOrderMeshOptimizer/*.h
- contrib/MeshOptimizer/*.h contrib/MeshQualityOptimizer/*.h)
- set(GMSH_PRIVATE_API ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h
- ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h ${HEADERS})
- get_property(IAMCHILD DIRECTORY PROPERTY PARENT_DIRECTORY)
- if(IAMCHILD)
- set(GMSH_PRIVATE_API ${GMSH_PRIVATE_API} PARENT_SCOPE)
- endif()
- if(ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
- set(ENABLE_BUILD_DYNAMIC ON)
- message(WARNING "SWIG wrappers for the private API are unsupported and "
- "undocumented. The stable public Python API does not required SWIG.")
- endif()
-endif()
-
-set(ONELAB_PY contrib/onelab/python/onelab.py)
-set(GMSH_PY api/gmsh.py)
-set(GMSH_JL api/gmsh.jl)
-
-if(${CMAKE_MAJOR_VERSION} GREATER 2)
- string(TIMESTAMP DATE "%Y%m%d")
-else()
- execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE DATE
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-endif()
-
-if(NOT DATE)
- set(DATE "unknown")
-endif()
-set(GMSH_DATE "${DATE}")
-
-if(NOT GMSH_HOST)
- execute_process(COMMAND hostname OUTPUT_VARIABLE HOST
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(NOT HOST)
- set(HOST "unknown")
- endif()
- set(GMSH_HOST "${HOST}")
-endif()
-
-if(NOT GMSH_PACKAGER)
- execute_process(COMMAND whoami OUTPUT_VARIABLE PACKAGER
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(NOT PACKAGER)
- set(PACKAGER "unknown")
- endif()
- string(REPLACE "\\" " " PACKAGER ${PACKAGER})
- set(GMSH_PACKAGER "${PACKAGER}")
-endif()
-
-if(APPLE)
- set(GMSH_OS "MacOSX")
-elseif(CYGWIN OR MSYS)
- # detect if we use the MinGW compilers on Cygwin - if we do, handle the build
- # as a pure Windows build and make cmake find pure Windows import libraries
- # (.lib)
- if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
- CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
- OUTPUT_VARIABLE CXX_COMPILER_MACHINE
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(CXX_COMPILER_MACHINE MATCHES "mingw")
- set(GMSH_OS "Windows")
- set(WIN32 1)
- add_definitions(-DWIN32)
- set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".so" ".lib" ".LIB" ".dll" ".DLL" ".dll.a")
- endif()
- endif()
-else()
- set(GMSH_OS "${CMAKE_SYSTEM_NAME}")
-endif()
-
-include(CheckTypeSize)
-include(CheckFunctionExists)
-include(CheckIncludeFile)
-include(CheckCXXCompilerFlag)
-include(CheckCCompilerFlag)
-
-macro(set_config_option VARNAME STRING)
- set(${VARNAME} TRUE)
- list(APPEND CONFIG_OPTIONS ${STRING})
- message(STATUS "Found " ${STRING})
-endmacro()
-
-# check the size of size_t
-check_type_size("size_t" SIZEOF_SIZE_T)
-if(SIZEOF_SIZE_T EQUAL 8)
- set_config_option(HAVE_64BIT_SIZE_T "64Bit")
-endif()
-
-# append 32/64 to the build name on Linux and Windows
-if(NOT APPLE)
- if(HAVE_64BIT_SIZE_T)
- set(GMSH_OS "${GMSH_OS}64")
- else()
- set(GMSH_OS "${GMSH_OS}32")
- endif()
-endif()
-
-if(ENABLE_BUILD_DYNAMIC)
- set(GMSH_OS "${GMSH_OS}-sdk")
-endif()
-
-if(ENABLE_RPATH)
- set(CMAKE_MACOSX_RPATH 1)
-
- # make sure that dynamic libraries can be found when installing/ displacing
- # the binaries: from https://gitlab.kitware.com/cmake/community/wikis/doc/
- # cmake/RPATH-handling:
-
- # use, i.e. don't skip the full RPATH for the build tree
- set(CMAKE_SKIP_BUILD_RPATH FALSE)
-
- # when building, don't use the install RPATH already (but later on when
- # installing)
- set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
-
- # add the automatically determined parts of the RPATH which point to
- # directories outside the build tree to the install RPATH
- set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-
- # the RPATH to be used when installing, but only if it's not a system directory
- list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib"
- isSystemDir)
- if("${isSystemDir}" STREQUAL "-1")
- if(APPLE)
- set(CMAKE_INSTALL_RPATH "@executable_path/../lib")
- else()
- set(CMAKE_INSTALL_RPATH "\\\$ORIGIN/../lib")
- endif()
- endif()
-else()
- set(CMAKE_MACOSX_RPATH 0)
- set(CMAKE_SKIP_BUILD_RPATH TRUE)
-endif()
-
-if(MSVC)
- # remove annoying warning about bool/int cast performance
- set(GMSH_CONFIG_PRAGMAS "#pragma warning(disable:4800 4244 4267)")
- foreach(VAR
- CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
- CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
- CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
- CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
- if(ENABLE_MSVC_STATIC_RUNTIME AND ${VAR} MATCHES "/MD")
- string(REGEX REPLACE "/MD" "/MT" ${VAR} "${${VAR}}")
- endif()
- if(NOT ${VAR} MATCHES "/MP") # enable parallel compilation
- set(${VAR} "${${VAR}} /MP")
- endif()
- endforeach()
- if(ENABLE_PRIVATE_API)
- if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
- # automatically export .def file with all symbols (requires CMake 3.4);
- # depending on the compiling options this might lead to more than 64k export
- # symbols; just trim the .def file to keep the ones you need
- set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
- endif()
- endif()
-endif()
-
-# reduce memory usage of GCC on 32 bit systems
-if(NOT HAVE_64BIT_SIZE_T AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} --param ggc-min-expand=1 --param ggc-min-heapsize=512000")
-endif()
-
-if(ENABLE_OPENMP)
- find_package(OpenMP)
- if(OpenMP_FOUND OR OPENMP_FOUND)
- set_config_option(HAVE_OPENMP "OpenMP")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
- elseif(APPLE AND EXISTS "/opt/local/lib/libomp")
- # official Apple compiler with macports' libomp
- set_config_option(HAVE_OPENMP "OpenMP[MacPorts]")
- set(CMAKE_C_FLAGS
- "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp")
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp")
- list(APPEND EXTERNAL_LIBRARIES "-L/opt/local/lib/libomp -lomp")
- elseif(APPLE AND EXISTS "/usr/local/lib/libomp.dylib")
- # official Apple compiler with homebrew's libomp
- set_config_option(HAVE_OPENMP "OpenMP[Homebrew]")
- set(CMAKE_C_FLAGS
- "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp")
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp")
- list(APPEND EXTERNAL_LIBRARIES "-L/usr/local/lib -lomp")
- endif()
-endif()
-
-if(ENABLE_OPENACC)
- find_package(OpenACC)
- if(OpenACC_C_FOUND AND OpenACC_CXX_FOUND)
- set_config_option(HAVE_OPENACC "OpenACC")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenACC_C_FLAGS}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenACC_CXX_FLAGS}")
- endif()
-endif()
-
-if(ENABLE_PROFILE)
- # Using the perf set of profiling tools doesn't work without the frame
- # pointer and a common optimisation is to remove it
- check_cxx_compiler_flag("-fno-omit-frame-pointer" FNOFP)
- if(FNOFP)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
- endif()
-endif()
-
-macro(append_gmsh_src DIRNAME FILES)
- foreach(FILE ${FILES})
- list(APPEND LIST ${DIRNAME}/${FILE})
- endforeach()
- set(GMSH_SRC ${GMSH_SRC};${LIST} PARENT_SCOPE)
- set(GMSH_DIRS ${GMSH_DIRS};${DIRNAME} PARENT_SCOPE)
-endmacro()
-
-macro(find_all_libraries VARNAME LISTNAME PATH SUFFIX)
- set(${VARNAME})
- list(LENGTH ${LISTNAME} NUM_LIST)
- foreach(LIB ${${LISTNAME}})
- if("${PATH}" STREQUAL "")
- find_library(FOUND_LIB ${LIB} PATH_SUFFIXES ${SUFFIX})
- else()
- find_library(FOUND_LIB ${LIB} PATHS ${PATH} NO_DEFAULT_PATH)
- endif()
- if(FOUND_LIB)
- list(APPEND ${VARNAME} ${FOUND_LIB})
- endif()
- unset(FOUND_LIB CACHE)
- endforeach()
- list(LENGTH ${VARNAME} NUM_FOUND_LIBRARIES)
- if(NUM_FOUND_LIBRARIES LESS NUM_LIST)
- set(${VARNAME})
- endif()
-endmacro()
-
-macro(set_compile_flags LISTNAME FLAGS)
- foreach(FILE ${${LISTNAME}})
- get_source_file_property(PROP ${FILE} COMPILE_FLAGS)
- if(PROP)
- set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${PROP} ${FLAGS}")
- else()
- set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${FLAGS}")
- endif()
- endforeach()
-endmacro()
-
-if(ENABLE_EIGEN)
- if(ENABLE_SYSTEM_CONTRIB)
- find_path(EIGEN_INC "Eigen/Dense" HINTS eigen3)
- if(EIGEN_INC)
- include_directories(${EIGEN_INC})
- set_config_option(HAVE_EIGEN "Eigen[system]")
- endif()
- endif()
- if(NOT HAVE_EIGEN)
- include_directories(contrib/eigen)
- set_config_option(HAVE_EIGEN "Eigen")
- endif()
- # We could also add an option to use BLAS with Eigen
- # add_definitions(-DEIGEN_USE_BLAS)
-elseif(ENABLE_BLAS_LAPACK)
- if(BLAS_LAPACK_LIBRARIES)
- # use libs as specified in the BLAS_LAPACK_LIBRARIES variable
- set_config_option(HAVE_BLAS "Blas[custom]")
- set_config_option(HAVE_LAPACK "Lapack[custom]")
- set(LAPACK_LIBRARIES ${BLAS_LAPACK_LIBRARIES})
- else()
- if(MSVC)
- # on Windows with Visual C++ try really hard to find blas/lapack *without*
- # requiring a Fortran compiler: 1) try to find the Intel MKL libs using
- # the standard search path; if not found 2) try to get the reference
- # blas/lapack libs (useful for users with no Fortran compiler and no MKL
- # license, who can just download our precompiled "gmsh-dep" package)
- if(HAVE_64BIT_SIZE_T)
- set(MKL_PATH em64t/lib)
- set(MKL_LIBS_REQUIRED libguide40 mkl_intel_lp64 mkl_intel_thread mkl_core)
- else()
- set(MKL_PATH ia32/lib)
- set(MKL_LIBS_REQUIRED libguide40 mkl_intel_c mkl_intel_thread mkl_core)
- endif()
- find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[mkl]")
- set_config_option(HAVE_LAPACK "Lapack[mkl]")
- else()
- set(REFLAPACK_LIBS_REQUIRED lapack blas g2c gcc)
- find_all_libraries(LAPACK_LIBRARIES REFLAPACK_LIBS_REQUIRED "" "")
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[ref]")
- set_config_option(HAVE_LAPACK "Lapack[ref]")
- endif()
- endif()
- elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- # on Linux try to find the Intel MKL without a Fortran compiler
- if(HAVE_64BIT_SIZE_T)
- set(MKL_PATH lib/em64t)
- else()
- set(MKL_PATH lib/32)
- endif()
- set(MKL_LIBS_REQUIRED mkl_gf_lp64 iomp5 mkl_gnu_thread mkl_core guide pthread)
- find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
- if(NOT LAPACK_LIBRARIES)
- # match lapack 9.0 on 64bit
- set(MKL_LIBS_REQUIRED mkl_lapack mkl_em64t guide)
- find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
- endif()
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[mkl]")
- set_config_option(HAVE_LAPACK "Lapack[mkl]")
- else()
- # on Linux also try to find ATLAS without a Fortran compiler, because
- # cmake ships with a buggy FindBLAS e.g. on Ubuntu Lucid Lynx
- set(ATLAS_LIBS_REQUIRED lapack f77blas cblas atlas)
- find_all_libraries(LAPACK_LIBRARIES ATLAS_LIBS_REQUIRED "" "")
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[atlas]")
- set_config_option(HAVE_LAPACK "Lapack[atlas]")
- else()
- # try with generic names
- set(GENERIC_LIBS_REQUIRED lapack blas pthread)
- find_all_libraries(LAPACK_LIBRARIES GENERIC_LIBS_REQUIRED "" "")
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[generic]")
- set_config_option(HAVE_LAPACK "Lapack[generic]")
- find_library(GFORTRAN_LIB gfortran)
- if(GFORTRAN_LIB)
- list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB})
- endif()
- endif()
- endif()
- endif()
- elseif(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
- # on SunOS we know blas and lapack are available in sunperf
- set(LAPACK_LIBRARIES -library=sunperf)
- set_config_option(HAVE_BLAS "Blas[sunperf]")
- set_config_option(HAVE_LAPACK "Lapack[sunperf]")
- elseif(APPLE)
- # on Mac we also know that blas and lapack are available
- set(LAPACK_LIBRARIES "-llapack -lblas")
- set_config_option(HAVE_BLAS "Blas[veclib]")
- set_config_option(HAVE_LAPACK "Lapack[veclib]")
- endif()
-
- if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
- # if we haven't found blas and lapack check for OpenBlas
- set(OPENBLAS_LIBS_REQUIRED openblas)
- find_all_libraries(LAPACK_LIBRARIES OPENBLAS_LIBS_REQUIRED "" "")
- if(LAPACK_LIBRARIES)
- set_config_option(HAVE_BLAS "Blas[openblas]")
- set_config_option(HAVE_LAPACK "Lapack[openblas]")
- find_library(GFORTRAN_LIB gfortran)
- if(GFORTRAN_LIB)
- list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB})
- endif()
- endif()
- endif()
-
- if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
- # if we still haven't found blas and lapack, use the standard cmake tests,
- # which require a working Fortran compiler
- enable_language(Fortran)
- find_package(BLAS)
- if(BLAS_FOUND)
- set_config_option(HAVE_BLAS "Blas")
- find_package(LAPACK)
- if(LAPACK_FOUND)
- set_config_option(HAVE_LAPACK "Lapack")
- else()
- set(LAPACK_LIBRARIES ${BLAS_LIBRARIES})
- endif()
- if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
- if(CMAKE_Fortran_COMPILER MATCHES "gfortran")
- list(APPEND LAPACK_LIBRARIES gfortran)
- elseif(CMAKE_Fortran_COMPILER MATCHES "f95")
- list(APPEND LAPACK_LIBRARIES gfortran)
- elseif(CMAKE_Fortran_COMPILER MATCHES "g77")
- list(APPEND LAPACK_LIBRARIES g2c)
- endif()
- elseif(CMAKE_Fortran_COMPILER MATCHES "pgi")
- list(APPEND LAPACK_LIBRARIES -pgf77libs)
- endif()
- endif()
- endif()
- endif()
-endif()
-
-if(ENABLE_TCMALLOC)
- find_library(TCMALLOC tcmalloc)
- if(TCMALLOC)
- set_config_option(HAVE_TCMALLOC "TCMalloc")
- list(APPEND EXTERNAL_LIBRARIES ${TCMALLOC})
- endif()
-endif()
-
-add_subdirectory(Common)
-add_subdirectory(Numeric)
-add_subdirectory(Geo)
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh AND ENABLE_MESH)
- add_subdirectory(Mesh)
- set_config_option(HAVE_MESH "Mesh")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Solver AND ENABLE_SOLVER)
- add_subdirectory(Solver)
- set_config_option(HAVE_SOLVER "Solver")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Post AND ENABLE_POST)
- add_subdirectory(Post)
- set_config_option(HAVE_POST "Post")
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Plugin AND ENABLE_PLUGINS)
- add_subdirectory(Plugin)
- set_config_option(HAVE_PLUGINS "Plugins")
- endif()
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Parser AND ENABLE_PARSER)
- add_subdirectory(Parser)
- set_config_option(HAVE_PARSER "Parser")
-endif()
-
-if(ENABLE_VISUDEV)
- set_config_option(HAVE_VISUDEV "VisuDev")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fltk AND ENABLE_FLTK)
- # first, try to use fltk-config for fltk >= 1.3 (FindFLTK is buggy on Unix,
- # where e.g. xft and xinerama options are not dealt with)
- find_program(FLTK_CONFIG_SCRIPT fltk-config)
- if(FLTK_CONFIG_SCRIPT)
- execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --api-version
- OUTPUT_VARIABLE FLTK_VERSION)
- string(STRIP "${FLTK_VERSION}" FLTK_VERSION)
- if(FLTK_VERSION VERSION_GREATER 1.1)
- add_subdirectory(Fltk)
- set_config_option(HAVE_FLTK "Fltk")
- message(STATUS "Using fltk-config script for Fltk " ${FLTK_VERSION})
- execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --includedir
- OUTPUT_VARIABLE FLTK_INCLUDE_DIR)
- string(STRIP ${FLTK_INCLUDE_DIR} FLTK_INCLUDE_DIR)
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR})
- # On linux (at least OpenSuSE) the following directories are
- # not existing (everything is in /usr/include). To avoid warnings
- # check existance of these directories before adding them
- if(EXISTS ${FLTK_INCLUDE_DIR}/FL/images)
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/FL/images)
- endif()
- if(EXISTS ${FLTK_INCLUDE_DIR}/jpeg)
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/jpeg)
- endif()
- if(EXISTS ${FLTK_INCLUDE_DIR}/zlib)
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/zlib)
- endif()
- if(EXISTS ${FLTK_INCLUDE_DIR}/png)
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/png)
- endif()
- execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --ldflags
- OUTPUT_VARIABLE FLTK_LIBRARIES)
- string(STRIP ${FLTK_LIBRARIES} FLTK_LIBRARIES)
- string(REGEX MATCH "fltk[_ ]jpeg" FLTK_JPEG ${FLTK_LIBRARIES})
- string(REGEX MATCH "fltk[_ ]z" FLTK_Z ${FLTK_LIBRARIES})
- string(REGEX MATCH "fltk[_ ]png" FLTK_PNG ${FLTK_LIBRARIES})
- endif()
- endif()
- # then try the built-in FindFLTK module
- if(NOT HAVE_FLTK)
- set(FLTK_SKIP_FORMS TRUE)
- set(FLTK_SKIP_FLUID TRUE)
- find_package(FLTK)
- if(FLTK_FOUND)
- add_subdirectory(Fltk)
- set_config_option(HAVE_FLTK "Fltk")
- list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR})
- # find fltk jpeg
- find_library(FLTK_JPEG NAMES fltk_jpeg fltkjpeg)
- if(FLTK_JPEG)
- list(APPEND EXTERNAL_LIBRARIES ${FLTK_JPEG})
- foreach(DIR ${FLTK_INCLUDE_DIR})
- list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/jpeg)
- endforeach()
- endif()
- # find fltk zlib
- find_library(FLTK_Z NAMES fltk_z fltkz)
- if(FLTK_Z)
- list(APPEND EXTERNAL_LIBRARIES ${FLTK_Z})
- foreach(DIR ${FLTK_INCLUDE_DIR})
- list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/zlib)
- endforeach()
- endif()
- # find fltk png
- find_library(FLTK_PNG NAMES fltk_png fltkpng)
- if(FLTK_PNG)
- list(APPEND EXTERNAL_LIBRARIES ${FLTK_PNG})
- foreach(DIR ${FLTK_INCLUDE_DIR})
- list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/png)
- endforeach()
- endif()
- endif()
- endif()
- # workaround for Fedora/Suse messing up fltk-config (see issue #417)
- if(HAVE_FLTK AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- string(REGEX MATCH "X11" FLTK_X11 ${FLTK_LIBRARIES})
- if(NOT FLTK_X11)
- find_package(X11)
- if(X11_FOUND)
- list(APPEND EXTERNAL_INCLUDES ${X11_INCLUDE_DIR})
- list(APPEND EXTERNAL_LIBRARIES ${X11_LIBRARIES})
- endif()
- endif()
- endif()
-endif()
-
-if(APPLE AND HAVE_FLTK AND ENABLE_TOUCHBAR)
- STRING(REGEX MATCH "([0-9]+.[0-9]+)" OSX_SDK_VERSION "${CMAKE_OSX_SYSROOT}")
- if(OSX_SDK_VERSION)
- if(${OSX_SDK_VERSION} VERSION_GREATER 10.11)
- set(GMSH_SRC ${GMSH_SRC};Fltk/touchBar.mm)
- set_config_option(HAVE_TOUCHBAR "TouchBar")
- endif()
- endif()
-endif()
-
-if(ENABLE_ONELAB)
- set_config_option(HAVE_ONELAB "ONELAB")
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab)
- if(ENABLE_ONELAB_METAMODEL)
- add_subdirectory(contrib/onelab)
- include_directories(contrib/onelab)
- set_config_option(HAVE_ONELAB_METAMODEL "ONELABMetamodel")
- endif()
- file(COPY ${ONELAB_PY} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
- endif()
-endif()
-
-if(ENABLE_BUILD_IOS)
- find_file(CMAKE_TOOLCHAIN_FILE "ios.cmake")
- if(NOT CMAKE_TOOLCHAIN_FILE)
- message(FATAL_ERROR "Cannot compile Gmsh for iOS without a toolchain")
- endif()
- add_definitions(-DBUILD_IOS)
-endif()
-
-if(HAVE_FLTK OR ENABLE_GRAPHICS)
- if(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS OR NOT HAVE_ONELAB)
- message(SEND_ERROR "Cannot compile GUI without Mesh, Post, Plugin and ONELAB")
- endif()
-
- if(FLTK_JPEG)
- set_config_option(HAVE_LIBJPEG "Jpeg[fltk]")
- else()
- find_package(JPEG)
- if(JPEG_FOUND)
- set_config_option(HAVE_LIBJPEG "Jpeg")
- list(APPEND EXTERNAL_LIBRARIES ${JPEG_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${JPEG_INCLUDE_DIR})
- endif()
- endif()
-
- if(FLTK_Z)
- set_config_option(HAVE_LIBZ "Zlib[fltk]")
- else()
- find_package(ZLIB)
- if(ZLIB_FOUND)
- set_config_option(HAVE_LIBZ "Zlib")
- list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
- endif()
- endif()
-
- if(HAVE_LIBZ)
- if(FLTK_PNG)
- set_config_option(HAVE_LIBPNG "Png[fltk]")
- else()
- find_package(PNG)
- if(PNG_FOUND)
- set_config_option(HAVE_LIBPNG "Png")
- list(APPEND EXTERNAL_LIBRARIES ${PNG_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${PNG_INCLUDE_DIR})
- endif()
- endif()
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mpeg_encode AND
- ENABLE_MPEG_ENCODE)
- add_subdirectory(contrib/mpeg_encode)
- include_directories(contrib/mpeg_encode/headers)
- set_config_option(HAVE_MPEG_ENCODE "Mpeg")
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M AND ENABLE_3M)
- add_subdirectory(contrib/3M)
- include_directories(contrib/3M)
- set_config_option(HAVE_3M "3M")
- endif()
-
- if(ENABLE_OSMESA)
- find_library(OSMESA_LIB OSMesa)
- if(OSMESA_LIB)
- set_config_option(HAVE_OSMESA "OSMesa")
- list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB})
- endif()
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Graphics)
- set(OpenGL_GL_PREFERENCE "LEGACY")
- find_package(OpenGL REQUIRED)
- if(OPENGL_GLU_FOUND AND OPENGL_FOUND)
- add_subdirectory(Graphics)
- set_config_option(HAVE_OPENGL "OpenGL")
- else()
- message(SEND_ERROR "Could not find GLU: disabling OpenGL support")
- endif()
- endif()
-endif()
-
-if(ENABLE_ANN)
- find_library(ANN_LIB ANN PATH_SUFFIXES lib)
- find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN)
- if(ENABLE_SYSTEM_CONTRIB AND ANN_LIB AND ANN_INC)
- message(STATUS "Using system version of ANN")
- list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB})
- list(APPEND EXTERNAL_INCLUDES ${ANN_INC})
- set_config_option(HAVE_ANN "ANN[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ANN)
- add_subdirectory(contrib/ANN)
- include_directories(contrib/ANN/include)
- set_config_option(HAVE_ANN "ANN")
- endif()
-endif()
-
-if(ENABLE_ALGLIB)
- find_library(ALGLIB_LIB alglib)
- find_path(ALGLIB_INC "stdafx.h" PATH_SUFFIXES libalglib)
- if(ENABLE_SYSTEM_CONTRIB AND ALGLIB_LIB AND ALGLIB_INC)
- list(APPEND EXTERNAL_LIBRARIES ${ALGLIB_LIB})
- list(APPEND EXTERNAL_INCLUDES ${ALGLIB_INC})
- set_config_option(HAVE_ALGLIB "ALGLIB[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ALGLIB)
- add_subdirectory(contrib/ALGLIB)
- include_directories(contrib/ALGLIB)
- set_config_option(HAVE_ALGLIB "ALGLIB")
- endif()
-endif()
-
-if(HAVE_FLTK AND ENABLE_CAIRO)
- find_library(CAIRO_LIB cairo)
- find_path(CAIRO_INC "cairo/cairo.h" PATH_SUFFIXES include)
- if(CAIRO_INC AND CAIRO_LIB)
- set_config_option(HAVE_CAIRO "Cairo")
- list(APPEND EXTERNAL_LIBRARIES ${CAIRO_LIB})
- list(APPEND EXTERNAL_INCLUDES ${CAIRO_INC})
- endif()
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/DiscreteIntegration AND
- ENABLE_DINTEGRATION)
- add_subdirectory(contrib/DiscreteIntegration)
- include_directories(contrib/DiscreteIntegration)
- set_config_option(HAVE_DINTEGRATION "DIntegration")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/HighOrderMeshOptimizer AND
- EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshOptimizer AND
- EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshQualityOptimizer AND
- ENABLE_OPTHOM AND HAVE_MESH)
- add_subdirectory(contrib/HighOrderMeshOptimizer)
- include_directories(contrib/HighOrderMeshOptimizer)
- add_subdirectory(contrib/MeshOptimizer)
- include_directories(contrib/MeshOptimizer)
- include_directories(${CMAKE_CURRENT_BINARY_DIR}/contrib/MeshOptimizer)
- add_subdirectory(contrib/MeshQualityOptimizer)
- include_directories(contrib/MeshQualityOptimizer)
- set_config_option(HAVE_OPTHOM "OptHom")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/domhex AND
- ENABLE_DOMHEX AND HAVE_MESH)
- add_subdirectory(contrib/domhex)
- include_directories(contrib/domhex)
- set_config_option(HAVE_DOMHEX "DomHex")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/QuadTri AND
- ENABLE_QUADTRI AND HAVE_MESH)
- add_subdirectory(contrib/QuadTri)
- include_directories(contrib/QuadTri)
- set_config_option(HAVE_QUADTRI "QuadTri")
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/kbipack AND ENABLE_KBIPACK)
- set_config_option(HAVE_KBIPACK "Kbipack")
- add_subdirectory(contrib/kbipack)
- include_directories(contrib/kbipack)
- if(ENABLE_GMP)
- find_library(GMP_LIB libgmp.a)
- find_path(GMP_INC "gmp.h" PATH_SUFFIXES src include)
- endif()
- if(GMP_LIB AND GMP_INC)
- set_config_option(HAVE_GMP "GMP")
- list(APPEND EXTERNAL_LIBRARIES ${GMP_LIB})
- list(APPEND EXTERNAL_INCLUDES ${GMP_INC})
- else()
- message(STATUS "GMP not found: Kbipack uses long int")
- endif()
-endif()
-
-if(ENABLE_MATHEX)
- find_library(MATHEX_LIB mathex PATH_SUFFIXES lib)
- find_path(MATHEX_INC "mathex.h" PATH_SUFFIXES src include)
- if(ENABLE_SYSTEM_CONTRIB AND MATHEX_LIB AND MATHEX_INC)
- list(APPEND EXTERNAL_LIBRARIES ${MATHEX_LIB})
- list(APPEND EXTERNAL_INCLUDES ${MATHEX_INC})
- set_config_option(HAVE_MATHEX "MathEx[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MathEx)
- add_subdirectory(contrib/MathEx)
- include_directories(contrib/MathEx)
- set_config_option(HAVE_MATHEX "MathEx")
- endif()
-endif()
-
-if(ENABLE_MPI)
- find_package(MPI)
- if(MPI_FOUND)
- set_config_option(HAVE_MPI "MPI")
- list(APPEND EXTERNAL_INCLUDES ${MPI_CXX_INCLUDE_PATH})
- list(APPEND EXTERNAL_LIBRARIES ${MPI_CXX_LIBRARIES})
- set(CMAKE_C_COMPILER ${MPI_C_COMPILER})
- set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER})
- set(CMAKE_Fortran_COMPILER ${MPI_Fortran_COMPILER})
- endif()
-endif()
-
-if(ENABLE_POPPLER)
- find_library(POPPLER_LIB poppler)
- find_library(POPPLER_CPP_LIB poppler-cpp)
- find_path(POPPLER_INC "poppler/cpp/poppler-document.h" PATH_SUFFIXES src include)
- if(POPPLER_LIB AND POPPLER_INC)
- set_config_option(HAVE_POPPLER "Poppler")
- list(APPEND EXTERNAL_LIBRARIES ${POPPLER_LIB})
- list(APPEND EXTERNAL_LIBRARIES ${POPPLER_CPP_LIB})
- list(APPEND EXTERNAL_INCLUDES ${POPPLER_INC})
- endif()
-endif()
-
-if(ENABLE_P4EST)
- find_library(P4EST_LIB p4est)
- find_path(P4EST_INC "p4est.h" PATH_SUFFIXES src)
- find_library(SC_LIB sc)
- if(P4EST_LIB AND P4EST_INC AND SC_LIB)
- set_config_option(HAVE_P4EST "P4est")
- list(APPEND EXTERNAL_LIBRARIES ${P4EST_LIB} ${SC_LIB})
- list(APPEND EXTERNAL_INCLUDES ${P4EST_INC})
- endif()
-endif()
-
-if(HAVE_MESH OR HAVE_SOLVER)
- if(ENABLE_METIS)
- if(METIS_LIB AND METIS_INC)
- list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB})
- list(APPEND EXTERNAL_INCLUDES ${METIS_INC})
- set_config_option(HAVE_METIS "Metis")
- else()
- find_library(METIS_LIB metis PATH_SUFFIXES lib)
- find_path(METIS_INC "metis.h" PATH_SUFFIXES include)
- if(ENABLE_SYSTEM_CONTRIB AND METIS_LIB AND METIS_INC)
- message(STATUS "Using system version of METIS")
- list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB})
- list(APPEND EXTERNAL_INCLUDES ${METIS_INC})
- set_config_option(HAVE_METIS "Metis[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/metis)
- add_definitions(-DUSE_GKREGEX)
- add_subdirectory(contrib/metis)
- include_directories(contrib/metis/include contrib/metis/libmetis
- contrib/metis/GKlib)
- set_config_option(HAVE_METIS "Metis")
- endif()
- endif()
- endif()
-endif()
-
-if(HAVE_MESH)
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh/tetgenBR.cxx)
- set_config_option(HAVE_TETGENBR "TetGen/BR")
- endif()
-
- if(ENABLE_VOROPP)
- find_library(VOROPP_LIB voro++)
- find_path(VOROPP_INC "voro++.hh" PATH_SUFFIXES voro++)
- if(ENABLE_SYSTEM_CONTRIB AND VOROPP_LIB AND VOROPP_INC)
- message(STATUS "Using system version of voro++")
- list(APPEND EXTERNAL_LIBRARIES ${VOROPP_LIB})
- list(APPEND EXTERNAL_INCLUDES ${VOROPP_INC})
- set_config_option(HAVE_VOROPP "Voro++[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/voro++)
- add_subdirectory(contrib/voro++)
- include_directories(contrib/voro++/src)
- set_config_option(HAVE_VOROPP "Voro++")
- endif()
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/blossom AND ENABLE_BLOSSOM)
- add_subdirectory(contrib/blossom)
- include_directories(contrib/blossom/MATCH contrib/blossom/concorde97
- contrib/blossom/concorde97/INCLUDE)
- set_config_option(HAVE_BLOSSOM "Blossom")
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Netgen AND ENABLE_NETGEN)
- add_subdirectory(contrib/Netgen)
- include_directories(contrib/Netgen contrib/Netgen/libsrc/include
- contrib/Netgen/nglib)
- set_config_option(HAVE_NETGEN "Netgen")
- add_definitions(-DNO_PARALLEL_THREADS -DNOTCL)
- endif()
-
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/bamg AND ENABLE_BAMG)
- add_subdirectory(contrib/bamg)
- include_directories(contrib/bamg contrib/bamg/bamglib)
- set_config_option(HAVE_BAMG "Bamg")
- endif()
-
- if(ENABLE_MMG)
- find_library(MMG_LIB NAMES Mmg mmg)
- find_path(MMG_INC "libmmg.h" PATH_SUFFIXES mmg)
- if(MMG_LIB AND MMG_INC)
- list(APPEND EXTERNAL_LIBRARIES ${MMG_LIB})
- list(APPEND EXTERNAL_INCLUDES ${MMG_INC})
- set_config_option(HAVE_MMG "Mmg")
- endif()
- endif()
-endif()
-
-if(ENABLE_MED OR ENABLE_CGNS)
- find_package(HDF5)
- if(HDF5_FOUND)
- set(HDF5_LIB "${HDF5_C_LIBRARIES}")
- list(APPEND EXTERNAL_INCLUDES ${HDF5_INCLUDE_DIRS})
- if(ENABLE_MED)
- find_library(MED_LIB medC)
- if(MED_LIB)
- set_config_option(HAVE_MED "Med")
- list(APPEND EXTERNAL_LIBRARIES ${MED_LIB})
- endif()
- endif()
- if(ENABLE_CGNS)
- find_library(CGNS_LIB cgns HINTS ENV CGNS_ROOT PATH_SUFFIXES lib)
- find_path(CGNS_INC "cgnslib.h" HINTS ENV CGNS_ROOT PATH_SUFFIXES include)
- if(CGNS_LIB AND CGNS_INC)
- set_config_option(HAVE_LIBCGNS "Cgns")
- list(APPEND EXTERNAL_LIBRARIES ${CGNS_LIB})
- list(APPEND EXTERNAL_INCLUDES ${CGNS_INC})
- if(ENABLE_CGNS_CPEX0045)
- set_config_option(HAVE_LIBCGNS_CPEX0045 "Cgns_CPEX0045")
- endif()
- endif()
- endif()
- if(MED_LIB OR CGNS_LIB)
- list(APPEND EXTERNAL_LIBRARIES ${HDF5_LIB})
- find_library(SZ_LIB NAMES szlib sz)
- if(SZ_LIB)
- list(APPEND EXTERNAL_LIBRARIES ${SZ_LIB})
- endif()
- if(NOT HAVE_LIBZ) # necessary for non-GUI builds
- find_package(ZLIB)
- if(ZLIB_FOUND)
- set_config_option(HAVE_LIBZ "Zlib")
- list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
- endif()
- endif()
- endif()
- else()
- message(STATUS "HDF5 not found")
- endif()
-endif()
-
-if(HAVE_SOLVER)
- if(ENABLE_GMM)
- find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm)
- if(ENABLE_SYSTEM_CONTRIB AND GMM_INC)
- message(STATUS "Using system version of GMM")
- list(APPEND EXTERNAL_INCLUDES ${GMM_INC})
- set_config_option(HAVE_GMM "Gmm[system]")
- elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/gmm)
- include_directories(contrib/gmm)
- set_config_option(HAVE_GMM "Gmm")
- endif()
- endif()
-
- if(ENABLE_PETSC)
- if(PETSC_DIR)
- set(ENV_PETSC_DIR ${PETSC_DIR})
- else()
- set(ENV_PETSC_DIR $ENV{PETSC_DIR})
- endif()
- if(PETSC_ARCH)
- set(ENV_PETSC_ARCH ${PETSC_ARCH})
- else()
- set(ENV_PETSC_ARCH $ENV{PETSC_ARCH})
- endif()
- set(PETSC_POSSIBLE_CONF_FILES
- ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables
- ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc-conf/petscvariables
- ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc/conf/petscvariables)
- foreach(FILE ${PETSC_POSSIBLE_CONF_FILES})
- if(EXISTS ${FILE})
- # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH)
- message(STATUS "Using PETSc dir: ${ENV_PETSC_DIR}")
- message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}")
- # find includes by parsing the petscvariables file
- file(STRINGS ${FILE} PETSC_VARIABLES NEWLINE_CONSUME)
- endif()
- endforeach()
- if(PETSC_VARIABLES)
- # try to find PETSC_CC_INCLUDES for PETSc >= 3.4
- string(REGEX MATCH "PETSC_CC_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
- ${PETSC_VARIABLES})
- if(PETSC_PACKAGES_INCLUDES)
- string(REPLACE "PETSC_CC_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
- ${PETSC_PACKAGES_INCLUDES})
- else()
- # try to find PETSC_PACKAGES_INCLUDES in older versions
- list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include)
- list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
- string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
- ${PETSC_VARIABLES})
- string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
- ${PETSC_PACKAGES_INCLUDES})
- endif()
- if(PETSC_PACKAGES_INCLUDES)
- if(PETSC_PACKAGES_INCLUDES)
- string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
- string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
- foreach(VAR ${PETSC_PACKAGES_INCLUDES})
- # seem to include unexisting directories (/usr/include/lib64)
- # check to avoid warnings
- if(EXISTS ${VAR})
- list(APPEND EXTERNAL_INCLUDES ${VAR})
- endif()
- endforeach()
- endif()
- endif()
- # find libraries (<= 3.0)
- set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc)
- find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED
- ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "")
- # petsc 3.1 creates only one library (libpetsc)
- if(NOT PETSC_LIBS)
- find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib
- NO_DEFAULT_PATH)
- endif()
- if(PETSC_LIBS)
- set_config_option(HAVE_PETSC "PETSc")
- if(NOT HAVE_BLAS)
- set_config_option(HAVE_BLAS "Blas[petsc]")
- endif()
- if(NOT HAVE_LAPACK)
- set_config_option(HAVE_LAPACK "Lapack[petsc]")
- endif()
- endif()
- # find slepc (needs to be linked in before petsc)
- if(ENABLE_SLEPC)
- if(SLEPC_DIR)
- set(ENV_SLEPC_DIR ${SLEPC_DIR})
- else()
- set(ENV_SLEPC_DIR $ENV{SLEPC_DIR})
- endif()
- find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib
- NO_DEFAULT_PATH)
- if(SLEPC_LIB)
- find_path(SLEPC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR} PATH_SUFFIXES include
- ${ENV_PETSC_ARCH}/include include/slepc NO_DEFAULT_PATH)
- if(SLEPC_INC)
- message(STATUS "Using SLEPc dir: ${ENV_SLEPC_DIR}")
- set_config_option(HAVE_SLEPC "SLEPc")
- list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
- list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC})
- find_path(SLEPC_INC2 "slepcconf.h" PATHS ${ENV_SLEPC_DIR}
- PATH_SUFFIXES ${ENV_PETSC_ARCH}/include NO_DEFAULT_PATH)
- if(SLEPC_INC2)
- list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2})
- endif()
- endif()
- endif()
- endif()
- list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
- # find additional libraries to link with
- string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES})
- if(PLIBS)
- string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS})
- string(STRIP ${PLIBS} PLIBS)
- list(APPEND EXTERNAL_LIBRARIES "${PLIBS}")
- endif()
- string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES})
- if(PLIBS_BASIC)
- string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC})
- string(STRIP ${PLIBS_BASIC} PLIBS_BASIC)
- separate_arguments(PLIBS_BASIC)
- list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}")
- endif()
- string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES})
- if(LLIBS)
- string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS})
- string(STRIP ${LLIBS} LLIBS)
- list(APPEND EXTERNAL_LIBRARIES "${LLIBS}")
- endif()
- else()
- # new-style PETSc installations (in standard system directories)
- find_library(PETSC_LIBS petsc)
- find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc)
- if(PETSC_LIBS AND PETSC_INC)
- set_config_option(HAVE_PETSC "PETSc")
- if(ENABLE_SLEPC)
- find_library(SLEPC_LIB slepc)
- find_path(SLEPC_INC "slepc.h" PATH_SUFFIXES include/slepc)
- if(SLEPC_LIB AND SLEPC_INC)
- set_config_option(HAVE_SLEPC "SLEPc")
- list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
- list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC})
- endif()
- endif()
- list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
- list(APPEND EXTERNAL_INCLUDES ${PETSC_INC})
- endif()
- endif()
- endif()
-
- if(ENABLE_MUMPS AND HAVE_BLAS AND HAVE_LAPACK)
- set(MUMPS_LIBS_REQUIRED smumps dmumps cmumps zmumps mumps_common pord)
- if(NOT ENABLE_MPI)
- list(APPEND MUMPS_LIBS_REQUIRED mpiseq)
- endif()
- find_all_libraries(MUMPS_LIBRARIES MUMPS_LIBS_REQUIRED "" "lib")
- find_path(SMUMPS_INC "smumps_c.h" PATH_SUFFIXES src include)
- find_path(DMUMPS_INC "dmumps_c.h" PATH_SUFFIXES src include)
- find_path(CMUMPS_INC "cmumps_c.h" PATH_SUFFIXES src include)
- find_path(ZMUMPS_INC "zmumps_c.h" PATH_SUFFIXES src include)
- if(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC)
- set_config_option(HAVE_MUMPS "MUMPS")
- list(APPEND EXTERNAL_LIBRARIES ${MUMPS_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${SMUMPS_INC})
- list(APPEND EXTERNAL_INCLUDES ${DMUMPS_INC})
- list(APPEND EXTERNAL_INCLUDES ${CMUMPS_INC})
- list(APPEND EXTERNAL_INCLUDES ${ZMUMPS_INC})
- find_library(GFORTRAN_LIB gfortran)
- if(GFORTRAN_LIB)
- list(APPEND EXTERNAL_LIBRARIES ${GFORTRAN_LIB})
- endif()
- if(ENABLE_GMM) # use GMM/MUMPS interface
- add_definitions(-DGMM_USES_MUMPS)
- endif()
- endif()
- endif()
-
- if(ENABLE_GETDP)
- find_library(GETDP_LIB GetDP)
- find_path(GETDP_INC "GetDP.h" PATH_SUFFIXES getdp)
- if(GETDP_LIB AND GETDP_INC)
- set_config_option(HAVE_GETDP "GetDP")
- list(APPEND EXTERNAL_LIBRARIES ${GETDP_LIB})
- list(APPEND EXTERNAL_INCLUDES ${GETDP_INC})
- endif()
- endif()
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt AND ENABLE_HXT)
- add_subdirectory(contrib/hxt)
- include_directories(BEFORE ${HXT_INC_DIRS})
- set_config_option(HAVE_HXT "Hxt")
- # do not use arithmetic contraction in predicates.c
- if(MSVC OR (CMAKE_C_COMPILER_ID STREQUAL "Intel" AND WIN32))
- set_source_files_properties(
- "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c"
- PROPERTIES COMPILE_FLAGS "/fp:strict")
- elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel")
- set_source_files_properties(
- "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c"
- PROPERTIES COMPILE_FLAGS "-fp-model strict")
- elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
- set_source_files_properties(
- "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c"
- PROPERTIES COMPILE_FLAGS "-fno-unsafe-math-optimizations -ffp-contract=off")
- else()
- message(WARNING
- "Unsupported compiler !
- Make sure compiled functions from predicates.c
- do NOT use extended double precision and follow IEEE754 standard.
- It is crucial for the robustness of geometric predicates.")
- endif()
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/pro AND ENABLE_PRO)
- add_subdirectory(pro)
-endif()
-
-if(ENABLE_OCC)
- set(OCC_MINIMAL_VERSION "6.9.1")
- if(WIN32)
- if(HAVE_64BIT_SIZE_T)
- set(OCC_SYS_NAME win64)
- else()
- set(OCC_SYS_NAME win32)
- endif()
- else()
- set(OCC_SYS_NAME ${CMAKE_SYSTEM_NAME})
- endif()
- find_path(OCC_INC "Standard_Version.hxx" HINTS ENV CASROOT PATH_SUFFIXES
- inc include include/oce opencascade include/opencascade
- occt include/occt)
- if(OCC_INC)
- file(STRINGS ${OCC_INC}/Standard_Version.hxx
- OCC_MAJOR REGEX "#define OCC_VERSION_MAJOR.*")
- file(STRINGS ${OCC_INC}/Standard_Version.hxx
- OCC_MINOR REGEX "#define OCC_VERSION_MINOR.*")
- file(STRINGS ${OCC_INC}/Standard_Version.hxx
- OCC_MAINT REGEX "#define OCC_VERSION_MAINTENANCE.*")
- if(OCC_MAJOR AND OCC_MINOR AND OCC_MAINT)
- string(REGEX MATCH "[0-9]+" OCC_MAJOR "${OCC_MAJOR}")
- string(REGEX MATCH "[0-9]+" OCC_MINOR "${OCC_MINOR}")
- string(REGEX MATCH "[0-9]+" OCC_MAINT "${OCC_MAINT}")
- set(OCC_VERSION "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
- message(STATUS "Found OpenCASCADE version ${OCC_VERSION} in ${OCC_INC}")
- endif()
- endif()
- if(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION})
- message(WARNING "Gmsh requires OpenCASCADE >= ${OCC_MINIMAL_VERSION}. "
- "Use CMAKE_PREFIX_PATH or the CASROOT environment variable "
- "to explicitely specify the installation path of OpenCASCADE")
- elseif(OCC_INC)
- set(OCC_LIBS_REQUIRED
- # subset of DataExchange
- TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKXSBase
- # ModelingAlgorithms
- TKOffset TKFeat TKFillet TKBool TKMesh TKHLR TKBO TKPrim TKShHealing
- TKTopAlgo TKGeomAlgo
- # ModelingData
- TKBRep TKGeomBase TKG3d TKG2d
- # FoundationClasses
- TKMath TKernel)
- if(ENABLE_OCC_TBB)
- list(APPEND OCC_LIBS_REQUIRED tbb tbbmalloc)
- endif()
- list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS_REQUIRED)
- if(OCC_LIBS)
- message(STATUS "OCC libraries specified explicitly: " ${OCC_LIBS})
- list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS)
- else()
- set(OCC_LIBS)
- foreach(OCC ${OCC_LIBS_REQUIRED})
- find_library(OCC_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES
- lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib
- ${OCC_SYS_NAME}/gcc/lib ${OCC_SYS_NAME}/gcc/bin)
- if(OCC_LIB)
- list(APPEND OCC_LIBS ${OCC_LIB})
- else()
- message(STATUS "OCC lib " ${OCC} " not Found")
- endif()
- unset(OCC_LIB CACHE)
- endforeach()
- list(LENGTH OCC_LIBS NUM_OCC_LIBS)
- endif()
- endif()
-
- # additional OCC libraries to handle reading of STEP/IGES attributes. Oh my...
- if(ENABLE_OCC_CAF)
- find_package(Freetype)
- if(FREETYPE_FOUND)
- set(OCC_CAF_LIBS_REQUIRED
- TKXDESTEP TKXDEIGES TKXCAF TKLCAF TKVCAF TKCAF TKV3d TKService TKCDF)
- list(LENGTH OCC_CAF_LIBS_REQUIRED NUM_OCC_CAF_LIBS_REQUIRED)
- set(OCC_CAF_LIBS)
- foreach(OCC ${OCC_CAF_LIBS_REQUIRED})
- find_library(OCC_CAF_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES
- lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib
- ${OCC_SYS_NAME}/gcc/lib ${OCC_SYS_NAME}/gcc/bin)
- if(OCC_CAF_LIB)
- list(APPEND OCC_CAF_LIBS ${OCC_CAF_LIB})
- else()
- message(STATUS "OCC CAF lib " ${OCC} " not Found")
- endif()
- unset(OCC_CAF_LIB CACHE)
- endforeach()
- list(LENGTH OCC_CAF_LIBS NUM_OCC_CAF_LIBS)
- endif()
- endif()
-
- if(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED)
- # append OCC CAF libraries first...
- if(NUM_OCC_CAF_LIBS EQUAL NUM_OCC_CAF_LIBS_REQUIRED)
- set_config_option(HAVE_OCC_CAF "OpenCASCADE-CAF")
- list(APPEND EXTERNAL_LIBRARIES ${OCC_CAF_LIBS} ${FREETYPE_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${FREETYPE_INCLUDE_DIRS})
- if(WIN32)
- list(APPEND EXTERNAL_LIBRARIES "windowscodecs")
- list(APPEND EXTERNAL_LIBRARIES "ole32")
- endif()
- endif()
- # then append OCC libraries
- set_config_option(HAVE_OCC "OpenCASCADE")
- list(APPEND EXTERNAL_LIBRARIES ${OCC_LIBS})
- list(APPEND EXTERNAL_INCLUDES ${OCC_INC})
- if(HAVE_64BIT_SIZE_T)
- add_definitions(-D_OCC64)
- endif()
- if(WIN32)
- list(APPEND EXTERNAL_LIBRARIES "winspool")
- add_definitions(-DOCC_CONVERT_SIGNALS)
- elseif(MSVC)
- add_definitions(-DWNT)
- endif()
- endif()
-endif()
-
-if(ENABLE_ZIPPER)
- if(ENABLE_BUILD_IOS)
- set_config_option(HAVE_LIBZ "Zlib")
- endif()
- if(NOT HAVE_LIBZ) # necessary for non-GUI builds
- find_package(ZLIB)
- if(ZLIB_FOUND)
- set_config_option(HAVE_LIBZ "Zlib")
- list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
- list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
- endif()
- endif()
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/zipper AND HAVE_LIBZ)
- add_subdirectory(contrib/zipper)
- include_directories(contrib/zipper)
- set_config_option(HAVE_ZIPPER "Zipper")
- endif()
-endif()
-
-if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON)
- find_package(SWIG REQUIRED)
- include(${SWIG_USE_FILE})
- find_package(PythonLibs)
- if(SWIG_FOUND AND PYTHONLIBS_FOUND)
- message(STATUS "Found SWIG version " ${SWIG_VERSION})
- find_package(PythonInterp)
- string(SUBSTRING ${SWIG_VERSION} 0 1 SWIG_MAJOR_VERSION)
- if(SWIG_MAJOR_VERSION EQUAL 1)
- message(WARNING "Python bindings require SWIG >= 2: disabling Python")
- else()
- set_config_option(HAVE_PYTHON "Python")
- mark_as_advanced(CLEAR PYTHON_LIBRARY PYTHON_INCLUDE_DIR)
- if(ENABLE_NUMPY)
- if (NOT NUMPY_INC)
- EXEC_PROGRAM (${PYTHON_EXECUTABLE}
- ARGS "-c \"import numpy; print(numpy.get_include())\""
- OUTPUT_VARIABLE NUMPY_INC
- RETURN_VALUE NUMPY_NOT_FOUND)
- endif()
- if(NUMPY_INC)
- list(APPEND EXTERNAL_INCLUDES ${NUMPY_INC})
- set_config_option(HAVE_NUMPY "Numpy")
- endif()
- endif()
- if(HAVE_PETSC)
- if(ENABLE_PETSC4PY)
- EXECUTE_PROCESS(
- COMMAND ${PYTHON_EXECUTABLE} -c "import petsc4py; print(petsc4py.get_include())"
- OUTPUT_VARIABLE PETSC4PY_INC
- RESULT_VARIABLE PETSC4PY_NOT_FOUND
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(PETSC4PY_INC)
- list(APPEND EXTERNAL_INCLUDES ${PETSC4PY_INC})
- set_config_option(HAVE_PETSC4PY "PETSc4py")
- endif()
- endif()
- endif()
- endif()
- endif()
-endif()
-
-check_function_exists(vsnprintf HAVE_VSNPRINTF)
-if(NOT HAVE_VSNPRINTF AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
- set_config_option(HAVE_NO_VSNPRINTF "NoVsnprintf")
-endif()
-
-check_include_file(sys/socket.h HAVE_SYS_SOCKET_H)
-if(HAVE_SYS_SOCKET_H)
- set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
-endif()
-check_type_size(socklen_t SOCKLEN_T_SIZE)
-set(CMAKE_EXTRA_INCLUDE_FILES)
-if(NOT SOCKLEN_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
- set_config_option(HAVE_NO_SOCKLEN_T "NoSocklenT")
-endif()
-
-check_include_file(stdint.h HAVE_STDINT_H)
-if(HAVE_STDINT_H)
- set(CMAKE_EXTRA_INCLUDE_FILES stdint.h)
-else()
- set_config_option(HAVE_NO_STDINT_H "NoStdintH")
-endif()
-check_type_size(intptr_t INTPTR_T_SIZE)
-set(CMAKE_EXTRA_INCLUDE_FILES)
-if(NOT INTPTR_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
- set_config_option(HAVE_NO_INTPTR_T "NoIntptrT")
-endif()
-
-check_include_file(dlfcn.h DLFCN_H)
-if(DLFCN_H)
- set_config_option(HAVE_DLOPEN "Dlopen")
- list(APPEND EXTERNAL_LIBRARIES ${CMAKE_DL_LIBS})
-endif()
-
-if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- check_include_file(linux/joystick.h LINUX_JOYSTICK_H)
- if(LINUX_JOYSTICK_H)
- set_config_option(HAVE_LINUX_JOYSTICK "LinuxJoystick")
- endif()
-endif()
-
-if(WIN32)
- add_definitions(-D_USE_MATH_DEFINES)
- list(APPEND EXTERNAL_LIBRARIES winmm wsock32 ws2_32 psapi)
-endif()
-
-if(MSVC)
- add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE)
-endif()
-
-# add C functions API
-set(GMSH_SRC ${GMSH_SRC};api/gmshc.cpp)
-
-# force full warnings to encourage everybody to write clean(er) code
-check_cxx_compiler_flag("-Wall" WALL)
-if(WALL AND NOT MSVC)
- file(GLOB_RECURSE WALL_SRC Common/*.cpp Fltk/*.cpp FunctionSpace/*.cpp
- Geo/*.cpp Graphics/*.cpp Mesh/*.cpp Numeric/*.cpp Parser/*.cpp
- Plugin/*.cpp Post/*.cpp Solver/*.cpp)
- set(WF "-Wall")
- check_cxx_compiler_flag("-Wint-to-void-pointer-cast" WCAST)
- if(WCAST)
- set(WF "${WF} -Wno-int-to-void-pointer-cast")
- endif()
- check_cxx_compiler_flag("-Wdeprecated-declarations" WDEPREC)
- if(WDEPREC)
- # FIXME: remove this when we have fixed the deprecated GLU code for OpenGL3
- set(WF "${WF} -Wno-deprecated-declarations")
- endif()
- check_cxx_compiler_flag("-Wmisleading-indentation" WIND)
- if(WIND)
- set(WF "${WF} -Wno-misleading-indentation")
- endif()
- check_cxx_compiler_flag("-Wno-attributes" WATTR)
- if(WATTR)
- # FIXME: remove this when GCC behaves more intelligently
- set(WF "${WF} -Wno-attributes")
- endif()
- set_compile_flags(WALL_SRC ${WF})
-endif()
-
-# don't issue warnings for contributed libraries
-check_cxx_compiler_flag("-w" NOWARN)
-if(NOWARN)
- file(GLOB_RECURSE NOWARN_SRC contrib/*.cpp contrib/*.cc contrib/*.cxx contrib/*.c)
- set_compile_flags(NOWARN_SRC "-w")
-endif()
-
-# disable compile optimization on some known problematic files
-check_cxx_compiler_flag("-O0" NOOPT)
-if(NOOPT OR ENABLE_BUILD_IOS)
- if(ENABLE_BUILD_IOS) # optimized iOS 10 64 bits screws somewhere in Geo
- file(GLOB_RECURSE NOOPT_SRC Numeric/robustPredicates.cpp Geo/G*.cpp Mesh/BDS.cpp
- Parser/Gmsh.tab.cpp contrib/blossom/* Mesh/Background*)
- else()
- file(GLOB_RECURSE NOOPT_SRC Numeric/robustPredicates.cpp Mesh/BDS.cpp
- Parser/Gmsh.tab.cpp contrib/blossom/* contrib/bamg/* Mesh/Background*)
- endif()
- set_compile_flags(NOOPT_SRC "-O0")
-endif()
-
-# do not use arithmetic contraction in predicates.cpp
-# if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
-# set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
-# COMPILE_FLAGS "/fp:strict")
-# elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
-# set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
-# COMPILE_FLAGS "-fno-unsafe-math-optimizations -ffp-contract=off")
-# elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel")
-# set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
-# COMPILE_FLAGS "-fp-model strict")
-# endif()
-
-# enable Revoropt and set compile flags for the corresponding plugin
-if(ENABLE_REVOROPT)
- if(HAVE_EIGEN AND HAVE_MESH AND HAVE_PLUGINS AND HAVE_ANN AND HAVE_ALGLIB)
- list(APPEND EXTERNAL_INCLUDES contrib/Revoropt/include)
- set_config_option(HAVE_REVOROPT "Revoropt")
- add_definitions(-DUSE_ANN)
- else()
- message(WARNING "Revoropt requires Eigen, Mesh, Plugins, ANN and ALGLIB")
- endif()
-endif()
-
-if(HAVE_MESH AND NOT HAVE_EIGEN AND NOT HAVE_LAPACK)
- message(WARNING "Most meshing algorithms will not be functional without "
- "Eigen or Lapack")
-endif()
-
-list(SORT CONFIG_OPTIONS)
-set(GMSH_CONFIG_OPTIONS "")
-foreach(OPT ${CONFIG_OPTIONS})
- set(GMSH_CONFIG_OPTIONS "${GMSH_CONFIG_OPTIONS} ${OPT}")
-endforeach()
-
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshConfig.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshVersion.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h)
-
-# the texi and pypi version files are modified in the source directory (not
-# ideal for version.texi, but since git tracks the contents of the file this is
-# acceptable as it will only change when the actual version is changed - not for
-# each git hash; setup.py is not under version control)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi.in
- ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/utils/pypi/gmsh/setup.py.in
- ${CMAKE_CURRENT_SOURCE_DIR}/utils/pypi/gmsh/setup.py)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/utils/pypi/gmsh-dev/setup.py.in
- ${CMAKE_CURRENT_SOURCE_DIR}/utils/pypi/gmsh-dev/setup.py)
-
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.txt ${GMSH_SHORT_VERSION})
-
-# process cmake environment variables so we can append them to the -I include
-# commands. This is not recommended (we should only use the cache variables) but
-# it is very convenient: otherwise we have to remember providing the
-# -D... options to cmake for each new build.
-set(ENV_CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
-set(ENV_CMAKE_INCLUDE_PATH $ENV{CMAKE_INCLUDE_PATH})
-if(UNIX)
- if(ENV_CMAKE_PREFIX_PATH)
- string(REPLACE ":" ";" ENV_CMAKE_PREFIX_PATH ${ENV_CMAKE_PREFIX_PATH})
- endif()
- if(ENV_CMAKE_INCLUDE_PATH)
- string(REPLACE ":" ";" ENV_CMAKE_INCLUDE_PATH ${ENV_CMAKE_INCLUDE_PATH})
- endif()
-endif()
-list(APPEND EXTERNAL_INCLUDES ${CMAKE_INCLUDE_PATH} ${ENV_CMAKE_INCLUDE_PATH})
-list(APPEND EXTERNAL_INCLUDES ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH})
-foreach(DIR ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH})
- list(APPEND EXTERNAL_INCLUDES ${DIR}/include)
-endforeach()
-
-if(EXTERNAL_INCLUDES)
- list(REMOVE_DUPLICATES EXTERNAL_INCLUDES)
-endif()
-
-if(HAVE_FLTK)
- set(LINK_LIBRARIES ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES}
- ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES})
-elseif(HAVE_OPENGL)
- set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${OPENGL_LIBRARIES}
- ${LAPACK_LIBRARIES})
-else()
- set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
-endif()
-
-# try to use static gfortran on static builds (cannot do this on dynamic builds
-# as e.g. Debian compiles libgfortran.a without -fPIC: sigh...)
-if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENABLE_BUILD_SHARED)
- find_library(GFORTRAN_STATIC libgfortran.a)
- if(GFORTRAN_STATIC)
- set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES)
- message(STATUS "Using static libgfortran")
- foreach(STR ${LINK_LIBRARIES})
- string(REPLACE "-lgfortran" ${GFORTRAN_STATIC} STR2 ${STR})
- list(APPEND LINK_LIBRARIES2 ${STR2})
- endforeach()
- set(LINK_LIBRARIES ${LINK_LIBRARIES2})
- endif()
-endif()
-
-# Linux-specific linker options
-if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- if(HAVE_OCC)
- find_library(RT_LIB rt)
- if(RT_LIB)
- list(APPEND LINK_LIBRARIES ${RT_LIB})
- endif()
- endif()
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Intel")
- add_definitions(-fPIC)
- endif()
-endif()
-
-# we could specify include dirs more selectively, but this is simpler
-include_directories(Common Fltk Geo Graphics Mesh Solver Numeric Parser
- Plugin Post api ${EXTERNAL_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/Common)
-
-# set this for external codes that might include this CMakeList file
-set(GMSH_EXTERNAL_INCLUDE_DIRS ${EXTERNAL_INCLUDES} CACHE
- STRING "External include directories" FORCE)
-set(GMSH_EXTERNAL_LIBRARIES ${LINK_LIBRARIES} CACHE
- STRING "External libraries" FORCE)
-
-# group sources for easier navigation in IDEs
-foreach(DIR ${GMSH_DIRS})
- string(REGEX REPLACE "\\+" "\\\\+" DIR ${DIR})
- source_group(${DIR} REGULAR_EXPRESSION ${DIR}/.*)
-endforeach()
-
-# static library target
-if(ENABLE_BUILD_LIB)
- add_library(lib STATIC ${GMSH_SRC})
- set_target_properties(lib PROPERTIES OUTPUT_NAME gmsh)
- if(MSVC)
- set_target_properties(lib PROPERTIES DEBUG_POSTFIX d)
- if(ENABLE_MSVC_STATIC_RUNTIME)
- set_target_properties(lib PROPERTIES LINK_FLAGS_RELEASE "/nodefaultlib:LIBCMT")
- endif()
- endif()
-endif()
-
-# shared library target
-if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
- add_library(shared SHARED ${GMSH_SRC})
- set_target_properties(shared PROPERTIES OUTPUT_NAME gmsh
- VERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}
- SOVERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION})
- if(WIN32)
- set_target_properties(shared PROPERTIES PREFIX "" IMPORT_PREFIX ""
- IMPORT_SUFFIX ".lib" COMPILE_FLAGS "-DGMSH_DLL -DGMSH_DLL_EXPORT")
- endif()
- target_link_libraries(shared ${LINK_LIBRARIES})
- # don't define LC_RPATH in dylib for development, to not get endless warnings
- # about code signing
- if(APPLE AND NOT GMSH_RELEASE)
- set_target_properties(shared PROPERTIES INSTALL_RPATH "")
- endif()
- if(MSVC AND ENABLE_MSVC_STATIC_RUNTIME)
- message(STATUS "Note: By enabling ENABLE_MSVC_STATIC_RUNTIME, shared library "
- "won't link. In MSVC change /MT to /MD in the shared project properties")
- endif()
-endif()
-
-# binary targets
-if(HAVE_FLTK)
- if(ENABLE_BUILD_DYNAMIC)
- add_executable(gmsh WIN32 Common/Main.cpp)
- target_link_libraries(gmsh shared)
- else()
- add_executable(gmsh WIN32 Common/Main.cpp ${GMSH_SRC})
- endif()
- # we could add this to create a minimal app bundle even without install
- # if(APPLE AND NOT ENABLE_OS_SPECIFIC_INSTALL)
- # set_target_properties(gmsh PROPERTIES MACOSX_BUNDLE ON
- # MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_dev.plist)
- # endif()
-else()
- if(ENABLE_BUILD_DYNAMIC)
- add_executable(gmsh Common/Main.cpp)
- target_link_libraries(gmsh shared)
- else()
- add_executable(gmsh Common/Main.cpp ${GMSH_SRC})
- endif()
-endif()
-target_link_libraries(gmsh ${LINK_LIBRARIES})
-
-# Windows specific linker options
-if(WIN32 AND NOT MSVC)
- set(FLAGS "-Wl,--stack,16777216 -static -municode")
- if(HAVE_FLTK)
- set(FLAGS "${FLAGS} -mwindows")
- else()
- set(FLAGS "${FLAGS} -mconsole")
- endif()
- if(HAVE_64BIT_SIZE_T)
- set(FLAGS "${FLAGS} \"${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win64Icon.res\"")
- else()
- set(FLAGS "${FLAGS} \"${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win32Icon.res\"")
- endif()
- set_target_properties(gmsh PROPERTIES LINK_FLAGS "${FLAGS}")
- if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
- set_target_properties(shared PROPERTIES LINK_FLAGS -static)
- endif()
- # remove -Wl,-Bdynamic flags
- set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS)
- set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS)
-elseif(MSVC)
- set_target_properties(gmsh PROPERTIES LINK_FLAGS "/STACK:16777216 /SAFESEH:NO")
-endif()
-
-# android target
-if(ENABLE_BUILD_ANDROID)
- find_file(CMAKE_TOOLCHAIN_FILE "android.toolchain.cmake")
- if(NOT CMAKE_TOOLCHAIN_FILE)
- message(FATAL_ERROR "Cannot compile Gmsh for android without android-cmake")
- endif()
- add_definitions(-D_GLIBCXX_USE_C99_MATH=1)
- set(CMAKE_BUILD_TYPE Release)
- set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR})
- set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/libs/)
- add_definitions(-DBUILD_ANDROID)
- add_definitions(-DPICOJSON_USE_LOCALE=0)
- add_library(androidGmsh SHARED ${GMSH_SRC})
- set_target_properties(androidGmsh PROPERTIES OUTPUT_NAME gmsh)
- target_link_libraries(androidGmsh ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
- add_custom_command(TARGET androidGmsh POST_BUILD COMMAND
- ${CMAKE_STRIP} ${LIBRARY_OUTPUT_PATH}/libgmsh.so)
-endif()
-
-# parser target
-find_program(BISON bison)
-find_program(FLEX flex)
-if(BISON AND FLEX)
- add_custom_target(parser
- COMMAND ${BISON} -p gmsh_yy --output Gmsh.tab.cpp -d Gmsh.y
- COMMAND ${FLEX} -P gmsh_yy -o Gmsh.yy.cpp Gmsh.l
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Parser)
-endif()
-
-if(UNIX)
- # cannot use cmake's file search functions here (they would only find files
- # existing at configuration time)
- add_custom_target(purge
- COMMAND rm -f `find . -name *~ -o -name *~~`
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- add_custom_target(etags
- COMMAND etags `find . -name *.cpp -o -name *.h -o -name *.y`
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-endif()
-
-if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
- CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
- OUTPUT_VARIABLE CXX_COMPILER_VERSION
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-else()
- set(CXX_COMPILER_VERSION "Unknown")
-endif()
-
-set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt)
-set(SDK_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/SDK.txt)
-set(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt)
-set(CREDITS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CREDITS.txt)
-set(CHANGELOG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.txt)
-file(GLOB TUTORIAL_GEO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/?*.*)
-file(GLOB TUTORIAL_CPP_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/c++/?*.*)
-file(GLOB TUTORIAL_C_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/c/?*.*)
-file(GLOB TUTORIAL_PY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/python/?*.*)
-file(GLOB TUTORIAL_JL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/julia/?*.*)
-file(GLOB DEMOS ${CMAKE_CURRENT_SOURCE_DIR}/demos/*)
-foreach(SUBDIR ${DEMOS})
- if(IS_DIRECTORY ${SUBDIR})
- list(APPEND DEMOS_DIRS ${SUBDIR})
- endif()
-endforeach()
-set(TEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo)
-file(GLOB TEX_SRC ${TEX_DIR}/*.texi)
-set(TEX_OBJ ${TEX_DIR}/gmsh.aux ${TEX_DIR}/gmsh.cp ${TEX_DIR}/gmsh.cps
- ${TEX_DIR}/gmsh.fn ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.ky
- ${TEX_DIR}/gmsh.log ${TEX_DIR}/gmsh.pdf ${TEX_DIR}/gmsh.pg ${TEX_DIR}/gmsh.toc
- ${TEX_DIR}/gmsh.tp ${TEX_DIR}/gmsh.tps ${TEX_DIR}/gmsh.txt ${TEX_DIR}/gmsh.vr)
-
-macro(unix2dos VARNAME)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unix2dos)
- set(UNIX2DOS_FILES)
- foreach(FILE ${${VARNAME}})
- file(READ ${FILE} F0)
- get_filename_component(N ${FILE} NAME)
- if(CYGWIN)
- string(REGEX REPLACE "\n" "\r\n" F1 "${F0}")
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F1}")
- else() # if not in Cygwin, cmake adds '\r's automatically
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F0}")
- endif()
- list(APPEND UNIX2DOS_FILES ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N})
- endforeach()
- set(${VARNAME} ${UNIX2DOS_FILES})
-endmacro()
-
-if(WIN32)
- if(ENABLE_OS_SPECIFIC_INSTALL)
- set(GMSH_BIN .)
- set(GMSH_LIB .)
- set(GMSH_DOC .)
- set(GMSH_MAN .)
- set(GMSH_INC .)
- else()
- include(GNUInstallDirs)
- set(GMSH_BIN ${CMAKE_INSTALL_BINDIR})
- set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR})
- set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR})
- set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1)
- set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR})
- endif()
- if(CYGWIN)
- unix2dos(GMSH_API)
- if(ENABLE_PRIVATE_API)
- unix2dos(GMSH_PRIVATE_API)
- endif()
- unix2dos(WELCOME_FILE)
- unix2dos(SDK_FILE)
- unix2dos(LICENSE_FILE)
- unix2dos(CREDITS_FILE)
- unix2dos(CHANGELOG_FILE)
- unix2dos(TUTORIAL_GEO_FILES)
- unix2dos(TUTORIAL_CPP_FILES)
- unix2dos(TUTORIAL_C_FILES)
- unix2dos(TUTORIAL_PY_FILES)
- unix2dos(TUTORIAL_JL_FILES)
- foreach(DIR ${DEMOS_DIRS})
- file(GLOB DEMO_FILES ${DIR}/?*.*)
- unix2dos(DEMO_FILES)
- endforeach()
- endif()
-elseif(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
- # set these so that the files get installed nicely in the MacOSX
- # .app bundle
- set(GMSH_BIN ../MacOS)
- set(GMSH_LIB ../MacOS)
- set(GMSH_DOC ../../..)
- set(GMSH_MAN ../../..)
- set(GMSH_INC ../MacOS)
-else()
- include(GNUInstallDirs)
- set(GMSH_BIN ${CMAKE_INSTALL_BINDIR})
- set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR})
- set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR})
- set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1)
- set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR})
-endif()
-
-# mark targets as optional so we can install them separately if needed
-# (e.g. "make lib" or "make shared" followed by "make install/fast")
-install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL)
-if(ENABLE_BUILD_LIB)
- install(TARGETS lib DESTINATION ${GMSH_LIB} OPTIONAL)
-endif()
-if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
- install(TARGETS shared DESTINATION ${GMSH_LIB} OPTIONAL)
-endif()
-
-if(ENABLE_ONELAB)
- install(FILES ${ONELAB_PY} DESTINATION ${GMSH_BIN})
-endif()
-if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
- install(FILES ${GMSH_API} DESTINATION ${GMSH_INC})
- install(FILES ${GMSH_PY} DESTINATION ${GMSH_LIB})
- install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB})
- if(ENABLE_PRIVATE_API)
- install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh)
- endif()
-endif()
-if(INSTALL_SDK_README)
- configure_file(${SDK_FILE} ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/README.txt DESTINATION .)
-endif()
-install(FILES ${WELCOME_FILE} DESTINATION ${GMSH_DOC} RENAME README.txt)
-install(FILES ${LICENSE_FILE} DESTINATION ${GMSH_DOC})
-install(FILES ${CREDITS_FILE} DESTINATION ${GMSH_DOC})
-install(FILES ${CHANGELOG_FILE} DESTINATION ${GMSH_DOC})
-install(FILES ${TUTORIAL_GEO_FILES} DESTINATION ${GMSH_DOC}/tutorial)
-install(FILES ${TUTORIAL_CPP_FILES} DESTINATION ${GMSH_DOC}/tutorial/c++)
-install(FILES ${TUTORIAL_C_FILES} DESTINATION ${GMSH_DOC}/tutorial/c)
-install(FILES ${TUTORIAL_PY_FILES} DESTINATION ${GMSH_DOC}/tutorial/python)
-install(FILES ${TUTORIAL_JL_FILES} DESTINATION ${GMSH_DOC}/tutorial/julia)
-foreach(DIR ${DEMOS_DIRS})
- get_filename_component(DEMOS_DIR_NAME ${DIR} NAME)
- file(GLOB DEMO_FILES ${DIR}/?*.*)
- install(FILES ${DEMO_FILES} DESTINATION ${GMSH_DOC}/demos/${DEMOS_DIR_NAME})
-endforeach()
-if(UNIX AND NOT CYGWIN)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/gmsh.1 DESTINATION ${GMSH_MAN})
-endif()
-
-add_custom_target(get_headers
- COMMAND ${CMAKE_COMMAND} -E make_directory Headers/gmsh
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
-foreach(FILE ${GMSH_API})
- add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND}
- -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-endforeach()
-if(ENABLE_PRIVATE_API)
- foreach(FILE ${GMSH_PRIVATE_API})
- add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND}
- -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- endforeach()
-endif()
-
-find_program(MAKEINFO makeinfo)
-if(MAKEINFO)
- add_custom_command(OUTPUT ${TEX_DIR}/gmsh.info DEPENDS ${TEX_SRC}
- COMMAND ${MAKEINFO} --split-size 1000000
- ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
- add_custom_target(info DEPENDS ${TEX_DIR}/gmsh.info)
- add_custom_command(OUTPUT ${TEX_DIR}/gmsh.txt DEPENDS ${TEX_SRC}
- COMMAND ${MAKEINFO} --plaintext -o gmsh.txt
- ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
- add_custom_target(txt DEPENDS ${TEX_DIR}/gmsh.txt)
- add_custom_command(OUTPUT ${TEX_DIR}/gmsh.html DEPENDS ${TEX_SRC}
- COMMAND ${MAKEINFO} --html --css-ref=/gmsh.css
- --no-split --set-customization-variable
- EXTRA_HEAD=''
- ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
- add_custom_target(html DEPENDS ${TEX_DIR}/gmsh.html)
- install(FILES ${TEX_DIR}/gmsh.html DESTINATION ${GMSH_DOC} OPTIONAL)
-else()
- add_custom_target(html COMMAND ${CMAKE_COMMAND} -E touch ${TEX_DIR}/gmsh.html)
-endif()
-
-find_program(TEXI2PDF texi2pdf)
-if(TEXI2PDF)
- add_custom_command(OUTPUT ${TEX_DIR}/gmsh.pdf DEPENDS ${TEX_SRC}
- COMMAND ${TEXI2PDF} ARGS gmsh.texi
- WORKING_DIRECTORY ${TEX_DIR})
- add_custom_target(pdf DEPENDS ${TEX_DIR}/gmsh.pdf)
- install(FILES ${TEX_DIR}/gmsh.pdf DESTINATION ${GMSH_DOC} OPTIONAL)
-endif()
-
-execute_process(COMMAND ${CMAKE_COMMAND} -E echo
- "@c This file was generated by cmake: do not edit manually!\n${OPT_TEXI}"
- OUTPUT_FILE cmake_options.texi)
-
-if(MAKEINFO AND TEXI2PDF)
- add_custom_target(doc COMMAND ${CMAKE_COMMAND} -E tar zcf
- ${CMAKE_CURRENT_BINARY_DIR}/gmsh-${GMSH_VERSION}-doc.tgz
- CREDITS.txt LICENSE.txt CHANGELOG.txt
- doc/gmsh.1 doc/texinfo/gmsh.html doc/texinfo/gmsh.info
- doc/texinfo/gmsh.pdf doc/texinfo/gmsh.txt
- COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ}
- DEPENDS ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.txt
- ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.pdf
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-endif()
-
-if(MAKEINFO OR TEXI2PDF)
- add_custom_target(clean_doc COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ})
-endif()
-
-if(APPLE AND ENABLE_BUILD_LIB)
- file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_framework.plist F0)
- string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}")
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info_framework.plist "${F1}")
- set(LIBNAME $)
- add_custom_target(framework DEPENDS lib
- COMMAND ${CMAKE_COMMAND} -E remove_directory gmsh.framework
- COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Headers
- COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Resources
- COMMAND ${CMAKE_COMMAND} -E copy ${LIBNAME} gmsh.framework/gmsh
- COMMAND ${CMAKE_COMMAND} -E copy Info_framework.plist
- gmsh.framework/Resources/Info.plist
- COMMAND ${CMAKE_COMMAND} -E create_symlink . gmsh.framework/Headers/gmsh
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
- foreach(FILE ${GMSH_API})
- add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
- ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- endforeach()
- if(ENABLE_PRIVATE_API)
- foreach(FILE ${GMSH_PRIVATE_API})
- add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
- ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- endforeach()
- endif()
-endif()
-
-set(CPACK_PACKAGE_VENDOR "Christophe Geuzaine and Jean-Francois Remacle")
-set(CPACK_PACKAGE_VERSION_MAJOR ${GMSH_MAJOR_VERSION})
-set(CPACK_PACKAGE_VERSION_MINOR ${GMSH_MINOR_VERSION})
-set(CPACK_PACKAGE_VERSION_PATCH ${GMSH_PATCH_VERSION})
-set(CPACK_PACKAGE_DESCRIPTION_FILE ${WELCOME_FILE})
-set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
- "3D finite element mesh generator with built-in CAD engine and post-processor")
-if(GMSH_EXTRA_VERSION MATCHES "-git.*") # so that we'll overwrite the archives
- set(CPACK_PACKAGE_FILE_NAME gmsh${GMSH_EXTRA_VERSION_ORIG}-git-${GMSH_OS})
- set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh${GMSH_EXTRA_VERSION_ORIG}-git-source)
-else()
- set(CPACK_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-${GMSH_OS})
- set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-source)
-endif()
-set(CPACK_PACKAGE_INSTALL_DIRECTORY "gmsh")
-set(CPACK_RESOURCE_FILE_LICENSE ${LICENSE_FILE})
-set(CPACK_RESOURCE_FILE_README ${WELCOME_FILE})
-set(CPACK_RESOURCE_FILE_WELCOME ${WELCOME_FILE})
-set(CPACK_PACKAGE_EXECUTABLE "gmsh")
-if(ENABLE_PACKAGE_STRIP)
- set(CPACK_STRIP_FILES TRUE)
-else()
- set(CPACK_STRIP_FILES FALSE)
-endif()
-set(CPACK_SOURCE_GENERATOR TGZ)
-set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_BINARY_DIR}" "/CVS/" "/.svn" "/.git"
- "~$" "DS_Store$" "GmshConfig.h$" "GmshVersion.h$" "/benchmarks/" "/tmp/"
- "/bin/" "/lib/" "/nightly/" "GPATH" "GRTAGS" "GSYMS" "GTAGS" "/HTML/"
- "/contrib/3M/" "/contrib/Parasolid/")
-
-if(UNIX)
- # make sure we remove previous installs before doing the next one (on Mac for
- # example "make package; make package_source" would lead to huge file lists
- # getting generated due to the 'Applications' symlink in the bundle)
- set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages")
-endif()
-
-if(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
- set(CPACK_GENERATOR Bundle)
- set(CPACK_BUNDLE_NAME Gmsh)
- file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_app.plist F0)
- string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}")
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info.plist "${F1}")
- set(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
- set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
- if(PACKAGER STREQUAL "geuzaine - removed: we sign on a separate machine")
- # codesigning requires CMake >= 3.2
- set(CPACK_BUNDLE_APPLE_CERT_APP "Developer ID Application: Christophe Geuzaine")
- endif()
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsGeo.icns DESTINATION .
- RENAME GmshGeo.icns)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsMsh.icns DESTINATION .
- RENAME GmshMsh.icns)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsSol.icns DESTINATION .
- RENAME GmshSol.icns)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsPos.icns DESTINATION .
- RENAME GmshPos.icns)
- set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
-elseif(WIN32)
- set(CPACK_GENERATOR ZIP)
-else()
- set(CPACK_GENERATOR TGZ)
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/gmshpy AND
- ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON AND HAVE_PYTHON)
- add_subdirectory(utils/wrappers/gmshpy)
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/java AND
- ENABLE_PRIVATE_API AND ENABLE_WRAP_JAVA)
- add_subdirectory(utils/wrappers/java)
-endif()
-
-include(CPack)
-
-macro(filter_tests IN OUT)
- unset(${OUT})
- foreach(FILE ${IN})
- unset(BAD1)
- unset(BAD2)
- unset(BAD3)
- # OS-specific
- if(${GMSH_OS} MATCHES "Linux32")
- # OCC STL generation crashes on our Linux32 docker
- string(REGEX MATCH "t18" BAD1 ${FILE})
- endif()
- # OpenCASCADE
- if(NOT HAVE_OCC AND NOT BAD1 AND NOT BAD2 AND NOT BAD3)
- file(STRINGS ${FILE} BAD1 REGEX "^SetFactory.*OpenCASCADE.*")
- file(STRINGS ${FILE} BAD2 REGEX ".*occ\\.synchronize.*")
- file(STRINGS ${FILE} BAD3 REGEX ".*occ::synchronize.*")
- endif()
- # Metis
- if(NOT HAVE_METIS AND NOT BAD1 AND NOT BAD2 AND NOT BAD3)
- file(STRINGS ${FILE} BAD1 REGEX ".*PartitionMesh.*")
- file(STRINGS ${FILE} BAD2 REGEX ".*mesh\\.partition.*")
- file(STRINGS ${FILE} BAD3 REGEX ".*mesh::partition.*")
- endif()
- if(BAD1 OR BAD2 OR BAD3)
- message("Skipping test " ${FILE})
- else()
- list(APPEND ${OUT} ${FILE})
- endif()
- endforeach()
-endmacro()
-
-if(NOT DISABLE_GMSH_TESTS)
- # disabling tests is useful when including this CMakeLists in an external project
- include(CTest)
- file(GLOB_RECURSE ALLFILES
- tutorial/*.geo demos/*.geo benchmarks/?d/*.geo benchmarks/extrude/*.geo
- benchmarks/occ/*.geo)
- filter_tests("${ALLFILES}" TESTFILES)
- foreach(TESTFILE ${TESTFILES})
- # use relative path for Cygwin/MinGW (the pure win exe built with the MinGW
- # compilers does not understand a full Cygwin-style path)
- FILE(RELATIVE_PATH TEST ${CMAKE_CURRENT_BINARY_DIR} ${TESTFILE})
- add_test(${TEST} ./gmsh ${TEST} -3 -nopopup -o ./tmp.msh)
- endforeach()
- # test c++ api tutorials with dynamic builds (except on 32 bit windows for
- # now: our win32 setup does not currently handle exceptions)
- if(ENABLE_BUILD_DYNAMIC AND NOT ${GMSH_OS} MATCHES "Windows32")
- file(GLOB_RECURSE ALLFILES tutorial/c++/*.cpp)
- filter_tests("${ALLFILES}" TESTFILES)
- foreach(TESTFILE ${TESTFILES})
- get_filename_component(TEST ${TESTFILE} NAME_WE)
- add_executable(${TEST} WIN32 ${TESTFILE})
- target_link_libraries(${TEST} shared)
- if(WIN32 AND NOT MSVC)
- set(FLAGS "-static")
- if(HAVE_FLTK)
- set(FLAGS "${FLAGS} -mwindows")
- else()
- set(FLAGS "${FLAGS} -mconsole")
- endif()
- set_target_properties(${TEST} PROPERTIES LINK_FLAGS "${FLAGS}")
- endif()
- add_test(${TEST}_cpp ${TEST} -nopopup)
- endforeach()
- endif()
- # enable this once we have worked out the path issues on the build machines
- if(0 AND ENABLE_BUILD_DYNAMIC)
- find_package(PythonInterp)
- if(PYTHONINTERP_FOUND)
- file(GLOB_RECURSE ALLFILES tutorial/python/*.py demos/api/*.py)
- filter_tests("${ALLFILES}" TESTFILES)
- foreach(TESTFILE ${TESTFILES})
- get_filename_component(TEST ${TESTFILE} NAME_WE)
- add_test(NAME ${TEST}_py COMMAND ${PYTHON_EXECUTABLE} ${TESTFILE} -nopopup)
- set_property(TEST ${TEST}_py APPEND PROPERTY ENVIRONMENT
- "PYTHONPATH=${CMAKE_SOURCE_DIR}/api")
- set_property(TEST ${TEST}_py APPEND PROPERTY ENVIRONMENT
- "LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}")
- endforeach()
- endif()
- endif()
-endif()
-
-message(STATUS "")
-message(STATUS "Gmsh ${GMSH_VERSION} has been configured for ${GMSH_OS}")
-message(STATUS "")
-message(STATUS " * Build options:" ${GMSH_CONFIG_OPTIONS})
-message(STATUS " * Build type: " ${CMAKE_BUILD_TYPE})
-message(STATUS " * C compiler: " ${CMAKE_C_COMPILER})
-message(STATUS " * C++ compiler: " ${CMAKE_CXX_COMPILER})
-message(STATUS " * Install prefix: " ${CMAKE_INSTALL_PREFIX})
-message(STATUS "")
-
-mark_as_advanced(ANN_INC ANN_LIB CAIRO_LIB CAIRO_INC CGNS_INC GMM_INC
- GMP_INC GMP_LIB MMG_INC MMG_LIB HDF5_LIB
- MED_LIB OCC_INC SZ_LIB
- PETSC_LIBS SLEPC_INC SLEPC_INC2 SLEPC_LIB
- BISON FLEX MAKEINFO TEXI2PDF FLTK_CONFIG_SCRIPT
- GMSH_EXTERNAL_INCLUDE_DIRS GMSH_EXTERNAL_LIBRARIES)
Index: ../trunk-jpl/externalpackages/gmt/install-win64-precompiled.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmt/install-win64-precompiled.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmt/install-win64-precompiled.sh (nonexistent)
@@ -1,24 +0,0 @@
-#!/bin/bash
-set -eu
-
-# Set gmt version
-VER="5.4.4"
-
-# Set tarball name
-TARBALL_NAME="gmt-${VER}-win64-precompiled"
-TARBALL=${TARBALL_NAME}.tar.gz
-
-# Clean up from previous installation
-rm -rf install
-
-# Download Windows 64-bit precompiled gmsh from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/${TARBALL}" "${TARBALL}"
-
-# Untar gmt
-tar -xvzf $TARBALL
-
-# Rename untarred dir
-mv $TARBALL_NAME install
-
-# Clean up
-rm -f $TARBALL
Index: ../trunk-jpl/externalpackages/gmt/install-mac-precompiled.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmt/install-mac-precompiled.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmt/install-mac-precompiled.sh (nonexistent)
@@ -1,24 +0,0 @@
-#!/bin/bash
-set -eu
-
-# Set gmt version
-VER="5.4.4"
-
-# Set tarball name
-TARBALL_NAME="gmt-${VER}-mac-precompiled"
-TARBALL=${TARBALL_NAME}.tar.gz
-
-# Clean up from previous installation
-rm -rf install
-
-# Download Mac precompiled gmsh from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/${TARBALL}" "${TARBALL}"
-
-# Untar gmt
-tar -xvzf $TARBALL
-
-# Rename untarred dir
-mv $TARBALL_NAME install
-
-# Clean up
-rm -f $TARBALL
Property changes on: ../trunk-jpl/externalpackages/gmt/install-mac-precompiled.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gmt/configs/6/cmake/ConfigUser.cmake
===================================================================
--- ../trunk-jpl/externalpackages/gmt/configs/6/cmake/ConfigUser.cmake (revision 25859)
+++ ../trunk-jpl/externalpackages/gmt/configs/6/cmake/ConfigUser.cmake (revision 25860)
@@ -38,7 +38,7 @@
# ============================================================================
# Installation path (usually defaults to /usr/local) [auto]:
-set (CMAKE_INSTALL_PREFIX "$ENV{ISSM_DIR}/externalpackages/gmt/install")
+set (CMAKE_INSTALL_PREFIX "$ENV{PREFIX}")
# Set install name suffix used for directories and gmt executables
# [undefined]:
@@ -108,7 +108,7 @@
#set (GMT_DATA_SERVER "data_server_url")
# Set path to GSHHG Shoreline Database [auto]:
-set (GSHHG_ROOT "$ENV{ISSM_DIR}/externalpackages/gshhg/install")
+set (GSHHG_ROOT "$ENV{GSHHG_ROOT}")
# Copy GSHHG files to ${GMT_DATADIR}/coast [FALSE]:
#set (COPY_GSHHG TRUE)
@@ -135,11 +135,11 @@
# Set location of NetCDF (can be root directory, path to header file or path
# to nc-config) [auto]:
-set (NETCDF_ROOT "$ENV{ISSM_DIR}/externalpackages/netcdf/install")
+set (NETCDF_ROOT "$ENV{NETCDF_ROOT}")
# Set location of GDAL (can be root directory, path to header file or path to
# gdal-config) [auto]:
-set (GDAL_ROOT "$ENV{ISSM_DIR}/externalpackages/gdal/install")
+set (GDAL_ROOT "$ENV{GDAL_ROOT}")
# Set location of PCRE (can be root directory, path to header file or path to
# pcre-config) [auto]:
@@ -153,7 +153,7 @@
#set (FFTW3_ROOT "fftw_install_prefix")
# Set location of ZLIB (can be root directory or path to header file) [auto]:
-set (ZLIB_ROOT "$ENV{ISSM_DIR}/externalpackages/petsc/install")
+set (ZLIB_ROOT "$ENV{ZLIB_ROOT}")
# Set location of CURL (can be root directory or path to header file) [auto]:
#set (CURL_ROOT "curl_install_prefix")
@@ -166,8 +166,8 @@
#set (GLIB_LIBRARIES c:/path/to/glib-dev/lib/glib-2.0.lib)
# Set LAPACK location. Use this when want to link with LAPACK and it's not found automatically
-set (LAPACK_LIBRARY "-L$ENV{ISSM_DIR}/externalpackages/petsc/install/lib -lflapack")
-set (BLAS_LIBRARY "-L$ENV{ISSM_DIR}/externalpackages/petsc/install/lib -lfblas")
+set (LAPACK_LIBRARY "-L$ENV{LAPACK_ROOT} -lflapack")
+set (BLAS_LIBRARY "-L$ENV{BLAS_ROOT} -lfblas")
##
## Section 3: GMT features
Index: ../trunk-jpl/externalpackages/gshhg/install.sh
===================================================================
--- ../trunk-jpl/externalpackages/gshhg/install.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gshhg/install.sh (revision 25860)
@@ -6,8 +6,11 @@
#
VER="2.3.4"
+PREFIX="${ISSM_DIR}/externalpackages/gshhg/install" # Set to location where external package should be installed
+
# Cleanup
-rm -rf install
+rm -rf ${PREFIX}
+mkdir -p ${PREFIX}
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gshhg-gmt-${VER}.tar.gz" "gshhg-gmt-${VER}.tar.gz"
@@ -16,4 +19,4 @@
tar -zxvf gshhg-gmt-${VER}.tar.gz
# Install
-mv gshhg-gmt-${VER} install
+mv gshhg-gmt-${VER}/* ${PREFIX}
Index: ../trunk-jpl/externalpackages/gsl/install-javascript.sh
===================================================================
--- ../trunk-jpl/externalpackages/gsl/install-javascript.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gsl/install-javascript.sh (revision 25860)
@@ -2,12 +2,19 @@
set -eu
-# TODO:
+## TODO:
# - Revisit enviroment variables (especially EMCC_CFLAGS) once support for
# Fortran has been accomplished.
#
-# Environment
+## Constants
+#
+VER="1.15"
+
+PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+
+## Environment
+#
export CC=emcc
export CXX=em++
export AR=emar
@@ -16,36 +23,36 @@
export EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" # Required after v1.38.14 to avoid undefined symbol warnings from our Fortran object files being treated as errors
# Source Emscripten environment
-source $ISSM_DIR/externalpackages/emscripten/install/emsdk_env.sh
+source ${EMSCRIPTEN_ROOT}/emsdk_env.sh
# Issue with variadic function signatures.
#export CFLAGS=-DSTDC_HEADERS
-# Cleanup from previous installation
-rm -rf src-javascript install-javascript gsl-1.15
-mkdir src-javascript install-javascript
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Download source
-$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gsl-${VER}.tar.gz" "gsl-${VER}.tar.gz"
-#Untar
-tar -zxvf gsl-1.15.tar.gz
+# Unpack source
+tar -zxvf gsl-${VER}.tar.gz
-#Move gsl into src directory
-mv gsl-1.15/* src-javascript
-rm -rf gsl-1.15
+# Move source to 'src' directory
+mv gsl-${VER}/* src
+rm -rf gsl-${VER}
-#Configure gsl
-cd src-javascript
-
+# Configure
+cd src
./configure \
- --prefix="$ISSM_DIR/externalpackages/gsl/install-javascript" \
- --disable-shared
+ --prefix="${PREFIX}" \
+ --disable-shared \
#Compile gsl
if [ $# -eq 0 ]; then
make
+ make install
else
make -j $1
+ make -j $1 install
fi
-make install
Index: ../trunk-jpl/externalpackages/gsl/install-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gsl/install-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gsl/install-static.sh (revision 25860)
@@ -2,15 +2,16 @@
set -eu
-# Constants
+## Constants
#
-GSL_ROOT=${ISSM_DIR}/externalpackages/gsl
VER="1.15"
-# Cleanup=
-rm -rf install src
-mkdir install src
+PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
# Download source
${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gsl-${VER}.tar.gz" "gsl-${VER}.tar.gz"
@@ -24,7 +25,7 @@
# Configure
cd src
./configure \
- --prefix="${GSL_ROOT}/install" \
+ --prefix="${PREFIX}" \
--disable-shared \
--with-pic
Index: ../trunk-jpl/externalpackages/gsl/install.sh
===================================================================
--- ../trunk-jpl/externalpackages/gsl/install.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gsl/install.sh (revision 25860)
@@ -4,13 +4,14 @@
# Constants
#
-GSL_ROOT=${ISSM_DIR}/externalpackages/gsl
VER="1.15"
-# Cleanup=
-rm -rf install src
-mkdir install src
+PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
# Download source
${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gsl-${VER}.tar.gz" "gsl-${VER}.tar.gz"
@@ -24,7 +25,7 @@
# Configure
cd src
./configure \
- --prefix="${GSL_ROOT}/install" \
+ --prefix="${PREFIX}" \
--disable-static
# Compile and install
Index: ../trunk-jpl/externalpackages/m1qn3/install.sh
===================================================================
--- ../trunk-jpl/externalpackages/m1qn3/install.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/m1qn3/install.sh (revision 25860)
@@ -1,17 +1,27 @@
#!/bin/bash
set -eu
-#Some cleanup
-rm -rf install src m1qn3-3.3-distrib
-mkdir install
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/m1qn3-3.3-distrib.tgz' 'm1qn3-3.3-distrib.tgz'
+## Constants
+#
+VER=3.3
-#Untar
-tar -xzf m1qn3-3.3-distrib.tgz
-mv m1qn3-3.3-distrib src
+PREFIX="${ISSM_DIR}/externalpackages/m1qn3/install" # Set to location where external package should be installed
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/m1qn3-${VER}-distrib.tgz" "m1qn3-${VER}-distrib.tgz"
+
+# Unpack source
+tar -xzf m1qn3-${VER}-distrib.tgz
+
+# Move source to 'src' directory
+mv m1qn3-${VER}-distrib/* src
+rm -rf m1qn3-${VER}-distrib
+
if which ifort >/dev/null; then
FC="ifort"
else
@@ -21,7 +31,7 @@
fi
fi
-#Compile m1qn3
+# Compile and install
cd src/src/
(
cat << EOF
@@ -28,7 +38,7 @@
LIB_EXT=a
FC=$FC
install: libm1qn3.\$(LIB_EXT)
- cp libm1qn3.\$(LIB_EXT) ../../install/
+ cp libm1qn3.\$(LIB_EXT) ${PREFIX}
OBJECTS= m1qn3.o
libm1qn3.\$(LIB_EXT): \$(OBJECTS)
ar -r libm1qn3.\$(LIB_EXT) \$(OBJECTS)
@@ -41,7 +51,6 @@
) > Makefile
make
-#compile ddot
cd ../blas
(
cat << EOF
@@ -48,7 +57,7 @@
LIB_EXT=a
FC=$FC
install: libddot.\$(LIB_EXT)
- cp libddot.\$(LIB_EXT) ../../install/
+ cp libddot.\$(LIB_EXT) ${PREFIX}
OBJECTS= ddot.o
libddot.\$(LIB_EXT): \$(OBJECTS)
ar -r libddot.\$(LIB_EXT) \$(OBJECTS)
Index: ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel-static-with_tests.sh
===================================================================
--- ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel-static-with_tests.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel-static-with_tests.sh (revision 25860)
@@ -8,8 +8,6 @@
# - zlib (1.2.5 or later, for netCDF-4 compression)
# - curl (7.18.0 or later, for DAP remote access client support)
#
-# For most ISSM installations, only hdf5 will be necessary
-#
# Sources:
# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
#
@@ -26,8 +24,7 @@
#
VER="4.7.2"
-HDF5_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-ZLIB_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
# Environment
#
@@ -41,20 +38,20 @@
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
# Unpack source
-tar -zxvf netcdf-c-$VER.tar.gz
+tar -zxvf netcdf-c-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv netcdf-c-$VER/* src/
-rm -rf netcdf-c-$VER
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/netcdf/install" \
+ --prefix="${PREFIX}" \
--disable-shared \
--disable-dependency-tracking \
--enable-fast-install \
Index: ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel-static.sh (revision 25860)
@@ -8,8 +8,6 @@
# - zlib (1.2.5 or later, for netCDF-4 compression)
# - curl (7.18.0 or later, for DAP remote access client support)
#
-# For most ISSM installations, only hdf5 will be necessary
-#
# Sources:
# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
#
@@ -26,8 +24,7 @@
#
VER="4.7.2"
-HDF5_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-ZLIB_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
# Environment
#
@@ -41,20 +38,20 @@
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
# Unpack source
-tar -zxvf netcdf-c-$VER.tar.gz
+tar -zxvf netcdf-c-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv netcdf-c-$VER/* src/
-rm -rf netcdf-c-$VER
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/netcdf/install" \
+ --prefix="${PREFIX}" \
--disable-shared \
--disable-dependency-tracking \
--enable-fast-install \
Index: ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel-with_tests.sh
===================================================================
--- ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel-with_tests.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel-with_tests.sh (revision 25860)
@@ -8,8 +8,6 @@
# - zlib (1.2.5 or later, for netCDF-4 compression)
# - curl (7.18.0 or later, for DAP remote access client support)
#
-# For most ISSM installations, only hdf5 will be necessary
-#
# Sources:
# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
#
@@ -18,9 +16,7 @@
#
VER="4.7.2"
-CURL_ROOT="${ISSM_DIR}/externalpackages/curl/install"
-HDF5_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-ZLIB_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
# Environment
#
@@ -32,20 +28,20 @@
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
# Unpack source
-tar -zxvf netcdf-c-$VER.tar.gz
+tar -zxvf netcdf-c-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv netcdf-c-$VER/* src/
-rm -rf netcdf-c-$VER
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/netcdf/install" \
+ --prefix="${PREFIX}" \
--disable-static \
--disable-dependency-tracking \
--enable-fast-install \
Index: ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel.sh
===================================================================
--- ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/netcdf/install-4.7-parallel.sh (revision 25860)
@@ -8,8 +8,6 @@
# - zlib (1.2.5 or later, for netCDF-4 compression)
# - curl (7.18.0 or later, for DAP remote access client support)
#
-# For most ISSM installations, only hdf5 will be necessary
-#
# Sources:
# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
#
@@ -18,9 +16,7 @@
#
VER="4.7.2"
-CURL_ROOT="${ISSM_DIR}/externalpackages/curl/install"
-HDF5_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-ZLIB_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
# Environment
#
@@ -32,20 +28,20 @@
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
# Unpack source
-tar -zxvf netcdf-c-$VER.tar.gz
+tar -zxvf netcdf-c-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv netcdf-c-$VER/* src/
-rm -rf netcdf-c-$VER
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/netcdf/install" \
+ --prefix="${PREFIX}" \
--disable-static \
--disable-dependency-tracking \
--enable-fast-install \
Index: ../trunk-jpl/externalpackages/netcdf/install-4.7-with_tests.sh
===================================================================
--- ../trunk-jpl/externalpackages/netcdf/install-4.7-with_tests.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/netcdf/install-4.7-with_tests.sh (revision 25860)
@@ -8,8 +8,6 @@
# - zlib (1.2.5 or later, for netCDF-4 compression)
# - curl (7.18.0 or later, for DAP remote access client support)
#
-# For most ISSM installations, only hdf5 will be necessary
-#
# Sources:
# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
#
@@ -18,9 +16,7 @@
#
VER="4.7.2"
-CURL_ROOT="${ISSM_DIR}/externalpackages/curl/install"
-HDF5_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-ZLIB_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
# Environment
#
@@ -31,20 +27,20 @@
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
# Unpack source
-tar -zxvf netcdf-c-$VER.tar.gz
+tar -zxvf netcdf-c-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv netcdf-c-$VER/* src/
-rm -rf netcdf-c-$VER
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/netcdf/install" \
+ --prefix="${PREFIX}" \
--disable-static \
--disable-dependency-tracking \
--enable-fast-install \
Index: ../trunk-jpl/externalpackages/netcdf/install-4.7.sh
===================================================================
--- ../trunk-jpl/externalpackages/netcdf/install-4.7.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/netcdf/install-4.7.sh (revision 25860)
@@ -8,8 +8,6 @@
# - zlib (1.2.5 or later, for netCDF-4 compression)
# - curl (7.18.0 or later, for DAP remote access client support)
#
-# For most ISSM installations, only hdf5 will be necessary
-#
# Sources:
# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
#
@@ -17,10 +15,9 @@
# Constants
#
VER="4.7.2"
-CURL_ROOT="${ISSM_DIR}/externalpackages/curl/install"
-HDF5_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-ZLIB_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
+
# Environment
#
export CPPFLAGS="-I${CURL_ROOT}/include -I${HDF5_ROOT}/include -I${ZLIB_ROOT}/include"
@@ -33,17 +30,17 @@
tar -zxvf netcdf-c-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv netcdf-c-${VER}/* src/
+mv netcdf-c-${VER}/* src
rm -rf netcdf-c-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/netcdf/install" \
+ --prefix="${PREFIX}" \
--disable-static \
--disable-dependency-tracking \
--enable-fast-install \
Index: ../trunk-jpl/externalpackages/petsc/install-3.12-linux-solid_earth-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/petsc/install-3.12-linux-solid_earth-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/petsc/install-3.12-linux-solid_earth-static.sh (nonexistent)
@@ -1,60 +0,0 @@
-#!/bin/bash
-set -eu
-
-
-# NOTE: There is a single difference between the Linux and macOS
-# configurations, which is the addition of the -static-libgfortran
-# option to FFLAGS on the macOS static configurations. For the sake of
-# consistency, we maintain separate files for each, respective Linux and
-# macOS configuration.
-
-## Constants
-#
-VER="3.12.3"
-
-# Download source
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
-
-# Unpack source
-tar -zxvf petsc-${VER}.tar.gz
-
-# Cleanup
-rm -rf install src
-mkdir install src
-
-# Move source to 'src' directory
-mv petsc-${VER}/* src/
-rm -rf petsc-${VER}
-
-# Configure
-#
-# NOTE: Cannot use --with-fpic option when compiling static libs,
-#
-# Cannot determine compiler PIC flags if shared libraries is turned off
-# Either run using --with-shared-libraries or --with-pic=0 and supply the
-# compiler PIC flag via CFLAGS, CXXXFLAGS, and FCFLAGS
-#
-cd src
-./config/configure.py \
- --prefix="${ISSM_DIR}/externalpackages/petsc/install" \
- --PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
- --with-shared-libraries=0 \
- --CFLAGS="-fPIC" \
- --CXXFLAGS="-fPIC" \
- --FFLAGS="-fPIC" \
- --with-debugging=0 \
- --with-valgrind=0 \
- --with-x=0 \
- --with-ssl=0 \
- --download-fblaslapack=1 \
- --download-mpich=1 \
- --download-metis=1 \
- --download-parmetis=1 \
- --download-scalapack=1 \
- --download-mumps=1 \
- --download-zlib=1 \
- --download-hdf5=1
-
-# Compile and install
-make
-make install
Property changes on: ../trunk-jpl/externalpackages/petsc/install-3.12-linux-solid_earth-static.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/proj/install.sh
===================================================================
--- ../trunk-jpl/externalpackages/proj/install.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/proj/install.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install
-
-#Download trunk
-svn checkout http://svn.osgeo.org/metacrs/proj/trunk/proj install
-
-#compile
-cd install
-./configure --prefix="$ISSM_DIR/externalpackages/proj/install"
-make
-make install
-cd ..
Property changes on: ../trunk-jpl/externalpackages/proj/install.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/semic/surface_physics.f90.patch
===================================================================
--- ../trunk-jpl/externalpackages/semic/surface_physics.f90.patch (revision 25859)
+++ ../trunk-jpl/externalpackages/semic/surface_physics.f90.patch (nonexistent)
@@ -1,15 +0,0 @@
---- surface_physics.f90 2018-12-10 08:27:55.000000000 +0100
-+++ my_surface_physics.f90 2018-12-10 08:58:14.000000000 +0100
-@@ -775,9 +775,9 @@
- n_ksub = par%n_ksub
-
- ! Read parameters from input namelist file
-- open(7,file=trim(filename))
-- read(7,nml=surface_physics)
-- close(7)
-+ !open(7,file=trim(filename))
-+ !read(7,nml=surface_physics)
-+ !close(7)
- ! write(*,nml=surface_physics)
-
- ! Store local parameter values in output object
Index: ../trunk-jpl/externalpackages/semic/configs/surface_physics.f90.patch
===================================================================
--- ../trunk-jpl/externalpackages/semic/configs/surface_physics.f90.patch (nonexistent)
+++ ../trunk-jpl/externalpackages/semic/configs/surface_physics.f90.patch (revision 25860)
@@ -0,0 +1,15 @@
+--- surface_physics.f90 2018-12-10 08:27:55.000000000 +0100
++++ my_surface_physics.f90 2018-12-10 08:58:14.000000000 +0100
+@@ -775,9 +775,9 @@
+ n_ksub = par%n_ksub
+
+ ! Read parameters from input namelist file
+- open(7,file=trim(filename))
+- read(7,nml=surface_physics)
+- close(7)
++ !open(7,file=trim(filename))
++ !read(7,nml=surface_physics)
++ !close(7)
+ ! write(*,nml=surface_physics)
+
+ ! Store local parameter values in output object
Index: ../trunk-jpl/externalpackages/triangle/install-linux-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/triangle/install-linux-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/triangle/install-linux-static.sh (revision 25860)
@@ -4,11 +4,11 @@
# Constants
#
-INSTALL_DIR="install"
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
# Cleanup
-rm -rf ${INSTALL_DIR} src
-mkdir ${INSTALL_DIR} ${INSTALL_DIR}/include ${INSTALL_DIR}/lib src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
@@ -19,7 +19,7 @@
# Copy customized source files to 'src' directory
cp configs/makefile src
cp configs/triangle.h src
-cp configs/linux/configure.make src
+cp configs/mac/configure.make src
# Compile
cd src
@@ -27,8 +27,8 @@
# Install
cd ..
-cp src/libtriangle.* ${INSTALL_DIR}/lib
-cp src/triangle.h ${INSTALL_DIR}/include
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
# Cleanup
rm -rf src
Index: ../trunk-jpl/externalpackages/triangle/install-linux.sh
===================================================================
--- ../trunk-jpl/externalpackages/triangle/install-linux.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/triangle/install-linux.sh (revision 25860)
@@ -4,11 +4,11 @@
# Constants
#
-INSTALL_DIR="install"
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
# Cleanup
-rm -rf ${INSTALL_DIR} src
-mkdir ${INSTALL_DIR} ${INSTALL_DIR}/include ${INSTALL_DIR}/lib src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
@@ -19,7 +19,7 @@
# Copy customized source files to 'src' directory
cp configs/makefile src
cp configs/triangle.h src
-cp configs/linux/configure.make src
+cp configs/mac/configure.make src
# Compile
cd src
@@ -27,8 +27,8 @@
# Install
cd ..
-cp src/libtriangle.* ${INSTALL_DIR}/lib
-cp src/triangle.h ${INSTALL_DIR}/include
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
# Cleanup
rm -rf src
Index: ../trunk-jpl/externalpackages/triangle/install-mac-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/triangle/install-mac-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/triangle/install-mac-static.sh (revision 25860)
@@ -4,11 +4,11 @@
# Constants
#
-INSTALL_DIR="install"
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
# Cleanup
-rm -rf ${INSTALL_DIR} src
-mkdir ${INSTALL_DIR} ${INSTALL_DIR}/include ${INSTALL_DIR}/lib src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
@@ -27,8 +27,8 @@
# Install
cd ..
-cp src/libtriangle.* ${INSTALL_DIR}/lib
-cp src/triangle.h ${INSTALL_DIR}/include
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
# Cleanup
rm -rf src
Index: ../trunk-jpl/externalpackages/triangle/install-mac.sh
===================================================================
--- ../trunk-jpl/externalpackages/triangle/install-mac.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/triangle/install-mac.sh (revision 25860)
@@ -4,11 +4,11 @@
# Constants
#
-export INSTALL_DIR="${ISSM_DIR}/externalpackages/triangle/install"
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
# Cleanup
-rm -rf ${INSTALL_DIR} src
-mkdir ${INSTALL_DIR} ${INSTALL_DIR}/include ${INSTALL_DIR}/lib src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
@@ -27,8 +27,8 @@
# Install
cd ..
-cp src/libtriangle.* ${INSTALL_DIR}/lib
-cp src/triangle.h ${INSTALL_DIR}/include
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
# Cleanup
rm -rf src
Index: ../trunk-jpl/externalpackages/triangle/makefile
===================================================================
--- ../trunk-jpl/externalpackages/triangle/makefile (revision 25859)
+++ ../trunk-jpl/externalpackages/triangle/makefile (revision 25860)
@@ -34,7 +34,7 @@
$(CC) $(CSWITCHES) $(TRILIBDEFS) -shared -o $@ triangle.c
libtriangle.dylib: $(OBJECTS)
- $(CC) $(CSWITCHES) $(TRILIBDEFS) -dynamiclib -install_name $(PREFIX)/$@ -o $@ triangle.c
+ $(CC) $(CSWITCHES) $(TRILIBDEFS) -dynamiclib -install_name ${PREFIX}/lib/$@ -o $@ triangle.c
libtriangle.lib: $(OBJECTS)
lib -out:libtriangle.$(STATIC_LIB_EXT) $(OBJECTS)
Index: ../trunk-jpl/externalpackages/valgrind/install-mac.sh
===================================================================
--- ../trunk-jpl/externalpackages/valgrind/install-mac.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/valgrind/install-mac.sh (revision 25860)
@@ -2,18 +2,22 @@
set -eu
+## Constants
+#
+PREFIX="${ISSM_DIR}/externalpackages/valgrind/install" # Set to location where external package should be installed
+
# Clean up
-rm -rf install
+rm -rf ${PREFIX}
# Download development version (the current release never supports the latest
# OS X releases)
-git clone git://sourceware.org/git/valgrind.git install
+git clone git://sourceware.org/git/valgrind.git ${PREFIX}
# Configure
cd install
./autogen.sh
./configure \
- --prefix="$ISSM_DIR/externalpackages/valgrind/install" \
+ --prefix="${PREFIX}" \
--enable-only64bit
# Compile and install
@@ -24,4 +28,3 @@
make -j $1
make install -j $1
fi
-
Index: ../trunk-jpl/jenkins/pine_island-mac-dakota
===================================================================
--- ../trunk-jpl/jenkins/pine_island-mac-dakota (revision 25859)
+++ ../trunk-jpl/jenkins/pine_island-mac-dakota (revision 25860)
@@ -46,7 +46,7 @@
curl install-7-mac.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-mac.sh
gmsh install-4.sh
Index: ../trunk-jpl/jenkins/pine_island-mac-python
===================================================================
--- ../trunk-jpl/jenkins/pine_island-mac-python (revision 25859)
+++ ../trunk-jpl/jenkins/pine_island-mac-python (revision 25860)
@@ -43,7 +43,7 @@
curl install-7-mac.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-mac.sh
gmsh install-4.sh
Index: ../trunk-jpl/jenkins/ross-debian_linux-binaries-python
===================================================================
--- ../trunk-jpl/jenkins/ross-debian_linux-binaries-python (revision 25859)
+++ ../trunk-jpl/jenkins/ross-debian_linux-binaries-python (revision 25860)
@@ -51,7 +51,7 @@
gdal install-3-python-netcdf-static.sh
gshhg install.sh
gmt install-6-linux-static.sh
- gmsh install-4-linux-static.sh
+ gmsh install-4-static.sh
triangle install-linux-static.sh
chaco install.sh
m1qn3 install.sh
Index: ../trunk-jpl/jenkins/ross-debian_linux-full-valgrind
===================================================================
--- ../trunk-jpl/jenkins/ross-debian_linux-full-valgrind (revision 25859)
+++ ../trunk-jpl/jenkins/ross-debian_linux-full-valgrind (revision 25860)
@@ -48,7 +48,7 @@
curl install-7-linux.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-linux.sh
gmsh install-4.sh
Index: ../trunk-jpl/externalpackages/autotools/install.sh
===================================================================
--- ../trunk-jpl/externalpackages/autotools/install.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/autotools/install.sh (revision 25860)
@@ -8,15 +8,17 @@
AUTOMAKE_VER="1.16.1"
LIBTOOL_VER="2.4.2"
M4_VER="1.4.18"
+PREFIX="${ISSM_DIR}/externalpackages/autotools/install" # Set to location where external package should be installed
## Environment
#
-export PATH="${ISSM_DIR}/externalpackages/autotools/install/bin:$PATH"
+export PATH="${PREFIX}/bin:$PATH"
# Cleanup
-rm -rf install src
-mkdir install
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX}
+
# Install m4
echo " === INSTALLING M4 =="
${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/m4-${M4_VER}.tar.gz" "m4-${M4_VER}.tar.gz"
@@ -24,7 +26,7 @@
mv m4-${M4_VER} src
cd src
-./configure --prefix="${ISSM_DIR}/externalpackages/autotools/install"
+./configure --prefix="${PREFIX}"
make
make install
cd ..
@@ -36,7 +38,7 @@
tar -zxvf autoconf-${AUTOCONF_VER}.tar.gz
mv autoconf-${AUTOCONF_VER} src
cd src
-./configure --prefix="${ISSM_DIR}/externalpackages/autotools/install"
+./configure --prefix="${PREFIX}"
make
make install
cd ..
@@ -48,7 +50,7 @@
tar -zxvf automake-${AUTOMAKE_VER}.tar.gz
mv automake-${AUTOMAKE_VER} src
cd src
-./configure --prefix="${ISSM_DIR}/externalpackages/autotools/install"
+./configure --prefix="${PREFIX}"
make
make install
cd ..
@@ -61,7 +63,7 @@
rm libtool-${LIBTOOL_VER}.tar.gz
mv libtool-${LIBTOOL_VER} src
cd src
-./configure --prefix="${ISSM_DIR}/externalpackages/autotools/install"
+./configure --prefix="${PREFIX}"
make
make install
cd ..
Index: ../trunk-jpl/externalpackages/cmake/install.sh
===================================================================
--- ../trunk-jpl/externalpackages/cmake/install.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/cmake/install.sh (revision 25860)
@@ -4,8 +4,10 @@
## Constants
#
-VER="3.16.2"
+VER="3.19.1"
+PREFIX="${ISSM_DIR}/externalpackages/cmake/install" # Set to location where external package should be installed
+
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/cmake-${VER}.tar.gz" "cmake-${VER}.tar.gz"
@@ -13,17 +15,17 @@
tar -zxvf cmake-${VER}.tar.gz
# Cleanup
-rm -rf install
+rm -rf ${PREFIX}
-# Move source into 'install' directory
-mv cmake-${VER} install
+# Move source into target directory
+mv cmake-${VER} ${PREFIX}
# Configure
-cd install
+cd ${PREFIX}
#./bootstrap \
-# --prefix=${ISSM_DIR}/externalpackages/cmake/install # Breaks on ronne
+# --prefix=${PREFIX} # Breaks on ronne
./configure \
- --prefix=${ISSM_DIR}/externalpackages/cmake/install
+ --prefix=${PREFIX}
# Compile
if [ $# -eq 0 ]; then
Index: ../trunk-jpl/externalpackages/curl/install-7-linux-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/curl/install-7-linux-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/curl/install-7-linux-static.sh (revision 25860)
@@ -6,24 +6,26 @@
#
VER="7.73.0"
+PREFIX="${ISSM_DIR}/externalpackages/curl/install" # Set to location where external package should be installed
+
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/curl-${VER}.tar.gz" "curl-${VER}.tar.gz"
# Unpack source
-tar -zxvf curl-$VER.tar.gz
+tar -zxvf curl-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv curl-$VER/* src
-rm -rf curl-$VER
+mv curl-${VER}/* src
+rm -rf curl-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/curl/install" \
+ --prefix="${PREFIX}" \
--disable-shared \
--disable-dependency-tracking \
--disable-manual \
Index: ../trunk-jpl/externalpackages/curl/install-7-linux-with_tests.sh
===================================================================
--- ../trunk-jpl/externalpackages/curl/install-7-linux-with_tests.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/curl/install-7-linux-with_tests.sh (revision 25860)
@@ -6,24 +6,26 @@
#
VER="7.73.0"
+PREFIX="${ISSM_DIR}/externalpackages/curl/install" # Set to location where external package should be installed
+
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/curl-${VER}.tar.gz" "curl-${VER}.tar.gz"
# Unpack source
-tar -zxvf curl-$VER.tar.gz
+tar -zxvf curl-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv curl-$VER/* src
-rm -rf curl-$VER
+mv curl-${VER}/* src
+rm -rf curl-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/curl/install" \
+ --prefix="${PREFIX}" \
--disable-static \
--disable-dependency-tracking \
--disable-manual \
Index: ../trunk-jpl/externalpackages/curl/install-7-linux.sh
===================================================================
--- ../trunk-jpl/externalpackages/curl/install-7-linux.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/curl/install-7-linux.sh (revision 25860)
@@ -6,24 +6,26 @@
#
VER="7.73.0"
+PREFIX="${ISSM_DIR}/externalpackages/curl/install" # Set to location where external package should be installed
+
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/curl-${VER}.tar.gz" "curl-${VER}.tar.gz"
# Unpack source
-tar -zxvf curl-$VER.tar.gz
+tar -zxvf curl-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv curl-$VER/* src
-rm -rf curl-$VER
+mv curl-${VER}/* src
+rm -rf curl-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/curl/install" \
+ --prefix="${PREFIX}" \
--disable-static \
--disable-dependency-tracking \
--disable-manual \
Index: ../trunk-jpl/externalpackages/curl/install-7-mac-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/curl/install-7-mac-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/curl/install-7-mac-static.sh (revision 25860)
@@ -6,6 +6,8 @@
#
VER="7.73.0"
+PREFIX="${ISSM_DIR}/externalpackages/curl/install" # Set to location where external package should be installed
+
## Environment
#
export MACOSX_DEPLOYMENT_TARGET="10.5" # Allows fall back to older API (source: https://curl.se/docs/install.html)
@@ -14,20 +16,20 @@
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/curl-${VER}.tar.gz" "curl-${VER}.tar.gz"
# Unpack source
-tar -zxvf curl-$VER.tar.gz
+tar -zxvf curl-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv curl-$VER/* src
-rm -rf curl-$VER
+mv curl-${VER}/* src
+rm -rf curl-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/curl/install" \
+ --prefix="${PREFIX}" \
--disable-shared \
--disable-dependency-tracking \
--disable-manual \
Index: ../trunk-jpl/externalpackages/curl/install-7-mac.sh
===================================================================
--- ../trunk-jpl/externalpackages/curl/install-7-mac.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/curl/install-7-mac.sh (revision 25860)
@@ -6,6 +6,8 @@
#
VER="7.73.0"
+PREFIX="${ISSM_DIR}/externalpackages/curl/install" # Set to location where external package should be installed
+
## Environment
#
export MACOSX_DEPLOYMENT_TARGET="10.5" # Allows fall back to older API (source: https://curl.se/docs/install.html)
@@ -14,20 +16,20 @@
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/curl-${VER}.tar.gz" "curl-${VER}.tar.gz"
# Unpack source
-tar -zxvf curl-$VER.tar.gz
+tar -zxvf curl-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
-mv curl-$VER/* src
-rm -rf curl-$VER
+mv curl-${VER}/* src
+rm -rf curl-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/curl/install" \
+ --prefix="${PREFIX}" \
--disable-static \
--disable-dependency-tracking \
--disable-manual \
Index: ../trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh (revision 25860)
@@ -2,25 +2,24 @@
set -eu
-# Constants
+## Constants
#
-DAK_ROOT=${ISSM_DIR}/externalpackages/dakota
VER="6.2"
+PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+
## Environment
#
-export BLAS_LIBS="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lfblas -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
-export BOOST_ROOT=${ISSM_DIR}/externalpackages/boost/install
+export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
export CXXFLAGS='-std=c++98' # Setting CXXFLAGS to deal with C++11 incompatibility with MATLAB's Boost (absolutely necessary for this version)
-export DAK_BUILD=${DAK_ROOT}/build
-export DAK_INSTALL=${DAK_ROOT}/install
-export DAK_SRC=${DAK_ROOT}/src
-export GSL_HOME=${ISSM_DIR}/externalpackages/gsl/install
-export LAPACK_LIBS="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lflapack -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+export LAPACK_LIBS="-L${LAPACK_ROOT}/lib -lflapack -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
# Cleanup
-rm -rf build install src
-mkdir build install src
+rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+mkdir -p ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
# Download source
${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/dakota-${VER}-public.src.tar.gz" "dakota-${VER}-public-src.tar.gz"
@@ -29,7 +28,7 @@
tar -zxvf dakota-${VER}-public-src.tar.gz
# Move source to 'src' directory
-mv dakota-${VER}.0.src/* src
+mv dakota-${VER}.0.src/* ${DAK_SRC}
rm -rf dakota-${VER}.0.src
# Copy customized source and configuration files to 'src' directory
Index: ../trunk-jpl/externalpackages/dakota/install-6.2-linux.sh
===================================================================
--- ../trunk-jpl/externalpackages/dakota/install-6.2-linux.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/dakota/install-6.2-linux.sh (revision 25860)
@@ -2,26 +2,25 @@
set -eu
-# Constants
+## Constants
#
-DAK_ROOT=${ISSM_DIR}/externalpackages/dakota
VER="6.2"
+PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+
## Environment
#
-export BLAS_LIBS="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lfblas -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
-export BOOST_ROOT=${ISSM_DIR}/externalpackages/boost/install
+export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
export CXXFLAGS='-std=c++98' # Setting CXXFLAGS to deal with C++11 incompatibility with MATLAB's Boost (absolutely necessary for this version)
#export CXXFLAGS='-std=c++11'
-export DAK_BUILD=${DAK_ROOT}/build
-export DAK_INSTALL=${DAK_ROOT}/install
-export DAK_SRC=${DAK_ROOT}/src
-export GSL_HOME=${ISSM_DIR}/externalpackages/gsl/install
-export LAPACK_LIBS="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lflapack -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+export LAPACK_LIBS="-L${LAPACK_ROOT}/lib -lflapack -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
# Cleanup
-rm -rf build install src
-mkdir build install src
+rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+mkdir -p ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
# Download source
${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/dakota-${VER}-public.src.tar.gz" "dakota-${VER}-public-src.tar.gz"
@@ -30,7 +29,7 @@
tar -zxvf dakota-${VER}-public-src.tar.gz
# Move source to 'src' directory
-mv dakota-${VER}.0.src/* src
+mv dakota-${VER}.0.src/* ${DAK_SRC}
rm -rf dakota-${VER}.0.src
# Copy customized source and configuration files to 'src' directory
Index: ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh (revision 25860)
@@ -2,11 +2,12 @@
set -eu
-# Constants
+## Constants
#
-DAK_ROOT=${ISSM_DIR}/externalpackages/dakota
VER="6.2"
+PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+
## Environment
#
@@ -16,24 +17,23 @@
# returning one that is installed via package manager.
#
# TODO:
-# - Test if -static-libgfortran flag will avoid all of this.
-# - Otherwise, refactor this to work with other gfortran installations.
+# - Move this to etc/environment.sh
+# - Test if -static-libgfortran flag will avoid all of this
+# - Otherwise, refactor this to work with other gfortran installations
#
LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | grep -n libgfortran.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
LIBGCC=$(mdfind -onlyin ${LIBGFORTRAN_ROOT} -name libgcc | grep -n libgcc.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
-export BLAS_LIBS="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
-export BOOST_ROOT=${ISSM_DIR}/externalpackages/boost/install
-export DAK_BUILD=${DAK_ROOT}/build
-export DAK_INSTALL=${DAK_ROOT}/install
-export DAK_SRC=${DAK_ROOT}/src
-export GSL_HOME=${ISSM_DIR}/externalpackages/gsl/install
-export LAPACK_LIBS="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lflapack ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+export LAPACK_LIBS="-L${LAPACK_ROOT}/lib -lflapack ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
# Cleanup
-rm -rf build install src
-mkdir build install src
+rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+mkdir -p ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
# Download source
${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/dakota-${VER}-public.src.tar.gz" "dakota-${VER}-public-src.tar.gz"
@@ -42,7 +42,7 @@
tar -zxvf dakota-${VER}-public-src.tar.gz
# Move source to 'src' directory
-mv dakota-${VER}.0.src/* src
+mv dakota-${VER}.0.src/* ${DAK_SRC}
rm -rf dakota-${VER}.0.src
# Copy customized source and configuration files to 'src' directory
Index: ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh
===================================================================
--- ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh (revision 25860)
@@ -2,11 +2,12 @@
set -eu
-# Constants
+## Constants
#
-DAK_ROOT=${ISSM_DIR}/externalpackages/dakota
VER="6.2"
+PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+
## Environment
#
@@ -15,20 +16,21 @@
# Should retrieve a copy of gfortran that is compiled from source before
# returning one that is installed via package manager.
#
+# TODO:
+# - Move this to etc/environment.sh
+#
LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | grep -n libgfortran.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
-export BLAS_LIBS="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
-export BOOST_ROOT=${ISSM_DIR}/externalpackages/boost/install
-export DAK_BUILD=${DAK_ROOT}/build
-export DAK_INSTALL=${DAK_ROOT}/install
-export DAK_SRC=${DAK_ROOT}/src
-export GSL_HOME=${ISSM_DIR}/externalpackages/gsl/install
-export LAPACK_LIBS="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lflapack -L${LIBGFORTRAN_ROOT} -lgfortran" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+export LAPACK_LIBS="-L${LAPACK_ROOT}/lib -lflapack -L${LIBGFORTRAN_ROOT} -lgfortran" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
# Cleanup
-rm -rf build install src
-mkdir build install src
+rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+mkdir -p ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
# Download source
${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/dakota-${VER}-public.src.tar.gz" "dakota-${VER}-public-src.tar.gz"
@@ -37,7 +39,7 @@
tar -zxvf dakota-${VER}-public-src.tar.gz
# Move source to 'src' directory
-mv dakota-${VER}.0.src/* src
+mv dakota-${VER}.0.src/* ${DAK_SRC}
rm -rf dakota-${VER}.0.src
# Copy customized source and configuration files to 'src' directory
Index: ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh (nonexistent)
+++ ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh (revision 25860)
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -eu
+
+
+## TODO
+# - May want to supply path to Python instead of, effectively, using result of `which python`
+#
+
+## Constants
+#
+VER="3.1.1"
+
+## Environment
+#
+export CC=mpicc
+export CXX=mpicxx
+export LDFLAGS="-L${HDF5_ROOT}/lib" # Need to do this so HDF5 symbols referenced in NETCDF library are found at link time
+export LIBS="-lhdf5_hl -lhdf5" # Need to do this so HDF5 symbols referenced in NETCDF library are found at link time
+export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # Need this to properly set destination root for Python libraries on macOS (should not affect Linux build; do not need for this configuration, but including it for consistency)
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gdal-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv gdal-${VER}/* src
+rm -rf gdal-${VER}
+
+# Configure
+cd src
+./configure \
+ --prefix="${PREFIX}" \
+ --enable-fast-install \
+ --disable-shared \
+ --without-ld-shared \
+ --enable-static \
+ --with-pic \
+ --with-python \
+ --with-libz="${ZLIB_ROOT}" \
+ --with-hdf5="${HDF5_ROOT}" \
+ --with-netcdf="${NETCDF_ROOT}" \
+ --with-proj="${PROJ_ROOT}" \
+ --with-pg=no
+
+# Compile and install
+if [ $# -eq 0 ]; then
+ make
+ make install
+else
+ make -j $1
+ make -j $1 install
+fi
Property changes on: ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gdal/install-3-python.sh
===================================================================
--- ../trunk-jpl/externalpackages/gdal/install-3-python.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gdal/install-3-python.sh (revision 25860)
@@ -10,25 +10,23 @@
#
VER="3.1.1"
-PROJ_ROOT="${ISSM_DIR}/externalpackages/proj/install"
-
## Environment
#
-export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # Need this to properly set destination root for Python libraries on macOS (should not affect Linux build)
+export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # NOTE: Need to export this to properly set destination root for Python libraries on macOS (should not affect Linux build). Set to location where external package should be installed.
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
# Unpack source
-tar -zxvf gdal-$VER.tar.gz
+tar -zxvf gdal-${VER}.tar.gz
# Move source into 'src' directory
-mv gdal-$VER/* src
-rm -rf gdal-$VER
+mv gdal-${VER}/* src
+rm -rf gdal-${VER}
# Configure
cd src
@@ -36,8 +34,9 @@
--prefix="${PREFIX}" \
--enable-fast-install \
--with-python \
- --without-hdf5 \
- --without-netcdf \
+ --with-libz="${ZLIB_ROOT}" \
+ --with-hdf5="${HDF5_ROOT}" \
+ --with-netcdf="${NETCDF_ROOT}" \
--with-proj="${PROJ_ROOT}"
# Compile and install
Index: ../trunk-jpl/externalpackages/proj/install-6.2-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/proj/install-6.2-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/proj/install-6.2-static.sh (revision 25860)
@@ -6,6 +6,8 @@
#
VER="6.2.1"
+PREFIX="${ISSM_DIR}/externalpackages/proj/install" # Set to location where external package should be installed
+
## Environment
#
export CC=mpicc
@@ -23,23 +25,23 @@
export SQLITE3_LIBS="-lsqlite3"
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/proj-${VER}.tar.gz" "proj-${VER}.tar.gz"
# Unpack source
-tar -zxvf proj-$VER.tar.gz
+tar -zxvf proj-${VER}.tar.gz
# Move source into 'src' directory
-mv proj-$VER/* src
-rm -rf proj-$VER
+mv proj-${VER}/* src
+rm -rf proj-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/proj/install" \
+ --prefix="${PREFIX}" \
--disable-dependency-tracking \
--enable-fast-install \
--disable-shared
Index: ../trunk-jpl/externalpackages/proj/install-6.2.sh
===================================================================
--- ../trunk-jpl/externalpackages/proj/install-6.2.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/proj/install-6.2.sh (revision 25860)
@@ -6,7 +6,9 @@
#
VER="6.2.1"
-## Environnment
+PREFIX="${ISSM_DIR}/externalpackages/proj/install" # Set to location where external package should be installed
+
+## Environment
#
export CC=mpicc
export CXX=mpicxx
@@ -23,23 +25,23 @@
export SQLITE3_LIBS="-lsqlite3"
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/proj-${VER}.tar.gz" "proj-${VER}.tar.gz"
# Unpack source
-tar -zxvf proj-$VER.tar.gz
+tar -zxvf proj-${VER}.tar.gz
# Move source into 'src' directory
-mv proj-$VER/* src
-rm -rf proj-$VER
+mv proj-${VER}/* src
+rm -rf proj-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/proj/install" \
+ --prefix="${PREFIX}" \
--disable-dependency-tracking \
--enable-fast-install
Index: ../trunk-jpl/externalpackages/semic/install.sh
===================================================================
--- ../trunk-jpl/externalpackages/semic/install.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/semic/install.sh (revision 25860)
@@ -1,11 +1,16 @@
#!/bin/bash
set -eu
-#Some cleanup
-rm -rf install src
-mkdir install
-#Download latest version
+## Constants
+#
+PREFIX="${ISSM_DIR}/externalpackages/semic/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX}
+
+# Download source
git clone https://github.com/mkrapp/semic.git src
if which ifort >/dev/null; then
@@ -21,7 +26,7 @@
fi
fi
-#Compile semic module utils.f90
+# Compile and install semic module utils.f90
cd src/
(
cat << EOF
@@ -29,8 +34,8 @@
FC=$FC
FFLAGS=$FFLAGS
install: libutils.\$(LIB_EXT)
- cp libutils.\$(LIB_EXT) ../install/
- cp utils.mod ../install/
+ cp libutils.\$(LIB_EXT) ${PREFIX}
+ cp utils.mod ${PREFIX}
OBJECTS= utils.o
libutils.\$(LIB_EXT): \$(OBJECTS)
ar -r libutils.\$(LIB_EXT) \$(OBJECTS)
@@ -43,10 +48,10 @@
) > Makefile
make
-# patch surface_physics
-patch surface_physics.f90 < ../surface_physics.f90.patch
+# Apply patch surface_physics
+patch surface_physics.f90 < ../configs/surface_physics.f90.patch
-#Compile semic module surface_physics.f90
+# Compile semic module surface_physics.f90
(
cat << EOF
LIB_EXT=a
@@ -53,8 +58,8 @@
FC=$FC
FFLAGS=$FFLAGS
install: libsurface_physics.\$(LIB_EXT)
- cp libsurface_physics.\$(LIB_EXT) ../install/
- cp surface_physics.mod ../install/
+ cp libsurface_physics.\$(LIB_EXT) ${PREFIX}
+ cp surface_physics.mod ${PREFIX}
OBJECTS= surface_physics.o
libsurface_physics.\$(LIB_EXT): \$(OBJECTS)
ar -r libsurface_physics.\$(LIB_EXT) \$(OBJECTS)
Index: ../trunk-jpl/jenkins/aws-amazon_linux-solid_earth
===================================================================
--- ../trunk-jpl/jenkins/aws-amazon_linux-solid_earth (revision 25859)
+++ ../trunk-jpl/jenkins/aws-amazon_linux-solid_earth (revision 25860)
@@ -41,7 +41,7 @@
curl install-7-linux.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-linux.sh
gmsh install-4.sh
Index: ../trunk-jpl/jenkins/pine_island-mac-binaries-python
===================================================================
--- ../trunk-jpl/jenkins/pine_island-mac-binaries-python (revision 25859)
+++ ../trunk-jpl/jenkins/pine_island-mac-binaries-python (revision 25860)
@@ -51,7 +51,7 @@
gdal install-3-python-netcdf-static.sh
gshhg install.sh
gmt install-6-mac-static.sh
- gmsh install-4-mac-python-static.sh
+ gmsh install-4-static.sh
triangle install-mac-static.sh
chaco install.sh
m1qn3 install.sh
Index: ../trunk-jpl/jenkins/pine_island-mac-full-valgrind
===================================================================
--- ../trunk-jpl/jenkins/pine_island-mac-full-valgrind (revision 25859)
+++ ../trunk-jpl/jenkins/pine_island-mac-full-valgrind (revision 25860)
@@ -48,7 +48,7 @@
curl install-7-mac.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-mac.sh
gmsh install-4.sh
Index: ../trunk-jpl/jenkins/ross-debian_linux-binaries-matlab
===================================================================
--- ../trunk-jpl/jenkins/ross-debian_linux-binaries-matlab (revision 25859)
+++ ../trunk-jpl/jenkins/ross-debian_linux-binaries-matlab (revision 25860)
@@ -49,10 +49,10 @@
curl install-7-linux-static.sh
netcdf install-4.7-parallel-static.sh
proj install-6.2-static.sh
- gdal install-3-netcdf-static.sh
+ gdal install-3-static.sh
gshhg install.sh
gmt install-6-linux-static.sh
- gmsh install-4-linux-static.sh
+ gmsh install-4-static.sh
triangle install-linux-static.sh
chaco install.sh
m1qn3 install.sh
Index: ../trunk-jpl/jenkins/ross-debian_linux-full
===================================================================
--- ../trunk-jpl/jenkins/ross-debian_linux-full (revision 25859)
+++ ../trunk-jpl/jenkins/ross-debian_linux-full (revision 25860)
@@ -48,7 +48,7 @@
curl install-7-linux.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-linux.sh
gmsh install-4.sh
Index: ../trunk-jpl/jenkins/ross-debian_linux-solid_earth
===================================================================
--- ../trunk-jpl/jenkins/ross-debian_linux-solid_earth (revision 25859)
+++ ../trunk-jpl/jenkins/ross-debian_linux-solid_earth (revision 25860)
@@ -46,10 +46,10 @@
curl install-7-linux.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-linux.sh
- gmsh install-4.sh
+ gmsh install-4-linux.sh
triangle install-linux.sh
chaco install.sh
m1qn3 install.sh
Index: ../trunk-jpl/src/m/coordsystems/gmtmask.m
===================================================================
--- ../trunk-jpl/src/m/coordsystems/gmtmask.m (revision 25859)
+++ ../trunk-jpl/src/m/coordsystems/gmtmask.m (revision 25860)
@@ -34,37 +34,12 @@
filename_oce = ['oce_vertices-' num2str(feature('GetPid')) '.txt'];
dlmwrite(filename_all,[long lat (1:nv)'],'delimiter','\t','precision',10);
- %Avoid bypassing of the ld library path by Matlab (:()
- %
- % TODO: Do we really need this (we can/already set it in etc/environment.sh)?
- if ismac,
- dyld_library_path_old=getenv('DYLD_LIBRARY_PATH');
- setenv('DYLD_LIBRARY_PATH',[ issmdir '/externalpackages/curl/install/lib:' issmdir '/externalpackages/hdf5/install/lib:' issmdir '/externalpackages/netcdf/install/lib' ]);
- end
-
- %Find path to gmt, list all possible known paths to gmt (you may need to add yours to the list)
- gmtpaths = {[issmdir '/bin/gmt'],[issmdir '/externalpackages/gmt/install/bin/gmt'],'/Applications/GMT-5.4.3.app/Contents/Resources/bin/gmt'};
- gmtpath = '';
- for i=gmtpaths
- if exist(i{1},'file'),
- gmtpath = i{1};
- break;
- end
- end
- if isempty(gmtpath),
- error('gmt not found! Make sure it is properly installed, or add its path to this file.');
- end
-
%figure out which vertices are on the ocean, which one on the continent:
- [status,result] = system([gmtpath ' gmtselect ./' filename_all ' -h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s > ./' filename_oce]);
+ [status,result] = system(['gmtselect ./' filename_all ' -h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s > ./' filename_oce]);
if status~=0,
error(result);
end
- %reset DYLD_LIBRARY_PATH to what it was:
- if ismac,
- setenv('DYLD_LIBRARY_PATH',dyld_library_path_old);
- end
%read the con_vertices.txt file and flag our mesh vertices on the continent
fid=fopen(['./' filename_oce],'r');
line=fgets(fid);
Index: ../trunk-jpl/src/m/coordsystems/gmtmask.py
===================================================================
--- ../trunk-jpl/src/m/coordsystems/gmtmask.py (revision 25859)
+++ ../trunk-jpl/src/m/coordsystems/gmtmask.py (revision 25860)
@@ -43,44 +43,9 @@
#print(np.transpose([int, lat, np.arange(1, nv + 1)]))
np.savetxt('./all_vertices.txt', np.transpose([long, lat, np.arange(1, nv + 1)]), delimiter='\t', fmt='%.10f')
- #Avoid bypassing of the ld library path by Matlab (:()
- issm_dir = issmdir()
-
- try:
- ismac
- except NameError:
- ismac = False
-
- # TODO: Do we really need this (we can/already set it in etc/environment.sh)?
- if ismac:
- dyld_library_path_old = os.getenv('DYLD_LIBRARY_PATH')
- os.putenv('DYLD_LIBRARY_PATH', issm_dir + '/externalpackages/curl/install/lib:' + issm_dir + '/externalpackages/hdf5/install/lib:' + issm_dir + '/externalpackages/netcdf/install/lib')
-
- #Find path to gmt (you may need to add yours to the list).
- #
- # NOTE: Assumes gmtselect is also in this directory.
- #
- gmtpaths = [
- issm_dir + '/bin/gmt',
- issm_dir + '/externalpackages/gmt/install/bin/gmt',
- '/Applications/GMT-5.4.3.app/Contents/Resources/bin/gmt'
- ]
- gmtpath = ''
- for i in range(len(gmtpaths)):
- if os.path.isfile(gmtpaths[i]):
- gmtpath = gmtpaths[i]
- break
-
- if gmtpath == '':
- raise Exception('gmt not found! Make sure it is properly installed, or add its path to this file.')
-
#figure out which vertices are on the ocean, which one on the continent:
- subprocess.call(gmtpath + ' gmtselect ./ all_vertices.txt -h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices.txt', shell=True)
+ subprocess.call('gmtselect ./ all_vertices.txt -h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices.txt', shell=True)
- #reset DYLD_LIBRARY_PATH to what it was:
- if ismac:
- os.putenv('DYLD_LIBRARY_PATH', dyld_library_path_old)
-
#read the con_vertices.txt file and flag our mesh vertices on the continent
fid = open('./oce_vertices.txt', 'r')
line = fid.readline()
Index: ../trunk-jpl/externalpackages/gdal/install-3-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gdal/install-3-static.sh (nonexistent)
+++ ../trunk-jpl/externalpackages/gdal/install-3-static.sh (revision 25860)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+
+## TODO
+# - May want to supply path to Python instead of, effectively, using result of `which python`
+#
+
+## Constants
+#
+VER="3.1.1"
+
+## Environment
+#
+export CC=mpicc
+export CXX=mpicxx
+export LDFLAGS="-L${HDF5_ROOT}/lib" # Need to do this so HDF5 symbols referenced in NETCDF library are found at link time
+export LIBS="-lhdf5_hl -lhdf5" # Need to do this so HDF5 symbols referenced in NETCDF library are found at link time
+export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # NOTE: Need to export this to properly set destination root for Python libraries on macOS (should not affect Linux build). Set to location where external package should be installed.
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gdal-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv gdal-${VER}/* src
+rm -rf gdal-${VER}
+
+# Configure
+cd src
+./configure \
+ --prefix="${PREFIX}" \
+ --enable-fast-install \
+ --disable-shared \
+ --without-ld-shared \
+ --enable-static \
+ --with-pic \
+ --with-libz="${ZLIB_ROOT}" \
+ --with-hdf5="${HDF5_ROOT}" \
+ --with-netcdf="${NETCDF_ROOT}" \
+ --with-proj="${PROJ_ROOT}" \
+ --with-pg=no
+
+# Compile and install
+if [ $# -eq 0 ]; then
+ make
+ make install
+else
+ make -j $1
+ make -j $1 install
+fi
Property changes on: ../trunk-jpl/externalpackages/gdal/install-3-static.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gdal/install-3.sh
===================================================================
--- ../trunk-jpl/externalpackages/gdal/install-3.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gdal/install-3.sh (revision 25860)
@@ -2,19 +2,17 @@
set -eu
-# Constants
+## Constants
#
VER="3.1.1"
-PROJ_ROOT="${ISSM_DIR}/externalpackages/proj/install"
-
## Environment
#
-export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # Need this to properly set destination root for Python libraries on macOS (should not affect Linux build; do not need for this configuration, but including it for consistency)
+export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # NOTE: Need to export this to properly set destination root for Python libraries on macOS (should not affect Linux build). Set to location where external package should be installed.
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
@@ -23,8 +21,8 @@
tar -zxvf gdal-${VER}.tar.gz
# Move source into 'src' directory
-mv gdal-$VER/* src
-rm -rf gdal-$VER
+mv gdal-${VER}/* src
+rm -rf gdal-${VER}
# Configure
cd src
@@ -31,8 +29,9 @@
./configure \
--prefix="${PREFIX}" \
--enable-fast-install \
- --without-hdf5 \
- --without-netcdf \
+ --with-libz="${ZLIB_ROOT}" \
+ --with-hdf5="${HDF5_ROOT}" \
+ --with-netcdf="${NETCDF_ROOT}" \
--with-proj="${PROJ_ROOT}"
# Compile and install
@@ -43,6 +42,3 @@
make -j $1
make -j $1 install
fi
-
-# Return to initial directory
-cd ..
Index: ../trunk-jpl/externalpackages/gmsh/install-4-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmsh/install-4-static.sh (nonexistent)
+++ ../trunk-jpl/externalpackages/gmsh/install-4-static.sh (revision 25860)
@@ -0,0 +1,66 @@
+#!/bin/bash
+set -eu
+
+
+# TODO:
+# - Add support for,
+# - BLAS_LAPACK
+# - MUMPS
+# - PETSC
+# (see configs/4/static/CMakeLists.txt)
+#
+
+## Constants
+#
+VER="4.5.6"
+
+PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
+
+# Unpack source
+tar -xvzf gmsh-${VER}-source.tgz
+
+# Move source to 'src' directory
+mv gmsh-${VER}-source/* src
+rm -rf gmsh-${VER}-source
+
+# Copy customized source and config files to 'src' directory
+cp configs/${VER}/static/CMakeLists.txt src
+
+# Configure
+#
+# NOTE:
+# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
+# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG
+# movies.
+# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not
+# importing STEP/IGES files.
+# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we
+# do not need to support Apple Touch bar (does not affect compilation on
+# Linux).
+#
+cd src
+cmake \
+ -DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+ -DENABLE_BUILD_LIB=1 \
+ -DENABLE_FLTK=0 \
+ -DENABLE_MPEG_ENCODE=0 \
+ -DENABLE_MPI=1 \
+ -DENABLE_OCC=0 \
+ -DENABLE_TOUCHBAR=0 \
+ -DMETIS_ROOT="${METIS_ROOT}"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+ make
+ make install
+else
+ make -j $1
+ make -j $1 install
+fi
Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4-static.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: ../trunk-jpl/externalpackages/gmsh/install-4.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmsh/install-4.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmsh/install-4.sh (revision 25860)
@@ -2,20 +2,28 @@
set -eu
+# TODO:
+# - Add support for,
+# - BLAS_LAPACK
+# - MUMPS
+# - PETSC
+# (see configs/4/static/CMakeLists.txt)
+#
+
## Constants
#
VER="4.5.6"
-PETSC_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
+PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
-# Untar source
+# Unpack source
tar -xvzf gmsh-${VER}-source.tgz
# Move source to 'src' directory
@@ -31,11 +39,12 @@
# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not
# importing STEP/IGES files.
# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we
-# do not need to support Apple Touch bar.
+# do not need to support Apple Touch bar (does not affect compilation on
+# Linux).
#
-cd install
-cmake ../src \
- -DCMAKE_INSTALL_PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" \
+cd src
+cmake \
+ -DCMAKE_INSTALL_PREFIX="${PREFIX}" \
-DENABLE_BUILD_DYNAMIC=1 \
-DENABLE_BUILD_SHARED=1 \
-DENABLE_FLTK=0 \
@@ -43,7 +52,7 @@
-DENABLE_MPI=1 \
-DENABLE_OCC=0 \
-DENABLE_TOUCHBAR=0 \
- -DMETIS_ROOT="${PETSC_ROOT}"
+ -DMETIS_ROOT="${METIS_ROOT}"
# Compile and install
if [ $# -eq 0 ]; then
Index: ../trunk-jpl/externalpackages/gmt/install-6-linux-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmt/install-6-linux-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmt/install-6-linux-static.sh (revision 25860)
@@ -6,17 +6,12 @@
#
VER="6.0.0"
-CURL_ROOT="${ISSM_DIR}/externalpackages/curl/install"
-PETSC_ROOT="${ISSM_DIR}/externalpackages/petsc/install"
-
-BLASLAPACK_ROOT="${PETSC_ROOT}"
-HDF5_ROOT="${PETSC_ROOT}"
-
# Find libgfortran and libgcc so we do not have to hardcode them
#
# NOTE: For now, paths are hardcoded.
#
# TODO:
+# - Move this to etc/environment.sh
# - Figure out how to find and grep for single result like we do with mdfind
# under macOS.
#
@@ -24,8 +19,6 @@
LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
LIBGCC="/usr/lib/gcc/x86_64-linux-gnu/8/libgcc.a"
-CURL_INCLUDE_DIRS="${CURL_ROOT}/include" \
-CURL_LIBRARIES="${CURL_ROOT}/lib/libcurl.a;/usr/lib/x86_64-linux-gnu/libssl.a;/usr/lib/x86_64-linux-gnu/libcrypto.a" \
GDAL_EXTRA_LIBS="-lstdc++" # Determined by running `$GDAL_ROOT/bin/gdal-config --dep-libs` then removing duplicate libs
NETCDF_EXTRA_LIBS="-lm -ldl -lz" # `$NETCDF_ROOT/bin/nc-config --libs` does not report certain dependencies of certain static libraries (see also customized configuration file ./configs/6.0/static/cmake/modules/FindNETCDF.cmake)
@@ -32,8 +25,9 @@
# Environment
#
export CC=mpicc
-export CURL_INCLUDE_DIRS=${CURL_INCLUDE_DIRS}
-export CURL_LIBRARIES=${CURL_LIBRARIES}
+export CURL_INCLUDE_DIRS="${CURL_ROOT}/include"
+export CURL_LIBRARIES="${CURL_ROOT}/lib/libcurl.a;/usr/lib/x86_64-linux-gnu/libssl.a;/usr/lib/x86_64-linux-gnu/libcrypto.a"
+export PREFIX="${ISSM_DIR}/externalpackages/gmt/install" # NOTE: Need to export this to be picked up by customized ConfigUser.cmake (see below). Set to location where external package should be installed.
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmt-${VER}.tar.gz" "gmt-${VER}.tar.gz"
@@ -42,8 +36,8 @@
tar -zxvf gmt-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
mv gmt-${VER}/* src
@@ -69,10 +63,10 @@
# LAPACK_LIBRARIES is a workaround.
#
cmake \
- -DBLAS_LIBRARIES="${BLASLAPACK_ROOT}/lib/libfblas.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
+ -DBLAS_LIBRARIES="${BLAS_ROOT}/lib/libfblas.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
-DGDAL_EXTRA_LIBS="${GDAL_EXTRA_LIBS}" \
-DHDF5_ROOT="${HDF5_ROOT}" \
- -DLAPACK_LIBRARIES="${BLASLAPACK_ROOT}/lib/libflapack.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
+ -DLAPACK_LIBRARIES="${LAPACK_ROOT}/lib/libflapack.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
-DNETCDF_EXTRA_LIBS="${NETCDF_EXTRA_LIBS}" \
..
Index: ../trunk-jpl/externalpackages/gmt/install-6-linux.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmt/install-6-linux.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmt/install-6-linux.sh (revision 25860)
@@ -6,11 +6,10 @@
#
VER="6.0.0"
-CURL_ROOT="${ISSM_DIR}/externalpackages/curl/install"
-
# Environment
#
export CC=mpicc
+export PREFIX="${ISSM_DIR}/externalpackages/gmt/install" # NOTE: Need to export this to be picked up by customized ConfigUser.cmake (see below). Set to location where external package should be installed.
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmt-${VER}.tar.gz" "gmt-${VER}.tar.gz"
@@ -19,8 +18,8 @@
tar -zxvf gmt-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
mv gmt-${VER}/* src
Index: ../trunk-jpl/externalpackages/gmt/install-6-mac.sh
===================================================================
--- ../trunk-jpl/externalpackages/gmt/install-6-mac.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/gmt/install-6-mac.sh (revision 25860)
@@ -6,11 +6,10 @@
#
VER="6.0.0"
-CURL_ROOT="${ISSM_DIR}/externalpackages/curl/install"
-
# Environment
#
export CC=mpicc
+export PREFIX="${ISSM_DIR}/externalpackages/gmt/install" # NOTE: Need to export this to be picked up by customized ConfigUser.cmake (see below). Set to location where external package should be installed.
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmt-${VER}.tar.gz" "gmt-${VER}.tar.gz"
@@ -19,8 +18,8 @@
tar -zxvf gmt-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Move source to 'src' directory
mv gmt-${VER}/* src
Index: ../trunk-jpl/externalpackages/petsc/install-3.12-linux-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/petsc/install-3.12-linux-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/petsc/install-3.12-linux-static.sh (revision 25860)
@@ -2,16 +2,13 @@
set -eu
-# NOTE: There is a single difference between the Linux and macOS
-# configurations, which is the addition of the -static-libgfortran
-# option to FFLAGS on the macOS static configurations. For the sake of
-# consistency, we maintain separate files for each, respective Linux and
-# macOS configuration.
-
## Constants
#
VER="3.12.3"
+PETSC_DIR=${ISSM_DIR}/externalpackages/petsc/src # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
@@ -19,16 +16,16 @@
tar -zxvf petsc-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PREFIX} ${PETSC_DIR}
-# Move source to 'src' directory
-mv petsc-${VER}/* src/
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
rm -rf petsc-${VER}
# Configure
#
-# NOTE:
+# NOTE:
# - Cannot use --with-fpic option when compiling static libs,
#
# Cannot determine compiler PIC flags if shared libraries is turned off
@@ -35,10 +32,17 @@
# Either run using --with-shared-libraries or --with-pic=0 and supply the
# compiler PIC flag via CFLAGS, CXXXFLAGS, and FCFLAGS
#
-cd src
+# - Added -fallow-argument-mismatch to FFLAGS in order to clear,
+#
+# error: The Fortran compiler gfortran will not compile files that call
+# the same routine with arguments of different types.
+#
+# for gfortran 10 or later (may need to remove it for earlier versions).
+#
+cd ${PETSC_DIR}
./config/configure.py \
- --prefix="${ISSM_DIR}/externalpackages/petsc/install" \
- --PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
+ --prefix="${PREFIX}" \
+ --PETSC_DIR="${PETSC_DIR}" \
--with-shared-libraries=0 \
--CFLAGS="-fPIC" \
--CXXFLAGS="-fPIC" \
Index: ../trunk-jpl/externalpackages/petsc/install-3.12-linux.sh
===================================================================
--- ../trunk-jpl/externalpackages/petsc/install-3.12-linux.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/petsc/install-3.12-linux.sh (revision 25860)
@@ -6,6 +6,9 @@
#
VER="3.12.3"
+PETSC_DIR=${ISSM_DIR}/externalpackages/petsc/src # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
@@ -13,18 +16,18 @@
tar -zxvf petsc-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PREFIX} ${PETSC_DIR}
-# Move source to 'src' directory
-mv petsc-${VER}/* src/
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
rm -rf petsc-${VER}
# Configure
-cd src
+cd ${PETSC_DIR}
./config/configure.py \
- --prefix="${ISSM_DIR}/externalpackages/petsc/install" \
- --PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
+ --prefix="${PREFIX}" \
+ --PETSC_DIR="${PETSC_DIR}" \
--with-debugging=0 \
--with-valgrind=0 \
--with-x=0 \
Index: ../trunk-jpl/externalpackages/petsc/install-3.12-mac-static.sh
===================================================================
--- ../trunk-jpl/externalpackages/petsc/install-3.12-mac-static.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/petsc/install-3.12-mac-static.sh (revision 25860)
@@ -6,6 +6,9 @@
#
VER="3.12.3"
+PETSC_DIR=${ISSM_DIR}/externalpackages/petsc/src # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
@@ -13,16 +16,16 @@
tar -zxvf petsc-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PREFIX} ${PETSC_DIR}
-# Move source to 'src' directory
-mv petsc-${VER}/* src/
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
rm -rf petsc-${VER}
# Configure
#
-# NOTE:
+# NOTE:
# - Cannot use --with-fpic option when compiling static libs,
#
# Cannot determine compiler PIC flags if shared libraries is turned off
@@ -40,10 +43,10 @@
# - Added -static-libgfortran to all macOS static builds, but this will not
# work out of the box on Linux.
#
-cd src
+cd ${PETSC_DIR}
./config/configure.py \
- --prefix="${ISSM_DIR}/externalpackages/petsc/install" \
- --PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
+ --prefix="${PREFIX}" \
+ --PETSC_DIR="${PETSC_DIR}" \
--with-shared-libraries=0 \
--CFLAGS="-fPIC -Wno-error=implicit-function-declaration" \
--CXXFLAGS="-fPIC" \
Index: ../trunk-jpl/externalpackages/petsc/install-3.12-mac.sh
===================================================================
--- ../trunk-jpl/externalpackages/petsc/install-3.12-mac.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/petsc/install-3.12-mac.sh (revision 25860)
@@ -6,6 +6,9 @@
#
VER="3.12.3"
+PETSC_DIR=${ISSM_DIR}/externalpackages/petsc/src # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
@@ -13,16 +16,18 @@
tar -zxvf petsc-${VER}.tar.gz
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PREFIX} ${PETSC_DIR}
-# Move source to 'src' directory
-mv petsc-${VER}/* src/
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
rm -rf petsc-${VER}
# Configure
#
# NOTE:
+# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12.
+# (may need to remove it for earlier versions not using the C99 standard).
# - Added -fallow-argument-mismatch to FFLAGS in order to clear,
#
# error: The Fortran compiler gfortran will not compile files that call
@@ -29,13 +34,11 @@
# the same routine with arguments of different types.
#
# for gfortran 10 or later (may need to remove it for earlier versions).
-# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12.
-# (may need to remove it for earlier versions not using the C99 standard).
#
-cd src
+cd ${PETSC_DIR}
./config/configure.py \
- --prefix="${ISSM_DIR}/externalpackages/petsc/install" \
- --PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
+ --prefix="${PREFIX}" \
+ --PETSC_DIR="${PETSC_DIR}" \
--CFLAGS="-Wno-error=implicit-function-declaration" \
--FFLAGS="-fallow-argument-mismatch" \
--with-debugging=0 \
Index: ../trunk-jpl/externalpackages/proj/install-6.2-static-with_tests.sh
===================================================================
--- ../trunk-jpl/externalpackages/proj/install-6.2-static-with_tests.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/proj/install-6.2-static-with_tests.sh (revision 25860)
@@ -6,7 +6,9 @@
#
VER="6.2.1"
-## Environnment
+PREFIX="${ISSM_DIR}/externalpackages/proj/install" # Set to location where external package should be installed
+
+## Environment
#
export CC=mpicc
export CXX=mpicxx
@@ -23,23 +25,23 @@
export SQLITE3_LIBS="-lsqlite3"
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/proj-${VER}.tar.gz" "proj-${VER}.tar.gz"
# Unpack source
-tar -zxvf proj-$VER.tar.gz
+tar -zxvf proj-${VER}.tar.gz
# Move source into 'src' directory
-mv proj-$VER/* src
-rm -rf proj-$VER
+mv proj-${VER}/* src
+rm -rf proj-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/proj/install" \
+ --prefix="${PREFIX}" \
--disable-dependency-tracking \
--enable-fast-install \
--disable-shared
@@ -51,6 +53,7 @@
make install
else
make -j $1
- make -j $1 check
+ mack -j $1 check
make -j $1 install
fi
+
Index: ../trunk-jpl/externalpackages/proj/install-6.2-with_tests.sh
===================================================================
--- ../trunk-jpl/externalpackages/proj/install-6.2-with_tests.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/proj/install-6.2-with_tests.sh (revision 25860)
@@ -6,7 +6,9 @@
#
VER="6.2.1"
-## Environnment
+PREFIX="${ISSM_DIR}/externalpackages/proj/install" # Set to location where external package should be installed
+
+## Environment
#
export CC=mpicc
export CXX=mpicxx
@@ -23,23 +25,23 @@
export SQLITE3_LIBS="-lsqlite3"
# Cleanup
-rm -rf install src
-mkdir install src
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
# Download source
$ISSM_DIR/scripts/DownloadExternalPackage.sh "http://issm.jpl.nasa.gov/files/externalpackages/proj-${VER}.tar.gz" "proj-${VER}.tar.gz"
# Unpack source
-tar -zxvf proj-$VER.tar.gz
+tar -zxvf proj-${VER}.tar.gz
# Move source into 'src' directory
-mv proj-$VER/* src
-rm -rf proj-$VER
+mv proj-${VER}/* src
+rm -rf proj-${VER}
# Configure
cd src
./configure \
- --prefix="${ISSM_DIR}/externalpackages/proj/install" \
+ --prefix="${PREFIX}" \
--disable-dependency-tracking \
--enable-fast-install
@@ -50,6 +52,6 @@
make install
else
make -j $1
- make -j $1 check
+ mack -j $1 check
make -j $1 install
fi
Index: ../trunk-jpl/externalpackages/triangle/install-linux-javascript.sh
===================================================================
--- ../trunk-jpl/externalpackages/triangle/install-linux-javascript.sh (revision 25859)
+++ ../trunk-jpl/externalpackages/triangle/install-linux-javascript.sh (revision 25860)
@@ -9,7 +9,7 @@
# Constants
#
-INSTALL_DIR="install-javascript"
+export PREFIX="${ISSM_DIR}/triangle/install" # Set to location where external package should be installed
# Environment
#
@@ -21,7 +21,7 @@
export EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" # Required after v1.38.14 to avoid undefined symbol warnings from our Fortran object files being treated as errors
# Source Emscripten environment
-source ${ISSM_DIR}/externalpackages/emscripten/install/emsdk_env.sh
+source ${EMSCRIPTEN_ROOT}/emsdk_env.sh
# Cleanup
rm -rf ${INSTALL_DIR} src
Index: ../trunk-jpl/jenkins/pine_island-mac-binaries-matlab
===================================================================
--- ../trunk-jpl/jenkins/pine_island-mac-binaries-matlab (revision 25859)
+++ ../trunk-jpl/jenkins/pine_island-mac-binaries-matlab (revision 25860)
@@ -50,10 +50,10 @@
curl install-7-mac-static.sh
netcdf install-4.7-parallel-static.sh
proj install-6.2-static.sh
- gdal install-3-netcdf-static.sh
+ gdal install-3-static.sh
gshhg install.sh
gmt install-6-mac-static.sh
- gmsh install-4-mac-static.sh
+ gmsh install-4-static.sh
triangle install-mac-static.sh
chaco install.sh
m1qn3 install.sh
Index: ../trunk-jpl/jenkins/pine_island-mac-full
===================================================================
--- ../trunk-jpl/jenkins/pine_island-mac-full (revision 25859)
+++ ../trunk-jpl/jenkins/pine_island-mac-full (revision 25860)
@@ -48,7 +48,7 @@
curl install-7-mac.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-mac.sh
gmsh install-4.sh
Index: ../trunk-jpl/jenkins/pine_island-mac-solid_earth
===================================================================
--- ../trunk-jpl/jenkins/pine_island-mac-solid_earth (revision 25859)
+++ ../trunk-jpl/jenkins/pine_island-mac-solid_earth (revision 25860)
@@ -46,7 +46,7 @@
curl install-7-mac.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-mac.sh
gmsh install-4.sh
Index: ../trunk-jpl/jenkins/ross-debian_linux-dakota
===================================================================
--- ../trunk-jpl/jenkins/ross-debian_linux-dakota (revision 25859)
+++ ../trunk-jpl/jenkins/ross-debian_linux-dakota (revision 25860)
@@ -48,7 +48,7 @@
curl install-7-linux.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-linux.sh
gmsh install-4.sh
Index: ../trunk-jpl/jenkins/ross-debian_linux-python
===================================================================
--- ../trunk-jpl/jenkins/ross-debian_linux-python (revision 25859)
+++ ../trunk-jpl/jenkins/ross-debian_linux-python (revision 25860)
@@ -42,10 +42,10 @@
curl install-7-linux.sh
netcdf install-4.7-parallel.sh
proj install-6.2.sh
- gdal install-3-python-netcdf.sh
+ gdal install-3-python.sh
gshhg install.sh
gmt install-6-linux.sh
- gmsh install-4.sh
+ gmsh install-4-linux.sh
triangle install-linux.sh
chaco install.sh
m1qn3 install.sh
Index: ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m
===================================================================
--- ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m (revision 25859)
+++ ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m (revision 25860)
@@ -14,25 +14,8 @@
% md.mesh=gmshplanet('radius',6000,'resolution',100);
% md.mesh=gmshplanet('radius',6000,'resolution',100);
- %Find path to gmsh
- paths = {...
- [issmdir() 'bin/gmsh'],...
- [issmdir() 'externalpackages/gmsh/install/gmsh']...
- };
- disp(paths{1})
- gmshpath = '';
- for i=paths
- if exist(i{1},'file'),
- gmshpath = i{1};
- break;
- end
- end
- if isempty(gmshpath),
- error('gmsh not found, make sure it is properly installed');
- end
-
% Get Gmsh version
- [s,r]=system([gmshpath ' -info 2>&1 | command grep ''Version'' | sed -e ''s/Version[[:blank:]]*:[[:blank:]]//'' | cut -d ''.'' -f1']);
+ [s,r]=system(['gmsh -info 2>&1 | command grep ''Version'' | sed -e ''s/Version[[:blank:]]*:[[:blank:]]//'' | cut -d ''.'' -f1']);
if s~=0,
error(r);
end
@@ -142,9 +125,9 @@
% "-format" option.
%
if exist(options,'refine'),
- system([gmshpath ' -tol 1e-8 -2 -format msh2 sphere.geo -bgm sphere.pos']);
+ system(['gmsh -tol 1e-8 -2 -format msh2 sphere.geo -bgm sphere.pos']);
else
- system([gmshpath ' -tol 1e-8 -2 -format msh2 sphere.geo']);
+ system(['gmsh -tol 1e-8 -2 -format msh2 sphere.geo']);
end
%import mesh: {{{