#GNU Makefile to build r8slatec Library libr8slatec.a 
#        and test driver r8slates
#
#07/01/99 C. Ludescher
#
ifneq ($(MAKELEVEL),0)
# if OBJ was defined for main Makefile one level down
ifeq ("${OBJ}",".")
	override OBJ=..
endif
endif

# define system dependent flags, etc.
-include ../share/Make.local
include ../share/Make.flags

ifdef DEBUG
	FFLAGS   = $(DFFLAGS)
endif

#ifndef NAGLIB
#	NAGLIB = -lgeneric_dummy
#endif 

OBJDIR=$(OBJ)/obj/r8slatec

ARC=$(OBJ)/lib/libr8slatec.a

TSTO1 = r8slates.o dfnck.o
TSTO2 = dpolft_test.o cheby.o dcmpar.o pass.o e02adf_dummy.o
TSTO = $(TSTO1) $(TSTO2)
TST1 = $(foreach file,$(TSTO1),$(OBJDIR)/$(file))
TST2 = $(foreach file,$(TSTO2),$(OBJDIR)/$(file))
TESTS = $(OBJ)/test/r8slates $(OBJ)/test/dpolft_test

F =  $(subst .f,.o, $(wildcard *.f)) $(subst .F,.o, $(wildcard *.F))
FMEM := $(filter-out dpolft_test.o, $(filter-out dfnck.o, $(filter-out r8slates.o,$(F))))
FMEM := $(filter-out cheby.o, $(filter-out dcmpar.o, $(filter-out pass.o, $(FMEM))))
C = $(subst .c,.o,$(wildcard *.c))
ALLM= $(C) $(FMEM)
MEM = $(foreach file,$(ALLM),$(ARC)($(file))) 


LIBS1 =  -lr8slatec $(LLOC) -lportlib
LIBS2 =  -lr8slatec $(LLOC) -ltrgraf -lureadsub -lsg -ljc -lvaxonly -lcomput -lelvislib -lportlib $(LUSRLIB) $(NETCDF) $(EDITLIBS) $(XLIBS) 

srcdir = $(shell pwd)
DATA    = $(shell $(LS) *.ind *output *.ps )

.PHONY: clean realclean

libs:  FORCE $(ARC)

$(OLDLIB): timestamp.inf
	@echo "--- DETECTED r8slatec.a source update"
	@echo "--- Re-Making $(ARC)"
	@$(MAKE) libs

FORCE:
	@test -d $(OBJDIR) || mkdir -p $(OBJDIR)
	@test -d $(OBJ)/lib || mkdir -p $(OBJ)/lib

# compile .f
$(OBJDIR)/%.o: %.f
	$(FC) $(FFLAGS) $(OUT) $@ $<

$(OBJDIR)/%.o: %.F
	$(F_proc)

$(ARC)(%.o): %.F
	$(F_proc)
	$(make_ar)

$(ARC)(%.o): %.f
	$(FC) $(FFLAGS) $(OUT) $(OBJDIR)/$*.o $<
	$(make_ar)

# compile c
$(ARC)(%.o): %.c
	$(c_proc)
	$(make_ar)

$(ARC): $(MEM)
	@$(RANLIB) $@ > /dev/null


all:  libs exec
	@echo done  

exec:
ifneq ("$(wildcard dfnck.*)","")
	$(MAKE) chkdirs
	$(MAKE) $(TESTS)
else
	@echo 
endif

$(OBJ)/test/r8slates: $(TST1) 
	$(FC) $(LDFLAGS) -o $@ $(TST1) -L$(OBJ)/lib $(LIBS1) $(XFLIB)

$(OBJ)/test/dpolft_test: $(TST2) 
	$(FC) $(LDFLAGS) -o $@ $(TST2) -L$(OBJ)/lib $(LIBS2) $(XFLIB)

chkdirs:
	@test -d $(OBJDIR) || mkdir -p $(OBJDIR)
	@test -d $(OBJ)/test || mkdir -p $(OBJ)/test	
	@for i in $(DATA); do \
	(cd $(OBJ)/test; $(TSTLNK) $$i || ln -s $(srcdir)/$$i $$i;) done 
#
#---------------------------------------------------

install:
	@test -d $(LIBDIR) || mkdir -p $(LIBDIR)
	umask 133; cp $(OBJ)/lib/libr8slatec.a $(LIBDIR)/
	@if test -f slatec_r8.table; then \
	  test -d $(ETCDIR)/ftoken || mkdir -p $(ETCDIR)/ftoken; \
	  umask 133; cp slatec_r8.table $(ETCDIR)/ftoken/; fi
	@if test -f r8slatec.3; then \
	  test -d $(MANDIR)/man3 || mkdir -p $(MANDIR)/man3; \
	  umask 133; cp r8slatec.3 $(MANDIR)/man3/; fi

clean: 
	@rm -f $(OBJDIR)/*.o

realclean: clean
	@rm -f $(OBJ)/lib/*r8slatec.a
	@rm -f $(OBJ)/test/*

uninstall:
	rm -f $(ETCDIR)/ftoken/slatec_r8.table
	rm -f $(LIBDIR)/libr8slatec.a
	rm -f $(MANDIR)/man3/r8slatec.3



