I'm using the CVS head version of cmake and I've run into the following problem with the FORTRAN dependency generator and the USE statement. cmake now creates modname.mod.stamp files and enters them into the dependency calculation. However, the path to the modname.mod.stamp is incorrect because it assumes that none of the FORTRAN code is in a subdirectory. The fix to the problem is to add the path in the dependency. Here's a patch that does this. One shortcoming is the patch uses the full path rather than the relative paths that are used elsewhere in the depend.make files.

cvs diff -c cmDependsFortran.cxx
Index: cmDependsFortran.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmDependsFortran.cxx,v
retrieving revision 1.25
diff -c -r1.25 cmDependsFortran.cxx
*** cmDependsFortran.cxx        16 Oct 2007 14:19:56 -0000      1.25
--- cmDependsFortran.cxx        30 Nov 2007 15:07:14 -0000
***************
*** 167,179 ****
        // The object file should depend on timestamped files for the
        // modules it uses.
        std::string m = cmSystemTools::LowerCase(*i);
-       makeDepends << obj << ": " << m.c_str() << ".mod.stamp\n";

-       // Create a dummy timestamp file for the module.
        std::string fullPath = stamp_dir;
        fullPath += "/";
        fullPath += m;
        fullPath += ".mod.stamp";
        if(!cmSystemTools::FileExists(fullPath.c_str()))
          {
          std::ofstream dummy(fullPath.c_str());
--- 167,181 ----
        // The object file should depend on timestamped files for the
        // modules it uses.
        std::string m = cmSystemTools::LowerCase(*i);

        std::string fullPath = stamp_dir;
        fullPath += "/";
        fullPath += m;
        fullPath += ".mod.stamp";
+
+       makeDepends << obj << ": " << fullPath << std::endl;
+
+       // Create a dummy timestamp file for the module.
        if(!cmSystemTools::FileExists(fullPath.c_str()))
          {
          std::ofstream dummy(fullPath.c_str());

_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to