diff options
author | Brad King <brad.king@kitware.com> | 2005-01-18 22:09:05 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2005-01-18 22:09:05 (GMT) |
commit | 195cdf172e2eecdb1b7fb3c2154cfe34c14afd9f (patch) | |
tree | 41c1bbb581fed83207b8d0f6515c8ea018061a46 /Source/cmDepends.h | |
parent | ed9e0626fdf7d0d97733997d3b40a886cc082ebf (diff) | |
download | CMake-195cdf172e2eecdb1b7fb3c2154cfe34c14afd9f.zip CMake-195cdf172e2eecdb1b7fb3c2154cfe34c14afd9f.tar.gz CMake-195cdf172e2eecdb1b7fb3c2154cfe34c14afd9f.tar.bz2 |
ENH: Split dependency scanning and checking into separate cmDepends superclass with language-specific subclasses such as cmDependsC.
Diffstat (limited to 'Source/cmDepends.h')
-rw-r--r-- | Source/cmDepends.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/Source/cmDepends.h b/Source/cmDepends.h new file mode 100644 index 0000000..00d2daf --- /dev/null +++ b/Source/cmDepends.h @@ -0,0 +1,82 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef cmDepends_h +#define cmDepends_h + +#include "cmStandardIncludes.h" + +/** \class cmDepends + * \brief Dependency scanner superclass. + * + * This class is responsible for maintaining a .depends.make file in + * the build tree corresponding to an object file. Subclasses help it + * maintain dependencies for particular languages. + */ +class cmDepends +{ +public: + /** Instances need to know the build directory name and the relative + path from the build directory to the target file. */ + cmDepends(const char* dir, const char* targetFile); + + /** Virtual destructor to cleanup subclasses properly. */ + virtual ~cmDepends(); + + /** Write dependencies for the target file. */ + void Write(); + + /** Check dependencies for the target file. */ + void Check(); + + /** Clear dependencies for the target file so they will be regenerated. */ + void Clear(); + + /** Get the name of the dependency make file. */ + const char* GetMakeFileName(); + + /** Get the name of the dependency mark file. */ + const char* GetMarkFileName(); + +protected: + + // Write dependencies for the target file to the given stream. + // Return true for success and false for failure. + virtual bool WriteDependencies(std::ostream& os)=0; + + // Check dependencies for the target file in the given stream. + // Return false if dependencies must be regenerated and true + // otherwise. + virtual bool CheckDependencies(std::istream& is)=0; + + // The directory in which the build rule for the target file is executed. + std::string m_Directory; + + // The name of the target file for which dependencies are maintained. + std::string m_TargetFile; + + // The name of the .depends.make file corresponding to the target. + std::string m_DependsMakeFile; + + // The name of the .depends file marking when dependencies were generated. + std::string m_DependsMarkFile; + +private: + cmDepends(cmDepends const&); // Purposely not implemented. + void operator=(cmDepends const&); // Purposely not implemented. +}; + +#endif |