Go to file
Andreas Schuh e4f94fabd2 Enable build configuration with CMake (#18)
* add: CMake configuration files

* doc: Variables affecting CMake configuration installation

* fix: Rename CMake module and project -> subproject macro

The problem is that macro/function definitions in CMake have global scope. Therefore, use a custom macro name rather than replacing the standard CMake command.

* enh: Set LibLBFGS_LIBRARIES variable in LibLBFGSConfig.cmake

For (older) libLBFGS installations that do not contain the CMake package configuration file, a FindLibLBFGS.cmake module will be needed which then sets LibLBFGS_LIBRARIES to the path of the actual library file instead of an imported CMake build target.

* doc: Update CMakeLists.txt comment

* fix: Do not inherit CMake options from parent project

The parent project must explicitly set ${PROJECT_NAME}_${varname} before including the subproject to the value of the same named parent option ${varname} if super- and sub-project should both use the same value.

* fix: Export of targets as part of parent project

* fix: Do not import targets when liblbfgs TARGET exists

* enh: Prefix Subproject module functions, use unique target names and non-imported target ALIAS

* enh: Remove check if PROJECT_NAME is defined

* fix: Update documentation of CMakeLists.txt

* enh: Document LBFGS_INSTALL_HEADERS
2019-06-04 21:04:00 +09:00
cmake Enable build configuration with CMake (#18) 2019-06-04 21:04:00 +09:00
doc - Added a link to a R wrapper (contributed by Antonio Coppola) 2014-09-02 11:39:32 +09:00
include Merge pull request #9 from dkogan/upstream 2019-06-04 20:37:56 +09:00
lib Bug was fixed in delta criterion 2017-06-02 14:59:56 +03:00
sample Upgraded to MSVC 2015. 2016-01-25 17:41:23 +09:00
.gitignore Add gitignore 2013-02-26 18:15:09 +01:00
AUTHORS Initial commit. 2008-04-24 15:04:59 +00:00
autogen.sh Initial commit. 2008-04-24 15:04:59 +00:00
ChangeLog Merged the patch submitted by Tamas Nepusz to fix some problems on Mac OS X. 2010-12-07 23:30:04 +09:00
CMakeLists.txt Enable build configuration with CMake (#18) 2019-06-04 21:04:00 +09:00
configure.in - Reduced warnings (I found a typo in the sample code). 2010-12-21 01:01:31 +09:00
COPYING - A patch from Kevin S. Van Horn to fix a bug in error checking. 2010-01-13 07:28:37 +00:00
lbfgs.sln Updated the MSVC solution file to 2010. 2010-11-12 22:32:26 +09:00
Makefile.am libLBFGS 1.4 release candidate. 2008-04-25 09:07:12 +00:00
NEWS Initial commit. 2008-04-24 15:04:59 +00:00
README Add missing details in build instructions. 2019-06-04 20:32:03 +09:00

           libLBFGS: C library of limited-memory BFGS (L-BFGS)

                                       Copyright (c) 1990, Jorge Nocedal
                                 Copyright (c) 2007-2010, Naoaki Okazaki

=========================================================================
1. Introduction
=========================================================================
libLBFGS is a C port of the implementation of Limited-memory
Broyden-Fletcher-Goldfarb-Shanno (L-BFGS) method written by Jorge Nocedal.
The original FORTRAN source code is available at:
http://www.ece.northwestern.edu/~nocedal/lbfgs.html

The L-BFGS method solves the unconstrainted minimization problem:
    minimize F(x), x = (x1, x2, ..., xN),
only if the objective function F(x) and its gradient G(x) are computable.

Refer to the libLBFGS web site for more information.
http://www.chokkan.org/software/liblbfgs/



=========================================================================
2. How to build
=========================================================================
[Microsoft Visual Studio 2008]
Open the solution file "lbfgs.sln" and build it.

[GCC]

On top of a compiler and GNU Make, you will also need to install libtool
and automake to build.

On Debian distributions, this can be installed with:
sudo apt install libtool automake

$ ./autogen.sh
$ ./configure
$ make
$ make install  # To install libLBFGS library and header.



=========================================================================
3. Note on SSE/SSE2 optimization
=========================================================================
This library has SSE/SSE2 optimization routines for vector arithmetic
operations on Intel/AMD processors. The SSE2 routine is for 64 bit double
values, and the SSE routine is for 32 bit float values. Since the default
parameters in libLBFGS are tuned for double precision values, it may need
to modify these parameters to use the SSE optimization routines.

To use the SSE2 optimization routine, specify --enable-sse2 option to the
configure script.

$ ./configure --enable-sse2

To build libLBFGS with SSE2 optimization enabled on Microsoft Visual
Studio 2005, define USE_SSE and __SSE2__ symbols.

Make sure to run libLBFGS on processors where SSE2 instrunctions are
available. The library does not check the existence of SSE2 instructions.

To package maintainers,

Please do not enable SSE/SSE2 optimization routine. The library built
with SSE/SSE2 optimization will crash without any notice when necessary
SSE/SSE2 instructions are unavailable on CPUs.



=========================================================================
4. License
=========================================================================
libLBFGS is distributed under the term of the MIT license.
Please refer to COPYING file in the distribution.

$Id$