# DO NOT MODIFY THIS MAKEFILE.
# It was generated automatically by fixmake
# from input file makefile.gen and writing to makefile.
#
# CONGEN Support Makefile. To be used with make.
#
# Makefile macros for a Linux machine running gfortran and gcc.

# Flags -- note that common flags go on the binary definitions

CFLAGS        = -g
COPTFLAGS     = -g -O2 
CSPECOPTFLAGS = -g -O0
CPPFLAGS      = -DLANGUAGE_C -Dlinux -Dunix
FFLAGS        = -g
FOPTFLAGS     = -g -O2 
FSPECOPTFLAGS = -g -O0
FCPPFLAGS     = -Dlinux -Dunix 
ARFLAGS       = qs
LDFLAGS       = 
MAXPROCS      = 20

# Binaries

CC            = gcc44 -ffloat-store -pthread
CPP	      = gcc44 -E
FC            = gfortran44 -std=gnu -fno-second-underscore -fno-f2c -ffloat-store -pthread -fdump-core -fbacktrace 
FLECS         = $(CGBIN)/flecs
FCPP          = $(CGBIN)/fcpp -F
YACC          = $(CGBIN)/myacc
LEX           = flex
INSTALL	      = $(CGBIN)/install
MKPROTO	      = $(CGBIN)/mkproto
SHELL	      = /bin/sh

.SUFFIXES :			# Roll our own below.
.SUFFIXES : .o .c .flx .ps .man .1

BIN = $(CGBIN)
MAN = $(CGD)/cat1

SCRIPTS = comparecg.sh comparecmp.sh gcheck.sh rc.sh \
          rcsall.sh rcspurge.sh rcslocked.sh \
	  rs6kfix.sh ruc.sh runcg.sh runcg2.sh install.sh

AWKS = rs6kfix.awk

PERLS = ndiffpost.perl avgtable.perl texi2html.perl

FLXSRCS = sortn.flx histo.flx extract.flx scat.flx brkchm.flx \
	  numdiff.flx autodoc.flx pdgrid.flx pdm88.flx homology.flx

CSRCS = fsplit.c

MANPAGES = fsplit.man ndiffpost.man rs6kfix.man avgtable.man texi2html.man \
           rcslocked.man rcspurge.man

MANPS = $(MANPAGES:.man=.ps)

MANSRCS = $(MANPAGES:.man=.1)

SOURCES = $(FLXSRCS) $(CSRCS) $(SCRIPTS) $(MANSRCS) $(MANPAGES) $(PERLS) \
          descrip.mms makefile makefile.gen 

FEXES = $(FLXSRCS:.flx=) bigsortn

CEXES = $(CSRCS:.c=)

EXES = $(FEXES) $(CEXES)

# DIRS = fcpp flecs mkproto myacc wrapgen peer cmploop diris
# These old IRIS programs no longer work.

DIRS = fcpp flecs mkproto myacc wrapgen cmploop

IRISONLY = peer|diris

all:	$(EXES) $(MANPAGES) $(MANPS)
	- for f in $(DIRS) ; do \
	      case $$f in \
	      ${IRISONLY}) \
		  case $(CGPLATFORM) in \
		    sgi* ) (cd $$f; echo $(MAKE) all in $$f; $(MAKE) all) ;;\
		  esac ;; \
	      *) (cd $$f; echo $(MAKE) all in $$f; $(MAKE) all) ;; \
              esac \
	  done

sortn:  sortn.o
	$(FC) sortn.o -o sortn $(CGLIB)congen.a $(LDFLAGS)

bigsortn:  bigsortn.o
	$(FC) bigsortn.o -o bigsortn $(CGLIB)congen.a $(LDFLAGS)

histo:  histo.o
	$(FC) histo.o -o histo $(CGLIB)congen.a $(LDFLAGS)

extract:  extract.o
	$(FC) extract.o -o extract $(CGLIB)congen.a $(LDFLAGS)

scat:  scat.o
	$(FC) scat.o -o scat $(CGLIB)congen.a $(LDFLAGS)

brkchm:  brkchm.o
	$(FC) brkchm.o -o brkchm $(CGLIB)congen.a $(LDFLAGS)

homology:  homology.o
	$(FC) homology.o -o homology $(CGLIB)congen.a $(LDFLAGS)

numdiff:  numdiff.o
	$(FC) numdiff.o -o numdiff $(CGLIB)congen.a $(LDFLAGS)

autodoc:  autodoc.o
	$(FC) autodoc.o -o autodoc $(CGLIB)congen.a $(LDFLAGS)

pdgrid:  pdgrid.o
	$(FC) pdgrid.o -o pdgrid $(CGLIB)congen.a $(LDFLAGS)

pdm88:  pdm88.o
	$(FC) pdm88.o -o pdm88 $(CGLIB)congen.a $(LDFLAGS)

install: install_simples
	- for f in $(DIRS) ; do \
	      case $$f in \
	      ${IRISONLY}) \
		  case $(CGPLATFORM) in \
		    sgi* ) (cd $$f; echo $(MAKE) install in $$f; $(MAKE) install) ;;\
		  esac ;; \
	      *) (cd $$f; echo $(MAKE) install in $$f; $(MAKE) install) ;; \
              esac \
	  done

install_simples: $(EXES) $(SCRIPTS) $(AWKS) $(PERLS) $(MANPS) $(MANPAGES)
	for f in $(EXES) ; do \
	    $(INSTALL) -c -m 555 $$f $(CGBIN) ; \
	done
	for f in $(AWKS); do \
	    $(INSTALL) -c -m 444 $$f $(CGBIN) ; \
	done
	for f in $(SCRIPTS) $(PERLS) ; do \
	    fn=`echo $$f | cut -f1 -d.` ; \
	    $(INSTALL) -c -m 555 $$f $(CGBIN)/$$fn ; \
	done
	-cp $(MANPAGES) $(MAN)
	-cp $(MANPS) $(CGD)

$(FEXES) : $(CGS)config.h

fsplit: fsplit.c
	$(CC) -o fsplit $(CFLAGS) $(CPPFLAGS) fsplit.c $(LDFLAGS)

bigsortn.o : sortn.flx
	$(FCPP) $(FCPPFLAGS) -DMAXLINE=100000 -DLINEMX=256 -I$(CGS) sortn.flx bigsortn.fi
	$(FLECS) bigsortn.fi
	$(FC) -c $(FFLAGS) bigsortn.f

fsplit.man: fsplit.1
	-nroff -man fsplit.1 > fsplit.man

ndiffpost.man: ndiffpost.1
	-tbl ndiffpost.1 | nroff -man | col > ndiffpost.man

avgtable.man: avgtable.1
	-tbl avgtable.1 | nroff -man | col > avgtable.man

rs6kfix.man: rs6kfix.1
	-tbl rs6kfix.1 | nroff -man | col > rs6kfix.man

texi2html.1: texi2html.perl
	cp texi2html.perl texi2html.1

.c.o:
	$(CC) -c $(CFLAGS) $(CPPFLAGS) -I$(CGS) $*.c

.flx.o:
	$(FCPP) $(FCPPFLAGS) -I$(CGS) $*.flx $*.fi
	$(FLECS)  $*.fi
	$(FC) -c $(FFLAGS) $*.f

.1.man:
	-tbl $*.1 | nroff -man | col > $*.man

.1.ps:
	-tbl $*.1 | groff -man -T ps > $*.ps

clean prepare:
	-rm -f *.f *.fi *.fli *.o $(EXES) core *foo* fsplit.man ndiffpost.man avgtable.man rs6kfix.man
	- for f in $(DIRS) ; do \
	      case $$f in \
	      ${IRISONLY}) \
		  case $(CGPLATFORM) in \
		    sgi* ) (cd $$f; echo $(MAKE) $@ in $$f; $(MAKE) $@) ;;\
		  esac ;; \
	      *) (cd $$f; echo $(MAKE) $@ in $$f; $(MAKE) $@) ;; \
              esac \
	  done

tovax: tovax.time

tovax.time: $(SOURCES)
	cp $? dino
	(cd dino/; chmod u+w $?)
	touch tovax.time
	- for f in $(DIRS) ; do \
	     (cd $$f; echo $(MAKE) tovax in $$f; $(MAKE) tovax) \
	  done

makefile: makefile.gen $(CG)/$(CGPLATFORM).make
	$(CGBIN)/fixmake $(CG)/$(CGPLATFORM) makefile.gen makefile

.DEFAULT:
	co $<
