This major release comes with a larger renovation of the build
system and a changed directory structure (eliminated top directory),
which is the result of a long and still on-going effort to use
recent autotools versions for various COIN-OR projects, reduce
future maintenance efforts, and adapting behaviors of standard
autotools-based projects.
As a consequence, a monolithic build of Ipopt, which builds Ipopt
with all its dependencies in one run of configure and make is no
longer possible. Dependencies should now be build and installed
before building Ipopt.
Additionally, support for some outdated versions of dependencies
and unmaintained components of Ipopt have been dropped and some
improvements that may require changes on the users side have been
applied.
A more detailed, probably incomplete, list of changes follows:
- Removed git submodules. Dependencies (HSL, Mumps, ASL, etc) now
need to be build and installed in advance, either manually or
by using coinbrew.
- Dropped support for HSL < 2013.
- Dropped support for MA28 in the linear solver loader.
- Dropped support for Pardiso < 4.0 from pardiso-project.org.
- Added support for Mumps 5.2.x, though initial experiments on
CUTEst indicated that, on average, performance is worse than
when using Mumps 4.10.0.
- Dropped CUTEr interface, the successor CUTEst includes an
interface to Ipopt.
- Dropped Matlab interface as it is unmaintained and it was
reported that it stopped functioning.
Use https://github.com/ebertolazzi/mexIPOPT instead.
- Dropped MSVS project files as unmaintained and not functioning
with current Ipopt anymore.
- Integrated Java interface into the main Ipopt library, that is,
it is handled equivalently to the C and Fortran interfaces:
- The source moved into src/Interfaces.
- The JNI functions are now included in the main Ipopt library,
thus an extra jipopt library is no longer build or necessary.
- The Java class and org.coinor.ipopt.jar package are build and
installed as part of the main Ipopt build.
- The examples moved into examples/*_java.
- A Java interface test is executed by make test.
- To build javadoc, run make javadoc in the main build directory.
- The configure flag --disable-java can be used to disable the
check for Java and build of the Java interface.
- DLLPATH and DLLNAME have been removed from the Ipopt class and
constructors that works without arguments and with only one
argument (specifying the Ipopt library namestem) have been added.
- Method Ipopt::finalize has been marked as deprecated and will
be removed in some future Ipopt version. Users must call
dispose() explicitly.
- Integrated sIpopt into the main Ipopt build, that is, it is now
build together with Ipopt, but installed as separate library
and executable. Use --disable-sipopt to disable building sIpopt.
- IPOPT_THREAD_LOCAL now uses C++11's thread_local keyword if C++11
is available.
- When using a GCC-compatible compiler, Ipopt and sIpopt interface
functions are now declared with visibility(default)-attribute,
thus building Ipopt with -fvisibility=hidden still produces a
usable library.
- When using a MSVC-compatible compiler, Ipopt and sIpopt interface
functions are now declared with dllimport-attribute, so that an
Ipopt C++ DLL can be used.
- Under Windows/Msys2, DLLs are now build by default.
- Cygwin and MSys1 are not supported.
- pkg-config is now mandatory to use dependencies like ASL or HSL.
On Windows, make sure to use a pkg-config version that produces
Unix-style paths.
- Script "compile" is now used to wrap around calls of cl/icl/ifort
and translate GCC-style compiler flags to MSVC style.
- "Addlibs" files have been removed, pkg-config should be used instead.
- Header files are now installed in the better named
$prefix/include/coin-or instead of $prefix/include/coin
- The default for --prefix is no longer the build directory, but
the autotools-default, probably /usr/local.
- The check for a Fortran compiler can be disabled via --disable-f77
and Ipopt can easier be build without a Fortran compiler.
- Lapack is no longer optional, but required. The separate check
for Blas and the --with-blas flags have been removed.
- --enable-debug does not imply --disable-shared anymore.
- Removed --enable-debug-ipopt, use --enable-debug instead.
- Removed configure variables ADD/OPT/DBG_C/CXX/F77FLAGS. Use
C/CXX/F77FLAGS instead.
- Silent build output is now enabled by default, use configure
flag --disable-silent-rules or call make with V=1 to disable.
- Also for static builds, PIC objects are now generated by default,
use --without-pic to disable.
- The --with-*-incdir and --with-*-lib configure flags have been
replaced by corresponding --with-*-cflags and --with-*-lflags
flags. Note that the include directories need to be specified
via -I<dir> in --with-*-cflags.
- Fixed handling of ma77_default_control in LSL_setMA77().
- Fixed calculation of quality function when setting option
quality_function_centrality to reciprocal.
- Fixed compiler warnings, in particular when using -Wunused-parameter.
- Changed default for ma97_print_level to -1. This avoids messages
about numerical singular systems written to stdout by default.