Changeset 26034


Ignore:
Timestamp:
02/26/21 10:56:08 (4 years ago)
Author:
jdquinn
Message:

CHG: Modifications to build system and additional configurations in support of Windows 10 MSYS2 MinGW build

Location:
issm/trunk-jpl
Files:
110 added
23 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/Makefile.am

    r16122 r26034  
    1 EXTRA_DIST = reconf scripts test m4 examples cron etc doc packages contributors.txt 
     1EXTRA_DIST = reconf scripts test m4 examples cron etc doc packages contributors.txt
    22SUBDIRS = src
    33bin_SCRIPTS= README.rtf
  • issm/trunk-jpl/configure.ac

    r25838 r26034  
    33#AUTOCONF
    44AC_INIT([Ice Sheet System Model (ISSM)],[4.19],[issm@jpl.nasa.gov],[issm],[http://issm.jpl.nasa.gov]) #Initializing configure
    5 AC_CONFIG_AUX_DIR([./aux-config])         #Put config files in aux-config
    6 AC_CONFIG_MACRO_DIR([m4])                 #m4 macros are located in m4
     5AC_CONFIG_AUX_DIR([./aux-config])       # Put config files in aux-config
     6AC_CONFIG_MACRO_DIR([m4])                       # m4 macros are located in m4
    77m4_include([m4/issm_options.m4])
    88
     
    1616
    1717#Compilers
    18 AC_PROG_CC([icc cl icl gcc])
     18AC_PROG_CC([gcc icc cl icl])
    1919AC_PROG_CPP
    20 AC_PROG_CXX([icpc cl icl g++])
    21 AC_PROG_F77([ifort g77 gfortran])
    22 AC_PROG_FC([ifort gfortran])
     20AC_PROG_CXX([g++ icpc cl icl])
     21AC_PROG_F77([g77 gfortran ifort])
     22AC_PROG_FC([gfortran ifort])
    2323
    2424#AUTOMAKE
    2525#Initialize automake and declare foreign so that we don't need a ChangeLog, INSTALL, etc
    2626AM_INIT_AUTOMAKE([foreign])
    27 AC_CONFIG_HEADERS([./config.h])   #Config file must be config.h
    28 AM_SILENT_RULES([yes])           #Do not show compilation command by default
     27AC_CONFIG_HEADERS([./config.h])         # Config file must be config.h
     28AM_SILENT_RULES([yes])                          # Do not show compilation command by default
    2929AM_PROG_AR
    3030
    3131#Libtool
    32 LT_INIT
     32LT_INIT([win32-dll])
    3333
    3434#Run issm_options.m4
     
    3737#List all Makefiles
    3838AC_CONFIG_FILES([
    39                                           Makefile
    40                                           src/Makefile
    41                                           src/c/Makefile
    42                                           src/wrappers/Makefile
    43                                           src/wrappers/python/Makefile
    44                                           src/wrappers/matlab/Makefile
    45                                           src/wrappers/javascript/Makefile
    46                                           src/mobile/Makefile
    47                                           src/mobile/native/Makefile
    48                                           src/m/Makefile
    49                                           ])
     39        Makefile
     40        src/Makefile
     41        src/c/Makefile
     42        src/wrappers/Makefile
     43        src/wrappers/python/Makefile
     44        src/wrappers/matlab/Makefile
     45        src/wrappers/javascript/Makefile
     46        src/mobile/Makefile
     47        src/mobile/native/Makefile
     48        src/m/Makefile
     49])
    5050
    5151#End of configure.ac
  • issm/trunk-jpl/etc/environment.sh

    r25913 r26034  
    168168} #}}}
    169169
     170#######################
     171# OS-specific handling
     172#######################
     173
     174OS=$(uname -s)
     175
     176if [[ "${OS}" == MINGW* || "${OS}" == MSYS* ]]; then
     177        # If this is a Windows build, we need to copy MSMPI to working $ISSM_DIR
     178        MSMPI_ROOT="${ISSM_DIR}/MSMPI"
     179        if [ ! -d "${MSMPI_ROOT}" ]; then
     180                ${ISSM_DIR}/scripts/win-msys2-create_local_msmpi_dir.sh
     181        fi
     182        export MSMPI_ROOT # Used in installation of ParMETIS, ScaLAPACK
     183        path_prepend "${ISSM_DIR}/bin" # Lets dynamic linker find DLLs
     184        cpath_prepend "${MSMPI_ROOT}/include"
     185        library_path_prepend "${MSMPI_ROOT}/lib"
     186fi
     187
    170188# Windows compilers
    171 if [[ "$ISSM_ARCH" == "cygwin-intel" ]]; then
    172         source $ISSM_DIR/externalpackages/windows/windows_environment.sh
     189if [[ "${ISSM_ARCH}" == "cygwin-intel" ]]; then
     190        source ${ISSM_DIR}/externalpackages/windows/windows_environment.sh
    173191fi
    174192
     
    176194path_append "${ISSM_DIR}/scripts"
    177195
    178 ISSM_EXT_DIR="${ISSM_DIR}/externalpackages" # Redefine this constant if externalpackages are installed to a different directory
     196# Default path to external packages. Redefine this constant if they are
     197# installed to a different directory. Alternatively, export it on the command
     198# line or in a profile initialization file (that is why we check here if it is
     199# set already).
     200#
     201if [ -z "${ISSM_EXT_DIR+x}" ]; then
     202        export ISSM_EXT_DIR="${ISSM_DIR}/externalpackages"
     203fi
    179204
    180205#########################
     
    253278fi
    254279
    255 # NOTE: Check *must* come before PETSc as we prefer packages installed via
    256 #               PETSc
     280# NOTE: The following checks *must* come before PETSc as we prefer packages
     281#               installed via PETSc
    257282#
    258 LAPACK_ROOT="${ISSM_DIR}/lapack/install"
     283BLAS_ROOT="${ISSM_EXT_DIR}/blas/install"
     284if [ -d "${BLAS_ROOT}" ]; then
     285        export BLAS_ROOT # Used in installation of LAPACK, ScaLAPACK, PETSc
     286        path_append "${BLAS_ROOT}/lib" # Lets dynamic linker find DLLs
     287        library_path_append "${BLAS_ROOT}/lib"
     288        ld_library_path_append "${BLAS_ROOT}/lib"
     289fi
     290
     291LAPACK_ROOT="${ISSM_EXT_DIR}/lapack/install"
    259292if [ -d "${LAPACK_ROOT}" ]; then
     293        export LAPACK_ROOT # Used in installation of ScaLAPACK, MUMPS, PETSc
     294        path_append "${LAPACK_ROOT}/lib" # Lets dynamic linker find DLLs
     295        library_path_append "${LAPACK_ROOT}/lib"
    260296        ld_library_path_append "${LAPACK_ROOT}/lib"
    261297fi
    262298
    263 # NOTE: Check *must* come before PETSc as we prefer packages installed via
    264 #               PETSc
    265 #
    266 ZLIB_ROOT="${ISSM_DIR}/zlib/install"
     299METIS_ROOT="${ISSM_EXT_DIR}/metis/install"
     300if [ -d "${METIS_ROOT}" ]; then
     301        export METIS_ROOT # Used in installation of ParMETIS, Gmsh, PETSc
     302        path_append "${METIS_ROOT}/lib" # Lets dynamic linker find DLLs
     303        library_path_prepend "${METIS_ROOT}/lib"
     304        ld_library_path_prepend "${METIS_ROOT}/lib"
     305fi
     306
     307MUMPS_ROOT="${ISSM_EXT_DIR}/mumps/install"
     308if [ -d "${MUMPS_ROOT}" ]; then
     309        export MUMPS_ROOT # Used in installation of PETSc
     310        path_append "${MUMPS_ROOT}/lib" # Lets dynamic linker find DLLs
     311        library_path_append "${MUMPS_ROOT}/lib"
     312fi
     313
     314PARMETIS_ROOT="${ISSM_EXT_DIR}/parmetis/install"
     315if [ -d "${PARMETIS_ROOT}" ]; then
     316        export PARMETIS_ROOT # Used in installation of MUMPS, PETSc
     317        path_append "${PARMETIS_ROOT}/lib" # Lets dynamic linker find DLLs
     318        library_path_prepend "${PARMETIS_ROOT}/lib"
     319        ld_library_path_prepend "${PARMETIS_ROOT}/lib"
     320fi
     321
     322SCALAPACK_ROOT="${ISSM_EXT_DIR}/scalapack/install"
     323if [ -d "${SCALAPACK_ROOT}" ]; then
     324        export SCALAPACK_ROOT # Used in installation of MUMPS, PETSc
     325        path_append "${SCALAPACK_ROOT}/lib" # Lets dynamic linker find DLLs
     326        library_path_append "${SCALAPACK_ROOT}/lib"
     327fi
     328
     329ZLIB_ROOT="${ISSM_EXT_DIR}/zlib/install"
    267330if [ -d "${ZLIB_ROOT}" ]; then
    268331        export ZLIB_ROOT # Used in installation of NetCDF, GDAL, GMT
     
    271334
    272335PETSC_ROOT="${ISSM_EXT_DIR}/petsc/install"
    273 if [ -d "$PETSC_ROOT" ]; then
     336if [ -d "${PETSC_ROOT}" ]; then
    274337        export PETSC_ROOT # Used in installation of Gmsh
     338        path_append "${PETSC_ROOT}/lib" # Lets dynamic linker find DLLs
     339        library_path_prepend "${PETSC_ROOT}/lib"
    275340        ld_library_path_prepend "${PETSC_ROOT}/lib"
    276341
     
    446511TRIANGLE_ROOT="${ISSM_EXT_DIR}/triangle/install"
    447512if [ -d "${TRIANGLE_ROOT}" ]; then
     513        path_append "${TRIANGLE_ROOT}/lib" # Lets dynamic linker find DLLs
    448514        ld_library_path_append "${TRIANGLE_ROOT}/lib"
    449515        dyld_library_path_append "${TRIANGLE_ROOT}/lib"
  • issm/trunk-jpl/jenkins/jenkins.sh

    r25979 r26034  
    77# members of the ISSM development team.
    88#
     9# NOTE:
     10# - Variable OS is set in environment by running
     11#       `source $ISSM_DIR/etc/environment.sh`.
     12#
    913# TODO:
    1014# - Rename TEMP to something more descriptive (ensure first that other parts of
     
    1418
    1519echo "Cleaning up execution directory"
    16 rm -rf $ISSM_DIR/execution/*
    17 rm -rf $ISSM_DIR/nightlylog
    18 mkdir $ISSM_DIR/nightlylog
     20rm -rf ${ISSM_DIR}/execution/*
     21rm -rf ${ISSM_DIR}/nightlylog
     22mkdir ${ISSM_DIR}/nightlylog
    1923
    2024#Server URI
     
    5357fi
    5458
    55 #Get Operating system (OS) name{{{
    56 OS=$(uname -s)
    57 if [[ $OS == CYGWIN* ]]; then
    58         OS="win";
    59 fi
    60 #}}}
    61 
    6259#Install ISSM
    6360#Determining installation type depending on svn changes{{{
     
    6562echo "             Determining Installation type            "
    6663echo "======================================================";
    67 if [ -a $ISSM_DIR/svn_revision_old ]; then
    68         SVN_PREVIOUS=$(cat $ISSM_DIR/svn_revision_old)
     64if [ -a ${ISSM_DIR}/svn_revision_old ]; then
     65        SVN_PREVIOUS=$(cat ${ISSM_DIR}/svn_revision_old)
    6966        SVN_CURRENT=$SVN_REVISION_1
    7067        echo "Previous revision number: $SVN_PREVIOUS"
     
    7471        #
    7572
    76         #svn --non-interactive --no-auth-cache --trust-server-cert diff -r $SVN_PREVIOUS:$SVN_CURRENT --summarize $ISSM_DIR | awk '{print $NF}' > $ISSM_DIR/TEMP
     73        #svn --non-interactive --no-auth-cache --trust-server-cert diff -r $SVN_PREVIOUS:$SVN_CURRENT --summarize ${ISSM_DIR} | awk '{print $NF}' > ${ISSM_DIR}/TEMP
    7774
    7875        # Get list of changes from Jenkins itself as svn requires credentials
     
    8178
    8279        # Process html page and get the list of files that has changed (tricky...)
    83         #cat changes | grep '="The file was modified"' | sed -e 's/.*<\/td><td><a>\(.*\)<\/a><\/td><td>.*/\1/' > $ISSM_DIR/TEMP
     80        #cat changes | grep '="The file was modified"' | sed -e 's/.*<\/td><td><a>\(.*\)<\/a><\/td><td>.*/\1/' > ${ISSM_DIR}/TEMP
    8481        #cat changes | grep 'document_edit' |sed -e 's/document_edit.png/document_edit.png\
    85                 #/g' | sed -e 's/.*<\/a><\/td><td>\(.*\)<\/td><\/tr>.*/\1/' | grep -v 'document_edit.png' > $ISSM_DIR/TEMP
    86         cat changes | tr " " "\n" | grep trunk | sed -e 's/.*<a>\(.*\)<\/a>.*/\1/' > $ISSM_DIR/TEMP
     82                #/g' | sed -e 's/.*<\/a><\/td><td>\(.*\)<\/td><\/tr>.*/\1/' | grep -v 'document_edit.png' > ${ISSM_DIR}/TEMP
     83        cat changes | tr " " "\n" | grep trunk | sed -e 's/.*<a>\(.*\)<\/a>.*/\1/' > ${ISSM_DIR}/TEMP
    8784
    8885        # Print list of changed files
    8986        echo "   "
    9087        echo "List of updated files"
    91         cat $ISSM_DIR/TEMP
     88        cat ${ISSM_DIR}/TEMP
    9289        echo "   "
    9390
     
    9996        # If the contents of the externalpackages directory were modified in any
    10097        # way, check for changed external packages
    101         if [ ! -z "$(cat $ISSM_DIR/TEMP | grep externalpackages)" ]; then
     98        if [ ! -z "$(cat ${ISSM_DIR}/TEMP | grep externalpackages)" ]; then
    10299                echo "  -- checking for changed externalpackages... yes"
    103100                ISSM_EXTERNALPACKAGES="yes"
     
    109106        # If the Makefile or m4 diirectory were changed in any way or if certain
    110107        # binary files from a previous compilation do not exist, reconfigure
    111         if [ ! -z "$(cat $ISSM_DIR/TEMP | grep -e "Makefile.am" -e "m4" )" ] ||
    112                 [ ! -f "$ISSM_DIR/bin/issm.exe" ] && [ ! -f "$ISSM_DIR/bin/issm-bin.js" ] ||
     108        if [ ! -z "$(cat ${ISSM_DIR}/TEMP | grep -e "Makefile.am" -e "m4" )" ] ||
     109                [ ! -f "${ISSM_DIR}/bin/issm.exe" ] && [ ! -f "${ISSM_DIR}/bin/issm-bin.js" ] ||
    113110                [ "$ISSM_EXTERNALPACKAGES" == "yes" ]; then
    114111                echo "  -- checking for reconfiguration... yes"
     
    120117
    121118        # If source files were changed in any way, recompile
    122         if [ ! -z "$(cat $ISSM_DIR/TEMP | grep -e "\.cpp" -e "\.h" )" ] ||
     119        if [ ! -z "$(cat ${ISSM_DIR}/TEMP | grep -e "\.cpp" -e "\.h" )" ] ||
    123120                [ "$ISSM_RECONFIGURE" == "yes" ]; then
    124121                echo "  -- checking for recompilation... yes"
     
    131128        # Cleanup
    132129        rm changes
    133         rm $ISSM_DIR/TEMP
     130        rm ${ISSM_DIR}/TEMP
    134131else
    135132        echo "Previous revision not found, this must be a fresh install"
     
    144141echo " "
    145142echo "Recording current svn version: $SVN_REVISION_1"
    146 echo $SVN_REVISION_1 > $ISSM_DIR/svn_revision_old
     143echo $SVN_REVISION_1 > ${ISSM_DIR}/svn_revision_old
    147144#}}}
    148145
     
    154151
    155152#Jenkins XML files for individual packages
    156 EXTERNAL_TEST_FILE="$ISSM_DIR/nightlylog/results/external.xml"
    157 mkdir -p $ISSM_DIR/nightlylog/results
     153EXTERNAL_TEST_FILE="${ISSM_DIR}/nightlylog/results/external.xml"
     154mkdir -p ${ISSM_DIR}/nightlylog/results
    158155echo "<testsuite tests=\"$NUMPACKAGES\">" > $EXTERNAL_TEST_FILE
    159156
    160157# Need a source here for when builds start midway through installation of externalpackages.
    161 source $ISSM_DIR/etc/environment.sh
    162 
    163 if [ "$OS" == "win" ]; then
     158source ${ISSM_DIR}/etc/environment.sh
     159
     160if [ "${OS}" == CYGWIN* ]; then
    164161        echo " == WINDOWS ENVIRONMENT DETECTED =="
    165         source $ISSM_DIR/externalpackages/windows/windows_environment.sh
     162        source ${ISSM_DIR}/externalpackages/windows/windows_environment.sh
    166163fi
    167164
     
    175172
    176173        #install if requested or if previous install has not been successful
    177         if [ "$ISSM_EXTERNALPACKAGES" == "yes" ]; then # NOTE: Removed check on if 'install' directory exist
    178                 cd $ISSM_DIR/externalpackages/$PACKAGENAME
     174        if [ "${ISSM_EXTERNALPACKAGES}" == "yes" ]; then # NOTE: Removed check on if 'install' directory exist
     175                cd ${ISSM_DIR}/externalpackages/$PACKAGENAME
    179176
    180177                echo "======================================================";
     
    183180
    184181                ./$PACKAGEINST $NUMCPUS_INSTALL &> compil.log
    185                 if [ $? -ne 0 ] && [ "$PACKAGENAME" != "boost" ]; then
     182                if [ $? -ne 0 ] && [ "${PACKAGENAME}" != "boost" ]; then
    186183                        cat compil.log
    187184                        echo "======================================================";
     
    197194                        echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\"/>" >> $EXTERNAL_TEST_FILE
    198195                fi
    199                 source $ISSM_DIR/etc/environment.sh
     196                source ${ISSM_DIR}/etc/environment.sh
    200197
    201198                #If external package is rebuilt, we also need to recompile
     
    220217
    221218# Source here to include any newly installed externalpackages on the path.
    222 source $ISSM_DIR/etc/environment.sh
    223 
    224 if [ "$OS" == "win" ]; then
     219source ${ISSM_DIR}/etc/environment.sh
     220
     221if [ "${OS}" == CYGWIN* ]; then
    225222        echo " == WINDOWS ENVIRONMENT DETECTED =="
    226         source $ISSM_DIR/externalpackages/windows/windows_environment.sh
     223        source ${ISSM_DIR}/externalpackages/windows/windows_environment.sh
    227224fi
    228225
     
    244241        #export EMCC_DEBUG=1 # Uncomment to enable debugging
    245242        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
    246         source $ISSM_DIR/externalpackages/emscripten/install/emsdk_env.sh
     243        source ${ISSM_DIR}/externalpackages/emscripten/install/emsdk_env.sh
    247244fi
    248245
    249246#}}}
    250247#ISSM compilation yes/no                (ISSM_COMPILATION) {{{
    251 if [ "$ISSM_COMPILATION" == "yes" ]; then
     248if [ "${ISSM_COMPILATION}" == "yes" ]; then
    252249        cd $ISSM_DIR
    253         if [ "$ISSM_RECONFIGURE" == "yes" ]; then
     250        if [ "${ISSM_RECONFIGURE}" == "yes" ]; then
    254251                echo "======================================================";
    255252                echo "             Cleaning up and reconfiguring            "
     
    262259                        exit 1
    263260                fi
    264                 eval "./configure $ISSM_CONFIG"
     261                eval "./configure ${ISSM_CONFIG}"
    265262                if [ $? -ne 0 ]; then
    266263                        echo "ISSM configuration failed (see options below)"
     
    276273        echo "======================================================"
    277274        if [ $NUMCPUS_INSTALL -gt 1 ]; then
    278                 echo "Making with " $NUMCPUS_INSTALL " cpus"
     275                echo "Making with ${NUMCPUS_INSTALL} cpus"
     276
     277                # To debug compilation/linking, add 'V=1' option to the call to make
     278                #make -j $NUMCPUS_INSTALL V=1
    279279                make -j $NUMCPUS_INSTALL
    280280        else
     281                #make V=1
    281282                make
    282283        fi
     
    292293        fi
    293294        make install
    294 elif [ "$ISSM_COMPILATION" == "no" ]
    295 then
     295elif [ "${ISSM_COMPILATION}" == "no" ]; then
    296296        echo "Skipping ISSM compilation"
    297297else
     
    311311        for (( i=1;i<=$NUMCPUS_RUN;i++ )); do
    312312                #Launch matlab and the nightly run script
    313                 cat > $ISSM_DIR/nightlylog/matlab_run$i.m << EOF
     313                cat > ${ISSM_DIR}/nightlylog/matlab_run$i.m << EOF
    314314                warning off %necessary to avoid a log of several Go for parallel runs
    315315                try,
    316                         $(if [ "$MATLAB_NROPTIONS" = "" ]; then
    317                                 echo "runme('output','nightly','rank',$i,'numprocs',$NUMCPUS_RUN);"
     316                        $(if [ "${MATLAB_NROPTIONS}" = "" ]; then
     317                                echo "runme('output','nightly','rank',${i},'numprocs',${NUMCPUS_RUN});"
    318318                        else
    319                                 echo "runme($MATLAB_NROPTIONS,'output','nightly','rank',$i,'numprocs',$NUMCPUS_RUN);"
     319                                echo "runme(${MATLAB_NROPTIONS},'output','nightly','rank',${i},'numprocs',${NUMCPUS_RUN});"
    320320                        fi)
    321321                catch me,
     
    332332EOF
    333333                cd $ISSM_DIR/test/NightlyRun
    334                 if [ "$OS" = "win" ]; then
    335                         $MATLAB_PATH/bin/matlab -nodisplay -nosplash -r "addpath $ISSM_DIR_WIN/src/m/dev; devpath; addpath $ISSM_DIR_WIN/nightlylog/; matlab_run$i" -logfile $ISSM_DIR_WIN/nightlylog/matlab_log$i.log &
     334                if [[ "${OS}" == CYGWIN* || "${OS}" == MINGW* ]]; then
     335                        $MATLAB_PATH/bin/matlab -nodesktop -nosplash -nojvm -r "addpath ${ISSM_DIR_WIN}/src/m/dev; devpath; addpath ${ISSM_DIR_WIN}/nightlylog; matlab_run$i" -logfile ${ISSM_DIR_WIN}/nightlylog/matlab_log$i.log &
    336336                else
    337                         $MATLAB_PATH/bin/matlab -nodisplay -nosplash -r "addpath $ISSM_DIR/src/m/dev; devpath; addpath $ISSM_DIR/nightlylog/; matlab_run$i" -logfile $ISSM_DIR/nightlylog/matlab_log$i.log &
     337                        $MATLAB_PATH/bin/matlab -nodisplay -nosplash -r "addpath ${ISSM_DIR}/src/m/dev; devpath; addpath ${ISSM_DIR}/nightlylog; matlab_run$i" -logfile ${ISSM_DIR}/nightlylog/matlab_log$i.log &
    338338                fi
    339339        done
    340340
    341         #wait until matlab closes
    342         if [ "$OS" = "win" ]; then
     341        # Wait for MATLAB to exit
     342        if [[ "${OS}" == CYGWIN* ]]; then
    343343                sleep 5;
    344                 echo "Waiting for matlab on windows"
     344                echo "Waiting for MATLAB to exit"
    345345                pid=$(ps aux -W | grep MATLAB | awk '{printf("%s\n","MATLAB");}')
    346346                echo '-----------------------------'
    347                 echo "pid: $pid"
     347                echo "pid: ${pid}"
    348348                echo '-----------------------------'
    349                 while [ -n "$pid" ]; do
     349                while [ -n "${pid}" ]; do
    350350                        pid=$(ps aux -W | grep MATLAB | awk '{printf("%s\n","MATLAB");}')
    351351                        sleep 1;
    352352                done
    353353                echo "DONE!"
     354        elif [[ "${OS}" == MINGW* ]]; then
     355                # NOTE: The PID query used here may work as well on Cygwin. If so, combine the two conditional blocks.
     356                sleep 5;
     357                echo "Waiting for MATLAB to exit"
     358                pid=$(ps -W | grep MATLAB | awk '{print $1}')
     359                echo '-----------------------------'
     360                echo "pid: ${pid}"
     361                echo '-----------------------------'
     362                while [ -n "${pid}" ]; do
     363                        pid=$(ps -W | grep MATLAB | awk '{print $1}')
     364                        sleep 1;
     365                done
    354366        else
    355367                wait
    356368        fi
    357369
    358         #concatenate reports
    359         cd $ISSM_DIR/nightlylog/
    360         #echo 'CHECKING NIGHTLYLOG DIRECTORY'
    361         #echo '-----------------------------'
    362         #ls -la
    363         #echo '-----------------------------'
     370        # Concatenate logs
     371        cd $ISSM_DIR/nightlylog
    364372
    365373        if [ -f matlab_log.log ]; then
     
    368376
    369377        for job in `jobs -p`; do
    370                 echo "Waiting on: $job"
     378                #echo "Waiting on: ${job}" # Commented out because it really has nothing to do with MATLAB processes
    371379                wait $job
    372380        done
     
    387395if [ $PYTHON_TEST -eq 1 ]; then
    388396        #Launch all tests on different cpus
    389         export PYTHONPATH="$ISSM_DIR/src/m/dev"
     397        export PYTHONPATH="${ISSM_DIR}/src/m/dev"
    390398        export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
    391399        export PYTHONUNBUFFERED=1 #we don't want python to buffer otherwise issm.exe output is not captured
     
    398406        done
    399407
    400         # concatenate reports
    401         cd $ISSM_DIR/nightlylog/
     408        # Concatenate logs
     409        cd $ISSM_DIR/nightlylog
    402410        if [ -f python_log.log ]; then
    403411                rm python_log.log
     
    406414        for job in `jobs -p`
    407415        do
    408                 echo "Waiting on: $job"
     416                echo "Waiting on: ${job}"
    409417                wait $job
    410418        done
     
    429437# }}}
    430438
    431 #process logs to be junit compatible
     439# Process logs to be JUnit compatible
    432440#{{{
    433441cd $ISSM_DIR/nightlylog
  • issm/trunk-jpl/m4/issm_options.m4

    r25929 r26034  
    3131                PACKAGE_DATE="unknown"
    3232        fi
    33         AC_DEFINE_UNQUOTED(PACKAGE_BUILD_DATE, "$PACKAGE_DATE", [build date])
     33        AC_DEFINE_UNQUOTED([PACKAGE_BUILD_DATE], "${PACKAGE_DATE}", [build date])
    3434        AC_MSG_RESULT([${PACKAGE_DATE}])
    3535
     
    4646                fi
    4747        fi
    48         AC_DEFINE_UNQUOTED(USER_NAME, "$user_name", [user name])
     48        AC_DEFINE_UNQUOTED([USER_NAME], "${user_name}", [user name])
    4949        AC_MSG_RESULT([${user_name}])
    5050
     
    5555                linux-gnu* | lignux* )  host_os=linux ;;
    5656        esac
    57         AC_DEFINE_UNQUOTED(HOST_OS, "$host_os", [host full OS name and version])
     57        AC_DEFINE_UNQUOTED([HOST_OS], "${host_os}", [host full OS name and version])
    5858        AC_MSG_RESULT([${host_os}])
    5959
    6060        AC_MSG_CHECKING([host cpu])
    61         AC_DEFINE_UNQUOTED(HOST_CPU, "$host_cpu", [host CPU])
     61        AC_DEFINE_UNQUOTED([HOST_CPU], "${host_cpu}", [host CPU])
    6262        AC_MSG_RESULT([${host_cpu}])
    6363
    6464        AC_MSG_CHECKING([vendor])
    65         AC_DEFINE_UNQUOTED(HOST_VENDOR, "$host_vendor", [host vendor])
     65        AC_DEFINE_UNQUOTED([HOST_VENDOR], "${host_vendor}", [host vendor])
    6666        AC_MSG_RESULT([${host_vendor}])
    6767
     
    7373                linux-gnu* | lignux* )  host_os_name=linux ;;
    7474        esac
    75         AC_DEFINE_UNQUOTED(HOST_OS_NAME, "$host_os_name", [host OS name])
     75        AC_DEFINE_UNQUOTED([HOST_OS_NAME], "${host_os_name}", [host OS name])
    7676        AC_MSG_RESULT([${host_os_name}])
    7777
     
    8282                host_os_version=`(uname -r) 2>/dev/null` || host_os_version=unknown
    8383        fi
    84         AC_DEFINE_UNQUOTED(HOST_OS_VERSION, "$host_os_version", [host OS version])
     84        AC_DEFINE_UNQUOTED([HOST_OS_VERSION], "${host_os_version}", [host OS version])
    8585        AC_MSG_RESULT([${host_os_version}])
    8686
     
    9595                i?86 )  host_arch=i386 ;; # all x86 should show up as i386
    9696        esac
    97         AC_DEFINE_UNQUOTED(HOST_ARCH, "$host_arch", [host archictecture])
     97        AC_DEFINE_UNQUOTED([HOST_ARCH], "${host_arch}", [host archictecture])
    9898        AC_MSG_RESULT([${host_arch}])
    9999
     
    219219                AC_MSG_RESULT([no])
    220220        fi
    221         AC_DEFINE_UNQUOTED([_SYSTEM_HAS_FMEMOPEN_], $SYSTEM_FMEMOPEN, [does system copy of libc have fmemopen])
     221        AC_DEFINE_UNQUOTED([_SYSTEM_HAS_FMEMOPEN_], ${SYSTEM_FMEMOPEN}, [does system copy of libc have fmemopen])
    222222        AM_CONDITIONAL([SYSTEM_HAS_FMEMOPEN], [test "${SYSTEM_FMEMOPEN}" == "1"])
    223223
     224        IS_MSYS2=no
    224225        IS_WINDOWS=no
    225226        AC_MSG_CHECKING([for vendor compilers])
     
    318319                        export CFLAGS="-g -O3 -ipo -axAVX -ipo -no-inline-min-size -inline-max-size=345 -no-inline-max-total-size -no-inline-max-per-routine -no-inline-max-per-compile -restrict"
    319320                        AC_DEFINE([_HAVE_RESTRICT_], [1], [with restrict buffers])
     321                elif test "${VENDOR}" == "win-msys2"; then
     322                        export LDFLAGS="${LDFLAGS} -no-undefined"
     323                        export OSLIBS="-Wl,-L/mingw64/lib/gcc/x86_64-w64-mingw32/10.2.0 -Wl,-L/mingw64/x86_64-w64-mingw32/lib -Wl,-lstdc++ -Wl,-lgfortran -Wl,-lmingw32 -Wl,-lgcc_s -Wl,-lmoldname -Wl,-lmingwex -Wl,-lmsvcrt -Wl,-lm -Wl,-lpthread -Wl,-lshell32 -Wl,-luser32 -Wl,-lgdi32 -Wl,-luser32 -Wl,-ladvapi32 -Wl,-lkernel32 -Wl,-lquadmath -Wl,-lstdc++ -Wl,-lgcc"
     324                        IS_MSYS2=yes
    320325                else
    321326                        AC_MSG_ERROR([unknown compiler vendor!])
    322327                fi
    323328        fi
     329        dnl Set default standard for C++
     330        if test "${CXXFLAGS}" == ""; then
     331                export CXXFLAGS="-std=C++11"
     332        fi
    324333        AC_SUBST([OSLIBS])
    325334        AC_MSG_RESULT([done])
    326335
    327         AC_MSG_CHECKING([if this is a Windows build])
     336        AC_MSG_CHECKING([if this is a MSVC (Windows) build])
    328337        AM_CONDITIONAL([WINDOWS], [test "x${IS_WINDOWS}" == "xyes"])
    329338        AC_MSG_RESULT([${IS_WINDOWS}])
     339
     340        AC_MSG_CHECKING([if this is a MSYS2 (Windows) build])
     341        AM_CONDITIONAL([MSYS2], [test "x${IS_MSYS2}" == "xyes"])
     342        AC_MSG_RESULT([${IS_MSYS2}])
     343        AC_DEFINE([_IS_MSYS2_], [1], [is a MSYS2 (Windows) build])
    330344        dnl }}}
    331345        dnl MATLAB{{{
    332346
    333347        dnl See if MATLAB has been provided
     348        AC_MSG_CHECKING([for MATLAB])
    334349        AC_ARG_WITH(
    335350                [matlab-dir],                                                                                                           dnl feature
     
    338353                [MATLAB_ROOT="no"]                                                                                                      dnl action if not given
    339354        )
    340         AC_MSG_CHECKING([for MATLAB])
    341355        if test "x${MATLAB_ROOT}" == "xno"; then
    342356                HAVE_MATLAB=no
     
    357371                AC_DEFINE([_HAVE_MATLAB_], [1], [with MATLAB in ISSM src])
    358372
    359                 dnl Set MEXLIB, MEXLINK, and MEXEXT
     373                dnl Set MEX* variable
    360374                AC_MSG_CHECKING([MATLAB's mex compilation flags])
    361375
     
    367381                                if test "${VENDOR}" == "intel-win7-32"; then
    368382                                        MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib"
    369                                         MEXLINK="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win32/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
     383                                        MEXLINKFLAGS="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win32/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
    370384                                        MEXEXT=`${MATLAB_ROOT}/bin/mexext.bat`
    371385                                        MEXEXT=".${MEXEXT}"
    372386                                elif test "${VENDOR}" == "intel-win7-64"; then
    373387                                        MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib"
    374                                         MEXLINK="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
     388                                        MEXLINKFLAGS="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
    375389                                        MEXEXT=".mexw64"
    376390                                elif test "${VENDOR}" == "MSVC-Win64" || test "${VENDOR}" == "MSVC-Win64-par"; then
    377391                                        MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib"
    378                                         MEXLINK="-Wl,/link -Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
     392                                        MEXLINKFLAGS="-Wl,/link -Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
    379393                                        MATLABINCL="-I`cygpath -m ${MATLAB_ROOT}/extern/include`"
    380394                                        MEXEXT=".mexw64"
    381395                                fi
    382396                        ;;
     397                        *mingw*)
     398                                if test "${IS_MSYS2}" == "yes"; then
     399                                        dnl Value to set MEXEXT to can be found on Windows by running $MATLAB_ROOT/bin/mexext.bat
     400                                        MEXEXT=".mexw64"
     401                                        MATLABINCL="-I${MATLAB_ROOT}/extern/include"
     402                                        MEXOPTFLAGS="-O2 -fwrapv -DNDEBUG -g"
     403                                        MEXCFLAGS="-fexceptions -fno-omit-frame-pointer -m64 -DMATLAB_MEX_FILE"
     404                                        MEXCXXFLAGS="-fexceptions -fno-omit-frame-pointer -std=c++11 -m64 -DMATLAB_MEX_FILE"
     405                                        MEXLINKFLAGS="-m64 -Wl,--no-undefined -shared -static -Wl,${MATLAB_ROOT}/extern/lib/win64/mingw64/mexFunction.def"
     406                                        MEXLIB_DIR="${MATLAB_ROOT}/extern/lib/win64/mingw64"
     407                                        MEXLIB="-L${MEXLIB_DIR} -lmx -lmex -lmat -lm -lmwlapack -lmwblas"
     408                                fi
     409                        ;;
     410                        *msys*)
     411                                dnl Value to set MEXEXT to can be found on Windows by running $MATLAB_ROOT/bin/mexext.bat
     412                                MEXEXT=".mexw64"
     413                                MATLABINCL="-I${MATLAB_ROOT}/extern/include"
     414                                MEXOPTFLAGS="-O2 -fwrapv -DNDEBUG -g"
     415                                MEXCFLAGS="-fexceptions -fno-omit-frame-pointer -m64 -DMATLAB_MEX_FILE"
     416                                MEXCXXFLAGS="-fexceptions -fno-omit-frame-pointer -std=c++11 -m64 -DMATLAB_MEX_FILE"
     417                                MEXLINKFLAGS="-m64 -Wl,--no-undefined -shared -static -Wl,${MATLAB_ROOT}/extern/lib/win64/mingw64/mexFunction.def"
     418                                MEXLIB_DIR="${MATLAB_ROOT}/extern/lib/win64/mingw64"
     419                                MEXLIB="-L${MEXLIB_DIR} -lmx -lmex -lmat -lm -lmwlapack -lmwblas"
     420                        ;;
    383421                        *)
     422                                MEXEXT=$(${MATLAB_ROOT}/bin/mex -v 2>&1 < /dev/null | grep LDEXTENSION | sed -e "s/         LDEXTENSION        = //g")
    384423                                MATLABINCL="-I${MATLAB_ROOT}/extern/include"
    385                                 MEXLINK=$(${MATLAB_ROOT}/bin/mex -v 2>&1 < /dev/null | grep LDFLAGS | sed -e "s/         LDFLAGS            = //g")
     424                                MEXLINKFLAGS=$(${MATLAB_ROOT}/bin/mex -v 2>&1 < /dev/null | grep LDFLAGS | sed -e "s/         LDFLAGS            = //g")
    386425                                MEXLIB=$(${MATLAB_ROOT}/bin/mex -v 2>&1 < /dev/null | grep CXXLIBS | sed -e "s/         CXXLIBS            = //g")
    387                                 MEXEXT=$(${MATLAB_ROOT}/bin/mex -v 2>&1 < /dev/null | grep LDEXTENSION | sed -e "s/         LDEXTENSION        = //g")
    388                                 dnl version 2014 and up
    389426                                if test -z "${MEXEXT}"; then
    390427                                        echo "#include <mex.h>" > conftest.cpp
     
    392429                                        ${MATLAB_ROOT}/bin/mex -v -lmex conftest.cpp > conftest.tmp 2>&1
    393430                                        rm -f conftest.cpp
    394                                         MEXLINK=$(cat conftest.tmp | grep LDFLAGS | sed -e "s/LDFLAGS ://g")
     431                                        MEXLINKFLAGS=$(cat conftest.tmp | grep LDFLAGS | sed -e "s/LDFLAGS ://g")
    395432                                        MEXLIB=$(cat conftest.tmp | grep LINKLIBS | sed -e "s/LINKLIBS ://g")
    396433                                        MEXEXT=$(cat conftest.tmp | grep LDEXT | sed -e "s/LDEXT ://g" | awk '{print $[1]}')
     
    402439
    403440                                dnl Make sure mexFunction.map is not in MEXLIB to avoid problems with global variables
    404                                 dnl MEXLINK=$(echo ${MEXLINK} | sed -e "s/,-expo.*mexFunction\\.map\"//g" | sed -e "s/-[[^ ]]*mexFunction\\.map//g")
    405                                 MEXLINK="" dnl We actually don't need MEXLINK????
     441                                dnl MEXLINKFLAGS=$(echo ${MEXLINKFLAGS} | sed -e "s/,-expo.*mexFunction\\.map\"//g" | sed -e "s/-[[^ ]]*mexFunction\\.map//g")
     442                                MEXLINKFLAGS="" dnl We actually don't need MEXLINK????
    406443                        ;;
    407444                esac
     
    411448                fi
    412449
     450                AC_SUBST([MEXEXT])
     451                AC_SUBST([MEXOPTFLAGS])
     452                AC_SUBST([MEXCFLAGS])
     453                AC_SUBST([MEXCXXFLAGS])
    413454                AC_SUBST([MATLABINCL])
    414                 MATLABWRAPPEREXT=${MEXEXT}
    415                 AC_SUBST([MATLABWRAPPEREXT])
     455                AC_SUBST([MEXLINKFLAGS])
    416456                AC_SUBST([MEXLIB])
    417                 AC_SUBST([MEXLINK])
    418457        fi
    419458        dnl }}}
    420459        dnl JavaScript{{{
     460        AC_MSG_CHECKING([for JavaScript])
    421461        AC_ARG_WITH(
    422462                [javascript],
     
    425465                [JAVASCRIPT="no"]
    426466        )
    427         AC_MSG_CHECKING([for JavaScript])
    428467        if test "x${JAVASCRIPT}" == "xno"; then
    429468                HAVE_JAVASCRIPT=no
     
    438477        dnl }}}
    439478        dnl Triangle {{{
     479        AC_MSG_CHECKING([for triangle])
    440480        AC_ARG_WITH(
    441481                [triangle-dir],
     
    444484                [TRIANGLE_ROOT="no"]
    445485        )
    446         AC_MSG_CHECKING([for triangle])
    447486        if test "x${TRIANGLE_ROOT}" == "xno"; then
    448487                HAVE_TRIANGLE=no
     
    483522                                fi
    484523                        ;;
     524                        *mingw*)
     525                                if test "x${HAVE_JAVASCRIPT}" == "xyes"; then
     526                                        dnl Link to the object file, not the library
     527                                        TRIANGLELIB=${TRIANGLE_ROOT}/share/triangle.o
     528                                else
     529                                        TRIANGLELIB="-L${TRIANGLE_ROOT}/lib -ltriangle"
     530                                fi
     531                        ;;
     532                        *msys*)
     533                                if test "x${HAVE_JAVASCRIPT}" == "xyes"; then
     534                                        dnl Link to the object file, not the library
     535                                        TRIANGLELIB=${TRIANGLE_ROOT}/share/triangle.o
     536                                else
     537                                        TRIANGLELIB="-L${TRIANGLE_ROOT}/lib -ltriangle"
     538                                fi
     539                        ;;
    485540                esac
    486541                AC_DEFINE([_HAVE_TRIANGLE_], [1], [with Triangle in ISSM src])
     
    490545        dnl }}}
    491546        dnl Boost{{{
     547        AC_MSG_CHECKING([for Boost])
    492548        AC_ARG_WITH(
    493549                [boost-dir],
     
    496552                [BOOST_ROOT="no"]
    497553        )
    498         AC_MSG_CHECKING([for Boost])
    499554        if test "x${BOOST_ROOT}" == "xno"; then
    500555                HAVE_BOOST=no
     
    523578        dnl }}}
    524579        dnl Dakota{{{
     580        AC_MSG_CHECKING([for Dakota])
    525581        AC_ARG_WITH(
    526582                [dakota-dir],
     
    529585                [DAKOTA_ROOT="no"]
    530586        )
    531         AC_MSG_CHECKING([for Dakota])
    532587        if test "x${DAKOTA_ROOT}" == "xno"; then
    533588                HAVE_DAKOTA=no
     
    547602                AC_MSG_CHECKING(for Dakota version)
    548603                dnl TODO:       Check if this method applies to all other versions of
    549                 dnl                     Dakota (it should as long as the Dakota binaries have been
     604                dnl                     Dakota (it should as long as the Dakota binaries have been 
    550605                dnl             compiled). If so, we can remove the other methods of
    551606                dnl                     getting the version.
     
    564619                fi
    565620                AC_MSG_RESULT([${DAKOTA_VERSION}])
    566                 AC_DEFINE_UNQUOTED(_DAKOTA_VERSION_, "${DAKOTA_VERSION}", [Dakota version number])
     621                AC_DEFINE_UNQUOTED([_DAKOTA_VERSION_], ${DAKOTA_VERSION}, [Dakota version number])
    567622
    568623                DAKOTAFLAGS=""
     
    679734                AC_MSG_CHECKING(for Dakota major version)
    680735                AC_MSG_RESULT(${DAKOTA_MAJOR})
    681                 AC_DEFINE_UNQUOTED(_DAKOTA_MAJOR_, $DAKOTA_MAJOR, [Dakota major version number])
     736                AC_DEFINE_UNQUOTED([_DAKOTA_MAJOR_], ${DAKOTA_MAJOR}, [Dakota major version number])
    682737                AC_MSG_CHECKING(for Dakota minor version)
    683738                AC_MSG_RESULT(${DAKOTA_MINOR})
    684                 AC_DEFINE_UNQUOTED(_DAKOTA_MINOR_, $DAKOTA_MINOR, [Dakota minor version number])
     739                AC_DEFINE_UNQUOTED([_DAKOTA_MINOR_], ${DAKOTA_MINOR}, [Dakota minor version number])
    685740                AC_MSG_CHECKING(for Dakota build version)
    686741                AC_MSG_RESULT(${DAKOTA_BUILD})
    687                 AC_DEFINE_UNQUOTED(_DAKOTA_BUILD_, $DAKOTA_BUILD, [Dakota build version number])
     742                AC_DEFINE_UNQUOTED([_DAKOTA_BUILD_], ${DAKOTA_BUILD}, [Dakota build version number])
    688743
    689744                AC_DEFINE([_HAVE_DAKOTA_], [1], [with Dakota in ISSM src])
     
    695750        dnl }}}
    696751        dnl Python{{{
     752        AC_MSG_CHECKING([for Python])
    697753        AC_ARG_WITH(
    698754                [python-dir],
     
    708764                [PYTHON_VERSION="no"]
    709765        )
    710         AC_MSG_CHECKING([for Python])
    711766        if test "x${PYTHON_ROOT}" == "xno"; then
    712767                HAVE_PYTHON=no
     
    735790                dnl Determine major version
    736791                PYTHON_MAJOR=${PYTHON_VERSION%.*}
    737                 AC_DEFINE_UNQUOTED(_PYTHON_MAJOR_, $PYTHON_MAJOR, [Python version major])
     792                AC_DEFINE_UNQUOTED([_PYTHON_MAJOR_], ${PYTHON_MAJOR}, [Python version major])
    738793                if test "x${PYTHON_MAJOR}" == "x3"; then
    739794                        HAVE_PYTHON3="yes"
     
    751806                        PYTHONINCL=-I${PYTHON_ROOT}/include/python${PYTHON_VERSION}m
    752807                else
    753                         AC_MSG_ERROR([Python.h not found, locate this file and contact ISSM developers]);
     808                        AC_MSG_ERROR([Python.h not found! Please locate this file and contact ISSM developers via forum or email.]);
    754809                fi
    755810                AC_MSG_RESULT([found])
     
    764819                                PYTHONLINK="-shared"
    765820                        ;;
     821                        *darwin*)
     822                                PYTHONLINK="-dynamiclib"
     823                        ;;
    766824                        *linux*)
    767825                                PYTHONLINK="-shared"
    768826                        ;;
    769                         *darwin*)
    770                                 PYTHONLINK="-dynamiclib"
     827                        *mingw*)
     828                                PYTHONLINK="-shared"
     829                        ;;
     830                        *msys*)
     831                                PYTHONLINK="-shared"
    771832                        ;;
    772833                esac
     
    781842        dnl }}}
    782843        dnl NumPy{{{
    783         dnl TODO:
    784         dnl - Replace references to python-numpy with numpy (and similar terms)
    785         dnl       project-wide
    786         dnl
    787         AC_ARG_WITH(
    788                 [python-numpy-dir],
    789                 AS_HELP_STRING([--with-python-numpy-dir=DIR], [python-numpy root directory]),
    790                 [PYTHON_NUMPY_ROOT=${withval}],
    791                 [PYTHON_NUMPY_ROOT="no"]
    792         )
    793 
    794844        dnl NOTE: You can find NumPy by running,
    795845        dnl
     
    797847        dnl             >>> numpy.__file__
    798848        dnl
    799 
     849        dnl TODO:
     850        dnl - Replace references to python-numpy with numpy (and similar terms)
     851        dnl       project-wide
     852        dnl
    800853        AC_MSG_CHECKING(for python-numpy)
     854        AC_ARG_WITH(
     855                [python-numpy-dir],
     856                AS_HELP_STRING([--with-python-numpy-dir=DIR], [python-numpy root directory]),
     857                [PYTHON_NUMPY_ROOT=${withval}],
     858                [PYTHON_NUMPY_ROOT="no"]
     859        )
    801860        if test "x${PYTHON_NUMPY_ROOT}" == "xno"; then
    802861                HAVE_PYTHON_NUMPY=no
     
    817876        dnl }}}
    818877        dnl Chaco{{{
     878        AC_MSG_CHECKING([for Chaco])
    819879        AC_ARG_WITH(
    820880                [chaco-dir],
     
    823883                [CHACO_ROOT="no"]
    824884        )
    825         AC_MSG_CHECKING([for Chaco])
    826885        if test "x${CHACO_ROOT}" == "xno"; then
    827886                HAVE_CHACO=no
     
    845904        dnl }}}
    846905        dnl ESMF{{{
     906        AC_MSG_CHECKING([for ESMF])
    847907        AC_ARG_WITH(
    848908                [esmf-dir],
     
    851911                [ESMF_ROOT="no"]
    852912        )
    853         AC_MSG_CHECKING([for ESMF])
    854913        if test "x${ESMF_ROOT}" == "xno"; then
    855914                HAVE_ESMF=no
     
    873932        dnl }}}
    874933        dnl CoDiPack{{{
     934        AC_MSG_CHECKING([for CoDiPack])
    875935        AC_ARG_WITH(
    876936                [codipack-dir],
     
    879939                [CODIPACK_ROOT="no"]
    880940        )
    881         AC_MSG_CHECKING([for CoDiPack])
    882941        if test "x${CODIPACK_ROOT}" == "xno"; then
    883942                HAVE_CODIPACK=no
     
    901960        dnl }}}
    902961        dnl Tape Allocation {{{
     962        AC_MSG_CHECKING(for tape allocation)
    903963        AC_ARG_ENABLE(
    904964                [tape-alloc],                                                                                                                           dnl feature
     
    907967                [enable_tape_alloc=no]
    908968        )
    909         AC_MSG_CHECKING(for tape allocation)
    910969        if test "x${enable_tape_alloc}" == "xyes"; then
    911970                AC_DEFINE([_AD_TAPE_ALLOC_], [1], [enable a priori tape allocation for AD])
     
    914973        dnl }}}
    915974        dnl ADOL-C {{{
     975        AC_MSG_CHECKING([for ADOL-C])
    916976        AC_ARG_WITH(
    917977                [adolc-dir],
     
    920980                [ADOLC_ROOT="no"]
    921981        )
    922         AC_MSG_CHECKING([for ADOL-C])
    923982        if test "x${ADOLC_ROOT}" == "xno"; then
    924983                HAVE_ADOLC=no
     
    9451004        dnl }}}
    9461005        dnl ADOL-C version{{{
     1006        AC_MSG_CHECKING(for ADOL-C version)
    9471007        AC_ARG_WITH(
    9481008                [adolc-version],
     
    9511011                [ADOLC_VERSION=2]
    9521012        )
    953         AC_MSG_CHECKING(for ADOL-C version)
    954 
    955         AC_DEFINE_UNQUOTED(_ADOLC_VERSION_, $ADOLC_VERSION, [ADOL-C version])
     1013        AC_DEFINE_UNQUOTED([_ADOLC_VERSION_], ${ADOLC_VERSION}, [ADOL-C version])
    9561014        AC_MSG_RESULT(${ADOLC_VERSION})
    9571015        dnl }}}
    9581016        dnl ADIC2 {{{
     1017        AC_MSG_CHECKING([for ADIC2])
    9591018        AC_ARG_WITH(
    9601019                [adic2-dir],
     
    9631022                [ADIC2_ROOT="no"]
    9641023        )
    965         AC_MSG_CHECKING([for ADIC2])
    9661024        if test "x${ADIC2_ROOT}" == "xno"; then
    9671025                HAVE_ADIC2=no
     
    9851043        dnl }}}
    9861044        dnl ATLAS {{{
     1045        AC_MSG_CHECKING(for ATLAS and CBLAS libraries)
    9871046        AC_ARG_WITH(
    9881047                [atlas-dir],
     
    9911050                [ATLAS_ROOT="no"]
    9921051        )
    993         AC_MSG_CHECKING(for ATLAS and CBLAS libraries)
    9941052        if test "x${ATLAS_ROOT}" == "xno"; then
    9951053                HAVE_ATLAS=no
     
    10081066                                ATLASLIB="-L`cygpath -m ${ATLAS_ROOT}` -Wl,libatlas.lib  -Wl,libcblas.lib"
    10091067                        ;;
     1068                        *darwin*)
     1069                                ATLASLIB="-L${ATLAS_ROOT}/lib -lcblas -latlas -lm"
     1070                        ;;
    10101071                        *linux*)
    1011                                 ATLASLIB="-L${ATLAS_ROOT}/lib -lcblas -latlas -lm "
    1012                         ;;
    1013                         *darwin*)
    1014                                 ATLASLIB="-L${ATLAS_ROOT}/lib -lcblas -latlas -lm "
     1072                                ATLASLIB="-L${ATLAS_ROOT}/lib -lcblas -latlas -lm"
     1073                        ;;
     1074                        *mingw*)
     1075                                ATLASLIB="-L${ATLAS_ROOT}/lib -lcblas -latlas -lm"
     1076                        ;;
     1077                        *msys*)
     1078                                ATLASLIB="-L${ATLAS_ROOT}/lib -lcblas -latlas -lm"
    10151079                        ;;
    10161080                esac
     
    10201084        dnl }}}
    10211085        dnl GSL{{{
     1086        AC_MSG_CHECKING([for GSL])
    10221087        AC_ARG_WITH(
    10231088                [gsl-dir],
     
    10261091                [GSL_ROOT="no"]
    10271092        )
    1028         AC_MSG_CHECKING([for GSL])
    10291093        if test "x${GSL_ROOT}" == "xno"; then
    10301094                HAVE_GSL=no
     
    10521116        dnl }}}
    10531117        dnl AMPI (ADOL-C){{{
     1118        AC_MSG_CHECKING([for AMPI])
    10541119        AC_ARG_WITH(
    10551120                [ampi-dir],
     
    10581123                [AMPI_ROOT="no"]
    10591124        )
    1060         AC_MSG_CHECKING([for AMPI])
    10611125        if test "x${AMPI_ROOT}" == "xno"; then
    10621126                HAVE_AMPI=no
     
    10881152        dnl }}}
    10891153        dnl Adjoint MPI (CoDiPack){{{
     1154        AC_MSG_CHECKING([for Adjoint MPI])
    10901155        AC_ARG_WITH(
    10911156                [adjointmpi-dir],
     
    10941159                [ADJOINTMPI_ROOT="no"]
    10951160        )
    1096         AC_MSG_CHECKING([for Adjoint MPI])
    10971161        if test "x${ADJOINTMPI_ROOT}" == "xno"; then
    10981162                HAVE_ADJOINTMPI=no
     
    11221186        dnl }}}
    11231187        dnl MeDiPack (CoDiPack, ADOL-C dev){{{
     1188        AC_MSG_CHECKING([for MeDiPack])
    11241189        AC_ARG_WITH(
    11251190                [medipack-dir],
     
    11281193                [MEDIPACK_ROOT="no"]
    11291194        )
    1130         AC_MSG_CHECKING([for MeDiPack])
    11311195        if test "x${MEDIPACK_ROOT}" == "xno"; then
    11321196                HAVE_MEDIPACK=no
     
    11541218        dnl }}}
    11551219        dnl HDF5 {{{
     1220        AC_MSG_CHECKING(for HDF5 libraries)
    11561221        AC_ARG_WITH(
    11571222                [hdf5-dir],
     
    11601225                [HDF5_ROOT="no"]
    11611226        )
    1162         AC_MSG_CHECKING(for HDF5 libraries)
    11631227        if test "x${HDF5_ROOT}" == "xno"; then
    11641228                HAVE_HDF5=no
     
    11811245                                HDF5LIB="-L`cygpath -m ${HDF5_ROOT}` -Wl,libhdf5.lib  -Wl,libhdf5_hl.lib"
    11821246                        ;;
     1247                        *darwin*)
     1248                                HDF5LIB="-L${HDF5_ROOT}/lib -lhdf5 -lhdf5_hl"
     1249                        ;;
    11831250                        *linux*)
    11841251                                HDF5LIB="-L${HDF5_ROOT}/lib -lhdf5 -lhdf5_hl"
    11851252                        ;;
    1186                         *darwin*)
     1253                        *mingw*)
     1254                                HDF5LIB="-L${HDF5_ROOT}/lib -lhdf5 -lhdf5_hl"
     1255                        ;;
     1256                        *msys*)
    11871257                                HDF5LIB="-L${HDF5_ROOT}/lib -lhdf5 -lhdf5_hl"
    11881258                        ;;
     
    11931263        dnl }}}
    11941264        dnl PETSc{{{
     1265        AC_MSG_CHECKING([for PETSc])
    11951266        AC_ARG_WITH(
    11961267                [petsc-dir],
     
    11991270                [PETSC_ROOT="no"]
    12001271        )
    1201         AC_MSG_CHECKING([for PETSc])
    12021272        if test "x${PETSC_ROOT}" == "xno"; then
    12031273                HAVE_PETSC=no
     
    12201290                PETSC_MAJOR=`cat ${PETSC_ROOT}/include/petscversion.h | grep "#define PETSC_VERSION_MAJOR" | sed 's/#define PETSC_VERSION_MAJOR//' | sed 's/ //g'`
    12211291                PETSC_MINOR=`cat ${PETSC_ROOT}/include/petscversion.h | grep "#define PETSC_VERSION_MINOR" | sed 's/#define PETSC_VERSION_MINOR//' | sed 's/ //g'`
    1222                 AC_DEFINE_UNQUOTED([_PETSC_MAJOR_], [$PETSC_MAJOR], [PETSc version major])
    1223                 AC_DEFINE_UNQUOTED([_PETSC_MINOR_], [$PETSC_MINOR], [PETSc version minor])
     1292                AC_DEFINE_UNQUOTED([_PETSC_MAJOR_], ${PETSC_MAJOR}, [PETSc version major])
     1293                AC_DEFINE_UNQUOTED([_PETSC_MINOR_], ${PETSC_MINOR}, [PETSc version minor])
    12241294                AC_MSG_RESULT([${PETSC_MAJOR}.${PETSC_MINOR}])
    12251295
     
    12621332                                        PETSCLIB="/link -Wl,/LIBPATH:`cygpath -m ${PETSC_ROOT}/lib` -Wl,libpetsc.lib"
    12631333                                        PETSCINCL="/I`cygpath -m ${PETSC_ROOT}/include`"
     1334                                fi
     1335                        ;;
     1336                        *darwin*)
     1337                                if test ${PETSC_MAJOR} -lt 3; then
     1338                                        PETSCLIB="-L${PETSC_ROOT}/lib -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetscsnes -lpetscts -lpetsc"
     1339                                else
     1340                                        PETSCLIB="-L${PETSC_ROOT}/lib -lpetsc"
     1341                                        if test ${PETSC_MAJOR} -gt 3 || test ${PETSC_MINOR} -ge 3; then
     1342                                                PETSCLIB+=" -lmetis"
     1343                                        fi
    12641344                                fi
    12651345                        ;;
     
    12801360                                fi
    12811361                        ;;
    1282                         *darwin*)
    1283                                 if test ${PETSC_MAJOR} -lt 3; then
    1284                                         PETSCLIB="-L${PETSC_ROOT}/lib -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetscsnes -lpetscts -lpetsc"
    1285                                 else
    1286                                         PETSCLIB="-L${PETSC_ROOT}/lib -lpetsc"
    1287                                         if test ${PETSC_MAJOR} -gt 3 || test ${PETSC_MINOR} -ge 3; then
    1288                                                 PETSCLIB+=" -lmetis"
    1289                                         fi
    1290                                 fi
     1362                        *mingw*)
     1363                                PETSCLIB="-Wl,${PETSC_ROOT}/lib/libpetsc.a"
     1364                        ;;
     1365                        *msys*)
     1366                                PETSCLIB="${PETSC_ROOT}/lib -lpetsc"
    12911367                        ;;
    12921368                esac
     
    12991375        dnl MPI{{{
    13001376        AC_MSG_CHECKING(for MPI)
    1301 
    13021377        AC_ARG_WITH(
    13031378                [mpi-include],
     
    13061381                [MPI_INCLUDE=""]
    13071382        )
    1308 
    13091383        AC_ARG_WITH(
    13101384                [mpi-libdir],
     
    13131387                [MPI_LIBDIR=""]
    13141388        )
    1315 
    13161389        AC_ARG_WITH(
    13171390                [mpi-libflags],
     
    13201393                [MPI_LIBFLAGS=""]
    13211394        )
    1322 
    13231395        if test -z "${MPI_INCLUDE}"; then
    13241396                HAVE_MPI=no
     
    13631435        dnl }}}
    13641436        dnl SCOTCH{{{
     1437        AC_MSG_CHECKING([for SCOTCH])
    13651438        AC_ARG_WITH(
    13661439                [scotch-dir],
     
    13691442                [SCOTCH_ROOT="no"]
    13701443        )
    1371         AC_MSG_CHECKING([for SCOTCH])
    13721444        if test "x${SCOTCH_ROOT}" == "xno"; then
    13731445                HAVE_SCOTCH=no
     
    14021474        dnl }}}
    14031475        dnl METIS{{{
    1404 
    1405         dnl NOTE: We know $VENDOR cannot be empty at this point, so no need to
    1406         dnl               check again in the following conditionals
    1407         dnl
    1408         if test "x${HAVE_PETSC}" == "xyes" && test "x${PETSC_MAJOR}" == "x3" && test ${PETSC_MINOR} -ge 3 && test "${VENDOR}" != "MSVC-Win64" && test "${VENDOR}" != "MSVC-Win64-par"; then
    1409                 dnl In PETSc >=3.3, METIS is provided
    1410                 HAVE_METIS="yes"
    1411                 AC_DEFINE([_METIS_VERSION_], [5], [METIS version number])
     1476        AC_MSG_CHECKING([for METIS])
     1477        AC_ARG_WITH(
     1478                [metis-dir],
     1479                AS_HELP_STRING([--with-metis-dir=DIR], [METIS root directory, necessary for serial build]),
     1480                [METIS_ROOT=${withval}],
     1481                [METIS_ROOT="no"]
     1482        )
     1483        HAVE_METIS=no
     1484        if test "x${METIS_ROOT}" == "xno"; then
     1485                dnl Check if METIS was installed via PETSc
     1486                if test -f ${PETSC_ROOT}/install/include/metis.h; then
     1487                        HAVE_METIS=yes
     1488                        METIS_ROOT="${PETSC_ROOT}"
     1489                fi
     1490        else
     1491                if ! test -d "${METIS_ROOT}"; then
     1492                        AC_MSG_ERROR([METIS directory provided (${METIS_ROOT}) does not exist!]);
     1493                fi
     1494                HAVE_METIS=yes
     1495        fi
     1496        if test "${HAVE_METIS}" = "yes"; then
     1497                METIS_VERSION=$(grep "#define METIS_VER_MAJOR" ${METIS_ROOT}/include/metis.h | sed 's|.*METIS_VER_MAJOR[[:space:]]*||')
     1498                dnl METIS libraries and header files
     1499                if test "x${METIS_VERSION}" == "x4"; then
     1500                        METISINCL="-I${METIS_ROOT}/Lib"
     1501                        case "${host_os}" in
     1502                                *cygwin*)
     1503                                        METISINCL="/I`cygpath -m ${METIS_ROOT}/Lib`"
     1504                                        METISLIB="-Wl,/link -Wl,/LIBPATH:`cygpath -m ${METIS_ROOT}` -Wl,libmetis.lib"
     1505                                ;;
     1506                                *darwin*)
     1507                                        METISLIB="-L${METIS_ROOT} -lmetis"
     1508                                ;;
     1509                                *linux*)
     1510                                        METISLIB="-L${METIS_ROOT} -lmetis"
     1511                                ;;
     1512                                *mingw*)
     1513                                        METISLIB="-Wl,${METIS_ROOT}/lib/libmetis.a"
     1514                                ;;
     1515                                *msys*)
     1516                                        METISLIB="-L${METIS_ROOT} -lmetis"
     1517                                ;;
     1518                        esac
     1519                elif test "x${METIS_VERSION}" == "x5"; then
     1520                        METISINCL="-I${METIS_ROOT}/include"
     1521                        case "${host_os}" in
     1522                                *cygwin*)
     1523                                        METISLIB="-L${METIS_ROOT} libmetis.lib"
     1524                                ;;
     1525                                *darwin*)
     1526                                        METISLIB="-L${METIS_ROOT}/lib -lmetis"
     1527                                ;;
     1528                                *linux*)
     1529                                        METISLIB="-L${METIS_ROOT}/lib -lmetis"
     1530                                ;;
     1531                                *mingw*)
     1532                                        METISLIB="-Wl,${METIS_ROOT}/lib/libmetis.a"
     1533                                ;;
     1534                                *msys*)
     1535                                        METISLIB="-L${METIS_ROOT}/lib -lmetis"
     1536                                ;;
     1537                        esac
     1538                else
     1539                        AC_MSG_ERROR([METIS version ${METIS_VERSION} not yet supported! Please contact ISSM developers via forum or email.])
     1540                fi
    14121541                AC_DEFINE([_HAVE_METIS_], [1], [with METIS in ISSM src])
    1413         else
    1414                 AC_ARG_WITH(
    1415                         [metis-dir],
    1416                         AS_HELP_STRING([--with-metis-dir=DIR], [METIS root directory, necessary for serial build]),
    1417                         [METIS_ROOT=${withval}],
    1418                         [METIS_ROOT="no"]
    1419                 )
    1420                 AC_MSG_CHECKING([for METIS])
    1421                 if test "x${METIS_ROOT}" == "xno"; then
    1422                         HAVE_METIS=no
    1423                 else
    1424                         HAVE_METIS=yes
    1425                         if ! test -d "${METIS_ROOT}"; then
    1426                                 AC_MSG_ERROR([METIS directory provided (${METIS_ROOT}) does not exist!]);
    1427                         fi
    1428                 fi
    1429                 AC_MSG_RESULT([${HAVE_METIS}])
    1430                 AM_CONDITIONAL([METIS], [test "x${HAVE_METIS}" == "xyes"])
    1431 
     1542                AC_DEFINE_UNQUOTED([_METIS_VERSION_], ${METIS_VERSION}, [METIS version number])
     1543                AC_SUBST([METISINCL])
     1544                AC_SUBST([METISLIB])
     1545        fi
     1546        AC_MSG_RESULT([${HAVE_METIS}])
     1547        AM_CONDITIONAL([METIS], [test "x${HAVE_METIS}" = "xyes"])
     1548        dnl }}}
     1549        dnl ParMETIS{{{
     1550        AC_MSG_CHECKING([for ParMETIS])
     1551        AC_ARG_WITH(
     1552                [parmetis-dir],
     1553                AS_HELP_STRING([--with-parmetis-dir=DIR], [ParMETIS root directory, necessary for parallel build]),
     1554                [PARMETIS_ROOT=${withval}],
     1555                [PARMETIS_ROOT="no"]
     1556        )
     1557        HAVE_PARMETIS=no
     1558        if test "x${PARMETIS_ROOT}" == "xno"; then
     1559                dnl Check if ParMETIS was installed via PETSc
     1560                if test -f ${PETSC_ROOT}/install/include/parmetis.h; then
     1561                        HAVE_PARMETIS="yes"
     1562                        PARMETIS_ROOT="${PETSC_ROOT}"
     1563                fi
     1564        else
     1565                if ! test -d "${PARMETIS_ROOT}"; then
     1566                        AC_MSG_ERROR([ParMETIS directory provided (${PARMETIS_ROOT}) does not exist!]);
     1567                fi
     1568                if ! test -d "${METIS_ROOT}"; then
     1569                        AC_MSG_ERROR([If supplying path to ParMETIS with option --with-parmetis-dir, must also supply path to METIS with option --with-metis-dir]);
     1570                fi
     1571                HAVE_PARMETIS="yes"
     1572        fi
     1573        if test "${HAVE_PARMETIS}" == "yes"; then
     1574                #PARMETIS_VERSION=$(grep "#define PARMETIS_MAJOR_VERSION" ${PARMETIS_ROOT}/include/parmetis.h | sed 's|.*PARMETIS_MAJOR_VERSION[[:space:]]*||')
    14321575                dnl METIS libraries and header files
    1433                 if test "x${HAVE_METIS}" == "xyes"; then
    1434                         dnl Retrieve METIS version (does the VERSION file exist?)
    1435                         if test -f "${METIS_ROOT}/VERSION"; then
    1436                                 METIS_VERSION=4
    1437                         else
    1438                                 METIS_VERSION=5
    1439                         fi
    1440 
    1441                         if test "x${METIS_VERSION}" == "x4"; then
    1442                                 METISINCL="-I${METIS_ROOT}/Lib"
    1443                                 case "${host_os}" in
    1444                                         *cygwin*)
    1445                                                 METISINCL="/I`cygpath -m ${METIS_ROOT}/Lib`"
    1446                                                 METISLIB="-Wl,/link -Wl,/LIBPATH:`cygpath -m ${METIS_ROOT}` -Wl,libmetis.lib"
    1447                                         ;;
    1448                                         *linux*)
    1449                                                 METISLIB="-L${METIS_ROOT} -lparmetis -lmetis"
    1450                                         ;;
    1451                                         *darwin*)
    1452                                                 METISLIB="-L${METIS_ROOT} -lparmetis -lmetis"
    1453                                         ;;
    1454                                 esac
    1455                                 AC_DEFINE([_METIS_VERSION_], [4], [ METIS version number])
    1456                         fi
    1457 
    1458                         if test "x${METIS_VERSION}" == "x5"; then
    1459                                 case "${host_os}" in
    1460                                         *cygwin*)
    1461                                                 METISLIB="-L${METIS_ROOT} libmetis.lib"
    1462                                         ;;
    1463                                         *linux*)
    1464                                                 METISLIB="-L${METIS_ROOT}/lib -lparmetis -lmetis"
    1465                                         ;;
    1466                                         *darwin*)
    1467                                                 METISLIB="-L${METIS_ROOT}/lib -lparmetis -lmetis"
    1468                                         ;;
    1469                                 esac
    1470                                 METISINCL="-I${METIS_ROOT}/include"
    1471                                 AC_DEFINE([_METIS_VERSION_], [5], [METIS version number])
    1472                         fi
    1473 
    1474                         AC_DEFINE([_HAVE_METIS_], [1], [with METIS in ISSM src])
    1475                         AC_SUBST([METISINCL])
    1476                         AC_SUBST([METISLIB])
    1477                 fi
    1478         fi
    1479         AM_CONDITIONAL([METIS], [test "x${HAVE_METIS}" == "xyes"])
     1576                #if test "x${PARMETIS_VERSION}" == "x4"; then
     1577                        PARMETISINCL="-I${PARMETIS_ROOT}/include"
     1578                        case "${host_os}" in
     1579                                *cygwin*)
     1580                                        PARMETISLIB="-L${PARMETIS_ROOT}/lib -lparmetis"
     1581                                ;;
     1582                                *darwin*)
     1583                                        PARMETISLIB="-L${PARMETIS_ROOT}/lib -lparmetis"
     1584                                ;;
     1585                                *linux*)
     1586                                        PARMETISLIB="-L${PARMETIS_ROOT}/lib -lparmetis"
     1587                                ;;
     1588                                *mingw*)
     1589                                        PARMETISLIB="-Wl,${PARMETIS_ROOT}/lib/libparmetis.a"
     1590                                ;;
     1591                                *msys*)
     1592                                        PARMETISLIB="-L${PARMETIS_ROOT}/lib -lparmetis"
     1593                                ;;
     1594                        esac
     1595                #else
     1596                #       AC_MSG_ERROR([ParMETIS version ${PARMETIS_VERSION} not yet supported! Please contact ISSM developers via forum or email.])
     1597                #fi
     1598                AC_DEFINE([_HAVE_PARMETIS_], [1], [with ParMETIS in ISSM src])
     1599                #AC_DEFINE([_PARMETIS_VERSION_], [${PARMETIS_VERSION}], [ParMETIS version number])
     1600                AC_SUBST([PARMETISINCL])
     1601                AC_SUBST([PARMETISLIB])
     1602        fi
     1603        AC_MSG_RESULT([${HAVE_PARMETIS}])
     1604        AM_CONDITIONAL([PARMETIS], [test "x${HAVE_PARMETIS}" = "xyes"])
    14801605        dnl }}}
    14811606        dnl Toolkit for Advanced Optimization (TAO){{{
     1607        AC_MSG_CHECKING([for TAO])
    14821608        AC_ARG_WITH(
    14831609                [tao-dir],
     
    14861612                [TAO_ROOT="no"]
    14871613        )
    1488         AC_MSG_CHECKING([for TAO])
    1489 
    14901614        if test "x${HAVE_PETSC}" == "xyes" && test "x${PETSC_MAJOR}" == "x3" && test ${PETSC_MINOR} -ge 5; then
    14911615                dnl In PETSc >= 3.5, TAO is provided
     
    15151639        dnl }}}
    15161640        dnl M1QN3{{{
     1641        AC_MSG_CHECKING([for M1QN3])
    15171642        AC_ARG_WITH(
    15181643                [m1qn3-dir],
     
    15211646                [M1QN3_ROOT="no"]
    15221647        )
    1523         AC_MSG_CHECKING([for M1QN3])
    15241648        if test "x${M1QN3_ROOT}" == "xno"; then
    15251649                HAVE_M1QN3=no
     
    15401664        dnl }}}
    15411665        dnl PROJ{{{
     1666        AC_MSG_CHECKING([for PROJ])
    15421667        AC_ARG_WITH(
    15431668                [proj-dir],
     
    15461671                [PROJ_ROOT="no"]
    15471672        )
    1548         AC_MSG_CHECKING([for PROJ])
    15491673        if test "x${PROJ_ROOT}" == "xno"; then
    15501674                HAVE_PROJ=no
     
    15681692        dnl }}}
    15691693        dnl SLEPc{{{
     1694        AC_MSG_CHECKING([for SLEPc])
    15701695        AC_ARG_WITH(
    15711696                [slepc-dir],
     
    15741699                [SLEPC_ROOT="no"]
    15751700        )
    1576         AC_MSG_CHECKING([for SLEPc])
    15771701        if test "x${SLEPC_ROOT}" == "xno"; then
    15781702                HAVE_SLEPC=no
     
    15951719        dnl }}}
    15961720        dnl shapelib{{{
     1721        AC_MSG_CHECKING([for shapelib])
    15971722        AC_ARG_WITH(
    15981723                [shapelib-dir],
     
    16011726                [SHAPELIB_ROOT="no"]
    16021727        )
    1603         AC_MSG_CHECKING([for shapelib])
    16041728        if test "x${SHAPELIB_ROOT}" == "xno"; then
    16051729                HAVE_SHAPELIB=no
     
    16221746        dnl }}}
    16231747        dnl ScaLAPACK{{{
    1624 
    16251748        dnl NOTE: User should supply path to root directory or libraries, but not both
     1749        dnl
     1750        AC_MSG_CHECKING([for ScaLAPACK])
    16261751        AC_ARG_WITH(
    16271752                [scalapack-dir],
     
    16361761                [SCALAPACKLIB="no"]
    16371762        )
    1638         AC_MSG_CHECKING([for ScaLAPACK])
    16391763        if test "x${SCALAPACK_ROOT}" == "xno" && test "x${SCALAPACKLIB}" == "xno"; then
    16401764                HAVE_SCALAPACK=no
     
    16451769                fi
    16461770                HAVE_SCALAPACK=yes
    1647                 SCALAPACKLIB="-L${SCALAPACK_ROOT}/lib -lscalapack"
     1771                if test "${VENDOR}" == "win-msys2"; then
     1772                        SCALAPACKLIB="-Wl,${SCALAPACK_ROOT}/lib/libscalapack.a"
     1773                else
     1774                        SCALAPACKLIB="-L${SCALAPACK_ROOT}/lib -lscalapack"
     1775                fi
    16481776        elif test "x${SCALAPACKLIB}" != "xno"; then
    16491777                dnl Value of SCALAPACKLIB should be valid here, so no need to set it (as above)
     
    16611789        dnl }}}
    16621790        dnl BLAS/LAPACK{{{
     1791        AC_MSG_CHECKING([for BLAS/LAPACK])
     1792        AC_ARG_WITH(
     1793                [blas-dir],
     1794                [AS_HELP_STRING([--with-blas-dir=DIR], [BLAS root directory])],
     1795                [BLAS_ROOT=$withval],
     1796                [BLAS_ROOT="no"]
     1797        )
     1798        AC_ARG_WITH(
     1799                [lapack-dir],
     1800                [AS_HELP_STRING([--with-lapack-dir=DIR], [LAPACK root directory])],
     1801                [LAPACK_ROOT=$withval],
     1802                [LAPACK_ROOT="no"]
     1803        )
    16631804        AC_ARG_WITH(
    16641805                [blas-lapack-dir],
     
    16671808                [BLASLAPACK_ROOT="no"]
    16681809        )
    1669         AC_MSG_CHECKING([for BLAS/LAPACK])
    1670         if test "x${BLASLAPACK_ROOT}" == "xno" ; then
     1810        if (test "x${BLAS_ROOT}" = "xno" || test "x${LAPACK_ROOT}" = "xno") && test "x${BLASLAPACK_ROOT}" = "xno"; then
    16711811                HAVE_BLASLAPACK=no
    16721812        else
    16731813                HAVE_BLASLAPACK=yes
    1674                 if ! test -d "${BLASLAPACK_ROOT}"; then
    1675                         AC_MSG_ERROR([BLAS/LAPACK directory provided (${BLASLAPACK_ROOT}) does not exist!]);
     1814                if ! test -d "${BLAS_ROOT}" || ! test -d "${LAPACK_ROOT}"; then
     1815                        if ! test -d "${BLASLAPACK_ROOT}"; then
     1816                                AC_MSG_ERROR([Use either --with-blas-dir and --with-lapack-dir *or* --with-blaslapack-dir]);
     1817                        fi
    16761818                fi
    16771819        fi
     
    16801822        dnl BLAS/LAPACK libraries and header files
    16811823        if test "x${HAVE_BLASLAPACK}" == "xyes"; then
    1682                 BLASLAPACKINCL=""
    16831824                case "${host_os}" in
    16841825                        *cygwin*)
     
    17091850                                fi
    17101851                        ;;
     1852                        *mingw*)
     1853                                if test -d "${BLASLAPACK_ROOT}"; then
     1854                                        BLASLAPACKLIB="-L${BLASLAPACK_ROOT}/lib"
     1855                                        if ls ${BLASLAPACK_ROOT}/lib/libopenblas.* 1> /dev/null 2>&1; then
     1856                                                BLASLAPACKLIB+=" -lopenblas"
     1857                                        elif ls ${BLASLAPACK_ROOT}/lib/libf2clapack.* 1> /dev/null 2>&1; then
     1858                                                BLASLAPACKLIB+=" -lf2clapack -lf2cblas"
     1859                                        elif ls ${BLASLAPACK_ROOT}/lib/libflapack.* 1> /dev/null 2>&1; then
     1860                                                BLASLAPACKLIB="-Wl,${BLASLAPACK_ROOT}/lib/libflapack.a -Wl,${BLASLAPACK_ROOT}/lib/libfblas.a"
     1861                                        else
     1862                                                BLASLAPACKLIB+=" -llapack -lblas"
     1863                                        fi
     1864                                else
     1865                                        BLASLAPACKLIB="-Wl,${LAPACK_ROOT}/lib/liblapack.a -Wl,${BLAS_ROOT}/lib/libblas.a"
     1866                                fi
     1867                        ;;
     1868                        *msys*)
     1869                                if test -d "${BLASLAPACK_ROOT}"; then
     1870                                        if ls ${BLASLAPACK_ROOT}/lib/libopenblas.* 1> /dev/null 2>&1; then
     1871                                                BLASLAPACKLIB=" -lopenblas"
     1872                                        elif ls ${BLASLAPACK_ROOT}/lib/libf2clapack.* 1> /dev/null 2>&1; then
     1873                                                BLASLAPACKLIB=" -lf2clapack -lf2cblas"
     1874                                        elif ls ${BLASLAPACK_ROOT}/lib/libflapack.* 1> /dev/null 2>&1; then
     1875                                                BLASLAPACKLIB+=" -lflapack -lfblas"
     1876                                        else
     1877                                                BLASLAPACKLIB=" -llapack -lblas"
     1878                                        fi
     1879                                else
     1880                                        BLASLAPACKLIB="-L${LAPACK_ROOT}/lib -llapack -L${BLAS_ROOT}/lib -lblas"
     1881                                fi
     1882                        ;;
    17111883                esac
    17121884                AC_DEFINE([_HAVE_BLASLAPACK_], [1], [with BLAS/LAPACK in ISSM src])
    17131885                AC_SUBST([BLASLAPACKLIB])
    1714                 AC_SUBST([BLASLAPACKINCL])
    17151886        fi
    17161887        dnl }}}
    17171888        dnl Math Kernel Library (MKL){{{
     1889        AC_MSG_CHECKING([for MKL])
    17181890        AC_ARG_WITH(
    17191891                [mkl-libflags],
     
    17221894                [MKL_LIBFLAGS="no"]
    17231895        )
    1724         AC_MSG_CHECKING([for MKL])
    17251896        if test "x${MKL_LIBFLAGS}" == "xno"; then
    17261897                HAVE_MKL=no
     
    17351906        dnl }}}
    17361907        dnl PlaLAPACK{{{
    1737 
    17381908        dnl TODO:       Handle user supplying path to root directory *or* individual
    17391909        dnl             arguments (like ScaLAPACK)
     
    17701940        dnl }}}
    17711941        dnl MUMPS{{{
     1942        AC_MSG_CHECKING([for MUMPS])
    17721943        AC_ARG_WITH(
    17731944                [mumps-dir],
     
    17761947                [MUMPS_ROOT="no"]
    17771948        )
    1778         AC_MSG_CHECKING([for MUMPS])
    17791949        if test "x${MUMPS_ROOT}" == "xno"; then
    17801950                HAVE_MUMPS=no
     
    17911961                MUMPSINCL="-I${MUMPS_ROOT}/include"
    17921962                if test "x${MUMPS_ROOT}" == "x${PETSC_ROOT}"; then
    1793                         if test "x${PETSC_MAJOR}" == "x2"; then
    1794                                 MUMPSLIB="-L${MUMPS_ROOT}/lib "
     1963                        if test "${VENDOR}" == "win-msys2"; then
     1964                                MUMPSLIB="-Wl,${MUMPS_ROOT}/lib/libcmumps.a -Wl,${MUMPS_ROOT}/lib/libdmumps.a -Wl,${MUMPS_ROOT}/lib/libsmumps.a -Wl,${MUMPS_ROOT}/lib/libzmumps.a -Wl,${MUMPS_ROOT}/lib/libmumps_common.a -Wl,${MUMPS_ROOT}/lib/libpord.a"
    17951965                        else
    17961966                                MUMPSLIB="-L${MUMPS_ROOT}/lib -ldmumps -lcmumps -lmumps_common -lpord -lparmetis -lzmumps -lmetis"
     
    18412011        dnl }}}
    18422012        dnl BLACS{{{
     2013        AC_MSG_CHECKING([for BLACS])
    18432014        AC_ARG_WITH(
    18442015                [blacs-dir],
     
    18472018                [BLACS_ROOT="no"]
    18482019        )
    1849         AC_MSG_CHECKING([for BLACS])
    18502020        if test "x${BLACS_ROOT}" == "xno"; then
    18512021                HAVE_BLACS=no
     
    18682038        dnl }}}
    18692039        dnl HYPRE{{{
     2040        AC_MSG_CHECKING([for HYPRE])
    18702041        AC_ARG_WITH(
    18712042                [hypre-dir],
     
    18742045                [HYPRE_ROOT="no"]
    18752046        )
    1876         AC_MSG_CHECKING([for HYPRE])
    18772047        if test "x${HYPRE_ROOT}" == "xno"; then
    18782048                HAVE_HYPRE=no
     
    18952065        dnl }}}
    18962066        dnl Prometheus{{{
     2067        AC_MSG_CHECKING([for Prometheus])
    18972068        AC_ARG_WITH(
    18982069                [prometheus-dir],
     
    19012072                [PROMETHEUS_ROOT="no"]
    19022073        )
    1903         AC_MSG_CHECKING([for Prometheus])
    19042074        if test "x${PROMETHEUS_ROOT}" == "xno"; then
    19052075                HAVE_PROMETHEUS=no
     
    19222092        dnl }}}
    19232093        dnl SEMIC{{{
     2094        AC_MSG_CHECKING([for SEMIC])
    19242095        AC_ARG_WITH(
    19252096                [semic-dir],
     
    19282099                [SEMIC_ROOT="no"]
    19292100        )
    1930         AC_MSG_CHECKING([for SEMIC])
    19312101        if test "x${SEMIC_ROOT}" == "xno"; then
    19322102                HAVE_SEMIC=no
     
    19502120        dnl }}}
    19512121        dnl SPAI{{{
     2122        AC_MSG_CHECKING([for SPAI])
    19522123        AC_ARG_WITH(
    19532124                [spai-dir],
     
    19562127                [SPAI_ROOT="no"]
    19572128        )
    1958         AC_MSG_CHECKING([for SPAI])
    19592129        if test "x${SPAI_ROOT}" == "xno"; then
    19602130                HAVE_SPAI=no
     
    19772147        dnl }}}
    19782148        dnl SuperLU{{{
     2149        AC_MSG_CHECKING([for SuperLU])
    19792150        AC_ARG_WITH(
    19802151                [superlu-dir],
     
    19832154                [SUPERLU_ROOT="no"]
    19842155        )
    1985         AC_MSG_CHECKING([for SuperLU])
    19862156        if test "x${SUPERLU_ROOT}" == "xno"; then
    19872157                HAVE_SUPERLU=no
     
    20042174        dnl }}}
    20052175        dnl SPOOLES{{{
     2176        AC_MSG_CHECKING([for SPOOLES])
    20062177        AC_ARG_WITH(
    20072178                [spooles-dir],
     
    20102181                [SPOOLES_ROOT="no"]
    20112182        )
    2012         AC_MSG_CHECKING([for SPOOLES])
    20132183        if test "x${SPOOLES_ROOT}" == "xno"; then
    20142184                HAVE_SPOOLES=no
     
    20312201        dnl }}}
    20322202        dnl PaStiX{{{
     2203        AC_MSG_CHECKING([for PaStiX])
    20332204        AC_ARG_WITH(
    20342205                [pastix-dir],
     
    20372208                [PASTIX_ROOT="no"]
    20382209        )
    2039         AC_MSG_CHECKING([for PaStiX])
    20402210        if test "x${PASTIX_ROOT}" == "xno"; then
    20412211                HAVE_PASTIX=no
     
    20592229        dnl }}}
    20602230        dnl ml{{{
     2231        AC_MSG_CHECKING([for ml])
    20612232        AC_ARG_WITH(
    20622233                [ml-dir],
     
    20652236                [ML_ROOT="no"]
    20662237        )
    2067         AC_MSG_CHECKING([for ml])
    20682238        if test "x${ML_ROOT}" == "xno"; then
    20692239                HAVE_ML=no
     
    20862256        dnl }}}
    20872257        dnl UMFPACK{{{
     2258        AC_MSG_CHECKING([for UMFPACK])
    20882259        AC_ARG_WITH(
    20892260                [umfpack-dir],
     
    20922263                [UMFPACK_ROOT="no"]
    20932264        )
    2094         AC_MSG_CHECKING([for UMFPACK])
    20952265        if test "x${UMFPACK_ROOT}" == "xno"; then
    20962266                HAVE_UMFPACK=no
     
    21292299        dnl }}}
    21302300        dnl MATH77{{{
     2301        AC_MSG_CHECKING([for MATH77])
    21312302        AC_ARG_WITH(
    21322303                [math77-dir],
     
    21352306                [MATH77_ROOT="no"]
    21362307        )
    2137         AC_MSG_CHECKING([for MATH77])
    21382308        if test "x${MATH77_ROOT}" == "xno"; then
    21392309                HAVE_MATH77=no
     
    21542324        dnl }}}
    21552325        dnl Fortran{{{
     2326        AC_MSG_CHECKING(for Fortran compilation)
    21562327        AC_ARG_WITH(
    21572328                [fortran],
     
    21602331                [FORTRAN=yes]
    21612332        )
    2162         AC_MSG_CHECKING(for Fortran compilation)
    21632333        if test "x${FORTRAN}" == "xyes"; then
    21642334                HAVE_FORTRAN=yes
     
    22242394        dnl }}}
    22252395        dnl MeteoIO{{{
     2396        AC_MSG_CHECKING([for MeteoIO])
    22262397        AC_ARG_WITH(
    22272398                [meteoio-dir],
     
    22302401                [METEOIO_ROOT="no"]
    22312402        )
    2232         AC_MSG_CHECKING([for MeteoIO])
    22332403        if test "x${METEOIO_ROOT}" == "xno"; then
    22342404                HAVE_METEOIO=no
     
    22532423        dnl }}}
    22542424        dnl SNOWPACK{{{
     2425        AC_MSG_CHECKING([for SNOWPACK])
    22552426        AC_ARG_WITH(
    22562427                [snowpack-dir],
     
    22592430                [SNOWPACK_ROOT="no"]
    22602431        )
    2261         AC_MSG_CHECKING([for SNOWPACK])
    22622432        if test "x${SNOWPACK_ROOT}" == "xno"; then
    22632433                HAVE_SNOWPACK=no
     
    22812451        dnl }}}
    22822452        dnl NeoPZ{{{
     2453        AC_MSG_CHECKING([for NeoPZ])
    22832454        AC_ARG_WITH(
    22842455                [neopz-dir],
     
    22872458                [NEOPZ_ROOT="no"]
    22882459        )
    2289         AC_MSG_CHECKING([for NeoPZ])
    22902460        if test "x${NEOPZ_ROOT}" == "xno"; then
    22912461                HAVE_NEOPZ=no
     
    23562526                GMSH_VERSION_MAJOR=`${GMSH_ROOT}/bin/gmsh -info | grep "Version" | sed -e "s/Version@<:@@<:@:blank:@:>@@:>@*:@<:@@<:@:blank:@:>@@:>@//" | cut -d "." -f 1`
    23572527                AC_MSG_RESULT([${GMSH_VERSION_MAJOR}])
    2358                 AC_DEFINE_UNQUOTED(_GMSH_VERSION_MAJOR_, $GMSH_VERSION_MAJOR, [Gmsh major version])
     2528                AC_DEFINE_UNQUOTED([_GMSH_VERSION_MAJOR_], ${GMSH_VERSION_MAJOR}, [Gmsh major version])
    23592529        fi     
    23602530        dnl }}}
    23612531        dnl Capabilities
    23622532        dnl with-bamg{{{
     2533        AC_MSG_CHECKING([for BAMG capability compilation])
    23632534        AC_ARG_WITH(
    23642535                [bamg],
     
    23672538                [BAMG=yes]
    23682539        )
    2369         AC_MSG_CHECKING([for BAMG capability compilation])
    23702540        HAVE_BAMG=no
    23712541        if test "x${BAMG}" == "xyes"; then
     
    23772547        dnl }}}
    23782548        dnl with-ocean{{{
     2549        AC_MSG_CHECKING(for ice/ocean coupling capability compilation)
    23792550        AC_ARG_WITH(
    23802551                [ocean],
     
    23832554                [OCEAN=no]
    23842555        )
    2385         AC_MSG_CHECKING(for ice/ocean coupling capability compilation)
    2386 
    23872556        HAVE_OCEAN=no
    23882557        if test "x${OCEAN}" == "xyes"; then
     
    23942563        dnl }}}
    23952564        dnl with-kml{{{
     2565        AC_MSG_CHECKING(for kml capability compilation)
    23962566        AC_ARG_WITH(
    23972567                [kml],
     
    24002570                [KML=no]
    24012571        )
    2402         AC_MSG_CHECKING(for kml capability compilation)
    2403 
    24042572        HAVE_KML=no
    24052573        if test "x${KML}" == "xyes"; then
     
    24112579        dnl }}}
    24122580        dnl with-kriging{{{
     2581        AC_MSG_CHECKING(for kriging capability compilation)
    24132582        AC_ARG_WITH(
    24142583                [kriging],
     
    24172586                [KRIGING=yes]
    24182587        )
    2419         AC_MSG_CHECKING(for kriging capability compilation)
    2420 
    24212588        HAVE_KRIGING=no
    24222589        if test "x${KRIGING}" == "xyes"; then
     
    24332600        dnl Platform specifics
    24342601        dnl with-ios{{{
     2602        AC_MSG_CHECKING(for iOS compilation)
    24352603        AC_ARG_WITH(
    24362604                [ios],
     
    24392607                [IOS=no]
    24402608        )
    2441         AC_MSG_CHECKING(for iOS compilation)
    2442 
    24432609        HAVE_IOS=no
    24442610        if test "x${IOS}" == "xyes"; then
     
    24502616        dnl }}}
    24512617        dnl with-android{{{
     2618        AC_MSG_CHECKING([for Android capability compilation])
    24522619        AC_ARG_WITH(
    24532620                [android],
    24542621                AS_HELP_STRING([--with-android=EXE], [compile with Android capabilities (default: "no"; alternatives: "exe", "jni")]),
    24552622                [ANDROID=${withval}],
    2456                 [ANDROID=no])
    2457         AC_MSG_CHECKING([for Android capability compilation])
    2458 
     2623                [ANDROID=no]
     2624        )
    24592625        if test "x${ANDROID}" == "xjni"; then
    24602626                HAVE_ANDROID=jni
     
    24752641        dnl }}}
    24762642        dnl with-android-ndk{{{
     2643        AC_MSG_CHECKING([with Android Native Development Kit (NDK)])
    24772644        AC_ARG_WITH(
    24782645                [android-ndk],
     
    24812648                [ANDROID_NDK_ROOT=""]
    24822649        )
    2483         AC_MSG_CHECKING([with Android Native Development Kit (NDK)])
    2484 
    24852650        if test -d "${ANDROID_NDK_ROOT}"; then
    24862651                HAVE_ANDROID_NDK=yes
     
    24962661        dnl other options
    24972662        dnl optimization{{{
    2498         dnl -- bypass standard optimization -g -O2 -fPIC -std=c++11?
     2663        dnl -- bypass standard optimization -g -O2 -fPIC?
     2664        AC_MSG_CHECKING(for C++ optimization flags)
    24992665        AC_ARG_WITH(
    25002666                [cxxoptflags],
    25012667                AS_HELP_STRING([--with-cxxoptflags=CXXOPTFLAGS], [C++ optimization flags (i.e. --with-cxxoptflags="-march=opteron -O3 -std=c++11"]),
    25022668                [CXXOPTFLAGS=${withval}],
    2503                 [CXXOPTFLAGS="-g -O2 -fPIC -std=c++11"]
    2504         )
    2505         AC_MSG_CHECKING(for C++ optimization flags)
     2669                [CXXOPTFLAGS="-g -O2 -fPIC"]
     2670        )
    25062671        AC_SUBST([CXXOPTFLAGS])
    2507         AC_MSG_RESULT([done])
     2672        AC_MSG_RESULT([${CXXOPTFLAGS}])
    25082673        dnl }}}
    25092674        dnl multithreading{{{
     2675        AC_MSG_CHECKING(for number of threads)
    25102676        AC_ARG_WITH(
    25112677                [numthreads],
     
    25142680                [NUMTHREADS_VALUE=1]
    25152681        )
    2516         AC_MSG_CHECKING(for number of threads)
    25172682        dnl Check that supplied value is an integer
    25182683        if [[ "${NUMTHREADS_VALUE}" != "${NUMTHREADS_VALUE}" 2> /dev/null ]]; then
     
    25292694                                MULTITHREADINGLIB="-lpthread -lrt"
    25302695                        ;;
     2696                        *darwin*)
     2697                                MULTITHREADINGLIB="-lpthread"
     2698                        ;;
    25312699                        *linux*)
    25322700                                MULTITHREADINGLIB="-lpthread -lrt"
    25332701                        ;;
    2534                         *darwin*)
    2535                                 MULTITHREADINGLIB="-lpthread"
     2702                        *mingw*)
     2703                                MULTITHREADINGLIB=""
     2704                        ;;
     2705                        *msys*)
     2706                                MULTITHREADINGLIB=""
    25362707                        ;;
    25372708                esac
    25382709                AC_DEFINE([_MULTITHREADING_], [1], [with multithreading enabled])
    25392710        fi
    2540         AC_DEFINE_UNQUOTED(_NUMTHREADS_, $NUMTHREADS_VALUE, [number of threads])
     2711        AC_DEFINE_UNQUOTED([_NUMTHREADS_], ${NUMTHREADS_VALUE}, [number of threads])
    25412712        AC_SUBST([MULTITHREADINGLIB])
    25422713        AC_MSG_RESULT([${NUMTHREADS_VALUE}])
    25432714        dnl }}}
    25442715        dnl 64-bit indices{{{
     2716        AC_MSG_CHECKING([for 64-bit indices])
    25452717        AC_ARG_WITH(
    25462718                [64bit-indices],
     
    25492721                [USE_64BIT_INDICES=0]
    25502722        )
    2551         AC_MSG_CHECKING([for 64-bit indices])
    2552 
    25532723        if test "x${USE_64BIT_INDICES}" == "x1"; then
    25542724                AC_DEFINE([ISSM_USE_64BIT_INDICES], [1], [with 64-bit indices])
     
    25602730
    25612731        dnl Checks {{{
    2562         AC_MSG_CHECKING(consistency between all libraries)
     2732        AC_MSG_CHECKING(consistency between all external packages)
    25632733
    25642734        dnl Check that if PETSc is requested, MPI is specified
     
    25902760
    25912761        dnl Check that if we run ADOL-C, we don't compile kriging.exe
    2592         if test "x$HAVE_ADOLC" == "xyes" && test "${HAVE_KRIGING}" == "xyes"; then
     2762        if test "x${HAVE_ADOLC}" == "xyes" && test "${HAVE_KRIGING}" == "xyes"; then
    25932763                AC_MSG_ERROR([cannot compile kriging.exe under ADOL-C conditions!]);
    25942764        fi
  • issm/trunk-jpl/src/c/Makefile.am

    r26004 r26034  
    1 AM_CPPFLAGS = @NEOPZINCL@ @DAKOTAINCL@ @SHAPELIBINCL@ @PETSCINCL@ @SLEPCINCL@ @AMPIINCL@ @ADJOINTMPIINCL@ @MEDIPACKINCL@ @MPIINCL@ @METISINCL@ @CHACOINCL@ @SCOTCHINCL@ @PLAPACKINCL@ @BLASLAPACKINCL@ @MKLINCL@ @MUMPSINCL@ @TRIANGLEINCL@ @SPAIINCL@ @HYPREINCL@ @PROMETHEUSINCL@ @SUPERLUINCL@ @SPOOLESINCL@ @PASTIXINCL@ @MLINCL@ @TAOINCL@ @ADIC2INCL@ @ADOLCINCL@ @CODIPACKINCL@ @GSLINCL@ @BOOSTINCL@ @ANDROID_NDKINCL@ @METEOIOINCL@ @SNOWPACKINCL@ @PROJINCL@ @ESMFINCL@
     1AM_CPPFLAGS = @NEOPZINCL@ @DAKOTAINCL@ @SHAPELIBINCL@ @PETSCINCL@ @SLEPCINCL@ @AMPIINCL@ @ADJOINTMPIINCL@ @MEDIPACKINCL@ @MPIINCL@ @METISINCL@ @CHACOINCL@ @SCOTCHINCL@ @PLAPACKINCL@ @MKLINCL@ @MUMPSINCL@ @TRIANGLEINCL@ @SPAIINCL@ @HYPREINCL@ @PROMETHEUSINCL@ @SUPERLUINCL@ @SPOOLESINCL@ @PASTIXINCL@ @MLINCL@ @TAOINCL@ @ADIC2INCL@ @ADOLCINCL@ @CODIPACKINCL@ @GSLINCL@ @BOOSTINCL@ @ANDROID_NDKINCL@ @METEOIOINCL@ @SNOWPACKINCL@ @PROJINCL@ @ESMFINCL@
    22AM_FCFLAGS = @SEMICINCL@
    33
     
    88#Library declaration {{{
    99if !WINDOWS
    10 lib_LTLIBRARIES = libISSMCore.la libISSMOverload.la
     10lib_LTLIBRARIES = libISSMCore.la
     11if !MSYS2
     12lib_LTLIBRARIES += libISSMOverload.la
     13endif
    1114if WRAPPERS
    1215lib_LTLIBRARIES += libISSMModules.la
     
    682685#}}}
    683686#Library flags and sources {{{
    684 ALLCXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
     687ALL_CXXFLAGS = $(CXXFLAGS) $(CXXOPTFLAGS)
     688
     689# Cannot have undefined symbols under msys2
     690if MSYS2
     691ALL_CXXFLAGS += -D_DO_NOT_LOAD_GLOBALS_
     692endif
    685693
    686694libISSMCore_la_SOURCES  = $(issm_sources)
    687 libISSMCore_la_CXXFLAGS = $(ALLCXXFLAGS) $(DAKOTAFLAGS)
     695libISSMCore_la_CXXFLAGS = $(ALL_CXXFLAGS) $(DAKOTAFLAGS)
    688696libISSMCore_la_FFLAGS = $(AM_FFLAGS)
    689697
    690698if !WINDOWS
    691699if !STANDALONE_LIBRARIES
    692 libISSMCore_la_LIBADD = $(PETSCLIB) $(HDF5LIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(ADJOINTMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
     700libISSMCore_la_LIBADD = $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(CHACOLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(ADJOINTMPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(OSLIBS)
    693701if FORTRAN
    694702libISSMCore_la_LIBADD += $(FLIBS) $(FORTRANLIB)
     
    711719endif
    712720
    713 libISSMModules_la_CXXFLAGS = $(ALLCXXFLAGS)
     721libISSMModules_la_CXXFLAGS = $(ALL_CXXFLAGS)
    714722if !WINDOWS
    715723if STANDALONE_LIBRARIES
     
    743751endif
    744752
     753if VERSION
     754libISSMCore_la_LDFLAGS =
     755if WRAPPERS
     756libISSMModules_la_LDFLAGS =
     757endif
     758else
     759libISSMCore_la_LDFLAGS = -avoid-version
     760if WRAPPERS
     761libISSMModules_la_LDFLAGS = -avoid-version
     762endif
     763endif
     764
    745765if STANDALONE_LIBRARIES
    746 libISSMCore_la_LDFLAGS = -static
    747 libISSMOverload_la_LDFLAGS = -static
     766libISSMCore_la_LDFLAGS += -static
    748767if WRAPPERS
    749 libISSMModules_la_LDFLAGS = -static
    750 else
    751 libISSMModules_la_LDFLAGS =
    752 endif
    753 else
    754 libISSMCore_la_LDFLAGS =
    755 libISSMOverload_la_LDFLAGS =
    756 endif
    757 
    758 #}}}
     768libISSMModules_la_LDFLAGS += -static
     769endif
     770endif
     771#}}}
     772
     773if !MSYS2
    759774#Overload library, to overload any non-standard symbols. {{{
    760775libISSMOverload_la_SOURCES = ./shared/String/ApiPrintf.cpp
    761 
    762776libISSMOverload_la_CFLAGS  = -D_C_ -fPIC $(COPTFLAGS) $(CFLAGS)
     777
     778if VERSION
     779libISSMOverload_la_LDFLAGS =
     780else
     781libISSMOverload_la_LDFLAGS = -avoid-version
     782endif
     783
     784if STANDALONE_LIBRARIES
     785libISSMOverload_la_LDFLAGS += -static
     786endif
     787endif
    763788#}}}
    764789#Executable {{{
     
    778803
    779804#Standard libraries
    780 LDADD = ./libISSMCore.la ./libISSMOverload.la
     805LDADD = ./libISSMCore.la
     806
     807if !MSYS2
     808LDADD += ./libISSMOverload.la
     809endif
     810
    781811if WRAPPERS
    782812LDADD += ./libISSMModules.la $(TRIANGLELIB)
     
    784814
    785815#External packages
    786 LDADD += $(NEOPZLIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(PETSCLIB) $(HDF5LIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(AMPILIB) $(ADJOINTMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) $(ESMFLIB)
     816LDADD +=  $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(NEOPZLIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(BLACSLIB) $(HDF5LIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(CHACOLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(AMPILIB) $(ADJOINTMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) $(ESMFLIB) $(OSLIBS)
    787817
    788818if FORTRAN
  • issm/trunk-jpl/src/c/shared/io/Comm/IssmComm.cpp

    r15839 r26034  
    1212#include "../../Numerics/types.h"
    1313#include "../../Exceptions/exceptions.h"
     14
     15#ifdef _DO_NOT_LOAD_GLOBALS_
     16ISSM_MPI_Comm   IssmComm::comm;
     17bool                    IssmComm::parallel;
     18#endif
    1419
    1520void IssmComm::SetComm(ISSM_MPI_Comm incomm){ /*{{{*/
  • issm/trunk-jpl/src/c/shared/io/Print/PrintfFunction.cpp

    r24477 r26034  
    3232                #ifdef _HAVE_ANDROID_JNI_
    3333                __android_log_print(ANDROID_LOG_INFO, "Native",message.c_str());
     34                #elif _IS_MSYS2_
     35                printf("%s",message.c_str());
    3436                #else
    3537                ApiPrintf(message.c_str());
     
    4244        #ifdef _HAVE_ANDROID_JNI_
    4345        __android_log_print(ANDROID_LOG_INFO, "Native",message.c_str());
     46        #elif _IS_MSYS2_
     47        printf("%s",message.c_str());
    4448        #else
    4549        ApiPrintf(message.c_str());
  • issm/trunk-jpl/src/c/toolkits/ToolkitOptions.cpp

    r24011 r26034  
    88#include "../shared/Exceptions/exceptions.h"
    99#include "../shared/MemOps/MemOps.h"
     10
     11#ifdef _DO_NOT_LOAD_GLOBALS_
     12char* ToolkitOptions::toolkittype;
     13char* ToolkitOptions::toolkitoptions;
     14#endif
    1015
    1116void  ToolkitOptions::Init(const char* toolkit_in,const char* options){ /*{{{*/
  • issm/trunk-jpl/src/m/classes/clusters/generic.m

    r25956 r26034  
    2828
    2929                        %Change the defaults if ispc
    30                         if ispc,
     30                        if ispc & ~ismingw,
    3131                                cluster.codepath      = [issmdir() '\bin'];
    3232                                cluster.etcpath       = [issmdir() '\etc'];
     
    145145
    146146                                if cluster.np>1,
    147                                         fprintf(fid,'"C:\\Program Files\\MPICH2\\bin\\mpiexec.exe" -n %i "%s/%s" %s ./ %s ',cluster.np,cluster.codepath,executable,solution,modelname);
     147                                        % fprintf(fid,'"C:\\Program Files\\MPICH2\\bin\\mpiexec.exe" -n %i "%s/%s" %s ./ %s ',cluster.np,cluster.codepath,executable,solution,modelname);
     148                                        fprintf(fid,'"C:\\PROGRA~1\\MICROS~1\\Bin\\mpiexec.exe" -n %i "%s/%s" %s ./ %s ',cluster.np,cluster.codepath,executable,solution,modelname);
    148149                                else
    149150                                        fprintf(fid,'"%s/%s" %s ./ %s ',cluster.codepath,executable,solution,modelname);
  • issm/trunk-jpl/src/m/classes/clusters/localpfe.m

    r25956 r26034  
    2727                function cluster=localpfe(varargin) % {{{
    2828
    29                         %Change the defaults if ispc
    30                         if ispc,
     29                        %Change the defaults if ispc and not ismingw
     30                        if ispc & ~ismingw,
    3131                                cluster.codepath      = [issmdir() '\bin'];
    3232                                cluster.etcpath       = [issmdir() '\etc'];
     
    106106                        executable='issm_slc.exe';
    107107
    108                         if ispc(), error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
     108                        if ispc & ~ismingw, error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
    109109                       
    110110                        %write queuing script
     
    170170
    171171                        %write queuing script
    172                         if ~ispc(),
     172                        if ~ispc,
    173173
    174174                                fid=fopen([modelname '.queue'],'w');
     
    214214                %}}}
    215215                function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
    216                         if ~ispc,
     216                        if ~ispc | ismingw,
    217217
    218218                                %compress the files into one zip.
     
    262262                function Download(cluster,dirname,filelist)% {{{
    263263
    264                         if ispc(),
     264                        if ispc && ~ismingw,
    265265                                %do nothing
    266266                                return;
  • issm/trunk-jpl/src/m/classes/clusters/pfe.m

    r25956 r26034  
    216216                        executable='issm_slc.exe';
    217217
    218                         if ispc(), error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
     218                        if ispc & ~ismingw, error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
    219219
    220220                        %write queuing script
  • issm/trunk-jpl/src/m/dev/devpath.m

    r25368 r26034  
    33
    44%Recover ISSM_DIR , or if on a Windows machine, ISSM_DIR_WIN
    5 if ~ispc,
     5if ispc,
     6        ISSM_DIR=getenv('ISSM_DIR_WIN');
     7else
    68        ISSM_DIR=getenv('ISSM_DIR');
    7 else
    8         ISSM_DIR=getenv('ISSM_DIR_WIN');
    99end
     10
    1011if (isempty(ISSM_DIR)),
    1112        error('''ISSM_DIR'' environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!');
     
    1819%ISSM path
    1920addpath([ISSM_DIR '/src/m/os/']); %load recursivepath
    20 addpath([ISSM_DIR '/lib']);       %load mex
     21addpath([ISSM_DIR '/lib']);       %load MEX files
    2122addpath(recursivepath([ISSM_DIR '/src/m']));
    2223addpath(recursivepath([ISSM_DIR '/externalpackages/scotch']));
  • issm/trunk-jpl/src/m/os/issmscpin.m

    r23054 r26034  
    1818%if hostname and host are the same, do a simple copy
    1919if strcmpi(hostname,host),
    20 
    21     for i=1:numel(packages),
     20        for i=1:numel(packages),
    2221                success=copyfile([path '/' packages{i}]); %keep going, even if success=0
    2322        end
    24 
    2523else
    26 
    27         if ispc(),
     24        if ispc & ~ismingw,
    2825                %use the putty project pscp.exe: it should be in the path.
    2926
  • issm/trunk-jpl/src/m/os/issmscpout.m

    r15315 r26034  
    2424                system(['rm -rf ' packages{i} ]);
    2525                if no_symlinks,
    26                         system(['cp  ' here '/' packages{i} ' .']);
     26                        system(['cp ' here '/' packages{i} ' .']);
    2727                else
    2828                        system(['ln -s ' here '/' packages{i} ' .']);
     
    3131        end
    3232else
    33         if ispc(),
     33        if ispc & ~ismingw,
    3434                %use the putty project pscp.exe: it should be in the path.
    3535
  • issm/trunk-jpl/src/m/os/issmssh.m

    r13646 r26034  
    1212        system(command);
    1313else
    14         if ispc(),
     14        if ispc & ~ismingw,
    1515                %use the putty project plink.exe: it should be in the path.
    1616
  • issm/trunk-jpl/src/m/os/oshostname.m

    r22056 r26034  
    2222%Method 3, last chance
    2323if isempty(hostname),
    24         if ispc
     24        if ispc % If OS is MinGW, $COMPUTERNAME and $HOSTNAME are identical
    2525                hostname = getenv('COMPUTERNAME');
    2626        else
  • issm/trunk-jpl/src/m/solve/loadresultsfromdisk.m

    r25717 r26034  
    1212
    1313if ~md.qmu.isdakota,
    14 
    1514        %Check that file exists
    1615        if ~exist(filename,'file'),
  • issm/trunk-jpl/src/wrappers/Triangle/Triangle.h

    r22498 r26034  
    1919#ifdef _HAVE_JAVASCRIPT_MODULES_
    2020#undef _DO_NOT_LOAD_GLOBALS_ /*only module where this needs to be undefined, so as to
    21                                                            not include IssmComm several times in the javascript Modle construct.*/
     21                                                           not include IssmComm several times in the JavaScript module construct.*/
    2222#endif
    2323
  • issm/trunk-jpl/src/wrappers/javascript/Makefile.am

    r23246 r26034  
    1 AM_CPPFLAGS = @DAKOTAINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @AMPIINCL@ @ADJOINTMPIINCL@ @CODIPACKINCL@
     1AM_CPPFLAGS = @DAKOTAINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @PARMETISINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @AMPIINCL@ @ADJOINTMPIINCL@ @CODIPACKINCL@
    22AUTOMAKE_OPTIONS = subdir-objects
    33
     
    6060AM_CXXFLAGS +=  -D_HAVE_JAVASCRIPT_MODULES_ -fPIC
    6161
    62 deps = ./libISSMJavascript.la ../../c/libISSMModules.la ../../c/libISSMCore.la ./libISSMApi.la
     62deps = ./libISSMJavascript.la ./libISSMApi.la ../../c/libISSMCore.la ../../c/libISSMModules.la
    6363
    6464#Optimization flags:
  • issm/trunk-jpl/src/wrappers/matlab/Makefile.am

    r25770 r26034  
    2020        ./io/WriteMatlabData.cpp
    2121
    22 ALLCXXFLAGS= -fPIC -D_WRAPPERS_ $(CXXFLAGS) $(CXXOPTFLAGS)
     22ALL_CXXFLAGS = -fPIC -D_WRAPPERS_
     23
     24# Cannot have undefined symbols under msys2
     25if MSYS2
     26ALL_CXXFLAGS += -D_DO_NOT_LOAD_GLOBALS_
     27endif
     28
     29ALL_CXXFLAGS += $(CXXOPTFLAGS) $(CXXFLAGS)
    2330
    2431libISSMMatlab_la_SOURCES = $(io_sources)
    25 libISSMMatlab_la_CXXFLAGS= $(ALLCXXFLAGS)
     32libISSMMatlab_la_CXXFLAGS = ${ALL_CXXFLAGS}
    2633#}}}
    2734#api io{{{
     
    3239endif
    3340
     41if !MSYS2
    3442api_sources= ./io/ApiPrintf.cpp
    3543
    3644libISSMApi_la_SOURCES = $(api_sources)
    37 libISSMApi_la_CXXFLAGS= $(ALLCXXFLAGS)
     45libISSMApi_la_CXXFLAGS = ${ALL_CXXFLAGS}
     46endif
    3847#}}}
    3948#Wrappers {{{
     
    8291
    8392#Triangle library
    84 AM_CXXFLAGS =  -DTRILIBRARY -DANSI_DECLARATORS -DNO_TIMER -D_WRAPPERS_
     93TRI_CXXFLAGS = -DTRILIBRARY -DANSI_DECLARATORS -DNO_TIMER
    8594
    8695#Matlab part
    87 AM_LDFLAGS = -module $(MEXLINK) -shrext ${EXEEXT} --export-dynamic -rdynamic -no-undefined
     96MEX_CXXFLAGS = -D_HAVE_MATLAB_MODULES_ $(MEXOPTFLAGS) $(MEXCXXFLAGS)
     97MEX_CPPFLAGS = $(MATLABINCL)
     98MEX_LDFLAGS = -module -shrext $(MEXEXT) -no-undefined
     99MEX_LIBADD = $(MEXLINKFLAGS) $(MEXLIB)
     100
     101AM_CPPFLAGS += ${MEX_CPPFLAGS}
     102AM_CXXFLAGS = ${TRI_CXXFLAGS} ${MEX_CXXFLAGS}
     103AM_LDFLAGS = ${MEX_LDFLAGS}
     104AM_LIBADD = ${MEX_LIBADD}
     105
     106if !MSYS2
     107AM_LDFLAGS += --export-dynamic -rdynamic
     108endif
    88109
    89110if !VERSION
     
    108129AM_CXXFLAGS += -D_HAVE_MATLAB_MODULES_ -fPIC
    109130
    110 deps += ./libISSMMatlab.la ../../c/libISSMModules.la ../../c/libISSMCore.la ./libISSMApi.la
    111 
    112 if WINDOWS
    113 deps += $(METISLIB)
    114 endif
     131deps += ./libISSMMatlab.la ../../c/libISSMCore.la ../../c/libISSMModules.la
     132
     133if !MSYS2
     134deps += ./libISSMApi.la
     135endif
     136
     137# if WINDOWS
     138# deps += $(METISLIB)
     139# endif
    115140
    116141if ADOLC
     
    122147endif
    123148
    124 #MEXLIB needs to be the last (undefined references on larsen)
    125 deps += ${MEXLIB}
    126 
    127 #Optimization flags:
    128 AM_CXXFLAGS += $(CXXOPTFLAGS)
     149# #MEXLIB needs to be the last (undefined references on larsen)
     150# deps += ${MEXLIB}
     151
     152# #Optimization flags:
     153# AM_CXXFLAGS += $(CXXOPTFLAGS)
    129154#}}}
    130155# Module sources and dependencies {{{
    131156if !WINDOWS
    132 libISSMMatlab_la_LIBADD = ./../../c/libISSMCore.la ./../../c/libISSMModules.la $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(MKLLIB) $(GSLLIB) $(PROJLIB) $(MATHLIB) $(MEXLIB)
     157libISSMMatlab_la_LIBADD = ./../../c/libISSMCore.la ./../../c/libISSMModules.la $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(MPILIB) $(NEOPZLIB) $(MKLLIB) $(GSLLIB) $(PROJLIB) $(MATHLIB) $(MEXLIB)
     158endif
     159
     160if VERSION
     161libISSMMatlab_la_LDFLAGS =
     162libISSMApi_la_LDFLAGS =
     163else
     164libISSMMatlab_la_LDFLAGS = -avoid-version
     165libISSMApi_la_LDFLAGS = -avoid-version
    133166endif
    134167
    135168if STANDALONE_LIBRARIES
    136 libISSMMatlab_la_LDFLAGS = -static
    137 libISSMApi_la_LDFLAGS = -static
    138 deps += $(PETSCLIB) $(HDF5LIB) $(TAOLIB) $(NEOPZLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
    139 endif
    140 
    141 if !WINDOWS
    142 libISSMApi_la_LIBADD = $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB) $(MATHLIB) $(MEXLIB)
     169libISSMMatlab_la_LDFLAGS += -static
     170libISSMApi_la_LDFLAGS += -static
     171deps +=  $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(TAOLIB) $(NEOPZLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(CHACOLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) $(OSLIBS)
     172endif
     173
     174if !WINDOWS
     175libISSMApi_la_LIBADD = $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB) $(MATHLIB) $(MEXLIB)
    143176endif
    144177
    145178BamgConvertMesh_matlab_la_SOURCES = ../BamgConvertMesh/BamgConvertMesh.cpp
    146179BamgConvertMesh_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    147 BamgConvertMesh_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     180BamgConvertMesh_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    148181
    149182BamgMesher_matlab_la_SOURCES = ../BamgMesher/BamgMesher.cpp
    150183BamgMesher_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    151 BamgMesher_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     184BamgMesher_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    152185
    153186BamgTriangulate_matlab_la_SOURCES = ../BamgTriangulate/BamgTriangulate.cpp
    154187BamgTriangulate_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    155 BamgTriangulate_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     188BamgTriangulate_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    156189
    157190if CHACO
    158191Chaco_matlab_la_SOURCES = ../Chaco/Chaco.cpp
    159192Chaco_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    160 Chaco_matlab_la_LIBADD = ${deps} $(CHACOLIB) $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     193Chaco_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    161194endif
    162195
    163196ContourToMesh_matlab_la_SOURCES = ../ContourToMesh/ContourToMesh.cpp
    164197ContourToMesh_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    165 ContourToMesh_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     198ContourToMesh_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    166199
    167200ContourToNodes_matlab_la_SOURCES = ../ContourToNodes/ContourToNodes.cpp
    168201ContourToNodes_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    169 ContourToNodes_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     202ContourToNodes_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    170203
    171204CoordTransform_matlab_la_SOURCES = ../CoordTransform/CoordTransform.cpp
    172205CoordTransform_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    173 CoordTransform_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     206CoordTransform_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    174207
    175208DistanceToMaskBoundary_matlab_la_SOURCES = ../DistanceToMaskBoundary/DistanceToMaskBoundary.cpp
    176209DistanceToMaskBoundary_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    177 DistanceToMaskBoundary_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     210DistanceToMaskBoundary_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    178211
    179212ElementConnectivity_matlab_la_SOURCES = ../ElementConnectivity/ElementConnectivity.cpp
    180213ElementConnectivity_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    181 ElementConnectivity_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     214ElementConnectivity_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    182215
    183216ExpToLevelSet_matlab_la_SOURCES = ../ExpToLevelSet/ExpToLevelSet.cpp
    184217ExpToLevelSet_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    185 ExpToLevelSet_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     218ExpToLevelSet_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    186219
    187220ExpSimplify_matlab_la_SOURCES = ../ExpSimplify/ExpSimplify.cpp
    188221ExpSimplify_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    189 ExpSimplify_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB) $(NEOPZLIB)
     222ExpSimplify_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    190223
    191224InterpFromGridToMesh_matlab_la_SOURCES = ../InterpFromGridToMesh/InterpFromGridToMesh.cpp
    192225InterpFromGridToMesh_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    193 InterpFromGridToMesh_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     226InterpFromGridToMesh_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    194227
    195228InterpFromMesh2d_matlab_la_SOURCES = ../InterpFromMesh2d/InterpFromMesh2d.cpp
    196229InterpFromMesh2d_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    197 InterpFromMesh2d_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     230InterpFromMesh2d_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    198231
    199232InterpFromMeshToGrid_matlab_la_SOURCES = ../InterpFromMeshToGrid/InterpFromMeshToGrid.cpp
    200233InterpFromMeshToGrid_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    201 InterpFromMeshToGrid_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     234InterpFromMeshToGrid_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    202235
    203236InterpFromMeshToMesh2d_matlab_la_SOURCES = ../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp
    204237InterpFromMeshToMesh2d_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    205 InterpFromMeshToMesh2d_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     238InterpFromMeshToMesh2d_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    206239
    207240InterpFromMeshToMesh3d_matlab_la_SOURCES = ../InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp
    208241InterpFromMeshToMesh3d_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    209 InterpFromMeshToMesh3d_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     242InterpFromMeshToMesh3d_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    210243
    211244IssmConfig_matlab_la_SOURCES = ../IssmConfig/IssmConfig.cpp
    212245IssmConfig_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    213 IssmConfig_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(MPILIB) $(NEOPZLIB)
     246IssmConfig_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    214247
    215248Kriging_matlab_la_SOURCES = ../Kriging/Kriging.cpp
    216249Kriging_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    217 Kriging_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJLIB)
     250Kriging_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    218251
    219252M1qn3_matlab_la_SOURCES = ../M1qn3/M1qn3.cpp
    220253M1qn3_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    221 M1qn3_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(METISLIB) $(M1QN3LIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     254M1qn3_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    222255
    223256MeshPartition_matlab_la_SOURCES = ../MeshPartition/MeshPartition.cpp
    224257MeshPartition_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    225 MeshPartition_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(METISLIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     258MeshPartition_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    226259
    227260MeshProfileIntersection_matlab_la_SOURCES = ../MeshProfileIntersection/MeshProfileIntersection.cpp
    228261MeshProfileIntersection_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    229 MeshProfileIntersection_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     262MeshProfileIntersection_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    230263
    231264NodeConnectivity_matlab_la_SOURCES = ../NodeConnectivity/NodeConnectivity.cpp
    232265NodeConnectivity_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    233 NodeConnectivity_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     266NodeConnectivity_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    234267
    235268PointCloudFindNeighbors_matlab_la_SOURCES = ../PointCloudFindNeighbors/PointCloudFindNeighbors.cpp
    236269PointCloudFindNeighbors_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    237 PointCloudFindNeighbors_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     270PointCloudFindNeighbors_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    238271
    239272PropagateFlagsFromConnectivity_matlab_la_SOURCES = ../PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp
    240273PropagateFlagsFromConnectivity_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    241 PropagateFlagsFromConnectivity_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     274PropagateFlagsFromConnectivity_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    242275
    243276Scotch_matlab_la_SOURCES = ../Scotch/Scotch.cpp
    244277Scotch_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    245 Scotch_matlab_la_LIBADD = ${deps}  $(PETSCLIB) $(HDF5LIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(BLASLAPACKLIB)
     278Scotch_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    246279
    247280ShpRead_matlab_la_SOURCES = ../ShpRead/ShpRead.cpp
    248281ShpRead_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    249 ShpRead_matlab_la_LIBADD = ${deps} $(SHAPELIBLIB) $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     282ShpRead_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
    250283
    251284Triangle_matlab_la_SOURCES = ../Triangle/Triangle.cpp
    252285Triangle_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    253 Triangle_matlab_la_LIBADD = ${deps} $(TRIANGLELIB) $(PETSCLIB) $(HDF5LIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
     286Triangle_matlab_la_LIBADD = ${deps} $(TRIANGLELIB) ${AM_LIBADD}
    254287
    255288ProcessRifts_matlab_la_SOURCES = ../ProcessRifts/ProcessRifts.cpp
    256289ProcessRifts_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
    257 ProcessRifts_matlab_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB)
    258 #}}}
     290ProcessRifts_matlab_la_LIBADD = ${deps} ${AM_LIBADD}
     291#}}}
  • issm/trunk-jpl/src/wrappers/matlab/include/wrapper_macros.h

    r24011 r26034  
    3434/*}}}*/
    3535/* WRAPPER {{{*/
    36 #define WRAPPER(modulename,...) void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[])
     36#define WRAPPER(modulename,...) void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) /* NOTE: In this case, modulename is thrown away in the macro expansion whereas it is used in for the Python wrappers (see also: src/wrappers/python/include/wrapper_macros.h, any result of `grep -r 'WRAPPER(' $ISSM_DIR/src)` */
    3737/*}}}*/
    3838/* CHECKARGUMENTS {{{*/
  • issm/trunk-jpl/src/wrappers/python/Makefile.am

    r25770 r26034  
    1 AM_CPPFLAGS = @DAKOTAINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @PYTHONINCL@ @PYTHON_NUMPYINCL@ @AMPIINCL@ @ADJOINTMPIINCL@ @MEDIPACKINCL@ @CODIPACKINCL@
     1AM_CPPFLAGS = @DAKOTAINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @PARMETISINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @PYTHONINCL@ @PYTHON_NUMPYINCL@ @AMPIINCL@ @ADJOINTMPIINCL@ @MEDIPACKINCL@ @CODIPACKINCL@
    22AUTOMAKE_OPTIONS = subdir-objects
    33
     
    7070#       will be linked to, whether we like it or not, if no static version is
    7171#       available.
    72 # - On macOS, static linking of binaries is not supported.
     72# - On macOC, static linking of binaries is not supported.
    7373#
    7474if STANDALONE_MODULES
     
    8787endif
    8888
    89 deps += ./libISSMPython.la ../../c/libISSMModules.la ../../c/libISSMCore.la ./libISSMApi.la
     89deps += ./libISSMPython.la ./libISSMApi.la ../../c/libISSMCore.la ../../c/libISSMModules.la
    9090
    9191if ADOLC
     
    106106libISSMPython_la_LDFLAGS = -static
    107107libISSMApi_la_LDFLAGS = -static
    108 deps += $(DAKOTALIB) $(PETSCLIB) $(HDF5LIB) $(TAOLIB) $(NEOPZLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
     108deps += $(DAKOTALIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(TAOLIB) $(NEOPZLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(CHACOLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(OSLIBS)
    109109endif
    110110
Note: See TracChangeset for help on using the changeset viewer.