ladanyi@568: AC_DEFUN([LX_CHECK_COIN],
ladanyi@568: [
ladanyi@568:   AC_ARG_WITH([coin],
ladanyi@568: AS_HELP_STRING([--with-coin@<:@=PREFIX@:>@], [search for CLP under PREFIX or under the default search paths if PREFIX is not given @<:@default@:>@])
ladanyi@568: AS_HELP_STRING([--without-coin], [disable checking for CLP]),
ladanyi@568:               [], [with_coin=yes])
ladanyi@568: 
ladanyi@568:   AC_ARG_WITH([coin-includedir],
ladanyi@568: AS_HELP_STRING([--with-coin-includedir=DIR], [search for CLP headers in DIR]),
ladanyi@568:               [], [with_coin_includedir=no])
ladanyi@568: 
ladanyi@568:   AC_ARG_WITH([coin-libdir],
ladanyi@568: AS_HELP_STRING([--with-coin-libdir=DIR], [search for CLP libraries in DIR]),
ladanyi@568:               [], [with_coin_libdir=no])
ladanyi@568: 
ladanyi@568:   lx_clp_found=no
ladanyi@568:   if test x"$with_coin" != x"no"; then
ladanyi@568:     AC_MSG_CHECKING([for CLP])
ladanyi@568: 
ladanyi@568:     if test x"$with_coin_includedir" != x"no"; then
ladanyi@568:       CLP_CXXFLAGS="-I$with_coin_includedir"
ladanyi@568:     elif test x"$with_coin" != x"yes"; then
ladanyi@568:       CLP_CXXFLAGS="-I$with_coin/include"
ladanyi@568:     fi
ladanyi@568: 
ladanyi@568:     if test x"$with_coin_libdir" != x"no"; then
ladanyi@568:       CLP_LDFLAGS="-L$with_coin_libdir"
ladanyi@568:     elif test x"$with_coin" != x"yes"; then
ladanyi@568:       CLP_LDFLAGS="-L$with_coin/lib"
ladanyi@568:     fi
ladanyi@568:     CLP_LIBS="-lClp -lCoinUtils -lm"
ladanyi@568: 
ladanyi@568:     lx_save_cxxflags="$CXXFLAGS"
ladanyi@568:     lx_save_ldflags="$LDFLAGS"
ladanyi@568:     lx_save_libs="$LIBS"
ladanyi@568:     CXXFLAGS="$CLP_CXXFLAGS"
ladanyi@568:     LDFLAGS="$CLP_LDFLAGS"
ladanyi@568:     LIBS="$CLP_LIBS"
ladanyi@568: 
ladanyi@568:     lx_clp_test_prog='
ladanyi@568:       #include <coin/ClpModel.hpp>
ladanyi@568: 
ladanyi@568:       int main(int argc, char** argv)
ladanyi@568:       {
ladanyi@568:         ClpModel clp;
ladanyi@568:         return 0;
ladanyi@568:       }'
ladanyi@568: 
ladanyi@568:     AC_LANG_PUSH(C++)
ladanyi@568:     AC_LINK_IFELSE([$lx_clp_test_prog], [lx_clp_found=yes], [lx_clp_found=no])
ladanyi@568:     AC_LANG_POP(C++)
ladanyi@568: 
ladanyi@568:     CXXFLAGS="$lx_save_cxxflags"
ladanyi@568:     LDFLAGS="$lx_save_ldflags"
ladanyi@568:     LIBS="$lx_save_libs"
ladanyi@568: 
ladanyi@568:     if test x"$lx_clp_found" = x"yes"; then
ladanyi@627:       AC_DEFINE([LEMON_HAVE_CLP], [1], [Define to 1 if you have CLP.])
ladanyi@568:       lx_lp_found=yes
ladanyi@627:       AC_DEFINE([LEMON_HAVE_LP], [1], [Define to 1 if you have any LP solver.])
ladanyi@568:       AC_MSG_RESULT([yes])
ladanyi@568:     else
ladanyi@568:       CLP_CXXFLAGS=""
ladanyi@568:       CLP_LDFLAGS=""
ladanyi@568:       CLP_LIBS=""
ladanyi@568:       AC_MSG_RESULT([no])
ladanyi@568:     fi
ladanyi@568:   fi
ladanyi@568:   CLP_LIBS="$CLP_LDFLAGS $CLP_LIBS"
ladanyi@568:   AC_SUBST(CLP_CXXFLAGS)
ladanyi@568:   AC_SUBST(CLP_LIBS)
ladanyi@568:   AM_CONDITIONAL([HAVE_CLP], [test x"$lx_clp_found" = x"yes"])
ladanyi@568: 
ladanyi@568: 
ladanyi@568:   lx_cbc_found=no
ladanyi@568:   if test x"$lx_clp_found" = x"yes"; then
ladanyi@568:     if test x"$with_coin" != x"no"; then
ladanyi@568:       AC_MSG_CHECKING([for CBC])
ladanyi@568: 
ladanyi@568:       if test x"$with_coin_includedir" != x"no"; then
ladanyi@568:         CBC_CXXFLAGS="-I$with_coin_includedir"
ladanyi@568:       elif test x"$with_coin" != x"yes"; then
ladanyi@568:         CBC_CXXFLAGS="-I$with_coin/include"
ladanyi@568:       fi
ladanyi@568: 
ladanyi@568:       if test x"$with_coin_libdir" != x"no"; then
ladanyi@568:         CBC_LDFLAGS="-L$with_coin_libdir"
ladanyi@568:       elif test x"$with_coin" != x"yes"; then
ladanyi@568:         CBC_LDFLAGS="-L$with_coin/lib"
ladanyi@568:       fi
ladanyi@568:       CBC_LIBS="-lOsi -lCbc -lOsiCbc -lCbcSolver -lClp -lOsiClp -lCoinUtils -lVol -lOsiVol -lCgl -lm -llapack -lblas"
ladanyi@568: 
ladanyi@568:       lx_save_cxxflags="$CXXFLAGS"
ladanyi@568:       lx_save_ldflags="$LDFLAGS"
ladanyi@568:       lx_save_libs="$LIBS"
ladanyi@568:       CXXFLAGS="$CBC_CXXFLAGS"
ladanyi@568:       LDFLAGS="$CBC_LDFLAGS"
ladanyi@568:       LIBS="$CBC_LIBS"
ladanyi@568: 
ladanyi@568:       lx_cbc_test_prog='
ladanyi@568:         #include <coin/CbcModel.hpp>
ladanyi@568: 
ladanyi@568:         int main(int argc, char** argv)
ladanyi@568:         {
ladanyi@568:           CbcModel cbc;
ladanyi@568:           return 0;
ladanyi@568:         }'
ladanyi@568: 
ladanyi@568:       AC_LANG_PUSH(C++)
ladanyi@568:       AC_LINK_IFELSE([$lx_cbc_test_prog], [lx_cbc_found=yes], [lx_cbc_found=no])
ladanyi@568:       AC_LANG_POP(C++)
ladanyi@568: 
ladanyi@568:       CXXFLAGS="$lx_save_cxxflags"
ladanyi@568:       LDFLAGS="$lx_save_ldflags"
ladanyi@568:       LIBS="$lx_save_libs"
ladanyi@568: 
ladanyi@568:       if test x"$lx_cbc_found" = x"yes"; then
ladanyi@627:         AC_DEFINE([LEMON_HAVE_CBC], [1], [Define to 1 if you have CBC.])
ladanyi@568:         lx_lp_found=yes
ladanyi@627:         AC_DEFINE([LEMON_HAVE_LP], [1], [Define to 1 if you have any LP solver.])
ladanyi@568:         lx_mip_found=yes
ladanyi@627:         AC_DEFINE([LEMON_HAVE_MIP], [1], [Define to 1 if you have any MIP solver.])
ladanyi@568:         AC_MSG_RESULT([yes])
ladanyi@568:       else
ladanyi@568:         CBC_CXXFLAGS=""
ladanyi@568:         CBC_LDFLAGS=""
ladanyi@568:         CBC_LIBS=""
ladanyi@568:         AC_MSG_RESULT([no])
ladanyi@568:       fi
ladanyi@568:     fi
ladanyi@568:   fi
ladanyi@568:   CBC_LIBS="$CBC_LDFLAGS $CBC_LIBS"
ladanyi@568:   AC_SUBST(CBC_CXXFLAGS)
ladanyi@568:   AC_SUBST(CBC_LIBS)
ladanyi@568:   AM_CONDITIONAL([HAVE_CBC], [test x"$lx_cbc_found" = x"yes"])
ladanyi@568: ])