[CMake] Effort to create a new generator (tup)

Michael Wild themiwi at gmail.com
Thu May 6 10:42:13 EDT 2010


On 6. May, 2010, at 14:52 , Jed Brown wrote:

> On Thu, 06 May 2010 08:28:34 -0400, Bill Hoffman <bill.hoffman at kitware.com> wrote:
>> The problem with fortran 90, is that you have to find out the depends to 
>> figure out the order in which files are built.   It has a system where 
>> "include like" files are generated by the compiler.  So, if you have:
>> 
>> a.f90 -> produces a.mod
>> b.f90 -> uses a.mod
>> 
>> If you compile b before a, then it fails to compile.  To solve this 
>> CMake's dependency code parses all the f90 files in a target first, then 
>> creates depend information so that b.f90 will depend on a.f90.  I 
>> suppose this part could be pushed to the generator time for the tup 
>> generator.  It might make for a slow generate step in the CMake process.
> 
> Good point.  Once the *.mod files exist, tup will know about the
> dependency (because the compiler looks at the *.mod file), but it
> wouldn't know about it a priori (unless CMake told it, but make has the
> same issue---worse due to no internal dependency knowledge).

Looks like the Fortran 90 issue can be solved with "order-only" inputs:

a.f90 |> gfortran -c -o %o %f |> %f.o
b.f90 | a.f90 |> gfortran -c -o %o %f |> %f.o

The last line tells tup that b.f90 depends on a.f90, which is something that the Fortran 90 dependency parser handles.

Michael



More information about the CMake mailing list