summaryrefslogtreecommitdiffstats
path: root/Source/cmDependsFortran.h
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2007-12-28 16:49:59 (GMT)
committerBrad King <brad.king@kitware.com>2007-12-28 16:49:59 (GMT)
commit68dad94b00822dd69a81fb4f00997b190c73663f (patch)
treed01e136d0750da1237f3683069af33c14f8d20a8 /Source/cmDependsFortran.h
parent42f3f3c342849d48bbf00a1bca1392c4e5abb18d (diff)
downloadCMake-68dad94b00822dd69a81fb4f00997b190c73663f.zip
CMake-68dad94b00822dd69a81fb4f00997b190c73663f.tar.gz
CMake-68dad94b00822dd69a81fb4f00997b190c73663f.tar.bz2
ENH: Implement Fortran module dependencies across targets and directories.
- See issue #5809 - Keep information about all sources in the target until deps are written - Create a fortran.internal file after scanning that lists modules provided - Load fortran.internal files from linked targets to find modules - Search the include path for external modules - Create file-level deps on in-project module timestamps or external mods
Diffstat (limited to 'Source/cmDependsFortran.h')
-rw-r--r--Source/cmDependsFortran.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/Source/cmDependsFortran.h b/Source/cmDependsFortran.h
index 9ed087f..c98bad3 100644
--- a/Source/cmDependsFortran.h
+++ b/Source/cmDependsFortran.h
@@ -19,6 +19,9 @@
#include "cmDepends.h"
+class cmDependsFortranInternals;
+class cmDependsFortranSourceInfo;
+
/** \class cmDependsFortran
* \brief Dependency scanner for Fortran object files.
*/
@@ -50,17 +53,37 @@ public:
std::string& fileName);
protected:
+ // Finalize the dependency information for the target.
+ virtual bool Finalize(std::ostream& makeDepends,
+ std::ostream& internalDepends);
+
+ // Find all the modules required by the target.
+ void LocateModules();
+ void MatchLocalModules();
+ void MatchRemoteModules(std::istream& fin, const char* moduleDir);
+ void ConsiderModule(const char* name, const char* moduleDir);
+ bool FindModule(std::string const& name, std::string& module);
+
// Implement writing/checking methods required by superclass.
virtual bool WriteDependencies(
const char *src, const char *file,
std::ostream& makeDepends, std::ostream& internalDepends);
+ // Actually write the depenencies to the streams.
+ bool WriteDependenciesReal(const char *obj,
+ cmDependsFortranSourceInfo const& info,
+ std::ostream& makeDepends,
+ std::ostream& internalDepends);
+
// The source file from which to start scanning.
std::string SourceFile;
// The include file search path.
std::vector<std::string> const* IncludePath;
+ // Internal implementation details.
+ cmDependsFortranInternals* Internal;
+
private:
cmDependsFortran(cmDependsFortran const&); // Purposely not implemented.
void operator=(cmDependsFortran const&); // Purposely not implemented.