[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