|  | @@ -332,7 +332,7 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(
 | 
	
		
			
				|  |  |      makefile->GetSafeDefinition("AM_ORIGIN_TARGET_NAME");
 | 
	
		
			
				|  |  |    this->AutogenTargetName = makefile->GetSafeDefinition("AM_TARGET_NAME");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // - Directories
 | 
	
		
			
				|  |  | +  // - Files and directories
 | 
	
		
			
				|  |  |    this->ProjectSourceDir = makefile->GetSafeDefinition("AM_CMAKE_SOURCE_DIR");
 | 
	
		
			
				|  |  |    this->ProjectBinaryDir = makefile->GetSafeDefinition("AM_CMAKE_BINARY_DIR");
 | 
	
		
			
				|  |  |    this->CurrentSourceDir =
 | 
	
	
		
			
				|  | @@ -340,6 +340,13 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(
 | 
	
		
			
				|  |  |    this->CurrentBinaryDir =
 | 
	
		
			
				|  |  |      makefile->GetSafeDefinition("AM_CMAKE_CURRENT_BINARY_DIR");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition("AM_SOURCES"),
 | 
	
		
			
				|  |  | +                                    this->Sources);
 | 
	
		
			
				|  |  | +  cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition("AM_HEADERS"),
 | 
	
		
			
				|  |  | +                                    this->Headers);
 | 
	
		
			
				|  |  | +  this->IncludeProjectDirsBefore =
 | 
	
		
			
				|  |  | +    makefile->IsOn("AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // - Qt environment
 | 
	
		
			
				|  |  |    this->QtMajorVersion = makefile->GetSafeDefinition("AM_QT_VERSION_MAJOR");
 | 
	
		
			
				|  |  |    if (this->QtMajorVersion == "") {
 | 
	
	
		
			
				|  | @@ -352,138 +359,140 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(
 | 
	
		
			
				|  |  |                     Quoted(this->QtMajorVersion));
 | 
	
		
			
				|  |  |      return false;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +  // Qt executables
 | 
	
		
			
				|  |  |    this->MocExecutable = makefile->GetSafeDefinition("AM_QT_MOC_EXECUTABLE");
 | 
	
		
			
				|  |  |    this->UicExecutable = makefile->GetSafeDefinition("AM_QT_UIC_EXECUTABLE");
 | 
	
		
			
				|  |  |    this->RccExecutable = makefile->GetSafeDefinition("AM_QT_RCC_EXECUTABLE");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // - File Lists
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition("AM_SOURCES"),
 | 
	
		
			
				|  |  | -                                    this->Sources);
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition("AM_HEADERS"),
 | 
	
		
			
				|  |  | -                                    this->Headers);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    // - Moc
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition("AM_MOC_SKIP"),
 | 
	
		
			
				|  |  | -                                    this->MocSkipList);
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -    GetConfigDefinition(makefile, "AM_MOC_COMPILE_DEFINITIONS", config),
 | 
	
		
			
				|  |  | -    this->MocDefinitions);
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -    GetConfigDefinition(makefile, "AM_MOC_INCLUDES", config),
 | 
	
		
			
				|  |  | -    this->MocIncludePaths);
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -    makefile->GetSafeDefinition("AM_MOC_OPTIONS"), this->MocOptions);
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    std::vector<std::string> mocDependFilters;
 | 
	
		
			
				|  |  | +  if (this->MocEnabled()) {
 | 
	
		
			
				|  |  |      cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -      makefile->GetSafeDefinition("AM_MOC_DEPEND_FILTERS"), mocDependFilters);
 | 
	
		
			
				|  |  | -    // Insert Q_PLUGIN_METADATA dependency filter
 | 
	
		
			
				|  |  | -    if (this->QtMajorVersion != "4") {
 | 
	
		
			
				|  |  | -      this->MocDependFilterPush("Q_PLUGIN_METADATA",
 | 
	
		
			
				|  |  | -                                "[\n][ \t]*Q_PLUGIN_METADATA[ \t]*\\("
 | 
	
		
			
				|  |  | -                                "[^\\)]*FILE[ \t]*\"([^\"]+)\"");
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    // Insert user defined dependency filters
 | 
	
		
			
				|  |  | -    if ((mocDependFilters.size() % 2) == 0) {
 | 
	
		
			
				|  |  | -      for (std::vector<std::string>::const_iterator dit =
 | 
	
		
			
				|  |  | -             mocDependFilters.begin();
 | 
	
		
			
				|  |  | -           dit != mocDependFilters.end(); dit += 2) {
 | 
	
		
			
				|  |  | -        if (!this->MocDependFilterPush(*dit, *(dit + 1))) {
 | 
	
		
			
				|  |  | -          return false;
 | 
	
		
			
				|  |  | +      makefile->GetSafeDefinition("AM_MOC_SKIP"), this->MocSkipList);
 | 
	
		
			
				|  |  | +    cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | +      GetConfigDefinition(makefile, "AM_MOC_COMPILE_DEFINITIONS", config),
 | 
	
		
			
				|  |  | +      this->MocDefinitions);
 | 
	
		
			
				|  |  | +    cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | +      GetConfigDefinition(makefile, "AM_MOC_INCLUDES", config),
 | 
	
		
			
				|  |  | +      this->MocIncludePaths);
 | 
	
		
			
				|  |  | +    cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | +      makefile->GetSafeDefinition("AM_MOC_OPTIONS"), this->MocOptions);
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      std::vector<std::string> mocDependFilters;
 | 
	
		
			
				|  |  | +      cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | +        makefile->GetSafeDefinition("AM_MOC_DEPEND_FILTERS"),
 | 
	
		
			
				|  |  | +        mocDependFilters);
 | 
	
		
			
				|  |  | +      // Insert Q_PLUGIN_METADATA dependency filter
 | 
	
		
			
				|  |  | +      if (this->QtMajorVersion != "4") {
 | 
	
		
			
				|  |  | +        this->MocDependFilterPush("Q_PLUGIN_METADATA",
 | 
	
		
			
				|  |  | +                                  "[\n][ \t]*Q_PLUGIN_METADATA[ \t]*\\("
 | 
	
		
			
				|  |  | +                                  "[^\\)]*FILE[ \t]*\"([^\"]+)\"");
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      // Insert user defined dependency filters
 | 
	
		
			
				|  |  | +      if ((mocDependFilters.size() % 2) == 0) {
 | 
	
		
			
				|  |  | +        for (std::vector<std::string>::const_iterator dit =
 | 
	
		
			
				|  |  | +               mocDependFilters.begin();
 | 
	
		
			
				|  |  | +             dit != mocDependFilters.end(); dit += 2) {
 | 
	
		
			
				|  |  | +          if (!this->MocDependFilterPush(*dit, *(dit + 1))) {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        this->LogError(
 | 
	
		
			
				|  |  | +          "AutoMoc: Error: AUTOMOC_DEPEND_FILTERS list size is not "
 | 
	
		
			
				|  |  | +          "a multiple of 2");
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    } else {
 | 
	
		
			
				|  |  | -      this->LogError("AutoMoc: Error: AUTOMOC_DEPEND_FILTERS list size is not "
 | 
	
		
			
				|  |  | -                     "a multiple of 2");
 | 
	
		
			
				|  |  | -      return false;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    this->MocRelaxedMode = makefile->IsOn("AM_MOC_RELAXED_MODE");
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // - Uic
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition("AM_UIC_SKIP"),
 | 
	
		
			
				|  |  | -                                    this->UicSkipList);
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -    GetConfigDefinition(makefile, "AM_UIC_TARGET_OPTIONS", config),
 | 
	
		
			
				|  |  | -    this->UicTargetOptions);
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    std::vector<std::string> uicFilesVec;
 | 
	
		
			
				|  |  | -    std::vector<std::string> uicOptionsVec;
 | 
	
		
			
				|  |  | +  if (this->UicEnabled()) {
 | 
	
		
			
				|  |  |      cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -      makefile->GetSafeDefinition("AM_UIC_OPTIONS_FILES"), uicFilesVec);
 | 
	
		
			
				|  |  | +      makefile->GetSafeDefinition("AM_UIC_SKIP"), this->UicSkipList);
 | 
	
		
			
				|  |  |      cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -      makefile->GetSafeDefinition("AM_UIC_OPTIONS_OPTIONS"), uicOptionsVec);
 | 
	
		
			
				|  |  | -    // Compare list sizes
 | 
	
		
			
				|  |  | -    if (uicFilesVec.size() == uicOptionsVec.size()) {
 | 
	
		
			
				|  |  | -      for (std::vector<std::string>::iterator fileIt = uicFilesVec.begin(),
 | 
	
		
			
				|  |  | -                                              optionIt = uicOptionsVec.begin();
 | 
	
		
			
				|  |  | -           fileIt != uicFilesVec.end(); ++fileIt, ++optionIt) {
 | 
	
		
			
				|  |  | -        cmSystemTools::ReplaceString(*optionIt, "@list_sep@", ";");
 | 
	
		
			
				|  |  | -        this->UicOptions[*fileIt] = *optionIt;
 | 
	
		
			
				|  |  | +      GetConfigDefinition(makefile, "AM_UIC_TARGET_OPTIONS", config),
 | 
	
		
			
				|  |  | +      this->UicTargetOptions);
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      std::vector<std::string> uicFilesVec;
 | 
	
		
			
				|  |  | +      std::vector<std::string> uicOptionsVec;
 | 
	
		
			
				|  |  | +      cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | +        makefile->GetSafeDefinition("AM_UIC_OPTIONS_FILES"), uicFilesVec);
 | 
	
		
			
				|  |  | +      cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | +        makefile->GetSafeDefinition("AM_UIC_OPTIONS_OPTIONS"), uicOptionsVec);
 | 
	
		
			
				|  |  | +      // Compare list sizes
 | 
	
		
			
				|  |  | +      if (uicFilesVec.size() == uicOptionsVec.size()) {
 | 
	
		
			
				|  |  | +        for (std::vector<std::string>::iterator
 | 
	
		
			
				|  |  | +               fileIt = uicFilesVec.begin(),
 | 
	
		
			
				|  |  | +               optionIt = uicOptionsVec.begin();
 | 
	
		
			
				|  |  | +             fileIt != uicFilesVec.end(); ++fileIt, ++optionIt) {
 | 
	
		
			
				|  |  | +          cmSystemTools::ReplaceString(*optionIt, "@list_sep@", ";");
 | 
	
		
			
				|  |  | +          this->UicOptions[*fileIt] = *optionIt;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        this->LogError(
 | 
	
		
			
				|  |  | +          "AutoGen: Error: Uic files/options lists size missmatch in: " +
 | 
	
		
			
				|  |  | +          filename);
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    } else {
 | 
	
		
			
				|  |  | -      this->LogError(
 | 
	
		
			
				|  |  | -        "AutoGen: Error: Uic files/options lists size missmatch in: " +
 | 
	
		
			
				|  |  | -        filename);
 | 
	
		
			
				|  |  | -      return false;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | +      makefile->GetSafeDefinition("AM_UIC_SEARCH_PATHS"),
 | 
	
		
			
				|  |  | +      this->UicSearchPaths);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -    makefile->GetSafeDefinition("AM_UIC_SEARCH_PATHS"), this->UicSearchPaths);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // - Rcc
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -    makefile->GetSafeDefinition("AM_RCC_SOURCES"), this->RccSources);
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    std::vector<std::string> rccFilesVec;
 | 
	
		
			
				|  |  | -    std::vector<std::string> rccOptionsVec;
 | 
	
		
			
				|  |  | -    cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -      makefile->GetSafeDefinition("AM_RCC_OPTIONS_FILES"), rccFilesVec);
 | 
	
		
			
				|  |  | +  if (this->RccEnabled()) {
 | 
	
		
			
				|  |  |      cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -      makefile->GetSafeDefinition("AM_RCC_OPTIONS_OPTIONS"), rccOptionsVec);
 | 
	
		
			
				|  |  | -    if (rccFilesVec.size() != rccOptionsVec.size()) {
 | 
	
		
			
				|  |  | -      this->LogError(
 | 
	
		
			
				|  |  | -        "AutoGen: Error: RCC files/options lists size missmatch in: " +
 | 
	
		
			
				|  |  | -        filename);
 | 
	
		
			
				|  |  | -      return false;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    for (std::vector<std::string>::iterator fileIt = rccFilesVec.begin(),
 | 
	
		
			
				|  |  | -                                            optionIt = rccOptionsVec.begin();
 | 
	
		
			
				|  |  | -         fileIt != rccFilesVec.end(); ++fileIt, ++optionIt) {
 | 
	
		
			
				|  |  | -      cmSystemTools::ReplaceString(*optionIt, "@list_sep@", ";");
 | 
	
		
			
				|  |  | -      this->RccOptions[*fileIt] = *optionIt;
 | 
	
		
			
				|  |  | +      makefile->GetSafeDefinition("AM_RCC_SOURCES"), this->RccSources);
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      std::vector<std::string> rccFilesVec;
 | 
	
		
			
				|  |  | +      std::vector<std::string> rccOptionsVec;
 | 
	
		
			
				|  |  | +      cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | +        makefile->GetSafeDefinition("AM_RCC_OPTIONS_FILES"), rccFilesVec);
 | 
	
		
			
				|  |  | +      cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | +        makefile->GetSafeDefinition("AM_RCC_OPTIONS_OPTIONS"), rccOptionsVec);
 | 
	
		
			
				|  |  | +      if (rccFilesVec.size() != rccOptionsVec.size()) {
 | 
	
		
			
				|  |  | +        this->LogError(
 | 
	
		
			
				|  |  | +          "AutoGen: Error: RCC files/options lists size missmatch in: " +
 | 
	
		
			
				|  |  | +          filename);
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      for (std::vector<std::string>::iterator fileIt = rccFilesVec.begin(),
 | 
	
		
			
				|  |  | +                                              optionIt = rccOptionsVec.begin();
 | 
	
		
			
				|  |  | +           fileIt != rccFilesVec.end(); ++fileIt, ++optionIt) {
 | 
	
		
			
				|  |  | +        cmSystemTools::ReplaceString(*optionIt, "@list_sep@", ";");
 | 
	
		
			
				|  |  | +        this->RccOptions[*fileIt] = *optionIt;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    std::vector<std::string> rccInputLists;
 | 
	
		
			
				|  |  | -    cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | -      makefile->GetSafeDefinition("AM_RCC_INPUTS"), rccInputLists);
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      std::vector<std::string> rccInputLists;
 | 
	
		
			
				|  |  | +      cmSystemTools::ExpandListArgument(
 | 
	
		
			
				|  |  | +        makefile->GetSafeDefinition("AM_RCC_INPUTS"), rccInputLists);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // qrc files in the end of the list may have been empty
 | 
	
		
			
				|  |  | -    if (rccInputLists.size() < this->RccSources.size()) {
 | 
	
		
			
				|  |  | -      rccInputLists.resize(this->RccSources.size());
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    if (this->RccSources.size() != rccInputLists.size()) {
 | 
	
		
			
				|  |  | -      this->LogError(
 | 
	
		
			
				|  |  | -        "AutoGen: Error: RCC sources/inputs lists size missmatch in: " +
 | 
	
		
			
				|  |  | -        filename);
 | 
	
		
			
				|  |  | -      return false;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    for (std::vector<std::string>::iterator fileIt = this->RccSources.begin(),
 | 
	
		
			
				|  |  | -                                            inputIt = rccInputLists.begin();
 | 
	
		
			
				|  |  | -         fileIt != this->RccSources.end(); ++fileIt, ++inputIt) {
 | 
	
		
			
				|  |  | -      cmSystemTools::ReplaceString(*inputIt, "@list_sep@", ";");
 | 
	
		
			
				|  |  | -      std::vector<std::string> rccInputFiles;
 | 
	
		
			
				|  |  | -      cmSystemTools::ExpandListArgument(*inputIt, rccInputFiles);
 | 
	
		
			
				|  |  | -      this->RccInputs[*fileIt] = rccInputFiles;
 | 
	
		
			
				|  |  | +      // qrc files in the end of the list may have been empty
 | 
	
		
			
				|  |  | +      if (rccInputLists.size() < this->RccSources.size()) {
 | 
	
		
			
				|  |  | +        rccInputLists.resize(this->RccSources.size());
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      if (this->RccSources.size() != rccInputLists.size()) {
 | 
	
		
			
				|  |  | +        this->LogError(
 | 
	
		
			
				|  |  | +          "AutoGen: Error: RCC sources/inputs lists size missmatch in: " +
 | 
	
		
			
				|  |  | +          filename);
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      for (std::vector<std::string>::iterator
 | 
	
		
			
				|  |  | +             fileIt = this->RccSources.begin(),
 | 
	
		
			
				|  |  | +             inputIt = rccInputLists.begin();
 | 
	
		
			
				|  |  | +           fileIt != this->RccSources.end(); ++fileIt, ++inputIt) {
 | 
	
		
			
				|  |  | +        cmSystemTools::ReplaceString(*inputIt, "@list_sep@", ";");
 | 
	
		
			
				|  |  | +        std::vector<std::string> rccInputFiles;
 | 
	
		
			
				|  |  | +        cmSystemTools::ExpandListArgument(*inputIt, rccInputFiles);
 | 
	
		
			
				|  |  | +        this->RccInputs[*fileIt] = rccInputFiles;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // - Flags
 | 
	
		
			
				|  |  | -  this->IncludeProjectDirsBefore =
 | 
	
		
			
				|  |  | -    makefile->IsOn("AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE");
 | 
	
		
			
				|  |  | -  this->MocRelaxedMode = makefile->IsOn("AM_MOC_RELAXED_MODE");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    return true;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |