#
# Unix/Linux GCC Makefile for Levenberg - Marquardt minimization
#

CC=gcc
CONFIGFLAGS=#-ULINSOLVERS_RETAIN_MEMORY
CFLAGS=$(CONFIGFLAGS) $(ARCHFLAGS) -O3 -funroll-loops -Wall -fPIC #-ffast-math #-pg

LAPACKLIBS_PATH=/usr/lib64
LDFLAGS=-L$(LAPACKLIBS_PATH) -L.
LIBOBJS=lm.o Axb.o misc.o lmlec.o lmbc.o lmblec.o lmbleic.o
LIBSRCS=lm.c Axb.c misc.c lmlec.c lmbc.c lmblec.c lmbleic.c
DEMOBJS=lmdemo.o
DEMOSRCS=lmdemo.c
AR=ar




LAPACKLIBS=-llapack -lblas

RANLIB=ranlib
LIBS=$(LAPACKLIBS)

#INSTALL_ROOT=/usr/local
#INSTALL_ROOT=/opt/mlfsoft/manyo
#INSTALL_ROOT=/opt/0_3_5_1/mlfsoft/manyo
#INSTALL_ROOT=$(MANYO_PATH)
INSTALL_ROOT=$(DESTDIR)$(PREFIX)

liblevmar: liblevmar.a liblevmar.so

install: prepare copy

copy: libcopy headercopy

libcopy: liblevmar.a liblevmar.so
	-cp -r $^ ${INSTALL_ROOT}/lib

headercopy: compiler.h levmar.h misc.h
	-cp -r $^ ${INSTALL_ROOT}/include
	cd ${INSTALL_ROOT}/include ; ln -sf levmar.h lm.h

prepare:
	echo ${INSTALL_ROOT}
	-mkdir -p ${INSTALL_ROOT}
	-mkdir -p ${INSTALL_ROOT}/lib
	-mkdir -p ${INSTALL_ROOT}/include
    
all: liblevmar

liblevmar.a: $(LIBOBJS)
	$(AR) crv liblevmar.a $(LIBOBJS)
	$(RANLIB) liblevmar.a

liblevmar.so: $(LIBOBJS)
	$(CC) -shared -o $@ ${LDFLAGS} ${LIBOBJS} ${LIBS}

lmdemo: $(DEMOBJS) liblevmar.a
	$(CC) $(LDFLAGS) $(DEMOBJS) -o lmdemo -llevmar $(LIBS) -lm

expfit: expfit.o liblevmar.a
	${CC} ${LDFLAGS} ${DEMOBJS} -o $@ -llevmar ${LIBS} -lm

lm.o: lm.c lm_core.c levmar.h misc.h compiler.h
Axb.o: Axb.c Axb_core.c levmar.h misc.h
misc.o: misc.c misc_core.c levmar.h misc.h
lmlec.o: lmlec.c lmlec_core.c levmar.h misc.h
lmbc.o: lmbc.c lmbc_core.c levmar.h misc.h compiler.h
lmblec.o: lmblec.c lmblec_core.c levmar.h misc.h
lmbleic.o: lmbleic.c lmbleic_core.c levmar.h misc.h

lmdemo.o: levmar.h

clean:
	@rm -f $(LIBOBJS) $(DEMOBJS)

cleanall: clean
	@rm -f lmdemo
	@rm -f liblevmar.a

DEPEND:
	makedepend -f Makefile $(LIBSRCS) $(DEMOSRCS)

# DO NOT DELETE THIS LINE -- make depend depends on it.

