#  Main body of the installation makefile for the CUTEST packages

#  N. Gould, D. Orban and Ph. L. Toint.
#  This version: 16 May 2016

SHELL = /bin/$(BINSHELL)

#  main compilations and runs

#  all tools and interfaces

all: all_$(PRECIS)
all_single: tools_single
	( cd algencan  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   algencan PRECIS=single PWD=$(PWD)/algencan )
	( cd bobyqa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   bobyqa PRECIS=single PWD=$(PWD)/bobyqa )
	( cd cg_descent  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   cg_descent  PRECIS=single PWD=$(PWD)/cg_descent )
	( cd cgplus  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   cgplus  PRECIS=single PWD=$(PWD)/cgplus )
	( cd cobyla  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   cobyla  PRECIS=single PWD=$(PWD)/cobyla )
	( cd derchk  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   derchk  PRECIS=single PWD=$(PWD)/derchk )
	( cd dfo  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   dfo  PRECIS=single PWD=$(PWD)/dfo )
	( cd directsearch ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   directsearch  PRECIS=single PWD=$(PWD)/directsearch )
	( cd filtersd  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   filtersd  PRECIS=single PWD=$(PWD)/filtersd )
	( cd filtersqp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   filtersqp  PRECIS=single PWD=$(PWD)/filtersqp )
	( cd gen77  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   gen77  PRECIS=single PWD=$(PWD)/gen77 )
	( cd gen90  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   gen90  PRECIS=single PWD=$(PWD)/gen90 )
	( cd genc  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   genc  PRECIS=single PWD=$(PWD)/genc )
	( cd hrb  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   hrb  PRECIS=single PWD=$(PWD)/hrb )
	( cd ipopt  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   ipopt  PRECIS=single PWD=$(PWD)/ipopt )
	( cd knitro  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   knitro  PRECIS=single PWD=$(PWD)/knitro )
	( cd la04  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   la04  PRECIS=single PWD=$(PWD)/la04 )
	( cd lbfgs  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   lbfgs  PRECIS=single PWD=$(PWD)/lbfgs )
	( cd lbfgsb  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   lbfgsb  PRECIS=single PWD=$(PWD)/lbfgsb )
	( cd lincoa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   lincoa  PRECIS=single PWD=$(PWD)/lincoa )
	( cd loqo  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   loqo  PRECIS=single PWD=$(PWD)/loqo )
	( cd minos  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   minos  PRECIS=single PWD=$(PWD)/minos )
	( cd newuoa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   newuoa  PRECIS=single PWD=$(PWD)/newuoa )
	( cd nitsol  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   nitsol  PRECIS=single PWD=$(PWD)/nitsol )
	( cd nlpqlp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   nlpqlp  PRECIS=single PWD=$(PWD)/nlpqlp )
	( cd npsol  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   npsol  PRECIS=single PWD=$(PWD)/npsol )
	( cd osqp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   osqp  PRECIS=single PWD=$(PWD)/osqp )
	( cd pds  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   pds  PRECIS=single PWD=$(PWD)/pds )
	( cd pennlp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   pennlp  PRECIS=single PWD=$(PWD)/pennlp )
	( cd praxis  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   praxis  PRECIS=single PWD=$(PWD)/praxis )
	( cd ql  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   ql  PRECIS=single PWD=$(PWD)/ql )
#	( cd qplib ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
#                   qplib  PRECIS=single PWD=$(PWD)/qplib )
	( cd snopt  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   snopt  PRECIS=single PWD=$(PWD)/snopt )
	( cd spg  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   spg  PRECIS=single PWD=$(PWD)/spg )
	( cd stats  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   stats  PRECIS=single PWD=$(PWD)/stats )
	( cd stenmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   stenmin  PRECIS=single PWD=$(PWD)/stenmin )
	( cd tenmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   tenmin  PRECIS=single PWD=$(PWD)/tenmin )
	( cd test  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   test  PRECIS=single PWD=$(PWD)/test )
	( cd tron  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   tron  PRECIS=single PWD=$(PWD)/tron )
	( cd uncmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   uncmin  PRECIS=single PWD=$(PWD)/uncmin )
	( cd vf13  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   vf13  PRECIS=single PWD=$(PWD)/vf13 )
	( cd worhp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   worhp  PRECIS=single PWD=$(PWD)/worhp )
all_double: tools_double
	( cd algencan  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   algencan PRECIS=double PWD=$(PWD)/algencan )
	( cd bobyqa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   bobyqa PRECIS=double PWD=$(PWD)/bobyqa )
	( cd cg_descent  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   cg_descent  PRECIS=double PWD=$(PWD)/cg_descent )
	( cd cgplus  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   cgplus  PRECIS=double PWD=$(PWD)/cgplus )
	( cd cobyla  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   cobyla  PRECIS=double PWD=$(PWD)/cobyla )
	( cd derchk  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   derchk  PRECIS=double PWD=$(PWD)/derchk )
	( cd dfo  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   dfo  PRECIS=double PWD=$(PWD)/dfo )
	( cd directsearch ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   directsearch  PRECIS=double PWD=$(PWD)/directsearch )
	( cd filtersd  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   filtersd  PRECIS=double PWD=$(PWD)/filtersd )
	( cd filtersqp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   filtersqp  PRECIS=double PWD=$(PWD)/filtersqp )
	( cd gen77  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   gen77  PRECIS=double PWD=$(PWD)/gen77 )
	( cd gen90  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   gen90  PRECIS=double PWD=$(PWD)/gen90 )
	( cd genc  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   genc  PRECIS=double PWD=$(PWD)/genc )
	( cd hrb  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   hrb  PRECIS=double PWD=$(PWD)/hrb )
	( cd ipopt  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   ipopt  PRECIS=double PWD=$(PWD)/ipopt )
	( cd knitro  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   knitro  PRECIS=double PWD=$(PWD)/knitro )
	( cd la04  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   la04  PRECIS=double PWD=$(PWD)/la04 )
	( cd lbfgs  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   lbfgs  PRECIS=double PWD=$(PWD)/lbfgs )
	( cd lbfgsb  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   lbfgsb  PRECIS=double PWD=$(PWD)/lbfgsb )
	( cd lincoa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   lincoa  PRECIS=double PWD=$(PWD)/lincoa )
	( cd loqo  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   loqo  PRECIS=double PWD=$(PWD)/loqo )
	( cd minos  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   minos  PRECIS=double PWD=$(PWD)/minos )
	( cd newuoa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   newuoa  PRECIS=double PWD=$(PWD)/newuoa )
	( cd nitsol  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   nitsol  PRECIS=double PWD=$(PWD)/nitsol )
	( cd nlpqlp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   nlpqlp  PRECIS=double PWD=$(PWD)/nlpqlp )
	( cd npsol  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   npsol  PRECIS=double PWD=$(PWD)/npsol )
	( cd osqp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   osqp  PRECIS=double PWD=$(PWD)/osqp )
	( cd pds  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   pds  PRECIS=double PWD=$(PWD)/pds )
	( cd pennlp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   pennlp  PRECIS=double PWD=$(PWD)/pennlp )
	( cd praxis  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   praxis  PRECIS=double PWD=$(PWD)/praxis )
	( cd ql  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   ql  PRECIS=double PWD=$(PWD)/ql )
	( cd qplib ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   qplib  PRECIS=double PWD=$(PWD)/qplib )
	( cd snopt  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   snopt  PRECIS=double PWD=$(PWD)/snopt )
	( cd spg  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   spg  PRECIS=double PWD=$(PWD)/spg )
	( cd stats  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   stats  PRECIS=double PWD=$(PWD)/stats )
	( cd stenmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   stenmin  PRECIS=double PWD=$(PWD)/stenmin )
	( cd tenmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   tenmin  PRECIS=double PWD=$(PWD)/tenmin )
	( cd test  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   test  PRECIS=double PWD=$(PWD)/test )
	( cd tron  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   tron  PRECIS=double PWD=$(PWD)/tron )
	( cd uncmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   uncmin  PRECIS=double PWD=$(PWD)/uncmin )
	( cd vf13  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   vf13  PRECIS=double PWD=$(PWD)/vf13 )
	( cd worhp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   worhp  PRECIS=double PWD=$(PWD)/worhp )

#  all tools (including fortran 2008) and interfaces

all_2008: all_2008_$(PRECIS)
all_2008_single: all_single
	( cd ral_nlls  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   ral_nlls  PRECIS=single PWD=$(PWD)/ral_nlls )
	( cd sqic  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   sqic  PRECIS=single PWD=$(PWD)/sqic )
all_2008_double: all_double
	( cd ral_nlls  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   ral_nlls  PRECIS=double PWD=$(PWD)/ral_nlls )
	( cd sqic  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   sqic  PRECIS=double PWD=$(PWD)/sqic )

#  all tools (including gsl) and interfaces

all_with_gsl: all_with_tao_$(PRECIS)
all_with_gsl_single: all_single
	( cd gsl  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   gsl  PRECIS=single PWD=$(PWD)/gsl )
all_with_gsl_double: all_double
	( cd gsl  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   gsl  PRECIS=double PWD=$(PWD)/gsl )

#  all tools (including tao) and interfaces

all_with_tao: all_with_tao_$(PRECIS)
all_with_tao_single: all_single
	( cd tao  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   tao  PRECIS=single PWD=$(PWD)/tao )
all_with_tao_double: all_double
	( cd tao  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                   tao  PRECIS=double PWD=$(PWD)/tao )

# all tools

tools: tools_$(PRECIS)
tools_single:
	( cd tools ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     cutest PRECIS=single PWD=$(PWD)/tools )
tools_double:
	( cd tools ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     cutest PRECIS=double PWD=$(PWD)/tools )

#  all tools and their matlab interface

all_matlab: all_matlab_$(PRECIS)
all_matlab_single: tools_single
	( cd matlab ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                       all PRECIS=single PWD=$(PWD)/matlab )
all_matlab_double: tools_double
	( cd matlab ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                       all PRECIS=double PWD=$(PWD)/matlab )

# all interface tests

test: test_$(PRECIS)
test_single:
	( cd test  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     test_cutest PRECIS=single PWD=$(PWD)/test )
test_double:
	( cd test  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     test_cutest PRECIS=double PWD=$(PWD)/test )

# all unconstrained tools and interface tests

all_unconstrained: all_unconstrained_$(PRECIS)
all_unconstrained_single:
	( cd tools ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     cutest_unconstrained PRECIS=single PWD=$(PWD)/tools )
	( cd test  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     test_cutest_unconstrained PRECIS=single PWD=$(PWD)/test )
all_unconstrained_double:
	( cd tools ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     cutest_unconstrained PRECIS=double PWD=$(PWD)/tools )
	( cd test  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     test_cutest_unconstrained PRECIS=double PWD=$(PWD)/test )

# all constrained tools and interface tests

all_constrained: all_constrained_$(PRECIS)
all_constrained_single:
	( cd tools ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     cutest_constrained PRECIS=single PWD=$(PWD)/tools )
	( cd test  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     test_cutest_constrained PRECIS=single PWD=$(PWD)/test )
all_constrained_double:
	( cd tools ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     cutest_constrained PRECIS=double PWD=$(PWD)/tools )
	( cd test  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
                     test_cutest_constrained PRECIS=double PWD=$(PWD)/test )

# all tests

run_test: run_test_$(PRECIS)
run_test_single: tools_single test_single
	( cd algencan  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/algencan )
	( cd bobyqa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/bobyqa )
	( cd cg_descent  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/cg_descent )
	( cd cgplus  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/cgplus )
	( cd cobyla  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/cobyla )
#	( cd derchk  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
#             run_test PRECIS=single PWD=$(PWD)/derchk )
	( cd dfo  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/dfo )
	( cd filtersd  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=single PWD=$(PWD)/filtersd )
	( cd filtersqp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/filtersqp )
	( cd gen77  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/gen77 )
	( cd gen90  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/gen90 )
	( cd genc  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/genc )
#	( cd gsl  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
#             run_test PRECIS=single PWD=$(PWD)/gsl )
	( cd hrb  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/hrb )
	( cd ipopt  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/ipopt )
	( cd knitro  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/knitro )
	( cd la04  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/la04 )
	( cd lbfgs  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/lbfgs )
	( cd lbfgsb  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/lbfgsb )
	( cd lincoa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=single PWD=$(PWD)/lincoa )
	( cd minos  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/minos )
	( cd newuoa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=single PWD=$(PWD)/newuoa )
	( cd nitsol  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/nitsol )
	( cd nlpqlp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=single PWD=$(PWD)/nlpqlp )
	( cd npsol  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/npsol )
	( cd osqp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/osqp )
	( cd pds  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/pds )
	( cd pennlp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/pennlp )
	( cd praxis  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/praxis )
	( cd ql  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=single PWD=$(PWD)/ql )
	( cd snopt  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/snopt )
	( cd spg  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=single PWD=$(PWD)/spg )
	( cd stats  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/stats )
	( cd stenmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/stenmin )
	( cd tenmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/tenmin )
	( cd tron  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/tron )
	( cd uncmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/uncmin )
	( cd vf13  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=single PWD=$(PWD)/vf13 )
#	( cd worhp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
#             run_test PRECIS=single PWD=$(PWD)/worhp )

run_test_double: tools_double test_double
	( cd algencan  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/algencan )
	( cd bobyqa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/bobyqa )
	( cd cg_descent  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/cg_descent )
	( cd cgplus  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/cgplus )
	( cd cobyla  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/cobyla )
#	( cd derchk  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
#             run_test PRECIS=double PWD=$(PWD)/derchk )
	( cd dfo  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/dfo )
	( cd filtersd  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=double PWD=$(PWD)/filtersd )
	( cd filtersqp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/filtersqp )
	( cd gen77  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/gen77 )
	( cd gen90  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/gen90 )
	( cd genc  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/genc )
#	( cd gsl  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
#             run_test PRECIS=double PWD=$(PWD)/gsl )
	( cd hrb  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/hrb )
	( cd ipopt  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/ipopt )
	( cd knitro  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/knitro )
	( cd la04  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/la04 )
	( cd lbfgs  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/lbfgs )
	( cd lbfgsb  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/lbfgsb )
	( cd lincoa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=double PWD=$(PWD)/lincoa )
	( cd minos  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/minos )
	( cd newuoa  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=double PWD=$(PWD)/newuoa )
	( cd nitsol  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/nitsol )
	( cd nlpqlp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=double PWD=$(PWD)/nlpqlp )
	( cd npsol  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/npsol )
	( cd osqp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/osqp )
	( cd pds  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/pds )
	( cd pennlp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/pennlp )
	( cd praxis  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/praxis )
	( cd ql  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=double PWD=$(PWD)/ql )
	( cd snopt  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/snopt )
	( cd spg  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test  PRECIS=double PWD=$(PWD)/spg )
	( cd stats  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/stats )
	( cd stenmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/stenmin )
	( cd tenmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/tenmin )
	( cd tron  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/tron )
	( cd uncmin  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/uncmin )
	( cd vf13  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
             run_test PRECIS=double PWD=$(PWD)/vf13 )
#	( cd worhp  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
#             run_test PRECIS=double PWD=$(PWD)/worhp )

#  all tools (including fortran 2008) and interfaces

run_test_2008: run_test_2008_$(PRECIS)
run_test_2008_single: run_test_single
#	( cd ral_nlls  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
#             run_test  PRECIS=single PWD=$(PWD)/ral_nlls )
#	( cd sqic  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
#             run_test  PRECIS=single PWD=$(PWD)/sqic )
run_test_2008_double: run_test_double
	( cd ral_nlls  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
              run_test  PRECIS=double PWD=$(PWD)/ral_nlls )
	( cd sqic  ; $(MAKE) -f $(CUTEST)/makefiles/$(VERSION) \
              run_test  PRECIS=double PWD=$(PWD)/sqic )

#  book keeping

clean:
	@printf ' %-9s\t\t' "Cleaning"
	$(RM) $(OBJ)/*
	@printf '[ OK ]\n'

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