
$(LIBDIR)/%.o : %.f
	$(FC) -c $(FFLAGS) $< -o $@

$(LIBDIR)/%.o : %.c 
	$(CC) -c $(CFLAGS) $(SNOPT_INC) $< -o $@

BLAS   = sn15blas

SQOPT  = sqopt                                                 \
         sq02lib                                               \
         sn10mach          sn17util sn20amat sn25bfac          \
         sn27lu   sn30spec sn35mps  sn40bfil sn50lp   sn55qp   \
         sn57qopt          sn65rmod

SNOPT  = sqopt    snopt    snoptm   npopt                      \
         sq02lib  sn02lib  np02lib                             \
         sn10mach sn11user sn17util sn20amat sn25bfac          \
         sn27lu   sn30spec sn35mps  sn40bfil sn50lp   sn55qp   \
         sn57qopt sn60srch sn65rmod sn70nobj sn80ncon sn85Hess \
         sn87sopt sn90lmqn sn95fmqn

AMPL   =          snopt             npopt                      \
         sq02lib  sn02lib  np02lib                             \
         sn10ampl sn11user sn17util sn20amat sn25bfac          \
         sn27lu   sn30spec          sn40bfil sn50lp   sn55qp   \
         sn57qopt sn60srch sn65rmod sn70nobj sn80ncon sn85Hess \
         sn87sopt sn90lmqn sn95fmqn

CUTE   =          snopt             npopt                      \
         sq02lib  sn02lib  np02lib                             \
         sn10mach sn11user sn17util sn20amat sn25bfac          \
         sn27lu   sn30spec          sn40bfil sn50lp   sn55qp   \
         sn57qopt sn60srch sn65rmod sn70nobj sn80ncon sn85Hess \
         sn87sopt sn90lmqn sn95fmqn

BLAS_O  = $(BLAS:%=$(LIBDIR)/%.o)
SQOPT_O = $(SQOPT:%=$(LIBDIR)/%.o)
SNOPT_O = $(SNOPT:%=$(LIBDIR)/%.o)
AMPL_O  = $(AMPL:%=$(LIBDIR)/%.o)
CUTE_O  = $(CUTE:%=$(LIBDIR)/%.o)

all: $(LIBDIR) $(LIBDIR)/libblas.so      \
               $(LIBDIR)/libsqopt.so     \
               $(LIBDIR)/libsnopt.so     \
               $(LIBDIR)/libamplsnopt.so \
               $(LIBDIR)/libcutesnopt.so \
               $(LIBDIR)/libblas.a       \
               $(LIBDIR)/libsqopt.a      \
               $(LIBDIR)/libsnopt.a      \
               $(LIBDIR)/libamplsnopt.a  \
               $(LIBDIR)/libcutesnopt.a

$(LIBDIR):
	mkdir $@

$(LIBDIR)/libblas.so: $(BLAS_O)
	$(LD)  $(LDFLAGS) -o $@ $(BLAS_O)

$(LIBDIR)/libsqopt.so: $(SQOPT_O) $(LIBDIR)/libblas.so
	$(LD)  $(LDFLAGS) -o $@ $(SQOPT_O)

$(LIBDIR)/libsnopt.so: $(SNOPT_O) $(LIBDIR)/libblas.so
	$(LD)  $(LDFLAGS) -o $@ $(SNOPT_O)

$(LIBDIR)/libamplsnopt.so: $(AMPL_O) $(LIBDIR)/libblas.so
	$(LD)  $(LDFLAGS) -o $@  $(AMPL_O)

$(LIBDIR)/libcutesnopt.so: $(CUTE_O) $(LIBDIR)/libblas.so
	$(LD)  $(LDFLAGS) -o $@  $(CUTE_O)

$(LIBDIR)/libblas.a: $(BLAS_O)
	 ar ruv $@   $(BLAS_O)
	-ranlib $@

$(LIBDIR)/libsqopt.a: $(SQOPT_O)
	 ar ruv $@    $(SQOPT_O)
	-ranlib $@

$(LIBDIR)/libsnopt.a: $(SNOPT_O)
	 ar ruv $@    $(SNOPT_O)
	-ranlib $@

$(LIBDIR)/libamplsnopt.a: $(AMPL_O)
	 ar ruv $@        $(AMPL_O)
	-ranlib $@

$(LIBDIR)/libcutesnopt.a: $(CUTE_O)
	 ar ruv $@        $(CUTE_O)
	-ranlib $@

clean:
	-rm -f *.o

veryclean:
	rm -rf *.o $(LIBDIR)/* *~
