
FDEMO		= fdemo
FSUBS		= fsubs
CSUBS		= csubs
CDEMO		= cdemo
MODULE_NAME	= fsubs
OTHER_CFLAGS	= $(F2C_INCLUDE)
OTHER_ALL	= $(CDEMO) $(FDEMO)
OTHER_CLEAN	= $(TEST_OUTPUT) $(GLUE).c $(TEST_BASELINE) \
  		$(MODULE_NAME).f.h fdemo cdemo *.out

sanity:
	@if [ $(HAVE_F2C) -eq 0 ] ; then \
	   echo "The f2c translator is not installed on your system." ; \
	else \
	   $(MAKE) all ; \
	fi

include ../Makefile.inc

MODULE_DEPS = $(GLUE).o $(FSUBS).o  $(CSUBS).o

EXAMPLE_SCRIPT = example.sl

demo:	$(MODULE)
	@echo
	@echo Now running the example script ...
	@echo
	$(SLSH) -n $(EXAMPLE_SCRIPT)

$(MODULE): $(MODULE_DEPS)
	@echo
	$(ELF_LINK_CMD) -o $@ $(MODULE_DEPS) $(SLANGLIB) $(F2C_LIB)
	@echo

$(GLUE).o: $(GLUE).c
	@echo
	$(ELF_COMPILE) $(GLUE).c

$(GLUE).c: slirprc $(FSUBS).f $(CSUBS).h
	@echo
	@echo Generating mixed FORTRAN/C wrappers ...
	@echo
	$(SLIRP) $(FSUBS).f $(CSUBS).h

$(FSUBS).o: $(FSUBS).f
	@echo
	$(FORTRAN_COMPILE) $(FSUBS).f

TEST_SCRIPT = ./sldemo.sl
TEST_SCRIPT_REF = test.ref
DEMO_EXE_REF = test.ref
DEMO_INPUT = coeffs.dat

test:
	@if [ $(HAVE_F2C) -eq 0 ] ; then \
	   echo "The f2c translator is not installed on your system." 1>&2; \
	else \
	   $(MAKE) test_fdemo test_cdemo test_sldemo ; \
	fi

$(CDEMO): $(CDEMO).o $(FSUBS).o $(CSUBS).o
	$(FORTRAN_LINK) -o $@ $@.o $(FSUBS).o $(CSUBS).o

$(FDEMO): $(FSUBS).o $(FDEMO).f
	$(FORTRAN_LINK) -o $@ $@.f $(FSUBS).o

test_cdemo: $(CDEMO)
	./$(CDEMO) < $(DEMO_INPUT) > $(CDEMO).out
	diff $(DEMO_EXE_REF) $(CDEMO).out
	@echo

test_fdemo: $(FDEMO)
	./$(FDEMO) $(DEMO_INPUT) > $(FDEMO).out
	diff $(DEMO_EXE_REF) $(FDEMO).out
	@echo

test_sldemo: $(MODULE) $(TEST_SCRIPT) $(TEST_SCRIPT_REF)
	$(SLSH) -n $(TEST_SCRIPT) < $(DEMO_INPUT) > $(TEST_SCRIPT).out 2>&1
	diff $(TEST_SCRIPT_REF) $(TEST_SCRIPT).out
