To compile Fortran 90 programs, I'd like to use pattern
rules. Most
Fortran 90 compilers create a .mod file with a base name
that is the
name of the module, all in lower case. If I've used any
upper-case
letters in the file name, even if it's otherwise identical
(sans
extension) to the module name, I apparently can't use a
pattern rule.
For example, I have a module named foo in a source file
named Foo.f90:
foo.mod Foo.o: Foo.f90
$(FC) -c $(FOPTS) -o Foo.o Foo.f90 -I MyModuleLibrary
and numerous other files with the same sort of rules.
To avoid compilation cascades I write my inter-module
dependencies in
terms of .mod files, not .o files. First I save the .mod
file, then I
compile the source file. Then I compare the new .mod file
to the old
one. If they're the same, I replace the new one with the
old one, being
careful to preserve its time stamp.
This prevents compiling B.f90 if it accesses a.mod by use
association,
and none of the interfaces in A.f90 have changed. Of
course, I get a
new .o file.
I tried
%.mod %.o: %.f90
$(FC) -c $(FOPTS) -o $ $< -I MuModuleLibrary
but "make foo.mod" says
make: *** No rule to make target `foo.mod'. Stop.
"make Foo.o" works.
Is there a way to lower-case a filename as it works its way
into or
through a pattern rule?
--
Van Snyder | What fraction of Americans
believe
Van.Snyder jpl.nasa.gov | Wrestling is real and NASA is
fake?
Any alleged opinions are my own and have not been approved
or
disapproved by JPL, CalTech, NASA, the President, or anybody
else.
_______________________________________________
Help-make mailing list
Help-make gnu.org
http:
//lists.gnu.org/mailman/listinfo/help-make
|