|  | @@ -904,15 +904,17 @@ cmFileCommand::HandleDifferentCommand(std::vector<std::string> const& args)
 | 
	
		
			
				|  |  |  struct cmFileInstaller
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    // Methods to actually install files.
 | 
	
		
			
				|  |  | -  bool InstallFile(const char* fromFile, const char* toFile, bool always);
 | 
	
		
			
				|  |  | -  bool InstallDirectory(const char* source, const char* destination,
 | 
	
		
			
				|  |  | -                        bool always);
 | 
	
		
			
				|  |  | +  bool InstallFile(const char* fromFile, const char* toFile);
 | 
	
		
			
				|  |  | +  bool InstallDirectory(const char* source, const char* destination);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // All instances need the file command and makefile using them.
 | 
	
		
			
				|  |  |    cmFileInstaller(cmFileCommand* command):
 | 
	
		
			
				|  |  |      FileCommand(command), Makefile(command->GetMakefile()),
 | 
	
		
			
				|  |  | -    DestDirLength(0), MatchlessFiles(true)
 | 
	
		
			
				|  |  | +    Always(false), DestDirLength(0), MatchlessFiles(true)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | +    // Check whether to copy files always or only if they have changed.
 | 
	
		
			
				|  |  | +    this->Always =
 | 
	
		
			
				|  |  | +      cmSystemTools::IsOn(cmSystemTools::GetEnv("CMAKE_INSTALL_ALWAYS"));
 | 
	
		
			
				|  |  |      // Get the current manifest.
 | 
	
		
			
				|  |  |      this->Manifest =
 | 
	
		
			
				|  |  |        this->Makefile->GetSafeDefinition("CMAKE_INSTALL_MANIFEST_FILES");
 | 
	
	
		
			
				|  | @@ -927,6 +929,7 @@ struct cmFileInstaller
 | 
	
		
			
				|  |  |  private:
 | 
	
		
			
				|  |  |    cmFileCommand* FileCommand;
 | 
	
		
			
				|  |  |    cmMakefile* Makefile;
 | 
	
		
			
				|  |  | +  bool Always;
 | 
	
		
			
				|  |  |    cmFileTimeComparison FileTimes;
 | 
	
		
			
				|  |  |  public:
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1022,12 +1025,11 @@ public:
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  private:
 | 
	
		
			
				|  |  | -  bool InstallSymlink(const char* fromFile, const char* toFile, bool always);
 | 
	
		
			
				|  |  | +  bool InstallSymlink(const char* fromFile, const char* toFile);
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | -bool cmFileInstaller::InstallSymlink(const char* fromFile, const char* toFile,
 | 
	
		
			
				|  |  | -                                     bool always)
 | 
	
		
			
				|  |  | +bool cmFileInstaller::InstallSymlink(const char* fromFile, const char* toFile)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    // Read the original symlink.
 | 
	
		
			
				|  |  |    std::string symlinkTarget;
 | 
	
	
		
			
				|  | @@ -1043,7 +1045,7 @@ bool cmFileInstaller::InstallSymlink(const char* fromFile, const char* toFile,
 | 
	
		
			
				|  |  |    // Compare the symlink value to that at the destination if not
 | 
	
		
			
				|  |  |    // always installing.
 | 
	
		
			
				|  |  |    bool copy = true;
 | 
	
		
			
				|  |  | -  if(!always)
 | 
	
		
			
				|  |  | +  if(!this->Always)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      std::string oldSymlinkTarget;
 | 
	
		
			
				|  |  |      if(cmSystemTools::ReadSymlink(toFile, oldSymlinkTarget))
 | 
	
	
		
			
				|  | @@ -1083,8 +1085,7 @@ bool cmFileInstaller::InstallSymlink(const char* fromFile, const char* toFile,
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | -bool cmFileInstaller::InstallFile(const char* fromFile, const char* toFile,
 | 
	
		
			
				|  |  | -                                  bool always)
 | 
	
		
			
				|  |  | +bool cmFileInstaller::InstallFile(const char* fromFile, const char* toFile)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    // Collect any properties matching this file name.
 | 
	
		
			
				|  |  |    MatchProperties match_properties =
 | 
	
	
		
			
				|  | @@ -1099,12 +1100,12 @@ bool cmFileInstaller::InstallFile(const char* fromFile, const char* toFile,
 | 
	
		
			
				|  |  |    // Short-circuit for symbolic links.
 | 
	
		
			
				|  |  |    if(cmSystemTools::FileIsSymlink(fromFile))
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -    return this->InstallSymlink(fromFile, toFile, always);
 | 
	
		
			
				|  |  | +    return this->InstallSymlink(fromFile, toFile);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // Determine whether we will copy the file.
 | 
	
		
			
				|  |  |    bool copy = true;
 | 
	
		
			
				|  |  | -  if(!always)
 | 
	
		
			
				|  |  | +  if(!this->Always)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      // If both files exist with the same time do not copy.
 | 
	
		
			
				|  |  |      if(!this->FileTimes.FileTimesDiffer(fromFile, toFile))
 | 
	
	
		
			
				|  | @@ -1132,7 +1133,7 @@ bool cmFileInstaller::InstallFile(const char* fromFile, const char* toFile,
 | 
	
		
			
				|  |  |    this->ManifestAppend(toFile);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // Set the file modification time of the destination file.
 | 
	
		
			
				|  |  | -  if(copy && !always)
 | 
	
		
			
				|  |  | +  if(copy && !this->Always)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      if (!cmSystemTools::CopyFileTime(fromFile, toFile))
 | 
	
		
			
				|  |  |        {
 | 
	
	
		
			
				|  | @@ -1165,8 +1166,7 @@ bool cmFileInstaller::InstallFile(const char* fromFile, const char* toFile,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  bool cmFileInstaller::InstallDirectory(const char* source,
 | 
	
		
			
				|  |  | -                                       const char* destination,
 | 
	
		
			
				|  |  | -                                       bool always)
 | 
	
		
			
				|  |  | +                                       const char* destination)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    // Collect any properties matching this directory name.
 | 
	
		
			
				|  |  |    MatchProperties match_properties =
 | 
	
	
		
			
				|  | @@ -1181,7 +1181,7 @@ bool cmFileInstaller::InstallDirectory(const char* source,
 | 
	
		
			
				|  |  |    // Short-circuit for symbolic links.
 | 
	
		
			
				|  |  |    if(cmSystemTools::FileIsSymlink(source))
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -    return this->InstallSymlink(source, destination, always);
 | 
	
		
			
				|  |  | +    return this->InstallSymlink(source, destination);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // Inform the user about this directory installation.
 | 
	
	
		
			
				|  | @@ -1256,7 +1256,7 @@ bool cmFileInstaller::InstallDirectory(const char* source,
 | 
	
		
			
				|  |  |          cmsys_stl::string toDir = destination;
 | 
	
		
			
				|  |  |          toDir += "/";
 | 
	
		
			
				|  |  |          toDir += dir.GetFile(fileNum);
 | 
	
		
			
				|  |  | -        if(!this->InstallDirectory(fromPath.c_str(), toDir.c_str(), always))
 | 
	
		
			
				|  |  | +        if(!this->InstallDirectory(fromPath.c_str(), toDir.c_str()))
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |            return false;
 | 
	
		
			
				|  |  |            }
 | 
	
	
		
			
				|  | @@ -1267,7 +1267,7 @@ bool cmFileInstaller::InstallDirectory(const char* source,
 | 
	
		
			
				|  |  |          std::string toFile = destination;
 | 
	
		
			
				|  |  |          toFile += "/";
 | 
	
		
			
				|  |  |          toFile += dir.GetFile(fileNum);
 | 
	
		
			
				|  |  | -        if(!this->InstallFile(fromPath.c_str(), toFile.c_str(), always))
 | 
	
		
			
				|  |  | +        if(!this->InstallFile(fromPath.c_str(), toFile.c_str()))
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |            return false;
 | 
	
		
			
				|  |  |            }
 | 
	
	
		
			
				|  | @@ -2041,11 +2041,6 @@ bool cmFileCommand::DoInstall( cmFileInstaller& installer,
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    typedef std::set<cmStdString>::const_iterator iter_type;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // Check whether files should be copied always or only if they have
 | 
	
		
			
				|  |  | -  // changed.
 | 
	
		
			
				|  |  | -  bool copy_always =
 | 
	
		
			
				|  |  | -    cmSystemTools::IsOn(cmSystemTools::GetEnv("CMAKE_INSTALL_ALWAYS"));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    // Handle each file listed.
 | 
	
		
			
				|  |  |    for (std::vector<std::string>::size_type i = 0; i < files.size(); i ++ )
 | 
	
		
			
				|  |  |      {
 | 
	
	
		
			
				|  | @@ -2082,8 +2077,7 @@ bool cmFileCommand::DoInstall( cmFileInstaller& installer,
 | 
	
		
			
				|  |  |            cmSystemTools::FileIsDirectory(fromFile.c_str())))
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |          // Try installing this directory.
 | 
	
		
			
				|  |  | -        if(!installer.InstallDirectory(fromFile.c_str(), toFile.c_str(),
 | 
	
		
			
				|  |  | -                                       copy_always))
 | 
	
		
			
				|  |  | +        if(!installer.InstallDirectory(fromFile.c_str(), toFile.c_str()))
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |            return false;
 | 
	
		
			
				|  |  |            }
 | 
	
	
		
			
				|  | @@ -2091,8 +2085,7 @@ bool cmFileCommand::DoInstall( cmFileInstaller& installer,
 | 
	
		
			
				|  |  |        else if(cmSystemTools::FileExists(fromFile.c_str()))
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |          // Install this file.
 | 
	
		
			
				|  |  | -        if(!installer.InstallFile(fromFile.c_str(), toFile.c_str(),
 | 
	
		
			
				|  |  | -                                  copy_always))
 | 
	
		
			
				|  |  | +        if(!installer.InstallFile(fromFile.c_str(), toFile.c_str()))
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |            return false;
 | 
	
		
			
				|  |  |            }
 |