m4/lx_check_glpk.m4
author Peter Kovacs <kpeter@inf.elte.hu>
Fri, 03 Apr 2009 18:59:15 +0200
changeset 655 6ac5d9ae1d3d
parent 480 69928a704ffb
child 674 20dac2104519
permissions -rw-r--r--
Support real types + numerical stability fix in NS (#254)

- Real types are supported by appropriate inicialization.
- A feature of the XTI spanning tree structure is removed to ensure
numerical stability (could cause problems using integer types).
The node potentials are updated always on the lower subtree,
in order to prevent overflow problems.
The former method isn't notably faster during to our tests.
     1 AC_DEFUN([LX_CHECK_GLPK],
     2 [
     3   AC_ARG_WITH([glpk],
     4 AS_HELP_STRING([--with-glpk@<:@=PREFIX@:>@], [search for GLPK under PREFIX or under the default search paths if PREFIX is not given @<:@default@:>@])
     5 AS_HELP_STRING([--without-glpk], [disable checking for GLPK]),
     6               [], [with_glpk=yes])
     7 
     8   AC_ARG_WITH([glpk-includedir],
     9 AS_HELP_STRING([--with-glpk-includedir=DIR], [search for GLPK headers in DIR]),
    10               [], [with_glpk_includedir=no])
    11 
    12   AC_ARG_WITH([glpk-libdir],
    13 AS_HELP_STRING([--with-glpk-libdir=DIR], [search for GLPK libraries in DIR]),
    14               [], [with_glpk_libdir=no])
    15 
    16   lx_glpk_found=no
    17   if test x"$with_glpk" != x"no"; then
    18     AC_MSG_CHECKING([for GLPK])
    19 
    20     if test x"$with_glpk_includedir" != x"no"; then
    21       GLPK_CFLAGS="-I$with_glpk_includedir"
    22     elif test x"$with_glpk" != x"yes"; then
    23       GLPK_CFLAGS="-I$with_glpk/include"
    24     fi
    25 
    26     if test x"$with_glpk_libdir" != x"no"; then
    27       GLPK_LDFLAGS="-L$with_glpk_libdir"
    28     elif test x"$with_glpk" != x"yes"; then
    29       GLPK_LDFLAGS="-L$with_glpk/lib"
    30     fi
    31     GLPK_LIBS="-lglpk"
    32 
    33     lx_save_cxxflags="$CXXFLAGS"
    34     lx_save_ldflags="$LDFLAGS"
    35     lx_save_libs="$LIBS"
    36     CXXFLAGS="$GLPK_CFLAGS"
    37     LDFLAGS="$GLPK_LDFLAGS"
    38     LIBS="$GLPK_LIBS"
    39 
    40     lx_glpk_test_prog='
    41       extern "C" {
    42       #include <glpk.h>
    43       }
    44 
    45       #if (GLP_MAJOR_VERSION < 4) \
    46          || (GLP_MAJOR_VERSION == 4 && GLP_MINOR_VERSION < 33)
    47       #error Supported GLPK versions: 4.33 or above
    48       #endif
    49 
    50       int main(int argc, char** argv)
    51       {
    52         LPX *lp;
    53         lp = lpx_create_prob();
    54         lpx_delete_prob(lp);
    55         return 0;
    56       }'
    57 
    58     AC_LANG_PUSH(C++)
    59     AC_LINK_IFELSE([$lx_glpk_test_prog], [lx_glpk_found=yes], [lx_glpk_found=no])
    60     AC_LANG_POP(C++)
    61 
    62     CXXFLAGS="$lx_save_cxxflags"
    63     LDFLAGS="$lx_save_ldflags"
    64     LIBS="$lx_save_libs"
    65 
    66     if test x"$lx_glpk_found" = x"yes"; then
    67       AC_DEFINE([HAVE_GLPK], [1], [Define to 1 if you have GLPK.])
    68       lx_lp_found=yes
    69       AC_DEFINE([HAVE_LP], [1], [Define to 1 if you have any LP solver.])
    70       lx_mip_found=yes
    71       AC_DEFINE([HAVE_MIP], [1], [Define to 1 if you have any MIP solver.])
    72       AC_MSG_RESULT([yes])
    73     else
    74       GLPK_CFLAGS=""
    75       GLPK_LDFLAGS=""
    76       GLPK_LIBS=""
    77       AC_MSG_RESULT([no])
    78     fi
    79   fi
    80   GLPK_LIBS="$GLPK_LDFLAGS $GLPK_LIBS"
    81   AC_SUBST(GLPK_CFLAGS)
    82   AC_SUBST(GLPK_LIBS)
    83   AM_CONDITIONAL([HAVE_GLPK], [test x"$lx_glpk_found" = x"yes"])
    84 ])