|  | @@ -2915,10 +2915,8 @@ bool cmake::GetPropertyAsBool(const char* prop)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  int cmake::GetSystemInformation(std::vector<std::string>& args)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  // we must create a temporary directory, copy some files to it
 | 
	
		
			
				|  |  | -  // run cmake on it, and then collect the results.
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  |    // so create the directory
 | 
	
		
			
				|  |  | +  std::string resultFile;
 | 
	
		
			
				|  |  |    std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
 | 
	
		
			
				|  |  |    std::string destPath = cwd + "/__cmake_systeminformation";
 | 
	
		
			
				|  |  |    cmSystemTools::RemoveADirectory(destPath.c_str());
 | 
	
	
		
			
				|  | @@ -2928,7 +2926,53 @@ int cmake::GetSystemInformation(std::vector<std::string>& args)
 | 
	
		
			
				|  |  |        "writable directory!\n";
 | 
	
		
			
				|  |  |      return 1;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // process the arguments
 | 
	
		
			
				|  |  | +  for(unsigned int i=1; i < args.size(); ++i)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +    std::string arg = args[i];
 | 
	
		
			
				|  |  | +    if(arg.find("-V",0) == 0)
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +      this->Verbose = true;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    else if(arg.find("-G",0) == 0)
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +      std::string value = arg.substr(2);
 | 
	
		
			
				|  |  | +      if(value.size() == 0)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +        ++i;
 | 
	
		
			
				|  |  | +        if(i >= args.size())
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +          cmSystemTools::Error("No generator specified for -G");
 | 
	
		
			
				|  |  | +          return -1;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        value = args[i];
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      cmGlobalGenerator* gen =
 | 
	
		
			
				|  |  | +        this->CreateGlobalGenerator(value.c_str());
 | 
	
		
			
				|  |  | +      if(!gen)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +        cmSystemTools::Error("Could not create named generator ",
 | 
	
		
			
				|  |  | +                             value.c_str());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      else
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +        this->SetGlobalGenerator(gen);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    // no option assume it is the output file
 | 
	
		
			
				|  |  | +    else
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +      if (!cmSystemTools::FileIsFullPath(arg.c_str()))
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +        resultFile += cwd;
 | 
	
		
			
				|  |  | +        resultFile += "/";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      resultFile = arg;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // we have to find the module directory, so we can copy the files
 | 
	
		
			
				|  |  |    this->AddCMakePaths(args[0].c_str());
 | 
	
		
			
				|  |  |    std::string modulesPath = 
 | 
	
	
		
			
				|  | @@ -2948,22 +2992,11 @@ int cmake::GetSystemInformation(std::vector<std::string>& args)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    
 | 
	
		
			
				|  |  |    // do we write to a file or to stdout?
 | 
	
		
			
				|  |  | -  std::string resultFile;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  if (args.size() == 1)
 | 
	
		
			
				|  |  | +  if (resultFile.size() == 0)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      resultFile = cwd;
 | 
	
		
			
				|  |  |      resultFile += "/__cmake_systeminformation/results.txt";
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -  else
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -    if (!cmSystemTools::FileIsFullPath(args[1].c_str()))
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -      resultFile += cwd;
 | 
	
		
			
				|  |  | -      resultFile += "/";
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    resultFile = args[1];
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // now run cmake on the CMakeLists file
 | 
	
		
			
				|  |  |    cmSystemTools::ChangeDirectory(destPath.c_str());
 |