## automake - create Makefile.in from Makefile.am
## Copyright (C) 2001, 2003 Free Software Foundation, Inc.

## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2, or (at your option)
## any later version.

## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.

## You should have received a copy of the GNU General Public License
## along with this program.  If not, see <http://www.gnu.org/licenses/>.

## This file is read once per *language*, not per extension.

## ------------------------- ##
## Preprocessed Fortran 77.  ##
## ------------------------- ##

## We also handle the case of preprocessing `.F' files into `.f' files.
if %?PPF77%
.F.f:
	$(F77COMPILE) -F $<
endif %?PPF77%



## -------- ##
## Ratfor.  ##
## -------- ##

## We also handle the case of preprocessing `.r' files into `.f' files.
if %?RATFOR%
.r.f:
	$(RCOMPILE) -F $<
endif %?RATFOR%
