diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx
index db73a3438131f862d3e883911f410bee27d5008a..b0a30a1cad1ac7b525228bd7410e79b9a4258c92 100644
--- a/Source/cmOutputConverter.cxx
+++ b/Source/cmOutputConverter.cxx
@@ -27,7 +27,7 @@ cmOutputConverter::cmOutputConverter(cmState::Snapshot snapshot)
 std::string
 cmOutputConverter::ConvertToOutputForExistingCommon(const std::string& remote,
                                                     std::string const& result,
-                                                    OutputFormat format)
+                                                    OutputFormat format) const
 {
   // If this is a windows shell, the result has a space, and the path
   // already exists, we can use a short-path to reference it without a
@@ -50,7 +50,7 @@ cmOutputConverter::ConvertToOutputForExistingCommon(const std::string& remote,
 std::string
 cmOutputConverter::ConvertToOutputForExisting(const std::string& remote,
                                               RelativeRoot local,
-                                              OutputFormat format)
+                                              OutputFormat format) const
 {
   static_cast<void>(local);
 
@@ -65,7 +65,7 @@ cmOutputConverter::ConvertToOutputForExisting(const std::string& remote,
 std::string
 cmOutputConverter::ConvertToOutputForExisting(RelativeRoot remote,
                                               const std::string& local,
-                                              OutputFormat format)
+                                              OutputFormat format) const
 {
   // Perform standard conversion.
   std::string result = this->Convert(remote, local, format, true);
@@ -76,7 +76,7 @@ cmOutputConverter::ConvertToOutputForExisting(RelativeRoot remote,
 }
 
 //----------------------------------------------------------------------------
-const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot)
+const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot) const
 {
   switch (relroot)
     {
@@ -91,7 +91,7 @@ const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot)
 
 std::string cmOutputConverter::Convert(const std::string& source,
                                        RelativeRoot relative,
-                                       OutputFormat output)
+                                       OutputFormat output) const
 {
   // Convert the path to a relative path.
   std::string result = source;
@@ -125,7 +125,7 @@ std::string cmOutputConverter::Convert(const std::string& source,
 
 //----------------------------------------------------------------------------
 std::string cmOutputConverter::ConvertToOutputFormat(const std::string& source,
-                                                     OutputFormat output)
+                                                     OutputFormat output) const
 {
   std::string result = source;
   // Convert it to an output path.
@@ -163,7 +163,7 @@ std::string cmOutputConverter::ConvertToOutputFormat(const std::string& source,
 std::string cmOutputConverter::Convert(RelativeRoot remote,
                                       const std::string& local,
                                       OutputFormat output,
-                                      bool optional)
+                                      bool optional) const
 {
   const char* remotePath = this->GetRelativeRootPath(remote);
 
@@ -192,7 +192,7 @@ static bool cmOutputConverterNotAbove(const char* a, const char* b)
 std::string
 cmOutputConverter::ConvertToRelativePath(const std::vector<std::string>& local,
                                         const std::string& in_remote,
-                                        bool force)
+                                        bool force) const
 {
   // The path should never be quoted.
   assert(in_remote[0] != '\"');
@@ -318,7 +318,7 @@ static bool cmOutputConverterIsShellOperator(const std::string& str)
 std::string cmOutputConverter::EscapeForShell(const std::string& str,
                                              bool makeVars,
                                              bool forEcho,
-                                             bool useWatcomQuote)
+                                             bool useWatcomQuote) const
 {
   // Do not escape shell operators.
   if(cmOutputConverterIsShellOperator(str))
diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h
index 1d3f8c75f0d53c16c807b06e3bf4d36d197acd86..482a64b1ce1ce3ed32db564871d2664a2ee5cb3e 100644
--- a/Source/cmOutputConverter.h
+++ b/Source/cmOutputConverter.h
@@ -39,35 +39,35 @@ public:
   enum RelativeRoot { NONE, FULL, HOME, START, HOME_OUTPUT, START_OUTPUT };
   enum OutputFormat { UNCHANGED, MAKERULE, SHELL, WATCOMQUOTE, RESPONSE };
   std::string ConvertToOutputFormat(const std::string& source,
-                                    OutputFormat output);
+                                    OutputFormat output) const;
   std::string Convert(const std::string& remote, RelativeRoot local,
-                      OutputFormat output = UNCHANGED);
+                      OutputFormat output = UNCHANGED) const;
   std::string Convert(RelativeRoot remote, const std::string& local,
                       OutputFormat output = UNCHANGED,
-                      bool optional = false);
+                      bool optional = false) const;
 
   /**
     * Get path for the specified relative root.
     */
-  const char* GetRelativeRootPath(RelativeRoot relroot);
+  const char* GetRelativeRootPath(RelativeRoot relroot) const;
 
   ///! for existing files convert to output path and short path if spaces
   std::string ConvertToOutputForExisting(const std::string& remote,
                                          RelativeRoot local = START_OUTPUT,
-                                         OutputFormat format = SHELL);
+                                         OutputFormat format = SHELL) const;
 
   /** For existing path identified by RelativeRoot convert to output
       path and short path if spaces.  */
   std::string ConvertToOutputForExisting(RelativeRoot remote,
                                          const std::string& local = "",
-                                         OutputFormat format = SHELL);
+                                         OutputFormat format = SHELL) const;
 
   void SetLinkScriptShell(bool linkScriptShell);
 
   std::string EscapeForShell(const std::string& str,
                                     bool makeVars = false,
                                     bool forEcho = false,
-                                    bool useWatcomQuote = false);
+                                    bool useWatcomQuote = false) const;
 
   static std::string EscapeForCMake(const std::string& str);
 
@@ -88,14 +88,14 @@ public:
    */
   std::string ConvertToRelativePath(const std::vector<std::string>& local,
                                     const std::string& in_remote,
-                                    bool force = false);
+                                    bool force = false) const;
 
 private:
   cmState* GetState() const;
 
   std::string ConvertToOutputForExistingCommon(const std::string& remote,
                                                std::string const& result,
-                                               OutputFormat format);
+                                               OutputFormat format) const;
 
 private:
   cmState::Snapshot StateSnapshot;
diff --git a/Source/cmState.cxx b/Source/cmState.cxx
index a13c13f14a1953ae993806f15c957ce27fddbaee..f0c7e6dab0df2d14f4eb4f7efe977d0e0f372ef6 100644
--- a/Source/cmState.cxx
+++ b/Source/cmState.cxx
@@ -741,14 +741,14 @@ void cmState::Snapshot::SetCurrentBinaryDirectory(std::string const& dir)
 }
 
 std::vector<std::string> const&
-cmState::Snapshot::GetCurrentSourceDirectoryComponents()
+cmState::Snapshot::GetCurrentSourceDirectoryComponents() const
 {
   return this->Position->BuildSystemDirectory
       ->CurrentSourceDirectoryComponents;
 }
 
 std::vector<std::string> const&
-cmState::Snapshot::GetCurrentBinaryDirectoryComponents()
+cmState::Snapshot::GetCurrentBinaryDirectoryComponents() const
 {
   return this->Position->BuildSystemDirectory
       ->CurrentBinaryDirectoryComponents;
diff --git a/Source/cmState.h b/Source/cmState.h
index 353a6c60a41aecfac6214787010dce80fce16438..070a08b58ce0cc5e8be452c92183c40f0fab1e47 100644
--- a/Source/cmState.h
+++ b/Source/cmState.h
@@ -43,8 +43,10 @@ public:
     const char* GetCurrentBinaryDirectory() const;
     void SetCurrentBinaryDirectory(std::string const& dir);
 
-    std::vector<std::string> const& GetCurrentSourceDirectoryComponents();
-    std::vector<std::string> const& GetCurrentBinaryDirectoryComponents();
+    std::vector<std::string> const&
+    GetCurrentSourceDirectoryComponents() const;
+    std::vector<std::string> const&
+    GetCurrentBinaryDirectoryComponents() const;
 
     const char* GetRelativePathTopSource() const;
     const char* GetRelativePathTopBinary() const;