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

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

#  include standard GALAHAD makefile defaults before package-specifics

include $(GALAHAD)/src/makedefs/defaults

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

#  package name

package = string
PACKAGE = STRING

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

DEPENDENCIES =

#  other packages that depend on package

DEPENDS =

#  auxiliary 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

#  non-standard compilation agenda for package

$(PACKAGE)OBJECTSS = $(DEPENDENCIES) $(LGS)($(package).o)
$(PACKAGE)OBJECTSD = $(DEPENDENCIES) $(LGD)($(package).o)
$(PACKAGE)OBJECTSQ = $(DEPENDENCIES) $(LGQ)($(package).o)
$(PACKAGE)OBJECTSS64 = $(DEPENDENCIES) $(LGS64)($(package).o)
$(PACKAGE)OBJECTSD64 = $(DEPENDENCIES) $(LGD64)($(package).o)
$(PACKAGE)OBJECTSQ64 = $(DEPENDENCIES) $(LGQ64)($(package).o)

#  process package

$(package): $(package)_$(PRECIS)
	@printf ' %-21s\n' "GALAHAD: $(PACKAGE) ($(PRECIS) $(SUCC)"
$(package)_single: $($(PACKAGE)OBJECTSS)
	$(RANLIB) $(LGS)
$(package)_double: $($(PACKAGE)OBJECTSD)
	$(RANLIB) $(LGD)
$(package)_quadruple: $($(PACKAGE)OBJECTSQ)
	$(RANLIB) $(LGQ)
$(package)_single_64: $($(PACKAGE)OBJECTSS64)
	$(RANLIB) $(LGS)
$(package)_double_64: $($(PACKAGE)OBJECTSD64)
	$(RANLIB) $(LGD)
$(package)_quadruple_64: $($(PACKAGE)OBJECTSQ64)
	$(RANLIB) $(LGQ)

#  process package silently

$(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)

#  non-standard package compilation

$(package).o: $(LG)($(package).o)

$(LG)($(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 $(FFLAGS) $(package).F90 \
                || ( printf ' %-26s' "=> Disabling optimization " ; \
                   $(FORTRAN) -o $(package).o $(FFLAGSN) $(package).F90 )
	cd $(OBJ); $(ARR) $(package).o; $(RM) $(package).F90 $(package).o
	$(MVMODS)
	@printf '[ OK ]\n'

#  include required package intermediaries

include $(GALAHAD)/src/makedefs/intermediaries
