# HG changeset patch # User jwe # Date 1111520926 0 # Node ID 5f0ad69b5c8cb48424a55ef26b45a35a9e3b1b59 # Parent a791b8b777e4f15321a25eb69c7fe5140ae3f894 [project @ 2005-03-22 19:48:16 by jwe] diff -r a791b8b777e4 -r 5f0ad69b5c8c ChangeLog --- a/ChangeLog Tue Mar 22 18:37:06 2005 +0000 +++ b/ChangeLog Tue Mar 22 19:48:46 2005 +0000 @@ -1,5 +1,10 @@ 2005-03-22 John W. Eaton + * Makeconf.in (GLPK_LIBS): Substitute value. + (do-subst-config-vals): Add to list of substitutions. + + * configure.in: Check for glpk. + * emacs/octave-mod.el (octave-abbrev-table): Omit fifth and sixth arguments from define-abbrev for compatibility with some older versions of Emacs. diff -r a791b8b777e4 -r 5f0ad69b5c8c Makeconf.in --- a/Makeconf.in Tue Mar 22 18:37:06 2005 +0000 +++ b/Makeconf.in Tue Mar 22 19:48:46 2005 +0000 @@ -186,6 +186,7 @@ BLAS_LIBS = @BLAS_LIBS@ FFTW_LIBS = @FFTW_LIBS@ +GLPK_LIBS = @GLPK_LIBS@ LIBS = @LIBS@ # The arguments passed to configure. @@ -428,6 +429,7 @@ -e "s;%OCTAVE_CONF_FFTW_LIBS%;\"${FFTW_LIBS}\";" \ -e "s;%OCTAVE_CONF_FLIBS%;\"${FLIBS}\";" \ -e "s;%OCTAVE_CONF_FPICFLAG%;\"${FPICFLAG}\";" \ + -e "s;%OCTAVE_CONF_GLPK_LIBS%;\"${GLPK_LIBS}\";" \ -e "s;%OCTAVE_CONF_INCFLAGS%;\"${INCFLAGS}\";" \ -e "s;%OCTAVE_CONF_LD_CXX%;\"${LD_CXX}\";" \ -e "s;%OCTAVE_CONF_LDFLAGS%;\"${LDFLAGS}\";" \ diff -r a791b8b777e4 -r 5f0ad69b5c8c configure.in --- a/configure.in Tue Mar 22 18:37:06 2005 +0000 +++ b/configure.in Tue Mar 22 19:48:46 2005 +0000 @@ -29,7 +29,7 @@ EXTERN_CXXFLAGS="$CXXFLAGS" AC_INIT -AC_REVISION($Revision: 1.468 $) +AC_REVISION($Revision: 1.469 $) AC_PREREQ(2.57) AC_CONFIG_SRCDIR([src/octave.cc]) AC_CONFIG_HEADER(config.h) @@ -430,6 +430,30 @@ AC_DEFINE(HAVE_FFTW3, 1, [Define if the FFTW3 library is used.]) fi +# Checks for GLPK header and library. + +AC_ARG_WITH(glpk, + [ --without-glpk don't use GLPK], + with_glpk=$withval, with_glpk=yes) + +glpk_lib= +if test "$with_glpk" = yes; then + glpk_lib="glpk" +elif test "$with_glpk" != no; then + glpk_lib="$with_glpk" +fi + +GLPK_LIBS= +if test -n "$glpk_lib"; then + AC_CHECK_LIB($glpk_lib, glp_lpx_simplex, [ + AC_CHECK_HEADERS(glpk.h, [ + GLPK_LIBS="-l$glpk_lib" + AC_DEFINE(HAVE_GLPK, 1, [Define if GLPK is available.])])]) +fi +AC_SUBST(GLPK_LIBS) + +# Checks for MPI header and library. + WITH_MPI=true AC_ARG_WITH(mpi, [ --without-mpi don't use MPI], @@ -1528,6 +1552,7 @@ Fortran libraries: $FLIBS BLAS libraries: $BLAS_LIBS FFTW libraries: $FFTW_LIBS + GLPK libraries: $GLPK_LIBS UMFPACK libraries: $UMFPACK_LIBS HDF5 libraries: $HDF5_LIBS MPI libraries: $MPI_LIBS diff -r a791b8b777e4 -r 5f0ad69b5c8c src/ChangeLog --- a/src/ChangeLog Tue Mar 22 18:37:06 2005 +0000 +++ b/src/ChangeLog Tue Mar 22 19:48:46 2005 +0000 @@ -1,9 +1,17 @@ 2005-03-22 John W. Eaton - + + * Makefile.in: Add special rule for __glpk__.oct. + + * toplev.cc (octave_config_info): Add GLPK_LIBS to the list. + * oct-conf.h.in (OCTAVE_CONF_GLPK_LIBS): Substitute here. + * DLD-FUNCTIONS/__glpk__.cc (F__glpk__, glpk): Adapt to Octave coding style. (glpk): Move decls closer to first use. (F__glpk__): Eliminate unnecessary loop seting inf values. + Ensure that isMIP is initialized. + Declare sense, nz, and isMIP volatile to avoid GCC warnings that + these variables might be might be clobbered by `longjmp' or `vfork' * DLD-FUNCTIONS/__glpk__.cc: New file. diff -r a791b8b777e4 -r 5f0ad69b5c8c src/DLD-FUNCTIONS/__glpk__.cc --- a/src/DLD-FUNCTIONS/__glpk__.cc Tue Mar 22 18:37:06 2005 +0000 +++ b/src/DLD-FUNCTIONS/__glpk__.cc Tue Mar 22 19:48:46 2005 +0000 @@ -30,7 +30,12 @@ #include "defun-dld.h" #include "error.h" +#include "gripes.h" +#include "oct-map.h" #include "oct-obj.h" +#include "pager.h" + +#if defined (HAVE_GLPK) extern "C" { #include @@ -113,14 +118,14 @@ int -glpk_fault_hook (void *info, char *msg) +glpk_fault_hook (void * /* info */, char *msg) { OCTERR << "*** SEVERE CRITICAL ERROR *** from GLPK !\n\n"< = 0) + if (SENSE >= 0) sense = 1; else sense = -1; @@ -393,7 +402,7 @@ Array cn (mrowsA*mrowsc+1); ColumnVector a (mrowsA*mrowsc+1, 0.0); - int nz = 0; + volatile int nz = 0; for (int i = 0; i < mrowsA; i++) { for (int j = 0; j < mrowsc; j++) @@ -490,7 +499,7 @@ charMatrix VTYPE (args(7).char_matrix_value ()); Array vartype (mrowsc); - int isMIP; + volatile int isMIP = 0; for (int i = 0; i < mrowsc ; i++) { if (VTYPE(i,0) == 'I') @@ -499,9 +508,7 @@ vartype(i) = LPX_IV; } else - { - vartype(i) = LPX_CV; - } + vartype(i) = LPX_CV; } //-- 9th Input. A structure containing the control parameters. @@ -729,17 +736,16 @@ ColumnVector mem (1); int jmpret = setjmp (mark); + if (jmpret == 0) - { - int error = glpk (sense, mrowsc, mrowsA, c, nz, rn.fortran_vec (), - cn.fortran_vec (), a.fortran_vec (), b, ctype, - freeLB.fortran_vec (), lb, freeUB.fortran_vec (), - ub, vartype.fortran_vec (), isMIP, lpsolver, - save_pb, xmin.fortran_vec (), fmin.fortran_vec (), - status.fortran_vec (), lambda.fortran_vec (), - redcosts.fortran_vec (), time.fortran_vec (), - mem.fortran_vec ()); - } + glpk (sense, mrowsc, mrowsA, c, nz, rn.fortran_vec (), + cn.fortran_vec (), a.fortran_vec (), b, ctype, + freeLB.fortran_vec (), lb, freeUB.fortran_vec (), + ub, vartype.fortran_vec (), isMIP, lpsolver, + save_pb, xmin.fortran_vec (), fmin.fortran_vec (), + status.fortran_vec (), lambda.fortran_vec (), + redcosts.fortran_vec (), time.fortran_vec (), + mem.fortran_vec ()); Octave_map extra; @@ -753,5 +759,11 @@ retval(1) = octave_value(fmin); retval(0) = octave_value(xmin); +#else + + gripe_not_supported ("glpk"); + +#endif + return retval; } diff -r a791b8b777e4 -r 5f0ad69b5c8c src/Makefile.in --- a/src/Makefile.in Tue Mar 22 18:37:06 2005 +0000 +++ b/src/Makefile.in Tue Mar 22 19:48:46 2005 +0000 @@ -537,6 +537,18 @@ $< | $(SED) 's,lookup\[,gperf_lookup[,' > $@-t @$(top_srcdir)/move-if-change $@-t $@ +# How to make a .oct file from a .o file: + +ifeq ($(ENABLE_DYNAMIC_LINKING), true) + ifdef CXXPICFLAG + __glpk__.oct : pic/__glpk__.o octave$(EXEEXT) + $(DL_LD) $(DL_LDFLAGS) -o $@ $< $(OCT_LINK_DEPS) $(GLPK_LIBS) + else + __glpk__.oct : __glpk__.o octave$(EXEEXT) + $(DL_LD) $(DL_LDFLAGS) -o $@ $< $(OCT_LINK_DEPS) $(GLPK_LIBS) + endif +endif + check: all .PHONY: check diff -r a791b8b777e4 -r 5f0ad69b5c8c src/oct-conf.h.in --- a/src/oct-conf.h.in Tue Mar 22 18:37:06 2005 +0000 +++ b/src/oct-conf.h.in Tue Mar 22 19:48:46 2005 +0000 @@ -148,6 +148,10 @@ #define OCTAVE_CONF_FPICFLAG %OCTAVE_CONF_FPICFLAG% #endif +#ifndef OCTAVE_CONF_GLPK_LIBS +#define OCTAVE_CONF_GLPK_LIBS %OCTAVE_CONF_GLPK_LIBS% +#endif + #ifndef OCTAVE_CONF_INCFLAGS #define OCTAVE_CONF_INCFLAGS %OCTAVE_CONF_INCFLAGS% #endif diff -r a791b8b777e4 -r 5f0ad69b5c8c src/toplev.cc --- a/src/toplev.cc Tue Mar 22 18:37:06 2005 +0000 +++ b/src/toplev.cc Tue Mar 22 19:48:46 2005 +0000 @@ -664,6 +664,7 @@ "FFTW_LIBS", OCTAVE_CONF_FFTW_LIBS, "FLIBS", OCTAVE_CONF_FLIBS, "FPICFLAG", OCTAVE_CONF_FPICFLAG, + "GLPK_LIBS", OCTAVE_CONF_GLPK_LIBS, "INCFLAGS", OCTAVE_CONF_INCFLAGS, "LDFLAGS", OCTAVE_CONF_LDFLAGS, "LD_CXX", OCTAVE_CONF_LD_CXX,