Browse Source

QtAutogen: Change config file permissions only on demand

Sebastian Holtermann 9 years ago
parent
commit
4fa858ecb1
1 changed files with 15 additions and 10 deletions
  1. 15 10
      Source/cmQtAutoGeneratorInitializer.cxx

+ 15 - 10
Source/cmQtAutoGeneratorInitializer.cxx

@@ -888,26 +888,31 @@ void cmQtAutoGeneratorInitializer::SetupAutoGenerateTarget(
     RccSetupAutoTarget(target);
     RccSetupAutoTarget(target);
   }
   }
 
 
+  // Generate config file
   std::string inputFile = cmSystemTools::GetCMakeRoot();
   std::string inputFile = cmSystemTools::GetCMakeRoot();
   inputFile += "/Modules/AutogenInfo.cmake.in";
   inputFile += "/Modules/AutogenInfo.cmake.in";
   std::string outputFile = GetAutogenTargetFilesDir(target);
   std::string outputFile = GetAutogenTargetFilesDir(target);
   outputFile += "/AutogenInfo.cmake";
   outputFile += "/AutogenInfo.cmake";
+
   makefile->ConfigureFile(inputFile.c_str(), outputFile.c_str(), false, true,
   makefile->ConfigureFile(inputFile.c_str(), outputFile.c_str(), false, true,
                           false);
                           false);
 
 
-  // Ensure we have write permission in case .in was read-only.
-  mode_t perm = 0;
+  // Append custom definitions to config file
+  if (!configMocDefines.empty() || !configMocIncludes.empty() ||
+      !configUicOptions.empty()) {
+
+    // Ensure we have write permission in case .in was read-only.
+    mode_t perm = 0;
 #if defined(_WIN32) && !defined(__CYGWIN__)
 #if defined(_WIN32) && !defined(__CYGWIN__)
-  mode_t mode_write = S_IWRITE;
+    mode_t mode_write = S_IWRITE;
 #else
 #else
-  mode_t mode_write = S_IWUSR;
+    mode_t mode_write = S_IWUSR;
 #endif
 #endif
-  cmSystemTools::GetPermissions(outputFile, perm);
-  if (!(perm & mode_write)) {
-    cmSystemTools::SetPermissions(outputFile, perm | mode_write);
-  }
-  if (!configMocDefines.empty() || !configMocIncludes.empty() ||
-      !configUicOptions.empty()) {
+    cmSystemTools::GetPermissions(outputFile, perm);
+    if (!(perm & mode_write)) {
+      cmSystemTools::SetPermissions(outputFile, perm | mode_write);
+    }
+
     cmsys::ofstream infoFile(outputFile.c_str(), std::ios::app);
     cmsys::ofstream infoFile(outputFile.c_str(), std::ios::app);
     if (!infoFile) {
     if (!infoFile) {
       std::string error = "Internal CMake error when trying to open file: ";
       std::string error = "Internal CMake error when trying to open file: ";