summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBastien Schatt <bastien.schatt@magestik.fr>2017-04-03 16:47:32 (GMT)
committerBrad King <brad.king@kitware.com>2017-04-04 13:49:00 (GMT)
commit38fd5866c04d734ea78a4327de7a9ce08b6b8341 (patch)
tree7db989d944e012f2a2cd48eb8ceeaab356c73b47
parent53e9c2d2a31f33f5d72c2df5558ffa7213a54a04 (diff)
downloadCMake-38fd5866c04d734ea78a4327de7a9ce08b6b8341.zip
CMake-38fd5866c04d734ea78a4327de7a9ce08b6b8341.tar.gz
CMake-38fd5866c04d734ea78a4327de7a9ce08b6b8341.tar.bz2
Add GENERATOR_IS_MULTI_CONFIG global property
Fixes: #16768
-rw-r--r--Help/manual/cmake-properties.7.rst1
-rw-r--r--Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst9
-rw-r--r--Help/release/dev/prop-is-multi-config.rst6
-rw-r--r--Source/cmGlobalGenerator.cxx1
-rw-r--r--Source/cmGlobalVisualStudioGenerator.cxx1
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx2
-rw-r--r--Source/cmState.cxx14
-rw-r--r--Source/cmState.h4
8 files changed, 38 insertions, 0 deletions
diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst
index 072d7c5..27c75dc 100644
--- a/Help/manual/cmake-properties.7.rst
+++ b/Help/manual/cmake-properties.7.rst
@@ -31,6 +31,7 @@ Properties of Global Scope
/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS
/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS
/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING
+ /prop_gbl/GENERATOR_IS_MULTI_CONFIG
/prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE
/prop_gbl/GLOBAL_DEPENDS_NO_CYCLES
/prop_gbl/IN_TRY_COMPILE
diff --git a/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst b/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst
new file mode 100644
index 0000000..b8ec8a6
--- /dev/null
+++ b/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst
@@ -0,0 +1,9 @@
+GENERATOR_IS_MULTI_CONFIG
+-------------------------
+
+Read-only property that is true on multi-configuration generators.
+
+True when using a multi-configuration generator
+(such as :ref:`Visual Studio Generators` or :generator:`Xcode`).
+Multi-config generators use :variable:`CMAKE_CONFIGURATION_TYPES`
+as the set of configurations and ignore :variable:`CMAKE_BUILD_TYPE`.
diff --git a/Help/release/dev/prop-is-multi-config.rst b/Help/release/dev/prop-is-multi-config.rst
new file mode 100644
index 0000000..52de563
--- /dev/null
+++ b/Help/release/dev/prop-is-multi-config.rst
@@ -0,0 +1,6 @@
+prop-is-multi-config
+--------------------
+
+* A :prop_gbl:`GENERATOR_IS_MULTI_CONFIG` global property was
+ added to determine whether the current generator is a multi-configuration
+ generator (such as :ref:`Visual Studio Generators` or :generator:`Xcode`).
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 851290a..ce83e2e 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -96,6 +96,7 @@ cmGlobalGenerator::cmGlobalGenerator(cmake* cm)
this->ConfigureDoneCMP0026AndCMP0024 = false;
this->FirstTimeProgress = 0.0f;
+ cm->GetState()->SetIsGeneratorMultiConfig(false);
cm->GetState()->SetMinGWMake(false);
cm->GetState()->SetMSYSShell(false);
cm->GetState()->SetNMake(false);
diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx
index eb92b83..6d16881 100644
--- a/Source/cmGlobalVisualStudioGenerator.cxx
+++ b/Source/cmGlobalVisualStudioGenerator.cxx
@@ -20,6 +20,7 @@
cmGlobalVisualStudioGenerator::cmGlobalVisualStudioGenerator(cmake* cm)
: cmGlobalGenerator(cm)
{
+ cm->GetState()->SetIsGeneratorMultiConfig(true);
cm->GetState()->SetWindowsShell(true);
cm->GetState()->SetWindowsVSIDE(true);
}
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 416af14..febe95d 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -151,6 +151,8 @@ cmGlobalXCodeGenerator::cmGlobalXCodeGenerator(cmake* cm,
this->CurrentMakefile = 0;
this->CurrentLocalGenerator = 0;
this->XcodeBuildCommandInitialized = false;
+
+ cm->GetState()->SetIsGeneratorMultiConfig(true);
}
cmGlobalGeneratorFactory* cmGlobalXCodeGenerator::NewFactory()
diff --git a/Source/cmState.cxx b/Source/cmState.cxx
index 18d5ea1..0f49731 100644
--- a/Source/cmState.cxx
+++ b/Source/cmState.cxx
@@ -20,6 +20,7 @@
cmState::cmState()
: IsInTryCompile(false)
+ , IsGeneratorMultiConfig(false)
, WindowsShell(false)
, WindowsVSIDE(false)
, WatcomWMake(false)
@@ -364,6 +365,16 @@ void cmState::SetIsInTryCompile(bool b)
this->IsInTryCompile = b;
}
+bool cmState::GetIsGeneratorMultiConfig() const
+{
+ return this->IsGeneratorMultiConfig;
+}
+
+void cmState::SetIsGeneratorMultiConfig(bool b)
+{
+ this->IsGeneratorMultiConfig = b;
+}
+
void cmState::RenameCommand(std::string const& oldName,
std::string const& newName)
{
@@ -481,6 +492,9 @@ const char* cmState::GetGlobalProperty(const std::string& prop)
} else if (prop == "IN_TRY_COMPILE") {
this->SetGlobalProperty("IN_TRY_COMPILE",
this->IsInTryCompile ? "1" : "0");
+ } else if (prop == "GENERATOR_IS_MULTI_CONFIG") {
+ this->SetGlobalProperty("GENERATOR_IS_MULTI_CONFIG",
+ this->IsGeneratorMultiConfig ? "1" : "0");
} else if (prop == "ENABLED_LANGUAGES") {
std::string langs;
langs = cmJoin(this->EnabledLanguages, ";");
diff --git a/Source/cmState.h b/Source/cmState.h
index 41ffcdc..5659023 100644
--- a/Source/cmState.h
+++ b/Source/cmState.h
@@ -116,6 +116,9 @@ public:
bool GetIsInTryCompile() const;
void SetIsInTryCompile(bool b);
+ bool GetIsGeneratorMultiConfig() const;
+ void SetIsGeneratorMultiConfig(bool b);
+
cmCommand* GetCommand(std::string const& name) const;
void AddCommand(cmCommand* command);
void RemoveUnscriptableCommands();
@@ -174,6 +177,7 @@ private:
std::string SourceDirectory;
std::string BinaryDirectory;
bool IsInTryCompile;
+ bool IsGeneratorMultiConfig;
bool WindowsShell;
bool WindowsVSIDE;
bool WatcomWMake;