summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2013-09-16 18:28:51 (GMT)
committerBrad King <brad.king@kitware.com>2013-10-15 14:47:38 (GMT)
commit277bd1db98194fe7b48627add4442e9b7a8207a7 (patch)
tree3a77d9cf12f239d93c0f0c8ffab82f2e79af1c8c
parent678aaad1336b9581889d7d219a2778b0b070a560 (diff)
downloadCMake-277bd1db98194fe7b48627add4442e9b7a8207a7.zip
CMake-277bd1db98194fe7b48627add4442e9b7a8207a7.tar.gz
CMake-277bd1db98194fe7b48627add4442e9b7a8207a7.tar.bz2
Drop CMAKE_STRICT mode
With our modern development workflow it is less likely a property will be added to C++ code without documentation. This mode only existed to support the DocTest which had very limited coverage of the properties anyway.
-rw-r--r--CMakeLists.txt4
-rw-r--r--Source/cmConfigure.cmake.h.in1
-rw-r--r--Source/cmMakefile.cxx15
-rw-r--r--Source/cmPropertyMap.cxx37
-rw-r--r--Source/cmake.cxx111
-rw-r--r--Source/cmake.h4
-rw-r--r--Tests/CMakeLists.txt3
-rw-r--r--Tests/DocTest/CMakeLists.txt7
-rw-r--r--Tests/DocTest/DocTest.cxx33
9 files changed, 0 insertions, 215 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index eb515d7..620b5d8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -536,10 +536,6 @@ configure_file(
"${CMAKE_CURRENT_BINARY_DIR}/DartLocal.conf"
COPYONLY)
-option(CMAKE_STRICT
- "Perform strict testing to record property and variable access. Can be used to report any undefined properties or variables" OFF)
-mark_as_advanced(CMAKE_STRICT)
-
if(NOT CMake_VERSION_IS_RELEASE)
if("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" AND
NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS 4.2)
diff --git a/Source/cmConfigure.cmake.h.in b/Source/cmConfigure.cmake.h.in
index ab53b1d..348f5d3 100644
--- a/Source/cmConfigure.cmake.h.in
+++ b/Source/cmConfigure.cmake.h.in
@@ -16,7 +16,6 @@
#cmakedefine HAVE_ENVIRON_NOT_REQUIRE_PROTOTYPE
#cmakedefine HAVE_UNSETENV
#cmakedefine CMAKE_USE_ELF_PARSER
-#cmakedefine CMAKE_STRICT
#define CMAKE_ROOT_DIR "${CMake_SOURCE_DIR}"
#define CMAKE_BUILD_DIR "${CMake_BINARY_DIR}"
#define CMAKE_DATA_DIR "/@CMAKE_DATA_DIR@"
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 40e55c2..063d560 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -1778,14 +1778,6 @@ void cmMakefile::AddDefinition(const char* name, const char* value)
return;
}
-#ifdef CMAKE_STRICT
- if (this->GetCMakeInstance())
- {
- this->GetCMakeInstance()->
- RecordPropertyAccess(name,cmProperty::VARIABLE);
- }
-#endif
-
this->Internal->VarStack.top().Set(name, value);
if (this->Internal->VarUsageStack.size() &&
this->VariableInitialized(name))
@@ -2448,13 +2440,6 @@ bool cmMakefile::IsDefinitionSet(const char* name) const
const char* cmMakefile::GetDefinition(const char* name) const
{
-#ifdef CMAKE_STRICT
- if (this->GetCMakeInstance())
- {
- this->GetCMakeInstance()->
- RecordPropertyAccess(name,cmProperty::VARIABLE);
- }
-#endif
if (this->WarnUnused)
{
this->Internal->VarUsageStack.top().insert(name);
diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx
index 78f378a..e94e3e9 100644
--- a/Source/cmPropertyMap.cxx
+++ b/Source/cmPropertyMap.cxx
@@ -40,19 +40,7 @@ void cmPropertyMap::SetProperty(const char *name, const char *value,
this->erase(name);
return;
}
-#ifdef CMAKE_STRICT
- if (!this->CMakeInstance)
- {
- cmSystemTools::Error("CMakeInstance not set on a property map!");
- abort();
- }
- else
- {
- this->CMakeInstance->RecordPropertyAccess(name,scope);
- }
-#else
(void)scope;
-#endif
cmProperty *prop = this->GetOrCreateProperty(name);
prop->Set(name,value);
@@ -66,19 +54,7 @@ void cmPropertyMap::AppendProperty(const char* name, const char* value,
{
return;
}
-#ifdef CMAKE_STRICT
- if (!this->CMakeInstance)
- {
- cmSystemTools::Error("CMakeInstance not set on a property map!");
- abort();
- }
- else
- {
- this->CMakeInstance->RecordPropertyAccess(name,scope);
- }
-#else
(void)scope;
-#endif
cmProperty *prop = this->GetOrCreateProperty(name);
prop->Append(name,value,asString);
@@ -95,19 +71,6 @@ const char *cmPropertyMap
return 0;
}
- // has the property been defined?
-#ifdef CMAKE_STRICT
- if (!this->CMakeInstance)
- {
- cmSystemTools::Error("CMakeInstance not set on a property map!");
- abort();
- }
- else
- {
- this->CMakeInstance->RecordPropertyAccess(name,scope);
- }
-#endif
-
cmPropertyMap::const_iterator it = this->find(name);
if (it == this->end())
{
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index d2961c0..c34c369 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -1865,11 +1865,6 @@ int cmake::Generate()
{
return -1;
}
- if (this->GetProperty("REPORT_UNDEFINED_PROPERTIES"))
- {
- this->ReportUndefinedPropertyAccesses
- (this->GetProperty("REPORT_UNDEFINED_PROPERTIES"));
- }
// Save the cache again after a successful Generate so that any internal
// variables created during Generate are saved. (Specifically target GUIDs
// for the Visual Studio and Xcode generators.)
@@ -2646,112 +2641,6 @@ cmPropertyDefinition *cmake
return 0;
}
-void cmake::RecordPropertyAccess(const char *name,
- cmProperty::ScopeType scope)
-{
- this->AccessedProperties.insert
- (std::pair<cmStdString,cmProperty::ScopeType>(name,scope));
-}
-
-void cmake::ReportUndefinedPropertyAccesses(const char *filename)
-{
- if(!this->GlobalGenerator)
- { return; }
- FILE *progFile = fopen(filename,"w");
- if(!progFile)
- { return; }
-
- // what are the enabled languages?
- std::vector<std::string> enLangs;
- this->GlobalGenerator->GetEnabledLanguages(enLangs);
-
- // Common configuration names.
- // TODO: Compute current configuration(s).
- std::vector<std::string> enConfigs;
- enConfigs.push_back("");
- enConfigs.push_back("DEBUG");
- enConfigs.push_back("RELEASE");
- enConfigs.push_back("MINSIZEREL");
- enConfigs.push_back("RELWITHDEBINFO");
-
- // take all the defined properties and add definitions for all the enabled
- // languages
- std::set<std::pair<cmStdString,cmProperty::ScopeType> > aliasedProperties;
- std::map<cmProperty::ScopeType, cmPropertyDefinitionMap>::iterator i;
- i = this->PropertyDefinitions.begin();
- for (;i != this->PropertyDefinitions.end(); ++i)
- {
- cmPropertyDefinitionMap::iterator j;
- for (j = i->second.begin(); j != i->second.end(); ++j)
- {
- // TODO: What if both <LANG> and <CONFIG> appear?
- if (j->first.find("<CONFIG>") != std::string::npos)
- {
- std::vector<std::string>::const_iterator k;
- for (k = enConfigs.begin(); k != enConfigs.end(); ++k)
- {
- std::string tmp = j->first;
- cmSystemTools::ReplaceString(tmp, "<CONFIG>", k->c_str());
- // add alias
- aliasedProperties.insert
- (std::pair<cmStdString,cmProperty::ScopeType>(tmp,i->first));
- }
- }
- if (j->first.find("<LANG>") != std::string::npos)
- {
- std::vector<std::string>::const_iterator k;
- for (k = enLangs.begin(); k != enLangs.end(); ++k)
- {
- std::string tmp = j->first;
- cmSystemTools::ReplaceString(tmp, "<LANG>", k->c_str());
- // add alias
- aliasedProperties.insert
- (std::pair<cmStdString,cmProperty::ScopeType>(tmp,i->first));
- }
- }
- }
- }
-
- std::set<std::pair<cmStdString,cmProperty::ScopeType> >::const_iterator ap;
- ap = this->AccessedProperties.begin();
- for (;ap != this->AccessedProperties.end(); ++ap)
- {
- if (!this->IsPropertyDefined(ap->first.c_str(),ap->second) &&
- aliasedProperties.find(std::pair<cmStdString,cmProperty::ScopeType>
- (ap->first,ap->second)) ==
- aliasedProperties.end())
- {
- const char *scopeStr = "";
- switch (ap->second)
- {
- case cmProperty::TARGET:
- scopeStr = "TARGET";
- break;
- case cmProperty::SOURCE_FILE:
- scopeStr = "SOURCE_FILE";
- break;
- case cmProperty::DIRECTORY:
- scopeStr = "DIRECTORY";
- break;
- case cmProperty::TEST:
- scopeStr = "TEST";
- break;
- case cmProperty::VARIABLE:
- scopeStr = "VARIABLE";
- break;
- case cmProperty::CACHED_VARIABLE:
- scopeStr = "CACHED_VARIABLE";
- break;
- default:
- scopeStr = "unknown";
- break;
- }
- fprintf(progFile, "%s with scope %s\n", ap->first.c_str(), scopeStr);
- }
- }
- fclose(progFile);
-}
-
bool cmake::IsPropertyDefined(const char *name, cmProperty::ScopeType scope)
{
return this->PropertyDefinitions[scope].IsPropertyDefined(name);
diff --git a/Source/cmake.h b/Source/cmake.h
index d33ba34..7dc3ccc 100644
--- a/Source/cmake.h
+++ b/Source/cmake.h
@@ -358,10 +358,6 @@ class cmake
debugging configurations.*/
std::vector<std::string> const& GetDebugConfigs();
- // record accesses of properties and variables
- void RecordPropertyAccess(const char *name, cmProperty::ScopeType scope);
- void ReportUndefinedPropertyAccesses(const char *filename);
-
// Define the properties
static void DefineProperties(cmake *cm);
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 0e0455c..2f6a456 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -508,9 +508,6 @@ if(BUILD_TESTING)
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SubProject")
endif()
- if (CMAKE_STRICT)
- ADD_TEST_MACRO(DocTest DocTest)
- endif ()
# macro to add a test that will build a nightly release
# of CMake for given platform using the release scripts
macro(ADD_NIGHTLY_BUILD_TEST name script)
diff --git a/Tests/DocTest/CMakeLists.txt b/Tests/DocTest/CMakeLists.txt
deleted file mode 100644
index 837328e..0000000
--- a/Tests/DocTest/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-cmake_minimum_required (VERSION 2.6)
-project (DocTest)
-
-add_executable (DocTest DocTest.cxx)
-
-set_property(GLOBAL PROPERTY REPORT_UNDEFINED_PROPERTIES
- "${CMAKE_CURRENT_BINARY_DIR}/UndefinedProperties.txt")
diff --git a/Tests/DocTest/DocTest.cxx b/Tests/DocTest/DocTest.cxx
deleted file mode 100644
index a8a62ab..0000000
--- a/Tests/DocTest/DocTest.cxx
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <fstream>
-#include <iostream>
-#include <stdio.h>
-
-int main ()
-{
- int result = 0;
-
- // parse the dart test file
- std::ifstream fin("UndefinedProperties.txt");
- if(!fin)
- {
- fprintf(stderr,"failed to find undefined properties file");
- return 1;
- }
-
- char buffer[1024];
- while ( fin )
- {
- buffer[0] = 0;
- fin.getline(buffer, 1023);
- buffer[1023] = 0;
- std::string line = buffer;
- if(line.size() && line.find("with scope VARIABLE") == std::string::npos)
- {
- fprintf(stderr, "%s\n", line.c_str());
- result = 1;
- }
- }
- fin.close();
-
- return result;
-}