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: {{{