diff options
Diffstat (limited to 'Source/cmMakefile.h')
-rw-r--r-- | Source/cmMakefile.h | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 6867c02..737cab9 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -183,12 +183,19 @@ public: const std::vector<std::string>& srcs, bool excludeFromAll = false); + /** Where the target originated from. */ + enum class TargetOrigin + { + Project, + Generator + }; + /** * Add a utility to the build. A utiltity target is a command that * is run every time the target is built. */ cmTarget* AddUtilityCommand(const std::string& utilityName, - bool excludeFromAll, + TargetOrigin origin, bool excludeFromAll, const std::vector<std::string>& depends, const char* workingDirectory, const char* command, const char* arg1 = nullptr, @@ -196,13 +203,13 @@ public: const char* arg3 = nullptr, const char* arg4 = nullptr); cmTarget* AddUtilityCommand( - const std::string& utilityName, bool excludeFromAll, + const std::string& utilityName, TargetOrigin origin, bool excludeFromAll, const char* workingDirectory, const std::vector<std::string>& depends, const cmCustomCommandLines& commandLines, bool escapeOldStyle = true, const char* comment = nullptr, bool uses_terminal = false, bool command_expand_lists = false); cmTarget* AddUtilityCommand( - const std::string& utilityName, bool excludeFromAll, + const std::string& utilityName, TargetOrigin origin, bool excludeFromAll, const char* workingDirectory, const std::vector<std::string>& byproducts, const std::vector<std::string>& depends, const cmCustomCommandLines& commandLines, bool escapeOldStyle = true, @@ -617,11 +624,6 @@ public: cmGlobalGenerator* GetGlobalGenerator() const; /** - * Get all the test names this makefile knows about - */ - void GetTestNames(std::vector<std::string>& testNames); - - /** * Get all the source files this makefile knows about */ const std::vector<cmSourceFile*>& GetSourceFiles() const @@ -644,6 +646,11 @@ public: cmTest* GetTest(const std::string& testName) const; /** + * Get all tests that run under the given configuration. + */ + void GetTests(const std::string& config, std::vector<cmTest*>& tests); + + /** * Return a location of a file in cmake or custom modules directory */ std::string GetModulesFile(const char* name) const; @@ -821,7 +828,18 @@ protected: // libraries, classes, and executables mutable cmTargets Targets; std::map<std::string, std::string> AliasTargets; - std::vector<cmSourceFile*> SourceFiles; + + typedef std::vector<cmSourceFile*> SourceFileVec; + SourceFileVec SourceFiles; + + // Because cmSourceFile names are compared in a fuzzy way (see + // cmSourceFileLocation::Match()) we can't have a straight mapping from + // filename to cmSourceFile. To make lookups more efficient we store the + // Name portion of the cmSourceFileLocation and then compare on the list of + // cmSourceFiles that might match that name. Note that on platforms which + // have a case-insensitive filesystem we store the key in all lowercase. + typedef std::unordered_map<std::string, SourceFileVec> SourceFileMap; + SourceFileMap SourceFileSearchIndex; // Tests std::map<std::string, cmTest*> Tests; |