#!/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 # # - 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. # # This has only been added to macOS static builds, but may be needed # elsewhere. # 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 -fallow-argument-mismatch -static-libgfortran" \ --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