[Cmake-commits] CMake branch, next, updated. v2.8.7-2678-g21b4d11

David Cole david.cole at kitware.com
Fri Feb 17 11:32:27 EST 2012


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  21b4d1168a86a62b21490c85acb9a4746bda4b2a (commit)
       via  ba89e92ba622ed821a6adf31e8a6633d574ff656 (commit)
      from  a341fe5a8f14f9fbf314e7ac927795ba38ef8c13 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=21b4d1168a86a62b21490c85acb9a4746bda4b2a
commit 21b4d1168a86a62b21490c85acb9a4746bda4b2a
Merge: a341fe5 ba89e92
Author:     David Cole <david.cole at kitware.com>
AuthorDate: Fri Feb 17 11:32:21 2012 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Feb 17 11:32:21 2012 -0500

    Merge topic 'fix-12189-support-SBCS-in-VS' into next
    
    ba89e92 Visual Studio: Allow setting Single Byte Character Set (#12189)


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ba89e92ba622ed821a6adf31e8a6633d574ff656
commit ba89e92ba622ed821a6adf31e8a6633d574ff656
Author:     Aaron C. Meadows <corwin at shadowguarddev.com>
AuthorDate: Thu Feb 16 15:27:05 2012 -0600
Commit:     David Cole <david.cole at kitware.com>
CommitDate: Fri Feb 17 11:30:23 2012 -0500

    Visual Studio: Allow setting Single Byte Character Set (#12189)
    
    For Visual Studio using the Preprocessor Define _SBCS. This behavior
    is similar to the way that _UNICODE and _MBCS work already.
    
    Added tests to confirm this behavior.

diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index 11a0387..a23d6a1 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -774,6 +774,10 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
     {
     fout << "\t\t\tCharacterSet=\"1\">\n";
     }
+  else if(targetOptions.UsingSBCS())
+    {
+    fout << "\t\t\tCharacterSet=\"0\">\n";
+    }
   else
     {
     fout << "\t\t\tCharacterSet=\"2\">\n";
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 9418761..ab74265 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -394,6 +394,11 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues()
       {
       this->WriteString("<CharacterSet>Unicode</CharacterSet>\n", 2);
       }
+    else if (this->Target->GetType() <= cmTarget::MODULE_LIBRARY &&
+       this->ClOptions[*i]->UsingSBCS())
+      {
+      this->WriteString("<CharacterSet>NotSet</CharacterSet>\n", 2);
+      }
     else
       {
       this->WriteString("<CharacterSet>MultiByte</CharacterSet>\n", 2);
diff --git a/Source/cmVisualStudioGeneratorOptions.cxx b/Source/cmVisualStudioGeneratorOptions.cxx
index 41230e7..9369af6 100644
--- a/Source/cmVisualStudioGeneratorOptions.cxx
+++ b/Source/cmVisualStudioGeneratorOptions.cxx
@@ -117,6 +117,20 @@ bool cmVisualStudioGeneratorOptions::UsingUnicode()
     }
   return false;
 }
+//----------------------------------------------------------------------------
+bool cmVisualStudioGeneratorOptions::UsingSBCS()
+{
+  // Look for the a _SBCS definition.
+  for(std::vector<std::string>::const_iterator di = this->Defines.begin();
+      di != this->Defines.end(); ++di)
+    {
+    if(*di == "_SBCS")
+      {
+      return true;
+      }
+    }
+  return false;
+}
 
 //----------------------------------------------------------------------------
 void cmVisualStudioGeneratorOptions::Parse(const char* flags)
diff --git a/Source/cmVisualStudioGeneratorOptions.h b/Source/cmVisualStudioGeneratorOptions.h
index 51a1362..a1a55da 100644
--- a/Source/cmVisualStudioGeneratorOptions.h
+++ b/Source/cmVisualStudioGeneratorOptions.h
@@ -48,6 +48,7 @@ public:
 
   // Check for specific options.
   bool UsingUnicode();
+  bool UsingSBCS();
 
   bool IsDebug();
   // Write options to output.
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 9c97828..da656d4 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1306,6 +1306,8 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
   endif()
 
   IF(${CMAKE_TEST_GENERATOR} MATCHES "Visual Studio")
+    ADD_TEST_MACRO(SBCS SBCS)
+
     ADD_TEST(VSExternalInclude ${CMAKE_CTEST_COMMAND}
       --build-and-test
       "${CMake_SOURCE_DIR}/Tests/VSExternalInclude"
diff --git a/Tests/SBCS/CMakeLists.txt b/Tests/SBCS/CMakeLists.txt
new file mode 100644
index 0000000..b3c3c2c
--- /dev/null
+++ b/Tests/SBCS/CMakeLists.txt
@@ -0,0 +1,6 @@
+# a SBCS test case
+project (SBCS)
+
+add_definitions(-D_SBCS)
+
+add_executable (SBCS SBCS.cxx)
diff --git a/Tests/SBCS/SBCS.cxx b/Tests/SBCS/SBCS.cxx
new file mode 100644
index 0000000..6ce2c9f
--- /dev/null
+++ b/Tests/SBCS/SBCS.cxx
@@ -0,0 +1,22 @@
+// Test to verify that _SBCS being defined causes CharacterSet to be set to 0 (Single Byte Character Set)
+
+int main ()
+{
+#ifdef _UNICODE
+  bool UnicodeSet=true;
+#else
+  bool UnicodeSet=false;
+#endif
+
+#ifdef _MBCS
+  bool MBCSSet=true;
+#else
+  bool MBCSSet=false;
+#endif
+
+  // if neither _UNICODE nor _MBCS is set, CharacterSet must be set to SBCS.
+  bool SBCSSet=(!UnicodeSet && !MBCSSet);
+
+  // Reverse boolean to indicate error case correctly
+  return !SBCSSet;
+}

-----------------------------------------------------------------------

Summary of changes:
 Source/cmLocalVisualStudio7Generator.cxx   |    4 ++++
 Source/cmVisualStudio10TargetGenerator.cxx |    5 +++++
 Source/cmVisualStudioGeneratorOptions.cxx  |   14 ++++++++++++++
 Source/cmVisualStudioGeneratorOptions.h    |    1 +
 Tests/CMakeLists.txt                       |    2 ++
 Tests/SBCS/CMakeLists.txt                  |    6 ++++++
 Tests/SBCS/SBCS.cxx                        |   22 ++++++++++++++++++++++
 7 files changed, 54 insertions(+), 0 deletions(-)
 create mode 100644 Tests/SBCS/CMakeLists.txt
 create mode 100644 Tests/SBCS/SBCS.cxx


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list