Forráskód Böngészése

cmDependsFortran: require that dependency info files work

Now that only targets expected to have information are listed, all
`DependInfo.cmake` files should exist.
Ben Boeckel 2 éve
szülő
commit
13810dee17
2 módosított fájl, 12 hozzáadás és 6 törlés
  1. 11 5
      Source/cmDependsFortran.cxx
  2. 1 1
      Source/cmDependsFortran.h

+ 11 - 5
Source/cmDependsFortran.cxx

@@ -150,7 +150,9 @@ bool cmDependsFortran::Finalize(std::ostream& makeDepends,
                                 std::ostream& internalDepends)
 {
   // Prepare the module search process.
-  this->LocateModules();
+  if (!this->LocateModules()) {
+    return false;
+  }
 
   // Get the directory in which stamp files will be stored.
   const std::string& stamp_dir = this->TargetDirectory;
@@ -216,7 +218,7 @@ bool cmDependsFortran::Finalize(std::ostream& makeDepends,
   return true;
 }
 
-void cmDependsFortran::LocateModules()
+bool cmDependsFortran::LocateModules()
 {
   // Collect the set of modules provided and required by all sources.
   using ObjectInfoMap = cmDependsFortranInternals::ObjectInfoMap;
@@ -234,7 +236,7 @@ void cmDependsFortran::LocateModules()
 
   // Short-circuit for simple targets.
   if (this->Internal->TargetRequires.empty()) {
-    return;
+    return true;
   }
 
   // Match modules provided by this target to those it requires.
@@ -248,10 +250,14 @@ void cmDependsFortran::LocateModules()
     std::string targetDir = cmSystemTools::GetFilenamePath(i);
     std::string fname = targetDir + "/fortran.internal";
     cmsys::ifstream fin(fname.c_str());
-    if (fin) {
-      this->MatchRemoteModules(fin, targetDir);
+    if (!fin) {
+      cmSystemTools::Error(cmStrCat("-E cmake_depends failed to open ", fname,
+                                    " for module information"));
+      return false;
     }
+    this->MatchRemoteModules(fin, targetDir);
   }
+  return true;
 }
 
 void cmDependsFortran::MatchLocalModules()

+ 1 - 1
Source/cmDependsFortran.h

@@ -55,7 +55,7 @@ protected:
                 std::ostream& internalDepends) override;
 
   // Find all the modules required by the target.
-  void LocateModules();
+  bool LocateModules();
   void MatchLocalModules();
   void MatchRemoteModules(std::istream& fin, const std::string& stampDir);
   void ConsiderModule(const std::string& name, const std::string& stampDir);