#  Main body of the installation makefile for Matlab interfaces
#  for the GALAHAD library

#  N. Gould, D. Orban and Ph. L. Toint.
#  This version: 2024-01-11

SHELL = /bin/$(BINSHELL)

#  Mex compiler

MEX = $(MATLAB)/bin/mex

#  Mex file extension

MEXEXT = $(shell $(MATLAB)/bin/mexext)

#  Mex file extension

MEXOUTDIR = $(MEXEXT)_output

#  compiler flags

MATLABINC = -I$(MATLAB)/extern/include
FFLAGS    = $(BASIC) $(OPTIMIZATION) $(DEBUG) $(MODULES) $(MATLABINC)
FFLAGSN   = $(BASIC) $(NOOPTIMIZATION) $(DEBUG) $(MODULES) $(MATLABINC)
MFFLAGS   = $(MBASIC) $(OPTIMIZATION) $(DEBUG) $(MODULES)
MFLAGS    = CC='$(CC)' FC='$(FORTRAN)' \
            FFLAGS='$(MFFLAGS) $(OPENMP) \
            -fallow-argument-mismatch -fallow-invalid-boz' \
            LD='$(FORTRAN) $(MFFLAGS) $(OPENMP)' \
            -silent -largeArrayDims $(MATLABINC) $(MOMP)
#            -g -largeArrayDims -compatibleArrayDims $(MATLABINC) $(MOMP)

MEXFLAGS = -L$(OBJD) $(LIBS) $(MFLAGS) -outdir $(MEXOUTDIR)

#  names of random libraries

MLG  = $(OBJ)/libgalahad_matlab.a
MLGS = $(OBJS)/libgalahad_matlab.a
MLGD = $(OBJD)/libgalahad_matlab.a

#  Libraries used

LIBS = -lgalahad_matlab -lgalahad $(HSL) $(MKL_PARDISO) $(PARDISO) \
       $(WSMP) $(PASTIX) $(MUMPS) $(MPI) $(UMFPACK) \
       $(METIS4ND) $(METIS5ND) $(LAPACK) $(BLAS) -lhwloc

#  Archive manipulation strings

MARR = $(AR) $(ARREPFLAGS) $(MLG)
MRMARFILE = $(GALAHAD)/bin/rmarfile $(AR) $(GREP) $(MLG)

#  Derived type dependencies

MAT_BASIC = basic_$(PRECIS) $(MLG)(galahad_matlab.o) \
            $(MLG)(galahad_transfer_matlab.o)
MAT_DEMO = $(MAT_BASIC)
MAT_DEBUG = $(MAT_BASIC)
MAT_BGO = $(MAT_TRB) $(MAT_UGO) $(MAT_LHS) $(MLG)(galahad_bgo_matlab_types.o)
MAT_DGO = $(MAT_TRB) $(MAT_UGO) $(MAT_HASH) $(MLG)(galahad_dgo_matlab_types.o)
MAT_BSC = $(MAT_BASIC) $(MLG)(galahad_bsc_matlab_types.o)
MAT_ROOTS = $(MAT_BASIC) $(MLG)(galahad_roots_matlab_types.o)
MAT_SILS = $(MAT_BASIC) $(MLG)(galahad_sils_matlab_types.o)
MAT_HASH = $(MAT_BASIC) $(MLG)(galahad_hash_matlab_types.o)
MAT_LHS = $(MAT_BASIC) $(MLG)(galahad_lhs_matlab_types.o)
MAT_LSRT = $(MAT_BASIC) $(MLG)(galahad_lsrt_matlab_types.o)
MAT_LSTR = $(MAT_BASIC) $(MLG)(galahad_lstr_matlab_types.o)
MAT_L2RT = $(MAT_BASIC) $(MLG)(galahad_l2rt_matlab_types.o)
MAT_ULS = $(MAT_BASIC) $(MLG)(galahad_uls_matlab_types.o)
MAT_NODEND = $(MAT_BASIC) $(MLG)(galahad_nodend_matlab_types.o)
MAT_SLS = $(MAT_NODEND) $(MLG)(galahad_sls_matlab_types.o)
MAT_LMS = $(MAT_BASIC) $(MLG)(galahad_lms_matlab_types.o)
MAT_SHA = $(MAT_BASIC) $(MLG)(galahad_sha_matlab_types.o)
MAT_SCALE = $(MAT_BASIC) $(MLG)(galahad_scale_matlab_types.o)
MAT_PRESOLVE = $(MAT_BASIC) $(MLG)(galahad_presolve_matlab_types.o)
MAT_PSLS = $(MAT_SLS) $(MLG)(galahad_psls_matlab_types.o)
MAT_SBLS = $(MAT_SLS) $(MAT_ULS) $(MLG)(galahad_sbls_matlab_types.o)
MAT_SSLS = $(MAT_SLS) $(MLG)(galahad_ssls_matlab_types.o)
MAT_S = basic $(MLG)(galahad_matlab.o) $(MLG)(galahad_transfer_m.o)
MAT_FDC = $(MAT_SLS) $(MAT_ULS) $(MLG)(galahad_fdc_matlab_types.o)
MAT_IR = $(MAT_SLS) $(MLG)(galahad_ir_matlab_types.o)
MAT_BQP = $(MAT_SBLS) $(MLG)(galahad_bqp_matlab_types.o)
MAT_BQPB = $(MAT_CQP) $(MLG)(galahad_bqpb_matlab_types.o)
MAT_RQS = $(MAT_IR) $(MLG)(galahad_rqs_matlab_types.o)
MAT_TRB = $(MAT_GLTR) $(MAT_TRS) $(MAT_PSLS) $(MAT_LMS) $(MAT_SHA) \
          $(MLG)(galahad_trb_matlab_types.o)
MAT_TRS = $(MAT_IR) $(MLG)(galahad_trs_matlab_types.o)
MAT_TREK = $(MAT_TRS) $(MLG)(galahad_trek_matlab_types.o)
MAT_TESTBED =  $(MAT_BASIC) $(MLG)(galahad_testbed_matlab_types.o)
MAT_NREK = $(MAT_RQS) $(MLG)(galahad_nrek_matlab_types.o)
MAT_TRU = $(MAT_GLTR) $(MAT_TRS) $(MAT_PSLS) $(MAT_LMS) $(MAT_SHA) \
          $(MLG)(galahad_tru_matlab_types.o)
MAT_ARC = $(MAT_GLRT) $(MAT_RQS) $(MAT_PSLS) $(MAT_LMS) $(MAT_SHA) \
          $(MLG)(galahad_arc_matlab_types.o)
MAT_NLS = $(MAT_GLRT) $(MAT_RQS) $(MAT_PSLS) $(MAT_BSC) $(MAT_ROOTS) \
          $(MLG)(galahad_nls_matlab_types.o)
MAT_BLLS = $(MAT_SBLS) $(MLG)(galahad_blls_matlab_types.o)
MAT_CLLS = $(MAT_SLS)  $(MAT_FDC) $(MLG)(galahad_clls_matlab_types.o)
MAT_BLLSB = $(MAT_CLLS) $(MLG)(galahad_bllsb_matlab_types.o)
MAT_SLLS = $(MAT_SBLS) $(MLG)(galahad_slls_matlab_types.o)
MAT_SLLSB = $(MAT_CLLS) $(MLG)(galahad_sllsb_matlab_types.o)
MAT_SNLS = $(MAT_SLLS) $(MAT_SLLSB) $(MLG)(galahad_snls_matlab_types.o)
MAT_BNLS = $(MAT_BLLS) $(MAT_BLLSB) $(MLG)(galahad_bnls_matlab_types.o)
MAT_LLST = $(MAT_IR) $(MAT_SBLS) $(MLG)(galahad_llst_matlab_types.o)
MAT_GLRT = $(MAT_BASIC) $(MLG)(galahad_glrt_matlab_types.o)
MAT_GLTR = $(MAT_BASIC) $(MLG)(galahad_gltr_matlab_types.o)
MAT_QPA = $(MAT_BASIC) $(MLG)(galahad_qpa_matlab_types.o)
MAT_LSQP = $(MAT_SBLS) $(MAT_FDC) $(MLG)(galahad_lsqp_matlab_types.o)
MAT_LPA = $(MAT_BASIC) $(MLG)(galahad_lpa_matlab_types.o)
MAT_LPB = $(MAT_SBLS)  $(MAT_FDC) $(MLG)(galahad_lpb_matlab_types.o)
MAT_QPB = $(MAT_GLTR) $(MAT_LSQP) $(MLG)(galahad_qpb_matlab_types.o)
MAT_EQP = $(MAT_GLTR) $(MAT_SBLS) $(MLG)(galahad_eqp_matlab_types.o)
MAT_CQP = $(MAT_SBLS)  $(MAT_FDC) $(MLG)(galahad_cqp_matlab_types.o)
MAT_DQP = $(MAT_SBLS)  $(MAT_FDC) $(MAT_GLTR) $(MLG)(galahad_dqp_matlab_types.o)
MAT_QPC = $(MAT_QPA) $(MAT_QPB) $(MAT_EQP) $(MAT_CQP) \
          $(MLG)(galahad_qpc_matlab_types.o)
MAT_QP = $(MAT_SCALE) $(MAT_PRESOLVE) $(MAT_QPC) \
         $(MLG)(galahad_qp_matlab_types.o)
MAT_UGO = $(MAT_BASIC) $(MLG)(galahad_ugo_matlab_types.o)
MAT_WCP = $(MAT_SBLS) $(MAT_FDC) $(MLG)(galahad_wcp_matlab_types.o)

#  derived types used by

USES_BASIC = *.$(MEXEXT)
USES_ARC = galahad_arc.$(MEXEXT)
USES_BGO = galahad_bgo.$(MEXEXT)
USES_BLLS = galahad_blls.$(MEXEXT)
USES_BLLSB = galahad_bllsb.$(MEXEXT)
USES_BQP = galahad_bqp.$(MEXEXT)
USES_BQPB = galahad_bqpb.$(MEXEXT)
USES_BSC = galahad_bsc.$(MEXEXT) galahad_nls.$(MEXEXT)
USES_CLLS = galahad_clls.$(MEXEXT) galahad_bllsb.$(MEXEXT)
USES_CQP = galahad_cqp.$(MEXEXT) galahad_bqpb.$(MEXEXT) galahad_qpc.$(MEXEXT)
USES_DEBUG = galahad_debug.$(MEXEXT)
USES_DEMO = galahad_demo.$(MEXEXT)
USES_DGO = galahad_dgo.$(MEXEXT)
USES_DQP = galahad_dqp.$(MEXEXT)
USES_EQP = galahad_eqp.$(MEXEXT) galahad_qpc.$(MEXEXT)
USES_FDC = galahad_fdc.$(MEXEXT) galahad_clls.$(MEXEXT) galahad_cqp.$(MEXEXT) \
           galahad_dqp.$(MEXEXT) galahad_lpb.$(MEXEXT) \
           galahad_lsqp.$(MEXEXT) galahad_wcp.$(MEXEXT)
USES_GLRT = galahad_glrt.$(MEXEXT) galahad_arc.$(MEXEXT) galahad_nls.$(MEXEXT)
USES_GLTR = galahad_gltr.$(MEXEXT) galahad_dqp.$(MEXEXT) galahad_eqp.$(MEXEXT) \
            galahad_qpb.$(MEXEXT) galahad_trb.$(MEXEXT) \
            galahad_tru.$(MEXEXT)
USES_HASH = galahad_hash.$(MEXEXT) galahad_dgo.$(MEXEXT)
USES_IR = galahad_ir.$(MEXEXT) galahad_llst.$(MEXEXT) galahad_rqs.$(MEXEXT) \
          galahad_trs.$(MEXEXT)
USES_L2RT = galahad_l2rt.$(MEXEXT)
USES_LHS = galahad_lhs.$(MEXEXT) galahad_bgo.$(MEXEXT)
USES_LLST = galahad_llst.$(MEXEXT)
USES_LMS = galahad_lms.$(MEXEXT) galahad_arc.$(MEXEXT) galahad_trb.$(MEXEXT) \
           galahad_tru.$(MEXEXT)
USES_LPA = galahad_lpa.$(MEXEXT)
USES_LPB = galahad_lpb.$(MEXEXT)
USES_LSQP = galahad_lsqp.$(MEXEXT) galahad_qpb.$(MEXEXT)
USES_LSRT = galahad_lsrt.$(MEXEXT)
USES_LSTR = galahad_lstr.$(MEXEXT)
USES_NLS = galahad_nls.$(MEXEXT)
USES_NODEND = galahad_nodend.$(MEXEXT) galahad_sls.$(MEXEXT)
USES_PRESOLVE = galahad_presolve.$(MEXEXT) galahad_qp.$(MEXEXT)
USES_PSLS = galahad_psls.$(MEXEXT) galahad_arc.$(MEXEXT) galahad_nls.$(MEXEXT) \
            galahad_trb.$(MEXEXT) galahad_tru.$(MEXEXT)
USES_QP = galahad_qp.$(MEXEXT)
USES_QPA = galahad_qpa.$(MEXEXT) galahad_qpc.$(MEXEXT)
USES_QPB = galahad_qpb.$(MEXEXT) galahad_qpc.$(MEXEXT)
USES_QPC = galahad_qpc.$(MEXEXT) galahad_qp.$(MEXEXT)
USES_ROOTS = galahad_roots.$(MEXEXT) galahad_nls.$(MEXEXT)
USES_RQS = galahad_rqs.$(MEXEXT) galahad_arc.$(MEXEXT) galahad_nls.$(MEXEXT)
USES_SBLS = galahad_sbls.$(MEXEXT) galahad_blls.$(MEXEXT) \
            galahad_bqp.$(MEXEXT) galahad_cqp.$(MEXEXT) \
            galahad_dqp.$(MEXEXT) galahad_eqp.$(MEXEXT) \
            galahad_llst.$(MEXEXT) galahad_lpb.$(MEXEXT) \
            galahad_lsqp.$(MEXEXT) galahad_wcp.$(MEXEXT)
USES_SCALE = galahad_scale.$(MEXEXT) galahad_qp.$(MEXEXT)
USES_SHA = galahad_sha.$(MEXEXT) galahad_arc.$(MEXEXT) galahad_trb.$(MEXEXT) \
           galahad_tru.$(MEXEXT)
USES_SILS = galahad_sils.$(MEXEXT)
USES_SLLS = galahad_slls.$(MEXEXT)
USES_SLLSB = galahad_sllsb.$(MEXEXT)
USES_SLS = galahad_sls.$(MEXEXT) galahad_clls.$(MEXEXT) galahad_fdc.$(MEXEXT) \
           galahad_ir.$(MEXEXT) galahad_psls.$(MEXEXT) galahad_sbls.$(MEXEXT) \
           galahad_trek.$(MEXEXT) galahad_nrek.$(MEXEXT)
USES_SNLS = galahad_snls.$(MEXEXT)
USES_BNLS = galahad_bnls.$(MEXEXT)
USES_SSLS = galahad_ssls.$(MEXEXT) galahad_expo.$(MEXEXT)
USES_TRB = galahad_trb.$(MEXEXT) galahad_bgo.$(MEXEXT) galahad_dgo.$(MEXEXT)
USES_TRS = galahad_trs.$(MEXEXT) galahad_trb.$(MEXEXT) galahad_tru.$(MEXEXT)
USES_TRU = galahad_tru.$(MEXEXT)
USES_UGO = galahad_ugo.$(MEXEXT) galahad_bgo.$(MEXEXT) galahad_dgo.$(MEXEXT)
USES_ULS = galahad_uls.$(MEXEXT) galahad_fdc.$(MEXEXT) galahad_sbls.$(MEXEXT)
USES_WCP = galahad_wcp.$(MEXEXT)

SUCC_MATLAB = precision version) for Matlab compiled successfully
NO_MATLAB = precision GALAHAD interface to Matlab not currently available

#  main compilations and runs

#  everything for distribution

all: all_$(PRECIS)

#all_single: basic_single sils sls lpa lpb cqp dqp eqp glrt gltr llst lsqp \
#            lsrt lstr l2rt nrek qpa qpb qpc qp rqs sbls trs trek wcp tru \
#            arc trb nls
#	@printf ' %-21s\n' "GALAHAD: ($(PRECIS) $(SUCC_MATLAB)"
all_single:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"
all_double: basic_double sils sls sbls ssls bqp bqpb \
            blls slls clls bllsb sllsb lpa lpb cqp dqp eqp \
            glrt gltr llst lsqp lsrt lstr l2rt nrek trek \
            qpa qpb qpc qp rqs trs wcp tru arc trb nls bnls snls \
            ugo bgo dgo
	@printf ' %-21s\n' "GALAHAD: ($(PRECIS) $(SUCC_MATLAB)"
all_single_64:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"
all_doublee_64:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"

#broken lpb cqp llst qpc qp rqs trs
#failed qpb
#missing dicfs (glrt gltr)

#  everything including current developments

all_current: all_current_$(PRECIS)
all_current_single:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"
all_current_double: all_double ugo bgo dgo
all_current_single_64:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"
all_current_double_64:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"

#  everything for QPs from the distribution

allqp: allqp_$(PRECIS)

allqp_single:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"
allqp_double: basic_double  bqp bqpb blls slls clls bllsb sllsb \
              lpa lpb cqp dqp eqp lsqp qpa qpb qpc qp wcp
allqp_single_64:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"
allqp_double_64:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"

#  everything for un/bound-constrained optimization from the distribution

allucbc: allucbc_$(PRECIS)

allucbc_single:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"
allucbc_double: basic_double arc nls trb tru
allucbc_single_64:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"
allucbc_double_64:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"

#  everything for regularization from the distribution

allrq: allrq_$(PRECIS)

allrq_single:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"
allrq_double: basic_double glrt gltr llst lsrt lstr l2rt nrek rqs trs trek
allrq_single_64:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"
allrq_double_64:
	@printf ' %-21s\n' "$(PRECIS) $(NO_MATLAB)"

#  everything for global optimization from the distribution

allgo: allgo_$(PRECIS)

allgo_single: basic_single bgo dgo ugo
allgo_double: basic_double bgo dgo ugo

#  basic packages

smt:
	( cd $(GALAHAD)/src/external/hsl ; \
          $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) hsl_zd11_silent \
          PRECIS=$(PRECIS) PWD=$(GALAHAD)/src/external/hsl )
	( cd ../general ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
            smt_silent PRECIS=$(PRECIS) PWD=$(PWD)/../general )
basic_single:
	$(MKDIR) -p $(MEXOUTDIR)
	( cd ../general ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
            basic_silent PRECIS=$(PRECIS) PWD=$(PWD)/../general )
	( cd ../general ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
            ssids_dum PRECIS=$(PRECIS) PWD=$(PWD)/../general )
basic_double:
	$(MKDIR) -p $(MEXOUTDIR)
	( cd ../general ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
            basic_silent PRECIS=$(PRECIS) PWD=$(PWD)/../general )
	( cd ../general ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
            $(SSIDS)_silent PRECIS=$(PRECIS) PWD=$(PWD)/../general )

#  arc

arc: $(MAT_ARC) galahad_arc.$(MEXEXT)

galahad_arc.$(MEXEXT): galahad_arc.F90
	( cd ../arc ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     arc_silent PRECIS=double PWD=$(PWD)/../arc )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_arc"
	$(MEX) galahad_arc.F90 -output galahad_arc $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_arc.$(MEXEXT) .
	@printf '[ OK ]\n'

#  bgo

bgo: $(MAT_BGO) galahad_bgo.$(MEXEXT)

galahad_bgo.$(MEXEXT): galahad_bgo.F90
	( cd ../bgo ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bgo_silent PRECIS=double PWD=$(PWD)/../bgo )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_bgo"
	$(MEX) galahad_bgo.F90 -output galahad_bgo $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_bgo.$(MEXEXT) .
	@printf '[ OK ]\n'

#  blls

blls: $(MAT_BLLS) galahad_blls.$(MEXEXT)

galahad_blls.$(MEXEXT): galahad_blls.F90
	( cd ../blls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     blls_silent PRECIS=double PWD=$(PWD)/../blls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_blls"
	$(MEX) galahad_blls.F90 -output galahad_blls $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_blls.$(MEXEXT) .
	@printf '[ OK ]\n'

#  bllsb

bllsb: $(MAT_BLLSB) galahad_bllsb.$(MEXEXT)

galahad_bllsb.$(MEXEXT): galahad_bllsb.F90
	( cd ../bllsb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bllsb_silent PRECIS=double PWD=$(PWD)/../bllsb )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_bllsb"
	$(MEX) galahad_bllsb.F90 -output galahad_bllsb $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_bllsb.$(MEXEXT) .
	@printf '[ OK ]\n'

#  bnls

bnls: $(MAT_BNLS) galahad_bnls.$(MEXEXT)

galahad_bnls.$(MEXEXT): galahad_bnls.F90
	( cd ../bnls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bnls_silent PRECIS=double PWD=$(PWD)/../bnls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_bnls"
	$(MEX) galahad_bnls.F90 -output galahad_bnls $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_bnls.$(MEXEXT) .
	@printf '[ OK ]\n'

#  clls

clls: $(MAT_CLLS) galahad_clls.$(MEXEXT)

galahad_clls.$(MEXEXT): galahad_clls.F90
	( cd ../clls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     clls_silent PRECIS=double PWD=$(PWD)/../clls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_clls"
	$(MEX) galahad_clls.F90 -output galahad_clls $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_clls.$(MEXEXT) .
	@printf '[ OK ]\n'

#  slls

slls: $(MAT_SLLS) galahad_slls.$(MEXEXT)

galahad_slls.$(MEXEXT): galahad_slls.F90
	( cd ../slls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     slls_silent PRECIS=double PWD=$(PWD)/../slls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_slls"
	$(MEX) galahad_slls.F90 -output galahad_slls $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_slls.$(MEXEXT) .
	@printf '[ OK ]\n'

#  sllsb

sllsb: $(MAT_SLLSB) galahad_sllsb.$(MEXEXT)

galahad_sllsb.$(MEXEXT): galahad_sllsb.F90
	( cd ../sllsb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     sllsb_silent PRECIS=double PWD=$(PWD)/../sllsb )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_sllsb"
	$(MEX) galahad_sllsb.F90 -output galahad_sllsb $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_sllsb.$(MEXEXT) .
	@printf '[ OK ]\n'

#  dgo

dgo: $(MAT_DGO) galahad_dgo.$(MEXEXT)

galahad_dgo.$(MEXEXT): galahad_dgo.F90
	( cd ../dgo ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     dgo_silent PRECIS=double PWD=$(PWD)/../dgo )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_dgo"
	$(MEX) galahad_dgo.F90 -output galahad_dgo $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_dgo.$(MEXEXT) .
	@printf '[ OK ]\n'

#  bqp

bqp: $(MAT_BQP) galahad_bqp.$(MEXEXT)

galahad_bqp.$(MEXEXT): galahad_bqp.F90
	( cd ../bqp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bqp_silent PRECIS=double PWD=$(PWD)/../bqp )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_bqp"
	$(MEX) galahad_bqp.F90 -output galahad_bqp $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_bqp.$(MEXEXT) .
	@printf '[ OK ]\n'

#  bqpb

bqpb: $(MAT_BQPB) galahad_bqpb.$(MEXEXT)

galahad_bqpb.$(MEXEXT): galahad_bqpb.F90
	( cd ../bqpb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bqpb_silent PRECIS=double PWD=$(PWD)/../bqpb )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_bqpb"
	$(MEX) galahad_bqpb.F90 -output galahad_bqpb $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_bqpb.$(MEXEXT) .
	@printf '[ OK ]\n'

#  lpa

lpa: $(MAT_LPA) galahad_lpa.$(MEXEXT)

galahad_lpa.$(MEXEXT): galahad_lpa.F90
	( cd ../lpa ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lpa_silent PRECIS=double PWD=$(PWD)/../lpa )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_lpa"
	$(MEX) galahad_lpa.F90 -output galahad_lpa $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_lpa.$(MEXEXT) .
	@printf '[ OK ]\n'

#  lpb

lpb: $(MAT_LPB) galahad_lpb.$(MEXEXT)

galahad_lpb.$(MEXEXT): galahad_lpb.F90
	( cd ../lpb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lpb_silent PRECIS=double PWD=$(PWD)/../lpb )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_lpb"
	$(MEX) galahad_lpb.F90 -output galahad_lpb $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_lpb.$(MEXEXT) .
	@printf '[ OK ]\n'

#  cqp

cqp: $(MAT_CQP) galahad_cqp.$(MEXEXT)

galahad_cqp.$(MEXEXT): galahad_cqp.F90
	( cd ../cqp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     cqp_silent PRECIS=double PWD=$(PWD)/../cqp )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_cqp"
	$(MEX) galahad_cqp.F90 -output galahad_cqp $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_cqp.$(MEXEXT) .
	@printf '[ OK ]\n'

#  dqp

dqp: $(MAT_DQP) galahad_dqp.$(MEXEXT)

galahad_dqp.$(MEXEXT): galahad_dqp.F90
	( cd ../dqp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     dqp_silent PRECIS=double PWD=$(PWD)/../dqp )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_dqp"
	$(MEX) galahad_dqp.F90 -output galahad_dqp $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_dqp.$(MEXEXT) .
	@printf '[ OK ]\n'

#  eqp

eqp: $(MAT_EQP) galahad_eqp.$(MEXEXT)

galahad_eqp.$(MEXEXT): galahad_eqp.F90
	( cd ../eqp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     eqp_silent PRECIS=double PWD=$(PWD)/../eqp )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_eqp"
	$(MEX) galahad_eqp.F90 -output galahad_eqp $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_eqp.$(MEXEXT) .
	@printf '[ OK ]\n'

#  glrt

glrt: $(MAT_GLRT) galahad_glrt.$(MEXEXT)

galahad_glrt.$(MEXEXT): galahad_glrt.F90
	( cd ../glrt ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     glrt_silent PRECIS=double PWD=$(PWD)/../glrt )
	( cd ../psls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     psls_silent PRECIS=double PWD=$(PWD)/../psls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_glrt"
	$(MEX) galahad_glrt.F90 -output galahad_glrt $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_glrt.$(MEXEXT) .
	@printf '[ OK ]\n'

#  gltr

gltr: $(MAT_GLTR) galahad_gltr.$(MEXEXT)

galahad_gltr.$(MEXEXT): galahad_gltr.F90
	( cd ../gltr ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     gltr_silent PRECIS=double PWD=$(PWD)/../gltr )
	( cd ../psls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     psls_silent PRECIS=double PWD=$(PWD)/../psls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_gltr"
	$(MEX) galahad_gltr.F90 -output galahad_gltr $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_gltr.$(MEXEXT) .
	@printf '[ OK ]\n'

#  llst

llst: $(MAT_LLST) galahad_llst.$(MEXEXT)

galahad_llst.$(MEXEXT): galahad_llst.F90
	( cd ../llst ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     llst_silent PRECIS=double PWD=$(PWD)/../llst )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_llst"
	$(MEX) galahad_llst.F90 -output galahad_llst $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_llst.$(MEXEXT) .
	@printf '[ OK ]\n'

#  lsqp

lsqp: $(MAT_LSQP) galahad_lsqp.$(MEXEXT)

galahad_lsqp.$(MEXEXT): galahad_lsqp.F90
	( cd ../lsqp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lsqp_silent PRECIS=double PWD=$(PWD)/../lsqp )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_lsqp"
	$(MEX) galahad_lsqp.F90 -output galahad_lsqp $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_lsqp.$(MEXEXT) .
	@printf '[ OK ]\n'

#  lsrt

lsrt: $(MAT_LSRT) galahad_lsrt.$(MEXEXT)

galahad_lsrt.$(MEXEXT): galahad_lsrt.F90
	( cd ../lsrt ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lsrt_silent PRECIS=double PWD=$(PWD)/../lsrt )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_lsrt"
	$(MEX) galahad_lsrt.F90 -output galahad_lsrt $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_lsrt.$(MEXEXT) .
	@printf '[ OK ]\n'

#  lstr

lstr: $(MAT_LSTR) galahad_lstr.$(MEXEXT)

galahad_lstr.$(MEXEXT): galahad_lstr.F90
	( cd ../lstr ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lstr_silent PRECIS=double PWD=$(PWD)/../lstr )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_lstr"
	$(MEX) galahad_lstr.F90 -output galahad_lstr $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_lstr.$(MEXEXT) .
	@printf '[ OK ]\n'

#  l2rt

l2rt: $(MAT_L2RT) galahad_l2rt.$(MEXEXT)

galahad_l2rt.$(MEXEXT): galahad_l2rt.F90
	( cd ../l2rt ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     l2rt_silent PRECIS=double PWD=$(PWD)/../l2rt )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_l2rt"
	$(MEX) galahad_l2rt.F90 -output galahad_l2rt $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_l2rt.$(MEXEXT) .
	@printf '[ OK ]\n'

#  nls

nls: $(MAT_NLS) galahad_nls.$(MEXEXT)

galahad_nls.$(MEXEXT): galahad_nls.F90
	( cd ../nls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     nls_silent PRECIS=double PWD=$(PWD)/../nls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_nls"
	$(MEX) galahad_nls.F90 -output galahad_nls $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_nls.$(MEXEXT) .
	@printf '[ OK ]\n'

#  nodend

nodend: $(MAT_NODEND) galahad_nodend.$(MEXEXT)

galahad_nodend.$(MEXEXT): galahad_nodend.F90
	( cd ../nodend ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     nodend_silent PRECIS=double PWD=$(PWD)/../nodend )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_nodend"
	$(MEX) galahad_nodend.F90 -output galahad_nodend $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_nodend.$(MEXEXT) .
	@printf '[ OK ]\n'

#  nrek

nrek: $(MAT_NREK) galahad_nrek.$(MEXEXT)

galahad_nrek.$(MEXEXT): galahad_nrek.F90
	( cd ../nrek ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     nrek_silent PRECIS=double PWD=$(PWD)/../nrek )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_nrek"
	$(MEX) galahad_nrek.F90 -output galahad_nrek $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_nrek.$(MEXEXT) .
	@printf '[ OK ]\n'

#  qpa

qpa: $(MAT_QPA) galahad_qpa.$(MEXEXT)

galahad_qpa.$(MEXEXT): galahad_qpa.F90
	( cd ../qpa ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     qpa_silent PRECIS=double PWD=$(PWD)/../qpa )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_qpa"
	$(MEX) galahad_qpa.F90 -output galahad_qpa $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_qpa.$(MEXEXT) .
	@printf '[ OK ]\n'

#  qpb

qpb: $(MAT_QPB) galahad_qpb.$(MEXEXT)

galahad_qpb.$(MEXEXT): galahad_qpb.F90
	( cd ../qpb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     qpb_silent PRECIS=double PWD=$(PWD)/../qpb )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_qpb"
	$(MEX) galahad_qpb.F90 -output galahad_qpb $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_qpb.$(MEXEXT) .
	@printf '[ OK ]\n'

#  qpc

qpc: $(MAT_QPC) galahad_qpc.$(MEXEXT)

galahad_qpc.$(MEXEXT): galahad_qpc.F90
	( cd ../qpc ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     qpc_silent PRECIS=double PWD=$(PWD)/../qpc )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_qpc"
	$(MEX) galahad_qpc.F90 -output galahad_qpc $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_qpc.$(MEXEXT) .
	@printf '[ OK ]\n'

#  qp

qp: $(MAT_QP) galahad_qp.$(MEXEXT)

galahad_qp.$(MEXEXT): galahad_qp.F90
	( cd ../qp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     qp_silent PRECIS=double PWD=$(PWD)/../qp )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_qp"
	$(MEX) galahad_qp.F90 -output galahad_qp $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_qp.$(MEXEXT) .
	@printf '[ OK ]\n'

#  rqs

rqs: $(MAT_RQS) galahad_rqs.$(MEXEXT)

galahad_rqs.$(MEXEXT): galahad_rqs.F90
	( cd ../rqs ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     rqs_silent PRECIS=double PWD=$(PWD)/../rqs )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_rqs"
	$(MEX) galahad_rqs.F90 -output galahad_rqs $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_rqs.$(MEXEXT) .
	@printf '[ OK ]\n'

#  sbls

sbls: $(MAT_SBLS) galahad_sbls.$(MEXEXT)

galahad_sbls.$(MEXEXT): galahad_sbls.F90
	( cd ../sbls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     sbls_silent PRECIS=double PWD=$(PWD)/../sbls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_sbls"
	$(MEX) galahad_sbls.F90 -output galahad_sbls $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_sbls.$(MEXEXT) .
	@printf '[ OK ]\n'

#  sils

sils: smt $(MAT_SILS) galahad_sils.$(MEXEXT)

galahad_sils.$(MEXEXT): galahad_sils.F90
	( cd ../sils ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                    sils_silent PRECIS=double PWD=$(PWD)/../sils )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_sils"
	$(MEX) galahad_sils.F90 -output galahad_sils $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_sils.$(MEXEXT) .
	@printf '[ OK ]\n'

#  sls

sls: $(MAT_SLS) galahad_sls.$(MEXEXT)

galahad_sls.$(MEXEXT): galahad_sls.F90
	( cd ../sls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     sls_silent PRECIS=double PWD=$(PWD)/../sls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_sls"
	$(MEX) galahad_sls.F90 -output galahad_sls $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_sls.$(MEXEXT) .
	@printf '[ OK ]\n'

#  snls

snls: $(MAT_SNLS) galahad_snls.$(MEXEXT)

galahad_snls.$(MEXEXT): galahad_snls.F90
	( cd ../snls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     snls_silent PRECIS=double PWD=$(PWD)/../snls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_snls"
	$(MEX) galahad_snls.F90 -output galahad_snls $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_snls.$(MEXEXT) .
	@printf '[ OK ]\n'

#  ssls

ssls: $(MAT_SSLS) galahad_ssls.$(MEXEXT)

galahad_ssls.$(MEXEXT): galahad_ssls.F90
	( cd ../ssls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     ssls_silent PRECIS=double PWD=$(PWD)/../ssls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_ssls"
	$(MEX) galahad_ssls.F90 -output galahad_ssls $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_ssls.$(MEXEXT) .
	@printf '[ OK ]\n'

#  trb

trb: $(MAT_TRB) galahad_trb.$(MEXEXT)

galahad_trb.$(MEXEXT): galahad_trb.F90
	( cd ../trb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     trb_silent PRECIS=double PWD=$(PWD)/../trb )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_trb"
	$(MEX) galahad_trb.F90 -output galahad_trb $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_trb.$(MEXEXT) .
	@printf '[ OK ]\n'

#  trek

trek: $(MAT_TREK) galahad_trek.$(MEXEXT)

galahad_trek.$(MEXEXT): galahad_trek.F90
	( cd ../trek ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     trek_silent PRECIS=double PWD=$(PWD)/../trek )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_trek"
	$(MEX) galahad_trek.F90 -output galahad_trek $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_trek.$(MEXEXT) .
	@printf '[ OK ]\n'

#  testbed

testbed: $(MAT_TESTBED) galahad_testbed.$(MEXEXT)

galahad_testbed.$(MEXEXT): galahad_testbed.F90
#	( cd ../testbed ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
#                     testbed_silent PRECIS=double PWD=$(PWD)/../testbed )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_testbed"
	$(MEX) galahad_testbed.F90 -output galahad_testbed $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_testbed.$(MEXEXT) .
	@printf '[ OK ]\n'

#  trs

trs: $(MAT_TRS) galahad_trs.$(MEXEXT)

galahad_trs.$(MEXEXT): galahad_trs.F90
	( cd ../trs ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     trs_silent PRECIS=double PWD=$(PWD)/../trs )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_trs"
	$(MEX) galahad_trs.F90 -output galahad_trs $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_trs.$(MEXEXT) .
	@printf '[ OK ]\n'

#  tru

tru: $(MAT_TRU) galahad_tru.$(MEXEXT)

galahad_tru.$(MEXEXT): galahad_tru.F90
	( cd ../tru ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     tru_silent PRECIS=double PWD=$(PWD)/../tru )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_tru"
	$(MEX) galahad_tru.F90 -output galahad_tru $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_tru.$(MEXEXT) .
	@printf '[ OK ]\n'

#  ugo

ugo: $(MAT_UGO) galahad_ugo.$(MEXEXT)

galahad_ugo.$(MEXEXT): galahad_ugo.F90
	( cd ../ugo ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     ugo_silent PRECIS=double PWD=$(PWD)/../ugo )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_ugo"
	$(MEX) galahad_ugo.F90 -output galahad_ugo $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_ugo.$(MEXEXT) .
	@printf '[ OK ]\n'

#  uls

uls: $(MAT_ULS) galahad_uls.$(MEXEXT)

galahad_uls.$(MEXEXT): galahad_uls.F90
	( cd ../uls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     uls_silent PRECIS=double PWD=$(PWD)/../uls )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_uls"
	$(MEX) galahad_uls.F90 -output galahad_uls $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_uls.$(MEXEXT) .
	@printf '[ OK ]\n'

#  wcp

wcp: $(MAT_WCP) galahad_wcp.$(MEXEXT)

galahad_wcp.$(MEXEXT): galahad_wcp.F90
	( cd ../wcp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     wcp_silent PRECIS=double PWD=$(PWD)/../wcp )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_wcp"
	$(MEX) galahad_wcp.F90 -output galahad_wcp $(MEXFLAGS)
	$(LN) -fs $(MEXOUTDIR)/galahad_wcp.$(MEXEXT) .
	@printf '[ OK ]\n'

#  demo

demo: $(MAT_DEMO) galahad_demo.$(MEXEXT)

galahad_demo.$(MEXEXT): galahad_demo.F90
	( cd ../demo ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     demo_silent PRECIS=double PWD=$(PWD)/../demo )
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_demo"
	$(MEX) -output galahad_demo galahad_demo.F90 $(MEXFLAGS)
	@printf '[ OK ]\n'

#  debug

debug: $(MAT_DEBUG) galahad_debug.$(MEXEXT)

galahad_debug.$(MEXEXT): galahad_debug.F90
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_debug"
	$(MEX) galahad_debug.F90 -output galahad_debug $(MEXFLAGS)
	@printf '[ OK ]\n'

#  Generic GALAHAD interface to Mex

#  main copying utilities

galahad_matlab.o: $(MLG)(galahad_matlab.o)

$(MLG)(galahad_matlab.o): galahad_matlab.F90
	@printf ' %-9s %-15s\t\t' "Compiling" "galahad_matlab"
	$(CP) galahad_matlab.F90 $(OBJ)/galahad_matlab.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_matlab.F90
	cd $(OBJ) ; $(MARR) galahad_matlab.o
	$(RM) $(OBJ)/galahad_matlab.F90 $(OBJ)/galahad_matlab.o
	$(MRMARFILE) galahad_transfer_matlab.o
	$(MVMODS)
	@printf '[ OK ]\n'

#  transfer matrices from Matlab to fortran

galahad_transfer_matlab.o: basic_double $(MLG)(galahad_transfer_matlab.o)

$(MLG)(galahad_transfer_matlab.o): galahad_transfer_matlab.F90
	@printf ' %-9s %-15s\t' "Compiling" "galahad_transfer_matlab"
	$(CP) galahad_transfer_matlab.F90 \
                           $(OBJ)/galahad_transfer_matlab.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_transfer_matlab.F90
	cd $(OBJ) ; $(MARR) galahad_transfer_matlab.o
	$(RM) $(OBJ)/galahad_transfer_matlab.o \
              $(OBJ)/galahad_transfer_matlab.F90
	$(MVMODS)
	@printf '[ OK ]\n'

#  Control and information interfaces

# arc

galahad_arc_matlab_types.o: $(MLG)(galahad_arc_matlab_types.o)

$(MLG)(galahad_arc_matlab_types.o): galahad_arc_matlab_types.F90
	( cd ../arc ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     arc_silent PRECIS=double PWD=$(PWD)/../arc )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_arc_matlab_types"
	$(CP) galahad_arc_matlab_types.F90 $(OBJ)/galahad_arc_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_arc_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_arc_matlab_types.o
	$(RM) $(OBJ)/galahad_arc_matlab_types.o \
              $(OBJ)/galahad_arc_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_ARC)
	@printf '[ OK ]\n'

# bgo

galahad_bgo_matlab_types.o: $(MLG)(galahad_bgo_matlab_types.o)

$(MLG)(galahad_bgo_matlab_types.o): galahad_bgo_matlab_types.F90
	( cd ../bgo ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bgo_silent PRECIS=double PWD=$(PWD)/../bgo )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_bgo_matlab_types"
	$(CP) galahad_bgo_matlab_types.F90 $(OBJ)/galahad_bgo_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_bgo_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_bgo_matlab_types.o
	$(RM) $(OBJ)/galahad_bgo_matlab_types.o \
              $(OBJ)/galahad_bgo_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_BGO)
	@printf '[ OK ]\n'

# blls

galahad_blls_matlab_types.o: $(MLG)(galahad_blls_matlab_types.o)

$(MLG)(galahad_blls_matlab_types.o): galahad_blls_matlab_types.F90
	( cd ../blls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     blls_silent PRECIS=double PWD=$(PWD)/../blls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_blls_matlab_types"
	$(CP) galahad_blls_matlab_types.F90 $(OBJ)/galahad_blls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_blls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_blls_matlab_types.o
	$(RM) $(OBJ)/galahad_blls_matlab_types.o \
              $(OBJ)/galahad_blls_matlab_types.F90
	$(MRMARFILE) galahad_bnls_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_BLLS)
	@printf '[ OK ]\n'

# bllsb

galahad_bllsb_matlab_types.o: $(MLG)(galahad_bllsb_matlab_types.o)

$(MLG)(galahad_bllsb_matlab_types.o): galahad_bllsb_matlab_types.F90
	( cd ../bllsb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bllsb_silent PRECIS=double PWD=$(PWD)/../bllsb )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_bllsb_matlab_types"
	$(CP) galahad_bllsb_matlab_types.F90 \
              $(OBJ)/galahad_bllsb_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_bllsb_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_bllsb_matlab_types.o
	$(RM) $(OBJ)/galahad_bllsb_matlab_types.o \
              $(OBJ)/galahad_bllsb_matlab_types.F90
	$(MRMARFILE) galahad_bnls_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_BLLSB)
	@printf '[ OK ]\n'

# bnls

galahad_bnls_matlab_types.o: $(MLG)(galahad_bnls_matlab_types.o)

$(MLG)(galahad_bnls_matlab_types.o): galahad_bnls_matlab_types.F90
	( cd ../bnls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bnls_silent PRECIS=double PWD=$(PWD)/../bnls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_bnls_matlab_types"
	$(CP) galahad_bnls_matlab_types.F90 $(OBJ)/galahad_bnls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_bnls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_bnls_matlab_types.o
	$(RM) $(OBJ)/galahad_bnls_matlab_types.o \
              $(OBJ)/galahad_bnls_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_BNLS)
	@printf '[ OK ]\n'

# clls

galahad_clls_matlab_types.o: $(MLG)(galahad_clls_matlab_types.o)

$(MLG)(galahad_clls_matlab_types.o): galahad_clls_matlab_types.F90
	( cd ../clls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     clls_silent PRECIS=double PWD=$(PWD)/../clls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_clls_matlab_types"
	$(CP) galahad_clls_matlab_types.F90 $(OBJ)/galahad_clls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_clls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_clls_matlab_types.o
	$(RM) $(OBJ)/galahad_clls_matlab_types.o \
              $(OBJ)/galahad_clls_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_CLLS)
	@printf '[ OK ]\n'

# slls

galahad_slls_matlab_types.o: $(MLG)(galahad_slls_matlab_types.o)

$(MLG)(galahad_slls_matlab_types.o): galahad_slls_matlab_types.F90
	( cd ../slls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     slls_silent PRECIS=double PWD=$(PWD)/../slls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_slls_matlab_types"
	$(CP) galahad_slls_matlab_types.F90 $(OBJ)/galahad_slls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_slls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_slls_matlab_types.o
	$(RM) $(OBJ)/galahad_slls_matlab_types.o \
              $(OBJ)/galahad_slls_matlab_types.F90
	$(MRMARFILE) galahad_snls_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_SLLS)
	@printf '[ OK ]\n'

# sllsb

galahad_sllsb_matlab_types.o: $(MLG)(galahad_sllsb_matlab_types.o)

$(MLG)(galahad_sllsb_matlab_types.o): galahad_sllsb_matlab_types.F90
	( cd ../sllsb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     sllsb_silent PRECIS=double PWD=$(PWD)/../sllsb )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_sllsb_matlab_types"
	$(CP) galahad_sllsb_matlab_types.F90 \
              $(OBJ)/galahad_sllsb_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_sllsb_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_sllsb_matlab_types.o
	$(RM) $(OBJ)/galahad_sllsb_matlab_types.o \
              $(OBJ)/galahad_sllsb_matlab_types.F90
	$(MRMARFILE) galahad_snls_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_SLLSB)
	@printf '[ OK ]\n'

# dgo

galahad_dgo_matlab_types.o: $(MLG)(galahad_dgo_matlab_types.o)

$(MLG)(galahad_dgo_matlab_types.o): galahad_dgo_matlab_types.F90
	( cd ../dgo ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     dgo_silent PRECIS=double PWD=$(PWD)/../dgo )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_dgo_matlab_types"
	$(CP) galahad_dgo_matlab_types.F90 $(OBJ)/galahad_dgo_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_dgo_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_dgo_matlab_types.o
	$(RM) $(OBJ)/galahad_dgo_matlab_types.o \
              $(OBJ)/galahad_dgo_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_DGO)
	@printf '[ OK ]\n'

#  bqp

galahad_bqp_matlab_types.o: $(MLG)(galahad_bqp_matlab_types.o)

$(MLG)(galahad_bqp_matlab_types.o): galahad_bqp_matlab_types.F90
	( cd ../bqp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bqp_silent PRECIS=double PWD=$(PWD)/../bqp )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_bqp_matlab_types"
	$(CP) galahad_bqp_matlab_types.F90 $(OBJ)/galahad_bqp_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_bqp_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_bqp_matlab_types.o
	$(RM) $(OBJ)/galahad_bqp_matlab_types.o \
              $(OBJ)/galahad_bqp_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_BQP)
	@printf '[ OK ]\n'

#  bqpb

galahad_bqpb_matlab_types.o: $(MLG)(galahad_bqpb_matlab_types.o)

$(MLG)(galahad_bqpb_matlab_types.o): galahad_bqpb_matlab_types.F90
	( cd ../bqpb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bqpb_silent PRECIS=double PWD=$(PWD)/../bqpb )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_bqpb_matlab_types"
	$(CP) galahad_bqpb_matlab_types.F90 $(OBJ)/galahad_bqpb_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_bqpb_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_bqpb_matlab_types.o
	$(RM) $(OBJ)/galahad_bqpb_matlab_types.o \
              $(OBJ)/galahad_bqpb_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_BQPB)
	@printf '[ OK ]\n'

#  bsc

galahad_bsc_matlab_types.o: $(MLG)(galahad_bsc_matlab_types.o)

$(MLG)(galahad_bsc_matlab_types.o): galahad_bsc_matlab_types.F90
	( cd ../bsc ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     bsc_silent PRECIS=double PWD=$(PWD)/../bsc )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_bsc_matlab_types"
	$(CP) galahad_bsc_matlab_types.F90 $(OBJ)/galahad_bsc_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_bsc_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_bsc_matlab_types.o
	$(RM) $(OBJ)/galahad_bsc_matlab_types.o \
              $(OBJ)/galahad_bsc_matlab_types.F90
	$(MRMARFILE) galahad_nls_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_BSC)
	@printf '[ OK ]\n'

#  lpa

galahad_lpa_matlab_types.o: $(MLG)(galahad_lpa_matlab_types.o)

$(MLG)(galahad_lpa_matlab_types.o): galahad_lpa_matlab_types.F90
	( cd ../lpa ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lpa_silent PRECIS=double PWD=$(PWD)/../lpa )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_lpa_matlab_types"
	$(CP) galahad_lpa_matlab_types.F90 $(OBJ)/galahad_lpa_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_lpa_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_lpa_matlab_types.o
	$(RM) $(OBJ)/galahad_lpa_matlab_types.o \
              $(OBJ)/galahad_lpa_matlab_types.F90
	$(MRMARFILE) galahad_qpc_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_LPA)
	@printf '[ OK ]\n'

#  lpb

galahad_lpb_matlab_types.o: $(MLG)(galahad_lpb_matlab_types.o)

$(MLG)(galahad_lpb_matlab_types.o): galahad_lpb_matlab_types.F90
	( cd ../lpb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lpb_silent PRECIS=double PWD=$(PWD)/../lpb )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_lpb_matlab_types"
	$(CP) galahad_lpb_matlab_types.F90 $(OBJ)/galahad_lpb_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_lpb_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_lpb_matlab_types.o
	$(RM) $(OBJ)/galahad_lpb_matlab_types.o \
              $(OBJ)/galahad_lpb_matlab_types.F90
	$(MRMARFILE) galahad_qpc_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_LPB)
	@printf '[ OK ]\n'

#  cqp

galahad_cqp_matlab_types.o: $(MLG)(galahad_cqp_matlab_types.o)

$(MLG)(galahad_cqp_matlab_types.o): galahad_cqp_matlab_types.F90
	( cd ../cqp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     cqp_silent PRECIS=double PWD=$(PWD)/../cqp )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_cqp_matlab_types"
	$(CP) galahad_cqp_matlab_types.F90 $(OBJ)/galahad_cqp_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_cqp_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_cqp_matlab_types.o
	$(RM) $(OBJ)/galahad_cqp_matlab_types.o \
              $(OBJ)/galahad_cqp_matlab_types.F90
	$(MRMARFILE) galahad_qpc_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_CQP)
	@printf '[ OK ]\n'

#  dps

galahad_dps_matlab_types.o: $(MLG)(galahad_dps_matlab_types.o)

$(MLG)(galahad_dps_matlab_types.o): galahad_dps_matlab_types.F90
	( cd ../dps ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     dps_silent PRECIS=double PWD=$(PWD)/../dps )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_dps_matlab_types"
	$(CP) galahad_dps_matlab_types.F90 $(OBJ)/galahad_dps_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_dps_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_dps_matlab_types.o
	$(RM) $(OBJ)/galahad_dps_matlab_types.o \
              $(OBJ)/galahad_dps_matlab_types.F90
	$(MRMARFILE) galahad_tru_matlab_types.o
	$(MRMARFILE) galahad_arc_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_DPS)
	@printf '[ OK ]\n'

#  dqp

galahad_dqp_matlab_types.o: $(MLG)(galahad_dqp_matlab_types.o)

$(MLG)(galahad_dqp_matlab_types.o): galahad_dqp_matlab_types.F90
	( cd ../dqp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     dqp_silent PRECIS=double PWD=$(PWD)/../dqp )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_dqp_matlab_types"
	$(CP) galahad_dqp_matlab_types.F90 $(OBJ)/galahad_dqp_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_dqp_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_dqp_matlab_types.o
	$(RM) $(OBJ)/galahad_dqp_matlab_types.o \
              $(OBJ)/galahad_dqp_matlab_types.F90
	$(MRMARFILE) galahad_qpc_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_DQP)
	@printf '[ OK ]\n'

#  eqp

galahad_eqp_matlab_types.o: $(MLG)(galahad_eqp_matlab_types.o)

$(MLG)(galahad_eqp_matlab_types.o): galahad_eqp_matlab_types.F90
	( cd ../eqp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     eqp_silent PRECIS=double PWD=$(PWD)/../eqp )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_eqp_matlab_types"
	$(CP) galahad_eqp_matlab_types.F90 $(OBJ)/galahad_eqp_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_eqp_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_eqp_matlab_types.o
	$(RM) $(OBJ)/galahad_eqp_matlab_types.o \
              $(OBJ)/galahad_eqp_matlab_types.F90
	$(MRMARFILE) galahad_qpc_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_EQP)
	@printf '[ OK ]\n'

#  fdc

galahad_fdc_matlab_types.o: $(MLG)(galahad_fdc_matlab_types.o)

$(MLG)(galahad_fdc_matlab_types.o): galahad_fdc_matlab_types.F90
	( cd ../fdc ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     fdc_silent PRECIS=double PWD=$(PWD)/../fdc )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_fdc_matlab_types"
	$(CP) galahad_fdc_matlab_types.F90 $(OBJ)/galahad_fdc_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_fdc_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_fdc_matlab_types.o
	$(RM) $(OBJ)/galahad_fdc_matlab_types.o \
              $(OBJ)/galahad_fdc_matlab_types.F90
	$(MRMARFILE) galahad_lsqp_matlab_types.o
	$(MRMARFILE) galahad_wcp_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_FDC)
	@printf '[ OK ]\n'

#  glrt

galahad_glrt_matlab_types.o: $(MLG)(galahad_glrt_matlab_types.o)

$(MLG)(galahad_glrt_matlab_types.o): galahad_glrt_matlab_types.F90
	( cd ../glrt ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     glrt_silent PRECIS=double PWD=$(PWD)/../glrt )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_glrt_matlab_types"
	$(CP) galahad_glrt_matlab_types.F90 $(OBJ)/galahad_glrt_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_glrt_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_glrt_matlab_types.o
	$(RM) $(OBJ)/galahad_glrt_matlab_types.o \
              $(OBJ)/galahad_glrt_matlab_types.F90
	$(MRMARFILE) galahad_arc_matlab_types.o
	$(MRMARFILE) galahad_nls_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_GLRT)
	@printf '[ OK ]\n'

#  gltr

galahad_gltr_matlab_types.o: $(MLG)(galahad_gltr_matlab_types.o)

$(MLG)(galahad_gltr_matlab_types.o): galahad_gltr_matlab_types.F90
	( cd ../gltr ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     gltr_silent PRECIS=double PWD=$(PWD)/../gltr )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_gltr_matlab_types"
	$(CP) galahad_gltr_matlab_types.F90 $(OBJ)/galahad_gltr_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_gltr_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_gltr_matlab_types.o
	$(RM) $(OBJ)/galahad_gltr_matlab_types.o \
              $(OBJ)/galahad_gltr_matlab_types.F90
	$(MRMARFILE) galahad_eqp_matlab_types.o
	$(MRMARFILE) galahad_qpb_matlab_types.o
	$(MRMARFILE) galahad_trb_matlab_types.o
	$(MRMARFILE) galahad_tru_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_GLTR)
	@printf '[ OK ]\n'

#  hash

galahad_hash_matlab_types.o: $(MLG)(galahad_hash_matlab_types.o)

$(MLG)(galahad_hash_matlab_types.o): galahad_hash_matlab_types.F90
	( cd ../hash ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     hash_silent PRECIS=double PWD=$(PWD)/../hash )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_hash_matlab_types"
	$(CP) galahad_hash_matlab_types.F90 $(OBJ)/galahad_hash_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_hash_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_hash_matlab_types.o
	$(RM) $(OBJ)/galahad_hash_matlab_types.o \
              $(OBJ)/galahad_hash_matlab_types.F90
	$(MRMARFILE) galahad_dgo_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_HASH)
	@printf '[ OK ]\n'

#  ir

galahad_ir_matlab_types.o: $(MLG)(galahad_ir_matlab_types.o)

$(MLG)(galahad_ir_matlab_types.o): galahad_ir_matlab_types.F90
	( cd ../ir ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     ir_silent PRECIS=double PWD=$(PWD)/../ir )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_ir_matlab_types"
	$(CP) galahad_ir_matlab_types.F90 $(OBJ)/galahad_ir_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_ir_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_ir_matlab_types.o
	$(RM) $(OBJ)/galahad_ir_matlab_types.o \
              $(OBJ)/galahad_ir_matlab_types.F90
	$(MRMARFILE) galahad_rqs_matlab_types.o
	$(MRMARFILE) galahad_trs_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_IR)
	@printf '[ OK ]\n'

#  lhs

galahad_lhs_matlab_types.o: $(MLG)(galahad_lhs_matlab_types.o)

$(MLG)(galahad_lhs_matlab_types.o): galahad_lhs_matlab_types.F90
	( cd ../lhs ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lhs_silent PRECIS=double PWD=$(PWD)/../lhs )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_lhs_matlab_types"
	$(CP) galahad_lhs_matlab_types.F90 $(OBJ)/galahad_lhs_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_lhs_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_lhs_matlab_types.o
	$(RM) $(OBJ)/galahad_lhs_matlab_types.o \
              $(OBJ)/galahad_lhs_matlab_types.F90
	$(MRMARFILE) galahad_bgo_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_LHS)
	@printf '[ OK ]\n'

#  lms

galahad_lms_matlab_types.o: $(MLG)(galahad_lms_matlab_types.o)

$(MLG)(galahad_lms_matlab_types.o): galahad_lms_matlab_types.F90
	( cd ../lms ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lms_silent PRECIS=double PWD=$(PWD)/../lms )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_lms_matlab_types"
	$(CP) galahad_lms_matlab_types.F90 $(OBJ)/galahad_lms_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_lms_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_lms_matlab_types.o
	$(RM) $(OBJ)/galahad_lms_matlab_types.o \
              $(OBJ)/galahad_lms_matlab_types.F90
	$(MRMARFILE) galahad_trb_matlab_types.o
	$(MRMARFILE) galahad_tru_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_LMS)
	@printf '[ OK ]\n'

# llst

galahad_llst_matlab_types.o: $(MLG)(galahad_llst_matlab_types.o)

$(MLG)(galahad_llst_matlab_types.o): galahad_llst_matlab_types.F90
	( cd ../llst ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     llst_silent PRECIS=double PWD=$(PWD)/../llst )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_llst_matlab_types"
	$(CP) galahad_llst_matlab_types.F90 $(OBJ)/galahad_llst_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_llst_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_llst_matlab_types.o
	$(RM) $(OBJ)/galahad_llst_matlab_types.o \
              $(OBJ)/galahad_llst_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_LLST)
	@printf '[ OK ]\n'

#  lsqp

galahad_lsqp_matlab_types.o: $(MLG)(galahad_lsqp_matlab_types.o)

$(MLG)(galahad_lsqp_matlab_types.o): galahad_lsqp_matlab_types.F90
	( cd ../lsqp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lsqp_silent PRECIS=double PWD=$(PWD)/../lsqp )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_lsqp_matlab_types"
	$(CP) galahad_lsqp_matlab_types.F90 $(OBJ)/galahad_lsqp_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_lsqp_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_lsqp_matlab_types.o
	$(RM) $(OBJ)/galahad_lsqp_matlab_types.o \
              $(OBJ)/galahad_lsqp_matlab_types.F90
	$(MRMARFILE) galahad_qpb_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_LSQP)
	@printf '[ OK ]\n'

#  lsrt

galahad_lsrt_matlab_types.o: $(MLG)(galahad_lsrt_matlab_types.o)

$(MLG)(galahad_lsrt_matlab_types.o): galahad_lsrt_matlab_types.F90
	( cd ../lsrt ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lsrt_silent PRECIS=double PWD=$(PWD)/../lsrt )
	( cd ../mop ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     mop_silent PRECIS=$(PRECIS) PWD=$(PWD)/../mop )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_lsrt_matlab_types"
	$(CP) galahad_lsrt_matlab_types.F90 $(OBJ)/galahad_lsrt_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_lsrt_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_lsrt_matlab_types.o
	$(RM) $(OBJ)/galahad_lsrt_matlab_types.o \
              $(OBJ)/galahad_lsrt_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_LSRT)
	@printf '[ OK ]\n'

#  lstr

galahad_lstr_matlab_types.o: $(MLG)(galahad_lstr_matlab_types.o)

$(MLG)(galahad_lstr_matlab_types.o): galahad_lstr_matlab_types.F90
	( cd ../lstr ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     lstr_silent PRECIS=double PWD=$(PWD)/../lstr )
	( cd ../mop ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     mop_silent PRECIS=$(PRECIS) PWD=$(PWD)/../mop )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_lstr_matlab_types"
	$(CP) galahad_lstr_matlab_types.F90 $(OBJ)/galahad_lstr_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_lstr_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_lstr_matlab_types.o
	$(RM) $(OBJ)/galahad_lstr_matlab_types.o \
              $(OBJ)/galahad_lstr_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_LSTR)
	@printf '[ OK ]\n'

#  l2rt

galahad_l2rt_matlab_types.o: $(MLG)(galahad_l2rt_matlab_types.o)

$(MLG)(galahad_l2rt_matlab_types.o): galahad_l2rt_matlab_types.F90
	( cd ../l2rt ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     l2rt_silent PRECIS=$(PRECIS) PWD=$(PWD)/../l2rt )
	( cd ../mop ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     mop_silent PRECIS=$(PRECIS) PWD=$(PWD)/../mop )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_l2rt_matlab_types"
	$(CP) galahad_l2rt_matlab_types.F90 $(OBJ)/galahad_l2rt_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_l2rt_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_l2rt_matlab_types.o
	$(RM) $(OBJ)/galahad_l2rt_matlab_types.o \
              $(OBJ)/galahad_l2rt_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_L2RT)
	@printf '[ OK ]\n'

# nls

galahad_nls_matlab_types.o: $(MLG)(galahad_nls_matlab_types.o)

$(MLG)(galahad_nls_matlab_types.o): galahad_nls_matlab_types.F90
	( cd ../nls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     nls_silent PRECIS=double PWD=$(PWD)/../nls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_nls_matlab_types"
	$(CP) galahad_nls_matlab_types.F90 $(OBJ)/galahad_nls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_nls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_nls_matlab_types.o
	$(RM) $(OBJ)/galahad_nls_matlab_types.o \
              $(OBJ)/galahad_nls_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_NLS)
	@printf '[ OK ]\n'

# nodend

galahad_nodend_matlab_types.o: $(MLG)(galahad_nodend_matlab_types.o)

$(MLG)(galahad_nodend_matlab_types.o): galahad_nodend_matlab_types.F90
	( cd ../nodend ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     nodend_silent PRECIS=double PWD=$(PWD)/../nodend )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_nodend_matlab_types"
	$(CP) galahad_nodend_matlab_types.F90 $(OBJ)/galahad_nodend_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_nodend_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_nodend_matlab_types.o
	$(RM) $(OBJ)/galahad_nodend_matlab_types.o \
              $(OBJ)/galahad_nodend_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_NODEND)
	@printf '[ OK ]\n'

# nrek

galahad_nrek_matlab_types.o: $(MLG)(galahad_nrek_matlab_types.o)

$(MLG)(galahad_nrek_matlab_types.o): galahad_nrek_matlab_types.F90
	( cd ../nrek ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     nrek_silent PRECIS=double PWD=$(PWD)/../nrek )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_nrek_matlab_types"
	$(CP) galahad_nrek_matlab_types.F90 $(OBJ)/galahad_nrek_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_nrek_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_nrek_matlab_types.o
	$(RM) $(OBJ)/galahad_nrek_matlab_types.o \
              $(OBJ)/galahad_nrek_matlab_types.F90
	$(MRMARFILE) galahad_arc_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_NREK)
	@printf '[ OK ]\n'

#  presolve

galahad_presolve_matlab_types.o: $(MLG)(galahad_presolve_matlab_types.o)

$(MLG)(galahad_presolve_matlab_types.o): galahad_presolve_matlab_types.F90
	( cd ../presolve ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     presolve_silent PRECIS=double PWD=$(PWD)/../presolve )
	@printf ' %-9s %-15s' "Compiling" "galahad_presolve_matlab_types"
	$(CP) galahad_presolve_matlab_types.F90 \
                $(OBJ)/galahad_presolve_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_presolve_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_presolve_matlab_types.o
	$(RM) $(OBJ)/galahad_presolve_matlab_types.o \
              $(OBJ)/galahad_presolve_matlab_types.F90
	$(MRMARFILE) galahad_qp_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_PRESOLVE)
	@printf '[ OK ]\n'

#  psls

galahad_psls_matlab_types.o: $(MLG)(galahad_psls_matlab_types.o)

$(MLG)(galahad_psls_matlab_types.o): galahad_psls_matlab_types.F90
	( cd ../psls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     psls_silent PRECIS=double PWD=$(PWD)/../psls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_psls_matlab_types"
	$(CP) galahad_psls_matlab_types.F90 $(OBJ)/galahad_psls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_psls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_psls_matlab_types.o
	$(RM) $(OBJ)/galahad_psls_matlab_types.o \
              $(OBJ)/galahad_psls_matlab_types.F90
	$(MRMARFILE) galahad_trb_matlab_types.o
	$(MRMARFILE) galahad_tru_matlab_types.o
	$(MRMARFILE) galahad_arc_matlab_types.o
	$(MRMARFILE) galahad_nls_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_PSLS)
	@printf '[ OK ]\n'

#  qpa

galahad_qpa_matlab_types.o: $(MLG)(galahad_qpa_matlab_types.o)

$(MLG)(galahad_qpa_matlab_types.o): galahad_qpa_matlab_types.F90
	( cd ../qpa ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     qpa_silent PRECIS=double PWD=$(PWD)/../qpa )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_qpa_matlab_types"
	$(CP) galahad_qpa_matlab_types.F90 $(OBJ)/galahad_qpa_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_qpa_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_qpa_matlab_types.o
	$(RM) $(OBJ)/galahad_qpa_matlab_types.o \
              $(OBJ)/galahad_qpa_matlab_types.F90
	$(MRMARFILE) galahad_qpc_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_QPA)
	@printf '[ OK ]\n'

#  qpb

galahad_qpb_matlab_types.o: $(MLG)(galahad_qpb_matlab_types.o)

$(MLG)(galahad_qpb_matlab_types.o): galahad_qpb_matlab_types.F90
	( cd ../qpb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     qpb_silent PRECIS=double PWD=$(PWD)/../qpb )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_qpb_matlab_types"
	$(CP) galahad_qpb_matlab_types.F90 $(OBJ)/galahad_qpb_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_qpb_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_qpb_matlab_types.o
	$(RM) $(OBJ)/galahad_qpb_matlab_types.o \
              $(OBJ)/galahad_qpb_matlab_types.F90
	$(MRMARFILE) galahad_qpc_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_QPB)
	@printf '[ OK ]\n'

#  qpc

galahad_qpc_matlab_types.o: $(MLG)(galahad_qpc_matlab_types.o)

$(MLG)(galahad_qpc_matlab_types.o): galahad_qpc_matlab_types.F90
	( cd ../qpc ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     qpc_silent PRECIS=double PWD=$(PWD)/../qpc )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_qpc_matlab_types"
	$(CP) galahad_qpc_matlab_types.F90 $(OBJ)/galahad_qpc_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_qpc_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_qpc_matlab_types.o
	$(RM) $(OBJ)/galahad_qpc_matlab_types.o \
              $(OBJ)/galahad_qpc_matlab_types.F90
	$(MRMARFILE) galahad_qp_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_QPC)
	@printf '[ OK ]\n'

#  qp

galahad_qp_matlab_types.o: $(MLG)(galahad_qp_matlab_types.o)

$(MLG)(galahad_qp_matlab_types.o): galahad_qp_matlab_types.F90
	( cd ../qp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     qp_silent PRECIS=double PWD=$(PWD)/../qp )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_qp_matlab_types"
	$(CP) galahad_qp_matlab_types.F90 $(OBJ)/galahad_qp_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_qp_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_qp_matlab_types.o
	$(RM) $(OBJ)/galahad_qp_matlab_types.o \
              $(OBJ)/galahad_qp_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_QP)
	@printf '[ OK ]\n'

#  roots

galahad_roots_matlab_types.o: $(MLG)(galahad_roots_matlab_types.o)

$(MLG)(galahad_roots_matlab_types.o): galahad_roots_matlab_types.F90
	( cd ../roots ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     roots_silent PRECIS=double PWD=$(PWD)/../roots )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_roots_matlab_types"
	$(CP) galahad_roots_matlab_types.F90 \
              $(OBJ)/galahad_roots_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_roots_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_roots_matlab_types.o
	$(RM) $(OBJ)/galahad_roots_matlab_types.o \
              $(OBJ)/galahad_roots_matlab_types.F90
	$(MRMARFILE) galahad_nls_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_ROOTS)
	@printf '[ OK ]\n'

#  rqs

galahad_rqs_matlab_types.o: $(MLG)(galahad_rqs_matlab_types.o)

$(MLG)(galahad_rqs_matlab_types.o): galahad_rqs_matlab_types.F90
	( cd ../rqs ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     rqs_silent PRECIS=double PWD=$(PWD)/../rqs )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_rqs_matlab_types"
	$(CP) galahad_rqs_matlab_types.F90 $(OBJ)/galahad_rqs_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_rqs_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_rqs_matlab_types.o
	$(RM) $(OBJ)/galahad_rqs_matlab_types.o \
              $(OBJ)/galahad_rqs_matlab_types.F90
	$(MRMARFILE) galahad_nrek_matlab_types.o
	$(MRMARFILE) galahad_arc_matlab_types.o
	$(MRMARFILE) galahad_nls_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_RQS)
	@printf '[ OK ]\n'

#  sbls

galahad_sbls_matlab_types.o: $(MLG)(galahad_sbls_matlab_types.o)

$(MLG)(galahad_sbls_matlab_types.o): galahad_sbls_matlab_types.F90
	( cd ../sbls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     sbls_silent PRECIS=double PWD=$(PWD)/../sbls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_sbls_matlab_types"
	$(CP) galahad_sbls_matlab_types.F90 $(OBJ)/galahad_sbls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_sbls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_sbls_matlab_types.o
	$(RM) $(OBJ)/galahad_sbls_matlab_types.o \
              $(OBJ)/galahad_sbls_matlab_types.F90
	$(MRMARFILE) galahad_lsqp_matlab_types.o
	$(MRMARFILE) galahad_eqp_matlab_types.o
	$(MRMARFILE) galahad_bqp_matlab_types.o
	$(MRMARFILE) galahad_lpb_matlab_types.o
	$(MRMARFILE) galahad_cqp_matlab_types.o
	$(MRMARFILE) galahad_dqp_matlab_types.o
	$(MRMARFILE) galahad_bqpb_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_SBLS)
	@printf '[ OK ]\n'

#  scale

galahad_scale_matlab_types.o: $(MLG)(galahad_scale_matlab_types.o)

$(MLG)(galahad_scale_matlab_types.o): galahad_scale_matlab_types.F90
	( cd ../scale ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     scale_silent PRECIS=double PWD=$(PWD)/../scale )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_scale_matlab_types"
	$(CP) galahad_scale_matlab_types.F90 \
              $(OBJ)/galahad_scale_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_scale_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_scale_matlab_types.o
	$(RM) $(OBJ)/galahad_scale_matlab_types.o \
              $(OBJ)/galahad_scale_matlab_types.F90
	$(MRMARFILE) galahad_qp_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_SCALE)
	@printf '[ OK ]\n'

#  sha

galahad_sha_matlab_types.o: $(MLG)(galahad_sha_matlab_types.o)

$(MLG)(galahad_sha_matlab_types.o): galahad_sha_matlab_types.F90
	( cd ../sha ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     sha_silent PRECIS=double PWD=$(PWD)/../sha )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_sha_matlab_types"
	$(CP) galahad_sha_matlab_types.F90 $(OBJ)/galahad_sha_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_sha_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_sha_matlab_types.o
	$(RM) $(OBJ)/galahad_sha_matlab_types.o \
              $(OBJ)/galahad_sha_matlab_types.F90
	$(MRMARFILE) galahad_trb_matlab_types.o
	$(MRMARFILE) galahad_tru_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_SHA)
	@printf '[ OK ]\n'

#  sils

galahad_sils_matlab_types.o: $(MLG)(galahad_sils_matlab_types.o)

$(MLG)(galahad_sils_matlab_types.o): galahad_sils_matlab_types.F90
	( cd ../sils ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     sils_silent PRECIS=double PWD=$(PWD)/../sils )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_sils_matlab_types"
	$(CP) galahad_sils_matlab_types.F90 $(OBJ)/galahad_sils_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_sils_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_sils_matlab_types.o
	$(RM) $(OBJ)/galahad_sils_matlab_types.o \
              $(OBJ)/galahad_sils_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_SILS)
	@printf '[ OK ]\n'

# sls

galahad_sls_matlab_types.o: $(MLG)(galahad_sls_matlab_types.o)

$(MLG)(galahad_sls_matlab_types.o): galahad_sls_matlab_types.F90
	( cd ../sls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     sls_silent PRECIS=double PWD=$(PWD)/../sls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_sls_matlab_types"
	$(CP) galahad_sls_matlab_types.F90 $(OBJ)/galahad_sls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_sls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_sls_matlab_types.o
	$(RM) $(OBJ)/galahad_sls_matlab_types.o \
              $(OBJ)/galahad_sls_matlab_types.F90
	$(MRMARFILE) galahad_ir_matlab_types.o
	$(MRMARFILE) galahad_sbls_matlab_types.o
	$(MRMARFILE) galahad_trek_matlab_types.o
	$(MRMARFILE) galahad_nrek_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_SLS)
	@printf '[ OK ]\n'

# snls

galahad_snls_matlab_types.o: $(MLG)(galahad_snls_matlab_types.o)

$(MLG)(galahad_snls_matlab_types.o): galahad_snls_matlab_types.F90
	( cd ../snls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     snls_silent PRECIS=double PWD=$(PWD)/../snls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_snls_matlab_types"
	$(CP) galahad_snls_matlab_types.F90 $(OBJ)/galahad_snls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_snls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_snls_matlab_types.o
	$(RM) $(OBJ)/galahad_snls_matlab_types.o \
              $(OBJ)/galahad_snls_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_SNLS)
	@printf '[ OK ]\n'

#  ssls

galahad_ssls_matlab_types.o: $(MLG)(galahad_ssls_matlab_types.o)

$(MLG)(galahad_ssls_matlab_types.o): galahad_ssls_matlab_types.F90
	( cd ../ssls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     ssls_silent PRECIS=double PWD=$(PWD)/../ssls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_ssls_matlab_types"
	$(CP) galahad_ssls_matlab_types.F90 $(OBJ)/galahad_ssls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_ssls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_ssls_matlab_types.o
	$(RM) $(OBJ)/galahad_ssls_matlab_types.o \
              $(OBJ)/galahad_ssls_matlab_types.F90
	$(MRMARFILE) galahad_expo_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_SSLS)
	@printf '[ OK ]\n'

# trb

galahad_trb_matlab_types.o: $(MLG)(galahad_trb_matlab_types.o)

$(MLG)(galahad_trb_matlab_types.o): galahad_trb_matlab_types.F90
	( cd ../trb ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     trb_silent PRECIS=double PWD=$(PWD)/../trb )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_trb_matlab_types"
	$(CP) galahad_trb_matlab_types.F90 $(OBJ)/galahad_trb_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_trb_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_trb_matlab_types.o
	$(RM) $(OBJ)/galahad_trb_matlab_types.o \
              $(OBJ)/galahad_trb_matlab_types.F90
	$(MRMARFILE) galahad_bgo_matlab_types.o
	$(MRMARFILE) galahad_dgo_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_TRB)
	@printf '[ OK ]\n'

# trek

galahad_trek_matlab_types.o: $(MLG)(galahad_trek_matlab_types.o)

$(MLG)(galahad_trek_matlab_types.o): galahad_trek_matlab_types.F90
	( cd ../trek ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     trek_silent PRECIS=double PWD=$(PWD)/../trek )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_trek_matlab_types"
	$(CP) galahad_trek_matlab_types.F90 $(OBJ)/galahad_trek_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_trek_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_trek_matlab_types.o
	$(RM) $(OBJ)/galahad_trek_matlab_types.o \
              $(OBJ)/galahad_trek_matlab_types.F90
	$(MRMARFILE) galahad_trb_matlab_types.o
	$(MRMARFILE) galahad_tru_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_TREK)
	@printf '[ OK ]\n'

# testbed

galahad_testbed_matlab_types.o: $(MLG)(galahad_testbed_matlab_types.o)

$(MLG)(galahad_testbed_matlab_types.o): galahad_testbed_matlab_types.F90
#	( cd ../testbed ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
#                     testbed_silent PRECIS=double PWD=$(PWD)/../testbed )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_testbed_matlab_types"
	$(CP) galahad_testbed_matlab_types.F90 \
           $(OBJ)/galahad_testbed_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_testbed_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_testbed_matlab_types.o
	$(RM) $(OBJ)/galahad_testbed_matlab_types.o \
              $(OBJ)/galahad_testbed_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_TESTBED)
	@printf '[ OK ]\n'

# trs

galahad_trs_matlab_types.o: $(MLG)(galahad_trs_matlab_types.o)

$(MLG)(galahad_trs_matlab_types.o): galahad_trs_matlab_types.F90
	( cd ../trs ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     trs_silent PRECIS=double PWD=$(PWD)/../trs )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_trs_matlab_types"
	$(CP) galahad_trs_matlab_types.F90 $(OBJ)/galahad_trs_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_trs_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_trs_matlab_types.o
	$(RM) $(OBJ)/galahad_trs_matlab_types.o \
              $(OBJ)/galahad_trs_matlab_types.F90
	$(MRMARFILE) galahad_trek_matlab_types.o
	$(MRMARFILE) galahad_trb_matlab_types.o
	$(MRMARFILE) galahad_tru_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_TRS)
	@printf '[ OK ]\n'

# tru

galahad_tru_matlab_types.o: $(MLG)(galahad_tru_matlab_types.o)

$(MLG)(galahad_tru_matlab_types.o): galahad_tru_matlab_types.F90
	( cd ../tru ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     tru_silent PRECIS=double PWD=$(PWD)/../tru )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_tru_matlab_types"
	$(CP) galahad_tru_matlab_types.F90 $(OBJ)/galahad_tru_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_tru_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_tru_matlab_types.o
	$(RM) $(OBJ)/galahad_tru_matlab_types.o \
              $(OBJ)/galahad_tru_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_TRU)
	@printf '[ OK ]\n'

# ugo

galahad_ugo_matlab_types.o: $(MLG)(galahad_ugo_matlab_types.o)

$(MLG)(galahad_ugo_matlab_types.o): galahad_ugo_matlab_types.F90
	( cd ../ugo ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     ugo_silent PRECIS=double PWD=$(PWD)/../ugo )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_ugo_matlab_types"
	$(CP) galahad_ugo_matlab_types.F90 $(OBJ)/galahad_ugo_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_ugo_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_ugo_matlab_types.o
	$(RM) $(OBJ)/galahad_ugo_matlab_types.o \
              $(OBJ)/galahad_ugo_matlab_types.F90
	$(MRMARFILE) galahad_bgo_matlab_types.o
	$(MRMARFILE) galahad_dgo_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_UGO)
	@printf '[ OK ]\n'

# uls

galahad_uls_matlab_types.o: $(MLG)(galahad_uls_matlab_types.o)

$(MLG)(galahad_uls_matlab_types.o): galahad_uls_matlab_types.F90
	( cd ../uls ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     uls_silent PRECIS=double PWD=$(PWD)/../uls )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_uls_matlab_types"
	$(CP) galahad_uls_matlab_types.F90 $(OBJ)/galahad_uls_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_uls_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_uls_matlab_types.o
	$(RM) $(OBJ)/galahad_uls_matlab_types.o \
              $(OBJ)/galahad_uls_matlab_types.F90
	$(MRMARFILE) galahad_sbls_matlab_types.o
	$(MVMODS)
	$(RM) $(USES_ULS)
	@printf '[ OK ]\n'

# wcp

galahad_wcp_matlab_types.o: $(MLG)(galahad_wcp_matlab_types.o)

$(MLG)(galahad_wcp_matlab_types.o): galahad_wcp_matlab_types.F90
	( cd ../wcp ; $(MAKE) -f $(GALAHAD)/makefiles/$(VERSION) \
                     wcp_silent PRECIS=double PWD=$(PWD)/../wcp )
	@printf ' %-9s %-15s\t' "Compiling" "galahad_wcp_matlab_types"
	$(CP) galahad_wcp_matlab_types.F90 $(OBJ)/galahad_wcp_matlab_types.F90
	cd $(OBJ) ; $(MEX) $(MFLAGS) -c galahad_wcp_matlab_types.F90
	cd $(OBJ) ; $(MARR) galahad_wcp_matlab_types.o
	$(RM) $(OBJ)/galahad_wcp_matlab_types.o \
              $(OBJ)/galahad_wcp_matlab_types.F90
	$(MVMODS)
	$(RM) $(USES_WCP)
	@printf '[ OK ]\n'

#  book keeping

clean:
	@printf ' %-9s\t\t' "Cleaning generated mex files"
	$(RM) $(MLG) ./*.mexglx $(MEXOUTDIR)/* $(OBJ)/libgalahad_matlab.a \
          $(MOD)/*matlab*
	@printf '[ OK ]\n'

cleanall:
	@printf ' %-14s\t\t' "Removing all $(PRECIS) precision object and module files"
	$(RM) -r $(OBJ)/* $(MOD)/* ./*.mexglx  $(MEXOUTDIR)/*
	@printf '[ OK ]\n'
