cmDependsFortran: require that dependency info files work

Now that only targets expected to have information are listed, all
`DependInfo.cmake` files should exist.
This commit is contained in:
Ben Boeckel 2023-02-01 09:12:22 -05:00
parent eed295fd8a
commit 13810dee17
2 changed files with 12 additions and 6 deletions

View File

@ -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()

View File

@ -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);