Resync
[CMakeLuaTailorHgBridge.git] / CMakeLua / Source / cmMakefile.h
blob9b844bde0f362235d67c8bbb80a50e02a6589012
1 /*=========================================================================
3 Program: CMake - Cross-Platform Makefile Generator
4 Module: $RCSfile: cmMakefile.h,v $
5 Language: C++
6 Date: $Date: 2008/02/14 21:42:29 $
7 Version: $Revision: 1.225 $
9 Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
10 See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
12 This software is distributed WITHOUT ANY WARRANTY; without even
13 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 PURPOSE. See the above copyright notices for more information.
16 =========================================================================*/
17 #ifndef cmMakefile_h
18 #define cmMakefile_h
20 #include "cmCacheManager.h"
21 #include "cmData.h"
22 #include "cmExecutionStatus.h"
23 #include "cmListFileCache.h"
24 #include "cmPropertyMap.h"
25 #include "cmSystemTools.h"
26 #include "cmTarget.h"
28 #if defined(CMAKE_BUILD_WITH_CMAKE)
29 #include "cmSourceGroup.h"
30 #endif
32 #include <cmsys/RegularExpression.hxx>
34 class cmFunctionBlocker;
35 class cmCommand;
36 class cmInstallGenerator;
37 class cmLocalGenerator;
38 class cmMakeDepend;
39 class cmSourceFile;
40 class cmTest;
41 class cmVariableWatch;
42 class cmake;
44 /** \class cmMakefile
45 * \brief Process the input CMakeLists.txt file.
47 * Process and store into memory the input CMakeLists.txt file.
48 * Each CMakeLists.txt file is parsed and the commands found there
49 * are added into the build process.
51 class cmMakefile
53 public:
54 /**
55 * Return the major and minor version of the cmake that
56 * was used to write the currently loaded cache, note
57 * this method will not work before the cache is loaded.
59 unsigned int GetCacheMajorVersion();
60 unsigned int GetCacheMinorVersion();
62 /** Return whether compatibility features needed for a version of
63 the cache or lower should be enabled. */
64 bool NeedCacheCompatibility(int major, int minor);
66 /**
67 * Construct an empty makefile.
69 cmMakefile();
70 cmMakefile(const cmMakefile& mf);
72 /**
73 * Destructor.
75 ~cmMakefile();
77 /**
78 * Read and parse a CMakeLists.txt file.
80 bool ReadListFile(const char* listfile,
81 const char* external= 0,
82 std::string* fullPath= 0);
84 /**
85 * Add a function blocker to this makefile
87 void AddFunctionBlocker(cmFunctionBlocker *fb)
88 { this->FunctionBlockers.push_back(fb);}
89 void RemoveFunctionBlocker(cmFunctionBlocker *fb)
90 { this->FunctionBlockers.remove(fb);}
91 void RemoveFunctionBlocker(const cmListFileFunction& lff);
93 /**
94 * Add file to the written file list. These file should not be in the list
95 * of dependencies because they cause infinite loops.
97 void AddWrittenFile(const char* file);
98 bool HasWrittenFile(const char* file);
101 * Check if there are any infinite loops
103 bool CheckInfiniteLoops();
106 * Try running cmake and building a file. This is used for dynalically
107 * loaded commands, not as part of the usual build process.
109 int TryCompile(const char *srcdir, const char *bindir,
110 const char *projectName, const char *targetName,
111 const std::vector<std::string> *cmakeArgs,
112 std::string *output);
115 * Specify the makefile generator. This is platform/compiler
116 * dependent, although the interface is through a generic
117 * superclass.
119 void SetLocalGenerator(cmLocalGenerator*);
121 ///! Get the current makefile generator.
122 cmLocalGenerator* GetLocalGenerator()
123 { return this->LocalGenerator;}
126 * Test whether compatibility is set to a given version or lower.
128 bool NeedBackwardsCompatibility(unsigned int major,
129 unsigned int minor,
130 unsigned int patch = 0xFFu);
133 * Help enforce global target name uniqueness.
135 bool EnforceUniqueName(std::string const& name, std::string& msg,
136 bool isCustom = false);
139 * Perform FinalPass, Library dependency analysis etc before output of the
140 * makefile.
142 void ConfigureFinalPass();
145 * run the final pass on all commands.
147 void FinalPass();
150 * Print the object state to std::cout.
152 void Print();
154 /** Add a custom command to the build. */
155 void AddCustomCommandToTarget(const char* target,
156 const std::vector<std::string>& depends,
157 const cmCustomCommandLines& commandLines,
158 cmTarget::CustomCommandType type,
159 const char* comment, const char* workingDir,
160 bool escapeOldStyle = true);
161 void AddCustomCommandToOutput(const std::vector<std::string>& outputs,
162 const std::vector<std::string>& depends,
163 const char* main_dependency,
164 const cmCustomCommandLines& commandLines,
165 const char* comment, const char* workingDir,
166 bool replace = false,
167 bool escapeOldStyle = true);
168 void AddCustomCommandToOutput(const char* output,
169 const std::vector<std::string>& depends,
170 const char* main_dependency,
171 const cmCustomCommandLines& commandLines,
172 const char* comment, const char* workingDir,
173 bool replace = false,
174 bool escapeOldStyle = true);
175 void AddCustomCommandOldStyle(const char* target,
176 const std::vector<std::string>& outputs,
177 const std::vector<std::string>& depends,
178 const char* source,
179 const cmCustomCommandLines& commandLines,
180 const char* comment);
183 * Add a define flag to the build.
185 void AddDefineFlag(const char* definition);
186 void RemoveDefineFlag(const char* definition);
188 /** Create a new imported target with the name and type given. */
189 cmTarget* AddImportedTarget(const char* name, cmTarget::TargetType type);
191 cmTarget* AddNewTarget(cmTarget::TargetType type, const char* name);
194 * Add an executable to the build.
196 cmTarget* AddExecutable(const char *exename,
197 const std::vector<std::string> &srcs,
198 bool excludeFromAll = false);
201 * Add a utility to the build. A utiltity target is a command that
202 * is run every time the target is built.
204 void AddUtilityCommand(const char* utilityName, bool excludeFromAll,
205 const std::vector<std::string>& depends,
206 const char* workingDirectory,
207 const char* command,
208 const char* arg1=0,
209 const char* arg2=0,
210 const char* arg3=0,
211 const char* arg4=0);
212 void AddUtilityCommand(const char* utilityName, bool excludeFromAll,
213 const char* workingDirectory,
214 const std::vector<std::string>& depends,
215 const cmCustomCommandLines& commandLines,
216 bool escapeOldStyle = true,
217 const char* comment = 0);
220 * Add a link library to the build.
222 void AddLinkLibrary(const char*);
223 void AddLinkLibrary(const char*, cmTarget::LinkLibraryType type);
224 void AddLinkLibraryForTarget(const char *tgt, const char*,
225 cmTarget::LinkLibraryType type);
226 void AddLinkDirectoryForTarget(const char *tgt, const char* d);
229 * Add a link directory to the build.
231 void AddLinkDirectory(const char*);
234 * Get the list of link directories
236 std::vector<std::string>& GetLinkDirectories()
238 return this->LinkDirectories;
240 const std::vector<std::string>& GetLinkDirectories() const
242 return this->LinkDirectories;
244 void SetLinkDirectories(const std::vector<std::string>& vec)
246 this->LinkDirectories = vec;
250 * Add a subdirectory to the build.
252 void AddSubDirectory(const char*, bool excludeFromAll=false,
253 bool preorder = false);
254 void AddSubDirectory(const char* fullSrcDir,const char *fullBinDir,
255 bool excludeFromAll, bool preorder,
256 bool immediate);
259 * Configure a subdirectory
261 void ConfigureSubDirectory(cmLocalGenerator *);
264 * Add an include directory to the build.
266 void AddIncludeDirectory(const char*, bool before = false);
269 * Add a variable definition to the build. This variable
270 * can be used in CMake to refer to lists, directories, etc.
272 void AddDefinition(const char* name, const char* value);
273 ///! Add a definition to this makefile and the global cmake cache.
274 void AddCacheDefinition(const char* name, const char* value,
275 const char* doc,
276 cmCacheManager::CacheEntryType type);
279 * Add bool variable definition to the build.
281 void AddDefinition(const char* name, bool);
282 ///! Add a definition to this makefile and the global cmake cache.
283 void AddCacheDefinition(const char* name, bool, const char* doc);
286 * Remove a variable definition from the build. This is not valid
287 * for cache entries, and will only affect the current makefile.
289 void RemoveDefinition(const char* name);
292 * Specify the name of the project for this build.
294 void SetProjectName(const char*);
297 * Get the name of the project for this build.
299 const char* GetProjectName() const
301 return this->ProjectName.c_str();
305 * Set the name of the library.
307 void AddLibrary(const char *libname, cmTarget::TargetType type,
308 const std::vector<std::string> &srcs,
309 bool excludeFromAll = false);
311 #if defined(CMAKE_BUILD_WITH_CMAKE)
313 * Add a root source group for consideration when adding a new source.
315 void AddSourceGroup(const char* name, const char* regex=0);
318 * Add a source group for consideration when adding a new source.
319 * name is tokenized.
321 void AddSourceGroup(const std::vector<std::string>& name,
322 const char* regex=0);
324 #endif
327 * Add an auxiliary directory to the build.
329 void AddExtraDirectory(const char* dir);
333 * Add an auxiliary directory to the build.
335 void MakeStartDirectoriesCurrent()
337 this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR",
338 this->cmStartDirectory.c_str());
339 this->AddDefinition("CMAKE_CURRENT_BINARY_DIR",
340 this->StartOutputDirectory.c_str());
343 //@{
345 * Set/Get the home directory (or output directory) in the project. The
346 * home directory is the top directory of the project. It is where
347 * CMakeSetup or configure was run. Remember that CMake processes
348 * CMakeLists files by recursing up the tree starting at the StartDirectory
349 * and going up until it reaches the HomeDirectory.
351 void SetHomeDirectory(const char* dir);
352 const char* GetHomeDirectory() const
354 return this->cmHomeDirectory.c_str();
356 void SetHomeOutputDirectory(const char* lib);
357 const char* GetHomeOutputDirectory() const
359 return this->HomeOutputDirectory.c_str();
361 //@}
363 //@{
365 * Set/Get the start directory (or output directory). The start directory
366 * is the directory of the CMakeLists.txt file that started the current
367 * round of processing. Remember that CMake processes CMakeLists files by
368 * recursing up the tree starting at the StartDirectory and going up until
369 * it reaches the HomeDirectory.
371 void SetStartDirectory(const char* dir)
373 this->cmStartDirectory = dir;
374 cmSystemTools::ConvertToUnixSlashes(this->cmStartDirectory);
375 this->cmStartDirectory =
376 cmSystemTools::CollapseFullPath(this->cmStartDirectory.c_str());
377 this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR",
378 this->cmStartDirectory.c_str());
380 const char* GetStartDirectory() const
382 return this->cmStartDirectory.c_str();
384 void SetStartOutputDirectory(const char* lib)
386 this->StartOutputDirectory = lib;
387 cmSystemTools::ConvertToUnixSlashes(this->StartOutputDirectory);
388 this->StartOutputDirectory =
389 cmSystemTools::CollapseFullPath(this->StartOutputDirectory.c_str());
390 cmSystemTools::MakeDirectory(this->StartOutputDirectory.c_str());
391 this->AddDefinition("CMAKE_CURRENT_BINARY_DIR",
392 this->StartOutputDirectory.c_str());
394 const char* GetStartOutputDirectory() const
396 return this->StartOutputDirectory.c_str();
398 //@}
400 const char* GetCurrentDirectory() const
402 return this->cmStartDirectory.c_str();
404 const char* GetCurrentOutputDirectory() const
406 return this->StartOutputDirectory.c_str();
409 /* Get the current CMakeLists.txt file that is being processed. This
410 * is just used in order to be able to 'branch' from one file to a second
411 * transparently */
412 const char* GetCurrentListFile() const
414 return this->cmCurrentListFile.c_str();
417 //@}
419 /**
420 * Set a regular expression that include files must match
421 * in order to be considered as part of the depend information.
423 void SetIncludeRegularExpression(const char* regex)
425 this->IncludeFileRegularExpression = regex;
427 const char* GetIncludeRegularExpression()
429 return this->IncludeFileRegularExpression.c_str();
432 /**
433 * Set a regular expression that include files that are not found
434 * must match in order to be considered a problem.
436 void SetComplainRegularExpression(const char* regex)
438 this->ComplainFileRegularExpression = regex;
440 const char* GetComplainRegularExpression()
442 return this->ComplainFileRegularExpression.c_str();
446 * Get the list of targets
448 cmTargets &GetTargets() { return this->Targets; }
450 * Get the list of targets, const version
452 const cmTargets &GetTargets() const { return this->Targets; }
454 cmTarget* FindTarget(const char* name);
456 /** Find a target to use in place of the given name. The target
457 returned may be imported or built within the project. */
458 cmTarget* FindTargetToUse(const char* name);
461 * Get a list of include directories in the build.
463 std::vector<std::string>& GetIncludeDirectories()
465 return this->IncludeDirectories;
467 const std::vector<std::string>& GetIncludeDirectories() const
469 return this->IncludeDirectories;
471 void SetIncludeDirectories(const std::vector<std::string>& vec)
473 this->IncludeDirectories = vec;
477 * Mark include directories as system directories.
479 void AddSystemIncludeDirectory(const char* dir);
480 bool IsSystemIncludeDirectory(const char* dir);
482 /** Expand out any arguements in the vector that have ; separated
483 * strings into multiple arguements. A new vector is created
484 * containing the expanded versions of all arguments in argsIn.
485 * This method differes from the one in cmSystemTools in that if
486 * the CmakeLists file is version 1.2 or earlier it will check for
487 * source lists being used without ${} around them
489 void ExpandSourceListArguments(std::vector<std::string> const& argsIn,
490 std::vector<std::string>& argsOut,
491 unsigned int startArgumentIndex);
493 /** Get a cmSourceFile pointer for a given source name, if the name is
494 * not found, then a null pointer is returned.
496 cmSourceFile* GetSource(const char* sourceName);
498 /** Get a cmSourceFile pointer for a given source name, if the name is
499 * not found, then create the source file and return it. generated
500 * indicates if it is a generated file, this is used in determining
501 * how to create the source file instance e.g. name
503 cmSourceFile* GetOrCreateSource(const char* sourceName,
504 bool generated = false);
507 * Obtain a list of auxiliary source directories.
509 std::vector<std::string>& GetAuxSourceDirectories()
510 {return this->AuxSourceDirectories;}
512 //@{
514 * Return a list of extensions associated with source and header
515 * files
517 const std::vector<std::string>& GetSourceExtensions() const
518 {return this->SourceFileExtensions;}
519 const std::vector<std::string>& GetHeaderExtensions() const
520 {return this->HeaderFileExtensions;}
521 //@}
524 * Given a variable name, return its value (as a string).
525 * If the variable is not found in this makefile instance, the
526 * cache is then queried.
528 const char* GetDefinition(const char*) const;
529 const char* GetSafeDefinition(const char*) const;
530 const char* GetRequiredDefinition(const char* name) const;
531 bool IsDefinitionSet(const char*) const;
533 * Get the list of all variables in the current space. If argument
534 * cacheonly is specified and is greater than 0, then only cache
535 * variables will be listed.
537 std::vector<std::string> GetDefinitions(int cacheonly=0) const;
539 /** Test a boolean cache entry to see if it is true or false,
540 * returns false if no entry defined.
542 bool IsOn(const char* name) const;
543 bool IsSet(const char* name) const;
546 * Get a list of preprocessor define flags.
548 const char* GetDefineFlags()
549 {return this->DefineFlags.c_str();}
552 * Make sure CMake can write this file
554 bool CanIWriteThisFile(const char* fileName);
557 * Get the vector of used command instances.
559 const std::vector<cmCommand*>& GetUsedCommands() const
560 {return this->UsedCommands;}
562 #if defined(CMAKE_BUILD_WITH_CMAKE)
564 * Get the vector source groups.
566 const std::vector<cmSourceGroup>& GetSourceGroups() const
567 { return this->SourceGroups; }
570 * Get the source group
572 cmSourceGroup* GetSourceGroup(const std::vector<std::string>&name);
573 #endif
576 * Get the vector of list files on which this makefile depends
578 const std::vector<std::string>& GetListFiles() const
579 { return this->ListFiles; }
580 ///! When the file changes cmake will be re-run from the build system.
581 void AddCMakeDependFile(const char* file)
582 { this->ListFiles.push_back(file);}
585 * Get the list file stack as a string
587 std::string GetListFileStack();
590 * Get the vector of files created by this makefile
592 const std::vector<std::string>& GetOutputFiles() const
593 { return this->OutputFiles; }
594 void AddCMakeOutputFile(const char* file)
595 { this->OutputFiles.push_back(file);}
598 * Expand all defined variables in the string.
599 * Defined variables come from the this->Definitions map.
600 * They are expanded with ${var} where var is the
601 * entry in the this->Definitions map. Also @var@ is
602 * expanded to match autoconf style expansions.
604 const char *ExpandVariablesInString(std::string& source);
605 const char *ExpandVariablesInString(std::string& source, bool escapeQuotes,
606 bool noEscapes,
607 bool atOnly = false,
608 const char* filename = 0,
609 long line = -1,
610 bool removeEmpty = false,
611 bool replaceAt = true);
614 * Remove any remaining variables in the string. Anything with ${var} or
615 * @var@ will be removed.
617 void RemoveVariablesInString(std::string& source,
618 bool atOnly = false) const;
621 * Expand variables in the makefiles ivars such as link directories etc
623 void ExpandVariables();
626 * Replace variables and #cmakedefine lines in the given string.
627 * See cmConfigureFileCommand for details.
629 void ConfigureString(const std::string& input, std::string& output,
630 bool atOnly, bool escapeQuotes);
633 * Copy file but change lines acording to ConfigureString
635 int ConfigureFile(const char* infile, const char* outfile,
636 bool copyonly, bool atOnly, bool escapeQuotes);
638 #if defined(CMAKE_BUILD_WITH_CMAKE)
640 * find what source group this source is in
642 cmSourceGroup& FindSourceGroup(const char* source,
643 std::vector<cmSourceGroup> &groups);
644 #endif
646 void RegisterData(cmData*);
647 void RegisterData(const char*, cmData*);
648 cmData* LookupData(const char*) const;
651 * Execute a single CMake command. Returns true if the command
652 * succeeded or false if it failed.
654 bool ExecuteCommand(const cmListFileFunction& lff,
655 cmExecutionStatus &status);
657 /** Check if a command exists. */
658 bool CommandExists(const char* name) const;
661 * Add a command to this cmake instance
663 void AddCommand(cmCommand* );
665 ///! Enable support for named language, if nil then all languages are
666 ///enabled.
667 void EnableLanguage(std::vector<std::string>const& languages, bool optional);
670 * Set/Get the name of the parent directories CMakeLists file
671 * given a current CMakeLists file name
673 cmCacheManager *GetCacheManager() const;
676 * Get the variable watch. This is used to determine when certain variables
677 * are accessed.
679 #ifdef CMAKE_BUILD_WITH_CMAKE
680 cmVariableWatch* GetVariableWatch() const;
681 #endif
683 ///! Display progress or status message.
684 void DisplayStatus(const char*, float);
687 * Expand the given list file arguments into the full set after
688 * variable replacement and list expansion.
690 void ExpandArguments(std::vector<cmListFileArgument> const& inArgs,
691 std::vector<std::string>& outArgs);
693 * Get the instance
695 cmake *GetCMakeInstance() const;
698 * Get all the source files this makefile knows about
700 const std::vector<cmSourceFile*> &GetSourceFiles() const
701 {return this->SourceFiles;}
702 std::vector<cmSourceFile*> &GetSourceFiles() {return this->SourceFiles;}
705 * Is there a source file that has the provided source file as an output?
706 * if so then return it
708 cmSourceFile *GetSourceFileWithOutput(const char *outName);
711 * Add a macro to the list of macros. The arguments should be name of the
712 * macro and a documentation signature of it
714 void AddMacro(const char* name, const char* signature);
716 ///! Add a new cmTest to the list of tests for this makefile.
717 cmTest* CreateTest(const char* testName);
719 /** Get a cmTest pointer for a given test name, if the name is
720 * not found, then a null pointer is returned.
722 cmTest* GetTest(const char* testName) const;
723 const std::vector<cmTest*> *GetTests() const;
724 std::vector<cmTest*> *GetTests();
727 * Get a list of macros as a ; separated string
729 void GetListOfMacros(std::string& macros);
732 * Return a location of a file in cmake or custom modules directory
734 std::string GetModulesFile(const char* name);
736 ///! Set/Get a property of this directory
737 void SetProperty(const char *prop, const char *value);
738 void AppendProperty(const char *prop, const char *value);
739 const char *GetProperty(const char *prop);
740 const char *GetPropertyOrDefinition(const char *prop);
741 const char *GetProperty(const char *prop, cmProperty::ScopeType scope);
742 bool GetPropertyAsBool(const char *prop);
744 // Get the properties
745 cmPropertyMap &GetProperties() { return this->Properties; };
747 typedef std::map<cmStdString, cmStdString> DefinitionMap;
748 ///! Initialize a makefile from its parent
749 void InitializeFromParent();
751 ///! Set/Get the preorder flag
752 void SetPreOrder(bool p) { this->PreOrder = p; }
753 bool GetPreOrder() const { return this->PreOrder; }
755 void AddInstallGenerator(cmInstallGenerator* g)
756 { if(g) this->InstallGenerators.push_back(g); }
757 std::vector<cmInstallGenerator*>& GetInstallGenerators()
758 { return this->InstallGenerators; }
760 // Define the properties
761 static void DefineProperties(cmake *cm);
763 // push and pop variable scopes
764 void PushScope();
765 void PopScope();
766 void RaiseScope(const char *var, const char *value);
768 protected:
769 // add link libraries and directories to the target
770 void AddGlobalLinkInformation(const char* name, cmTarget& target);
772 std::string Prefix;
773 std::vector<std::string> AuxSourceDirectories; //
775 std::string cmStartDirectory;
776 std::string StartOutputDirectory;
777 std::string cmHomeDirectory;
778 std::string HomeOutputDirectory;
779 std::string cmCurrentListFile;
781 std::string ProjectName; // project name
783 // libraries, classes, and executables
784 cmTargets Targets;
785 std::vector<cmSourceFile*> SourceFiles;
787 // Tests
788 std::vector<cmTest*> Tests;
790 // The include and link-library paths. These may have order
791 // dependency, so they must be vectors (not set).
792 std::vector<std::string> IncludeDirectories;
793 std::vector<std::string> LinkDirectories;
795 // The set of include directories that are marked as system include
796 // directories.
797 std::set<cmStdString> SystemIncludeDirectories;
799 std::vector<std::string> ListFiles; // list of command files loaded
800 std::vector<std::string> OutputFiles; // list of command files loaded
803 cmTarget::LinkLibraryVectorType LinkLibraries;
805 std::vector<cmInstallGenerator*> InstallGenerators;
807 std::string IncludeFileRegularExpression;
808 std::string ComplainFileRegularExpression;
809 std::vector<std::string> SourceFileExtensions;
810 std::vector<std::string> HeaderFileExtensions;
811 std::string DefineFlags;
813 #if defined(CMAKE_BUILD_WITH_CMAKE)
814 std::vector<cmSourceGroup> SourceGroups;
815 #endif
817 std::vector<DefinitionMap> DefinitionStack;
818 std::vector<cmCommand*> UsedCommands;
819 cmLocalGenerator* LocalGenerator;
820 bool IsFunctionBlocked(const cmListFileFunction& lff,
821 cmExecutionStatus &status);
823 private:
824 void Initialize();
826 bool ParseDefineFlag(std::string const& definition, bool remove);
828 void ReadSources(std::ifstream& fin, bool t);
829 friend class cmMakeDepend; // make depend needs direct access
830 // to the Sources array
831 void PrintStringVector(const char* s, const
832 std::vector<std::pair<cmStdString, bool> >& v) const;
833 void PrintStringVector(const char* s,
834 const std::vector<std::string>& v) const;
836 void AddDefaultDefinitions();
837 std::list<cmFunctionBlocker *> FunctionBlockers;
839 typedef std::map<cmStdString, cmData*> DataMapType;
840 DataMapType DataMap;
842 typedef std::map<cmStdString, cmStdString> StringStringMap;
843 StringStringMap MacrosMap;
845 std::map<cmStdString, bool> SubDirectoryOrder;
846 // used in AddDefinition for performance improvement
847 DefinitionMap::key_type TemporaryDefinitionKey;
849 cmsys::RegularExpression cmDefineRegex;
850 cmsys::RegularExpression cmDefine01Regex;
851 cmsys::RegularExpression cmAtVarRegex;
853 cmPropertyMap Properties;
855 // should this makefile be processed before or after processing the parent
856 bool PreOrder;
858 // stack of list files being read
859 std::deque<cmStdString> ListFileStack;
861 cmTarget* FindBasicTarget(const char* name);
862 std::vector<cmTarget*> ImportedTargetsOwned;
863 std::map<cmStdString, cmTarget*> ImportedTargets;
867 #endif