
EXEDIR = $(LIBDIR)/examples

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

_EXE    = sntoy    snmain     snmainm     slmain    npmain     sqmain                \
          t1diet   t2banana   t3qp        t4manne   t5weapon   t6wood   t7etamacro   \
          spring   springi    maxi                                                   \
          hs118    sqopt      slmainMPS   sqmainMPS

_EXE_AR = sntoy_a  snmain_a   snmainm_a   slmain_a  npmain_a   sqmain_a              \
          t1diet_a t2banana_a t3qp_a      t4manne_a t5weapon_a t6wood_a t7etamacro_a \
          spring_a springi_a  maxi_a                                                 \
          hs118_a  sqopt_a    slmainMPS_a sqmainMPS_a

EXE     = $(_EXE:%=$(EXEDIR)/%)
EXE_AR  = $(_EXE_AR:%=$(EXEDIR)/%)

SNOPT_SO      =  libsnopt  libblas
SNOPT_SOLIBS  = $(SNOPT_SO:%=$(LIBDIR)/%.so)

SQOPT_SO      =  libsqopt  libblas
SQOPT_SOLIBS  = $(SQOPT_SO:%=$(LIBDIR)/%.so)

SQOPT_AR      =  libsqopt  libblas
SQOPT_AR_LIBS = $(SQOPT_AR:%=$(LIBDIR)/%.a)
SQOPT_LIBS    = -lsqopt   -lblas

SNOPT_AR      =  libsnopt  libblas
SNOPT_AR_LIBS = $(SNOPT_AR:%=$(LIBDIR)/%.a)
SNOPT_LIBS    = -lsnopt   -lblas

all: $(EXEDIR) $(EXE) $(EXE_AR)

$(EXEDIR):
	mkdir $@

$(EXEDIR)/t1diet: $(EXEDIR)/t1diet.o         $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/t2banana: $(EXEDIR)/t2banana.o     $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/t3qp: $(EXEDIR)/t3qp.o             $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/t4manne: $(EXEDIR)/t4manne.o       $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/t5weapon: $(EXEDIR)/t5weapon.o     $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/t6wood: $(EXEDIR)/t6wood.o         $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/t7etamacro: $(EXEDIR)/t7etamacro.o $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/sntoy: $(EXEDIR)/sntoy.o           $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/spring: $(EXEDIR)/spring.o         $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/springi: $(EXEDIR)/springi.o       $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/maxi: $(EXEDIR)/maxi.o             $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/hs118: $(EXEDIR)/hs118.o           $(SQOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SQOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/snmain: $(EXEDIR)/snmain.o         $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/snmainm: $(EXEDIR)/snmainm.o       $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/slmain: $(EXEDIR)/slmain.o         $(SQOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SQOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/sqmain: $(EXEDIR)/sqmain.o         $(SQOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SQOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/npmain: $(EXEDIR)/npmain.o         $(SNOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SNOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/slmainMPS: $(EXEDIR)/slmainMPS.o   $(SQOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SQOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/sqmainMPS: $(EXEDIR)/sqmainMPS.o   $(SQOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SQOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/sqopt: $(EXEDIR)/sn01main.o        $(SQOPT_SOLIBS)
	$(FC) $(FFLAGS) $(RFLAGS) $^ -o $@ -L$(LIBDIR) $(SQOPT_LIBS) $(LIBRARIES)

$(EXEDIR)/t1diet_a: $(EXEDIR)/t1diet.o         $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/t2banana_a: $(EXEDIR)/t2banana.o     $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/t3qp_a: $(EXEDIR)/t3qp.o             $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/t4manne_a: $(EXEDIR)/t4manne.o       $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/t5weapon_a: $(EXEDIR)/t5weapon.o     $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/t6wood_a: $(EXEDIR)/t6wood.o         $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/t7etamacro_a: $(EXEDIR)/t7etamacro.o $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/sntoy_a: $(EXEDIR)/sntoy.o           $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/spring_a: $(EXEDIR)/spring.o         $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/springi_a: $(EXEDIR)/springi.o       $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/maxi_a: $(EXEDIR)/maxi.o             $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/hs118_a: $(EXEDIR)/hs118.o           $(SQOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SQOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/snmain_a: $(EXEDIR)/snmain.o         $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/snmainm_a: $(EXEDIR)/snmainm.o       $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/slmain_a: $(EXEDIR)/slmain.o         $(SQOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SQOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/sqmain_a: $(EXEDIR)/sqmain.o         $(SQOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SQOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/npmain_a: $(EXEDIR)/npmain.o         $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/slmainMPS_a: $(EXEDIR)/slmainMPS.o   $(SNOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SNOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/sqmainMPS_a: $(EXEDIR)/sqmainMPS.o   $(SQOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@ $(SQOPT_AR_LIBS) $(LIBRARIES)

$(EXEDIR)/sqopt_a: $(EXEDIR)/sn01main.o        $(SQOPT_AR_LIBS)
	$(FC)  $(FFLAGS) $< -o $@  $(SQOPT_AR_LIBS) $(LIBRARIES)

clean:
	rm -f *.o

veryclean:
	-\rm -f *.o
