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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified 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
Note: See TracChangeset for help on using the changeset viewer.