#  Main body of the installation makefile for the GALAHAD CUTEST_FUNCTIONS
#  package

#  Nick Gould, for GALAHAD productions
#  This version: 2024-11-13

#  include standard GALAHAD makefile defaults before package-specifics

include $(GALAHAD)/src/makedefs/defaults

#  ===========================================================================
#  ====================  package-dependent parts  ============================
#  ===========================================================================

#  package name

package = cutest_functions
PACKAGE = CUTEST_FUNCTIONS

#  auxililiary packages that current package depends on (prepend with make_)

DEPENDENCIES = make_dummy make_zd11 make_smt make_space \
               make_norms make_tools make_userdata make_nlpt

#  other packages that depend on package

DEPENDS = usefisqp usefastr usefunnel usetrimsqp usetru usearc usebarc usenls

#  auxililiary packages that are needed for tests (prepend with make_)

TESTDEPS =

#  tests to be performed (preprend with test_)

TESTS =

#  ===========================================================================
#  =================  end of package-dependent parts  ========================
#  ===========================================================================

#  include standard GALAHAD makefile definitions

include $(GALAHAD)/src/makedefs/definitions

#  compilation agenda for package

$(PACKAGE)OBJECTSS = $(DEPENDENCIES) $(CULGS)($(package).o)
$(PACKAGE)OBJECTSD = $(DEPENDENCIES) $(CULGD)($(package).o)
$(PACKAGE)OBJECTSQ = $(DEPENDENCIES) $(CULGQ)($(package).o)
$(PACKAGE)OBJECTSS64 = $(DEPENDENCIES) $(CULGS64)($(package).o)
$(PACKAGE)OBJECTSD64 = $(DEPENDENCIES) $(CULGD64)($(package).o)
$(PACKAGE)OBJECTSQ64 = $(DEPENDENCIES) $(CULQD64)($(package).o)

#  =========================================================================
#  ========================== makefile stanza ==============================
#  =========================================================================

#  silent package

$(package)_silent: $(package)_silent_$(PRECIS)
$(package)_silent_single: $($(PACKAGE)OBJECTSS)
$(package)_silent_double: $($(PACKAGE)OBJECTSD)
$(package)_silent_quadruple: $($(PACKAGE)OBJECTSQ)
$(package)_silent_single_64: $($(PACKAGE)OBJECTSS64)
$(package)_silent_double_64: $($(PACKAGE)OBJECTSD64)
$(package)_silent_quadruple_64: $($(PACKAGE)OBJECTSQ64)

#  package

$(package): $(package)_$(PRECIS)
	@printf ' %-21s\n' "GALAHAD: $(PACKAGE) ($(PRECIS) $(SUCC)"
$(package)_single: $($(PACKAGE)OBJECTSS)
	$(RANLIB) $(CULGS)
$(package)_double: $($(PACKAGE)OBJECTSD)
	$(RANLIB) $(CULGD)
$(package)_quadruple: $($(PACKAGE)OBJECTSQ)
	$(RANLIB) $(CULGQ)
$(package)_single_64: $($(PACKAGE)OBJECTSS64)
	$(RANLIB) $(CULGS64)
$(package)_double_64: $($(PACKAGE)OBJECTSD64)
	$(RANLIB) $(CULGD64)
$(package)_quadruple_64: $($(PACKAGE)OBJECTS!64)
	$(RANLIB) $(CULGQ64)

#  non-standard package compilation instructions

$(package).o: $(CULG)($(package).o)

$(CULG)($(package).o): ../$(package)/$(package).F90
	@printf ' %-9s %-15s\t\t' "Compiling" "$(package)   "
	$(CP) ../$(package)/$(package).F90 $(OBJ)/$(package).F90
	cd $(OBJ); $(FORTRAN) -o $(package).o $(FFLAGSS) \
                -I $(CUTEST)/include $(package).F90 \
              || ( printf ' %-26s' "=> Disabling optimization " ; \
              $(FORTRAN) -o $(package).o $(FFLAGSN) \
                -I $(CUTEST)/include $(package).F90 )
	cd $(OBJ); $(CUARR) $(package).o ; $(RM) $(package).F90 $(package).o
	$(RMARFILES) $(DEPENDS)
	@printf '[ OK ]\n'

#  book keeping

clean:
	@printf ' %-9s\t\t' "Removing $(package) files"
	$(PRRMARFILE) $(package).o
	@printf '[ OK ]\n'

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

#  include required package intermediaries

include $(GALAHAD)/src/makedefs/intermediaries
