FC = gfortran
CC = gcc

FFLAGS = -O

# BLAS: Library containing LAPACK and BLAS routines
# BLAS = -framework vecLib  # works for MacOS X
BLAS = 

# UMFPACKLIB: UMFPACK library and corresponding AMD library
# UMFPACKLIB = -L/Users/yourid/numsoft/lib -lumfpack -lamd
UMFPACKLIB = 

# UMFPACKINCLUDE: Path to UMFPACK C header files
# UMFPACKINCLUDE = -I/Users/yourid/numsoft/include/umfpack
UMFPACKINCLUDE = 
                 
# MA38LIB = -L/Users/yourid/numsoft/lib -lma38d $(BLAS)
MA38LIB = 

OBJS  =  nleq1s.o y12m_interface.o wnorm.o linalg_nleq1s.o zibconst.o zibsec.o zibmon.o
OBJSUMFP  =  nleq1s.o wnorm.o umfpack_interface.o zibconst.o zibsec.o zibmon.o
OBJSMA38  =  nleq1s.o wnorm.o ma38_interface.o zibconst.o zibsec.o zibmon.o

all: nleq1s-analytic nleq1s-numeric

nleq1s-analytic: main_analytic_nleq1s.o $(OBJS)
	$(FC) $(DFLAGS) main_analytic_nleq1s.o $(OBJS) -o nleq1s-analytic

nleq1s-numeric: main_numeric_nleq1s.o $(OBJS) numdpat_nleq1s.o
	$(FC) $(DFLAGS) main_numeric_nleq1s.o $(OBJS) numdpat_nleq1s.o -o nleq1s-numeric

all-umfpack: nleq1s-analytic-umfpack nleq1s-numeric-umfpack

nleq1s-analytic-umfpack: main_analytic_nleq1s.o $(OBJSUMFP)
	$(FC) $(DFLAGS) main_analytic_nleq1s.o $(OBJSUMFP) \
		 -o nleq1s-analytic-umfpack $(UMFPACKLIB) $(BLAS)

nleq1s-numeric-umfpack: main_numeric_nleq1s.o $(OBJSUMFP) numdpat_nleq1s.o
	$(FC) $(DFLAGS) main_numeric_nleq1s.o $(OBJSUMFP) numdpat_nleq1s.o \
		-o nleq1s-numeric-umfpack $(UMFPACKLIB) $(BLAS)

umfpack_interface.o: umfpack_interface.c
	$(CC) -c $(CFLAGS) $(UMFPACKINCLUDE) $< -o $@
	
all-ma38: nleq1s-analytic-ma38 nleq1s-numeric-ma38

nleq1s-analytic-ma38: main_analytic_nleq1s.o $(OBJSMA38)
	$(FC) $(DFLAGS) main_analytic_nleq1s.o $(OBJSMA38) $(MA38LIB) -o nleq1s-analytic-ma38

nleq1s-numeric-ma38: main_numeric_nleq1s.o $(OBJSMA38) numdpat_nleq1s.o
	$(FC) $(DFLAGS) main_numeric_nleq1s.o $(OBJSMA38) numdpat_nleq1s.o $(MA38LIB) -o nleq1s-numeric-ma38

clean:
	rm -f $(OBJS) $(OBJSUMFP) $(OBJSMA38) main_numeric_nleq1s.o main_analytic_nleq1s.o \
		numdpat_nleq1s.o nleq1s-analytic nleq1s-numeric nleq1s-analytic-umfpack \
		nleq1s-numeric-umfpack nleq1s-analytic-ma38 nleq1s-numeric-ma38

