|
|
@@ -2010,6 +2010,58 @@ void cmMakefile::AddSourceGroup(const std::vector<std::string>& name,
|
|
|
sg->SetGroupRegex(regex);
|
|
|
}
|
|
|
|
|
|
+cmSourceGroup* cmMakefile::GetOrCreateSourceGroup(
|
|
|
+ const std::vector<std::string>& folders)
|
|
|
+{
|
|
|
+ cmSourceGroup* sg = this->GetSourceGroup(folders);
|
|
|
+ if (sg == nullptr) {
|
|
|
+ this->AddSourceGroup(folders);
|
|
|
+ sg = this->GetSourceGroup(folders);
|
|
|
+ }
|
|
|
+ return sg;
|
|
|
+}
|
|
|
+
|
|
|
+cmSourceGroup* cmMakefile::GetOrCreateSourceGroup(const std::string& name)
|
|
|
+{
|
|
|
+ const char* delimiter = this->GetDefinition("SOURCE_GROUP_DELIMITER");
|
|
|
+ if (delimiter == nullptr) {
|
|
|
+ delimiter = "\\";
|
|
|
+ }
|
|
|
+ return this->GetOrCreateSourceGroup(
|
|
|
+ cmSystemTools::tokenize(name, delimiter));
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Find a source group whose regular expression matches the filename
|
|
|
+ * part of the given source name. Search backward through the list of
|
|
|
+ * source groups, and take the first matching group found. This way
|
|
|
+ * non-inherited SOURCE_GROUP commands will have precedence over
|
|
|
+ * inherited ones.
|
|
|
+ */
|
|
|
+cmSourceGroup* cmMakefile::FindSourceGroup(
|
|
|
+ const char* source, std::vector<cmSourceGroup>& groups) const
|
|
|
+{
|
|
|
+ // First search for a group that lists the file explicitly.
|
|
|
+ for (std::vector<cmSourceGroup>::reverse_iterator sg = groups.rbegin();
|
|
|
+ sg != groups.rend(); ++sg) {
|
|
|
+ cmSourceGroup* result = sg->MatchChildrenFiles(source);
|
|
|
+ if (result) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Now search for a group whose regex matches the file.
|
|
|
+ for (std::vector<cmSourceGroup>::reverse_iterator sg = groups.rbegin();
|
|
|
+ sg != groups.rend(); ++sg) {
|
|
|
+ cmSourceGroup* result = sg->MatchChildrenRegex(source);
|
|
|
+ if (result) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Shouldn't get here, but just in case, return the default group.
|
|
|
+ return &groups.front();
|
|
|
+}
|
|
|
#endif
|
|
|
|
|
|
static bool mightExpandVariablesCMP0019(const char* s)
|
|
|
@@ -2818,40 +2870,6 @@ std::string cmMakefile::GetConfigurations(std::vector<std::string>& configs,
|
|
|
return buildType;
|
|
|
}
|
|
|
|
|
|
-#if defined(CMAKE_BUILD_WITH_CMAKE)
|
|
|
-/**
|
|
|
- * Find a source group whose regular expression matches the filename
|
|
|
- * part of the given source name. Search backward through the list of
|
|
|
- * source groups, and take the first matching group found. This way
|
|
|
- * non-inherited SOURCE_GROUP commands will have precedence over
|
|
|
- * inherited ones.
|
|
|
- */
|
|
|
-cmSourceGroup* cmMakefile::FindSourceGroup(
|
|
|
- const char* source, std::vector<cmSourceGroup>& groups) const
|
|
|
-{
|
|
|
- // First search for a group that lists the file explicitly.
|
|
|
- for (std::vector<cmSourceGroup>::reverse_iterator sg = groups.rbegin();
|
|
|
- sg != groups.rend(); ++sg) {
|
|
|
- cmSourceGroup* result = sg->MatchChildrenFiles(source);
|
|
|
- if (result) {
|
|
|
- return result;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // Now search for a group whose regex matches the file.
|
|
|
- for (std::vector<cmSourceGroup>::reverse_iterator sg = groups.rbegin();
|
|
|
- sg != groups.rend(); ++sg) {
|
|
|
- cmSourceGroup* result = sg->MatchChildrenRegex(source);
|
|
|
- if (result) {
|
|
|
- return result;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // Shouldn't get here, but just in case, return the default group.
|
|
|
- return &groups.front();
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
bool cmMakefile::IsFunctionBlocked(const cmListFileFunction& lff,
|
|
|
cmExecutionStatus& status)
|
|
|
{
|