- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear All:
I have a Cruise Control build for a large code basis which is mix of C++ and FORTRAN. However, the feedback from CC is taking quite a bit oof time even for incremental build and I tracked some of the problem with the usage of module in IVF project.
Let us say I have a probject with files like A1.for thru A10.for. A1.for creates A1.mod which is used in A2.for. The rest are all independent files. When I have a full build, we remove all the intermediate and output files and everything builds smoothly.
However, we have the following situation in incremental build. Suppose, A1.for changes with new feature/bug fix. In an incremental build, the compiler knows A1.for has changed and therefore, creates a new version of A1.mod. However, A2.for does not recognize that A1.mod has changed. To avoid this situation, we had to use FULL build for projects with intermediate .mod file. This forces us to completely rebuild these projects even if there are no changes.
I am wondering if there is a solution or workaround for this problem.
Thanks,
Rao
I have a Cruise Control build for a large code basis which is mix of C++ and FORTRAN. However, the feedback from CC is taking quite a bit oof time even for incremental build and I tracked some of the problem with the usage of module in IVF project.
Let us say I have a probject with files like A1.for thru A10.for. A1.for creates A1.mod which is used in A2.for. The rest are all independent files. When I have a full build, we remove all the intermediate and output files and everything builds smoothly.
However, we have the following situation in incremental build. Suppose, A1.for changes with new feature/bug fix. In an incremental build, the compiler knows A1.for has changed and therefore, creates a new version of A1.mod. However, A2.for does not recognize that A1.mod has changed. To avoid this situation, we had to use FULL build for projects with intermediate .mod file. This forces us to completely rebuild these projects even if there are no changes.
I am wondering if there is a solution or workaround for this problem.
Thanks,
Rao
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - srinivasa.karanam@ips.invensys.com
Let us say I have a probject with files like A1.for thru A10.for. A1.for creates A1.mod which is used in A2.for. The rest are all independent files. When I have a full build, we remove all the intermediate and output files and everything builds smoothly.
However, we have the following situation in incremental build. Suppose, A1.for changes with new feature/bug fix. In an incremental build, the compiler knows A1.for has changed and therefore, creates a new version of A1.mod. However, A2.for does not recognize that A1.mod has changed. To avoid this situation, we had to use FULL build for projects with intermediate .mod file. This forces us to completely rebuild these projects even if there are no changes.
However, we have the following situation in incremental build. Suppose, A1.for changes with new feature/bug fix. In an incremental build, the compiler knows A1.for has changed and therefore, creates a new version of A1.mod. However, A2.for does not recognize that A1.mod has changed. To avoid this situation, we had to use FULL build for projects with intermediate .mod file. This forces us to completely rebuild these projects even if there are no changes.
I'm not familiar with Cruise Control at all, but a generic solution to this problem is to explicitly specify for your build tool the dependence of the object code for A2 on A1.mod. A1.mod (in addition to A1.o[bj]) then depends on A1.f90. Of course doing this manually for anything other than a trivial number of files can be a nuisance/maintenance issue.
When I'm not using the VS IDE(*) I use a build tool (bjam) that is customised/configured to automatically scan each f90 file and determine which modules it USE's as part of building the dependency tree. Your build tool may have similar capability. Build tool support for Fortran 90+ is not ubiquitous, but there are options out there.
(*) Or its command line build facility.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page