[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Lower-casing filenames in pattern rules
From: |
Van Snyder |
Subject: |
Lower-casing filenames in pattern rules |
Date: |
Fri, 18 Apr 2008 19:34:23 -0700 |
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
address@hidden | 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.
- Lower-casing filenames in pattern rules,
Van Snyder <=