# Makefile for SFCHECK

# Use `make all' to build the normal distribution or whenever you want to
#		 to build sfcheck into new target directories.
# Use `make sfcheck' to rebuild sfcheck (after modification of the sources)
# Use `make blanc' to build the blanc distribution.
# Use `make clear' to remove objects and executable

SFCHECK_SRC = `cd ..;pwd`
# To define another target directory for the sfcheck executable and 
# library files, comment the next line
SFCHECK = `cd ..;pwd`
# and uncomment and complete this one with the pathname of the target dir.
#SFCHECK = 

# You could also change the 
BIN = $(SFCHECK)/bin
LIB = $(SFCHECK)/lib

F77 = f77

#FARGS = -trapuv
FARGS =
FOPT = -O2
FSOPT1 = -OPT:fold_arith_limit=1251
FSOPT2 = -OPT:fold_arith_limit=1520
FSOPT3 = -OPT:fprop_limit=965
#FOPT = 
#FLIM = -Olimit 2000
FLIM =

OBJS =  main_sfcheck.o sfcheck.o sfch_prog.o sfch_graph_1.o \
        sfch_graph_2.o sfch_graph_3.o sfch_graph_4.o sfch_graph_5.o \
        sfch_subr.o sfch_unix.o

GRAF_OBJS =  sfch_graph_1.o sfch_graph_2.o sfch_graph_3.o sfch_graph_4.o \
        sfch_graph_5.o sfch_subr.o sfch_unix.o

PLOT_OBJS = sfch_graph.o $(GRAF_OBJS)

SFCH_OBJS = main_sfcheck.o sfcheck.o sfch_prog.o $(GRAF_OBJS)

all: sf_edit sf_configure sfcheck

sf_edit:
	sed -e "s|*'[^\)].*|*'$(LIB)/|" \
	sfch_path.fh > temp_sfch_path.fh
	mv temp_sfch_path.fh sfch_path.fh

sf_configure:
	if (! -d $(LIB)) mkdir $(LIB)
	if (! -d $(BIN)) mkdir $(BIN)
	if (! -f $(LIB)/symlib.blc) cp $(SFCHECK_SRC)/lib/* $(LIB)
	if (! -f $(LIB)/ps.resource) cp $(SFCHECK_SRC)/lib/* $(LIB)

blanc: blanc_edit sfcheck
	mv $(BIN)/sfcheck ../../exe/sfcheck
	if (test ! -f ../symlib.blc) then (cp $(LIB)/* ..) fi
	if (test ! -f ../ps.resource) then (cp $(LIB)/* ..) fi

blanc_edit:
	sed -e "s|*'[^)].*|*'$(SFCHECK)/'|" \
	sfch_path.fh > temp_sfch_path.fh
	mv temp_sfch_path.fh sfch_path.fh

clear:
	sed -e "s|*'[^)].*|*'/usr/local/sfcheck/lib/|" \
	sfch_path.fh > temp_sfch_path.fh
	mv temp_sfch_path.fh sfch_path.fh
	rm -f $(BIN)/*
	rm -f ./*.o
	rm -f ./#* ./*~
	rm -f ../symlib.blc ../ps.resource
	
sfcheck.o: sfcheck.f sfch_version.fh sfch_comt.fh
	$(F77) -c $(FARGS) $(FOPT) $(FSOPT3) $(FLIM) sfcheck.f 
sfch_prog.o: sfch_prog.f sfch_comt.fh
	$(F77) -c $(FARGS) $(FOPT) $(FLIM) sfch_prog.f 
sfch_subr.o: sfch_subr.f sfch_path.fh sfch_comt.fh
	$(F77) -c $(FARGS) $(FOPT) $(FSOPT2) $(FLIM) sfch_subr.f 
sfch_graph_1.o: sfch_graph_1.f sfch_graph.inc sfch_graph_ini.inc sfch_version.fh sfch_comt.fh sfch_html.inc
	$(F77) -c $(FARGS) $(FOPT) sfch_graph_1.f
sfch_graph_2.o: sfch_graph_2.f sfch_graph.inc sfch_graph_2.inc
	$(F77) -c $(FARGS) $(FOPT) $(FSOPT1) sfch_graph_2.f
sfch_graph_3.o: sfch_graph_3.f
	$(F77) -c $(FARGS) $(FOPT) sfch_graph_3.f
sfch_graph_4.o: sfch_graph_4.f
	$(F77) -c $(FARGS) $(FOPT) sfch_graph_4.f
sfch_graph_5.o: sfch_graph_5.f sfch_graph.inc sfch_html.inc
	$(F77) -c $(FARGS) $(FOPT) sfch_graph_5.f
sfch_graph.o: sfch_graph.f
	$(F77) -c $(FARGS) $(FOPT) sfch_graph.f
main_sfcheck.o: main_sfcheck.f sfch_version.fh
	$(F77) -c $(FARGS) $(FOPT) main_sfcheck.f
sfch_unix.o: sfch_unix.f
	$(F77) -c $(FARGS) $(FOPT) sfch_unix.f

sfcheck: $(SFCH_OBJS)
	$(F77) $(FOPT) -o $(BIN)/sfcheck $(SFCH_OBJS)

sfcheck.test: $(SFCH_OBJS)
	$(F77) -o $(BIN)/sfcheck.test $(SFCH_OBJS)

sfplot: $(PLOT_OBJS)
	$(F77) -o $(BIN)/sfplot $(PLOT_OBJS)
