summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalUnixMakefileGenerator3.h
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2005-05-31 15:46:49 (GMT)
committerKen Martin <ken.martin@kitware.com>2005-05-31 15:46:49 (GMT)
commit6999000852718d6d37b6bfaac3d0dbf6365846cb (patch)
tree14ad125702e61deea255820b17b6a671f9325f9a /Source/cmGlobalUnixMakefileGenerator3.h
parentf79376c1d1211b60f2440a137ed0eeec2dc32677 (diff)
downloadCMake-6999000852718d6d37b6bfaac3d0dbf6365846cb.zip
CMake-6999000852718d6d37b6bfaac3d0dbf6365846cb.tar.gz
CMake-6999000852718d6d37b6bfaac3d0dbf6365846cb.tar.bz2
ENH: now uses Makefile2 to cleanup zsh issues and provided some more documentation
Diffstat (limited to 'Source/cmGlobalUnixMakefileGenerator3.h')
-rw-r--r--Source/cmGlobalUnixMakefileGenerator3.h37
1 files changed, 36 insertions, 1 deletions
diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h
index 79f2d21..d43f1ab 100644
--- a/Source/cmGlobalUnixMakefileGenerator3.h
+++ b/Source/cmGlobalUnixMakefileGenerator3.h
@@ -26,7 +26,34 @@ class cmLocalUnixMakefileGenerator3;
* \brief Write a Unix makefiles.
*
* cmGlobalUnixMakefileGenerator3 manages UNIX build process for a tree
+
+
+ The basic approach of this generator is to produce Makefiles that will all
+ be run with the current working directory set to the Home Output
+ directory. The one exception to this is the subdirectory Makefiles which are
+ created as a convenience and just cd up to the Home Output directory and
+ invoke the main Makefiles.
+
+ The make process starts with Makefile. Makefile should only contain the
+ targets the user is likely to invoke directly from a make command line. No
+ internal targets should be in this file. Makefile2 contains the internal
+ targets that are required to make the process work.
+
+ Makefile2 in turn will recursively make targets in the correct order. Each
+ target has its own directory <target>.dir and its own makefile build.make in
+ that directory. Also in that directory is a couple makefiles per source file
+ used by the target. Typically these are named source.obj.build.make and
+ source.obj.build.depend.make. The source.obj.build.make contains the rules
+ for building, cleaning, and computing dependencies for the given source
+ file. The build.depend.make contains additional dependencies that were
+ computed during dependency scanning. An additional file called
+ source.obj.depend is used as a marker to indicate when dependencies must be
+ rescanned.
+
+ Rules for custom commands follow the same model as rules for source files.
+
*/
+
class cmGlobalUnixMakefileGenerator3 : public cmGlobalGenerator
{
public:
@@ -59,6 +86,7 @@ public:
protected:
void WriteMainMakefile();
+ void WriteMainMakefile2();
void WriteMainCMakefile();
void WriteMainCMakefileLanguageRules(cmGeneratedFileStream& cmakefileStream);
void WriteAllRules(cmLocalUnixMakefileGenerator3 *lg,
@@ -68,12 +96,19 @@ protected:
void WriteConvenienceRules(std::ostream& ruleFileStream,
cmLocalUnixMakefileGenerator3 *,
bool exclude);
+ void WriteConvenienceRules2(std::ostream& ruleFileStream,
+ cmLocalUnixMakefileGenerator3 *,
+ bool exclude);
+
void WriteDirectoryRules(std::ostream& ruleFileStream,
cmLocalUnixMakefileGenerator3 *lg);
+ void WriteDirectoryRules2(std::ostream& ruleFileStream,
+ cmLocalUnixMakefileGenerator3 *lg);
void AppendGlobalTargetDepends(std::vector<std::string>& depends,
const cmTarget& target);
- void AppendAnyGlobalDepend(std::vector<std::string>& depends, const char* name);
+ void AppendAnyGlobalDepend(std::vector<std::string>& depends,
+ const char* name);
// does this generator need a requires step for any of its targets
bool NeedRequiresStep(cmLocalUnixMakefileGenerator3 *lg);