# /****************************************************************
# Copyright (C) 2000 Lucent Technologies
# All Rights Reserved
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby
# granted, provided that the above copyright notice appear in all
# copies and that both that the copyright notice and this
# permission notice and warranty disclaimer appear in supporting
# documentation, and that the name of Lucent or any of its entities
# not be used in advertising or publicity pertaining to
# distribution of the software without specific, written prior
# permission.
#
# LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
# IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
# THIS SOFTWARE.
# ****************************************************************/

# For making lbfgsb on Unix systems.

.SUFFIXES: .c .f .o
CC = cc
FC = f77
FFLAGS = -O
CFLAGS = -O

## On HP systems, add -ldld to the end of the L = line below.
## On linux and Solaris systems, add -ldl to the end of the L = line below.
L =

S = ..
# "S = .." assumes this directory is solvers/lbfgsb .

# See $S/makefile.u for other comments about CFLAGS.

.c.o:
	$(CC) -c $(CFLAGS) -I$S $*.c

#### We assume the f2c calling conventions.
#### See comments in $S/README.f77 for use with other Fortran 77 compilers.

#.f.o:
#	f2c -c -g $*.f
#	$(CC) -c $(CFLAGS) $*.c
#	rm $*.c

.f.o:
	$(FC) -c $(FFLAGS) $*.f

# routines.o is compiled from routines.f in
# ftp://ftp.mcs.anl.gov/pub/neos/Lbfgs/Lbfgsb.2.1.tar.gz;
# see http://www-fp.mcs.anl.gov/otc/Tools/LBFGS-B
# and http://www.ece.nwu.edu/~nocedal/software.html .

lbfgsb = lbfgsb.o routines.o $S/amplsolver.a

lbfgsb: $(lbfgsb)
	$(FC) -o lbfgsb $(lbfgsb) $L
	strip lbfgsb

$S/amplsolver.a:
	cd $S;make amplsolver.a

# make xsum.out to check for transmission errors.
# This assumes you have the xsum program, whose source
# you can get by asking netlib@research.bell-labs.com to
#	send xsum.c from f2c/src

x = \
	README \
	lbfgsb.c \
	makefile.u \
	makefile.vc

xsum.out: $x
	xsum $x >xsum1.out
	cmp xsum0.out xsum1.out && mv xsum1.out xsum.out || diff xsum[01].out
