summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Help/prop_gbl/RULE_LAUNCH_COMPILE.rst10
-rw-r--r--Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst10
-rw-r--r--Help/prop_gbl/RULE_LAUNCH_LINK.rst10
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/cmMessageCommand.cxx2
-rw-r--r--Source/cmake.cxx10
-rw-r--r--Source/kwsys/EncodingC.c14
-rw-r--r--Source/kwsys/SystemTools.cxx18
-rw-r--r--Source/kwsys/testSystemTools.cxx22
9 files changed, 73 insertions, 25 deletions
diff --git a/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst b/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst
index 980843b..e0df878 100644
--- a/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst
+++ b/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst
@@ -3,7 +3,9 @@ RULE_LAUNCH_COMPILE
Specify a launcher for compile rules.
-Makefile generators prefix compiler commands with the given launcher
-command line. This is intended to allow launchers to intercept build
-problems with high granularity. Non-Makefile generators currently
-ignore this property.
+:ref:`Makefile Generators` and the :generator:`Ninja` generator prefix
+compiler commands with the given launcher command line.
+This is intended to allow launchers to intercept build problems
+with high granularity. Other generators ignore this property
+because their underlying build systems provide no hook to wrap
+individual commands with a launcher.
diff --git a/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst b/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst
index 9d4a25c..b20c59b 100644
--- a/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst
+++ b/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst
@@ -3,7 +3,9 @@ RULE_LAUNCH_CUSTOM
Specify a launcher for custom rules.
-Makefile generators prefix custom commands with the given launcher
-command line. This is intended to allow launchers to intercept build
-problems with high granularity. Non-Makefile generators currently
-ignore this property.
+:ref:`Makefile Generators` and the :generator:`Ninja` generator prefix
+custom commands with the given launcher command line.
+This is intended to allow launchers to intercept build problems
+with high granularity. Other generators ignore this property
+because their underlying build systems provide no hook to wrap
+individual commands with a launcher.
diff --git a/Help/prop_gbl/RULE_LAUNCH_LINK.rst b/Help/prop_gbl/RULE_LAUNCH_LINK.rst
index 191f1d5..567bb68 100644
--- a/Help/prop_gbl/RULE_LAUNCH_LINK.rst
+++ b/Help/prop_gbl/RULE_LAUNCH_LINK.rst
@@ -3,7 +3,9 @@ RULE_LAUNCH_LINK
Specify a launcher for link rules.
-Makefile generators prefix link and archive commands with the given
-launcher command line. This is intended to allow launchers to
-intercept build problems with high granularity. Non-Makefile
-generators currently ignore this property.
+:ref:`Makefile Generators` and the :generator:`Ninja` generator prefix
+link and archive commands with the given launcher command line.
+This is intended to allow launchers to intercept build problems
+with high granularity. Other generators ignore this property
+because their underlying build systems provide no hook to wrap
+individual commands with a launcher.
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 368ff0c..a9dfae0 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,5 +1,5 @@
# CMake version number components.
set(CMake_VERSION_MAJOR 3)
set(CMake_VERSION_MINOR 3)
-set(CMake_VERSION_PATCH 20150803)
+set(CMake_VERSION_PATCH 20150805)
#set(CMake_VERSION_RC 1)
diff --git a/Source/cmMessageCommand.cxx b/Source/cmMessageCommand.cxx
index e09ba75..467555f 100644
--- a/Source/cmMessageCommand.cxx
+++ b/Source/cmMessageCommand.cxx
@@ -43,7 +43,7 @@ bool cmMessageCommand
}
else if (*i == "AUTHOR_WARNING")
{
- if (!this->Makefile->IsOn("CMAKE_SUPPRESS_DEVELOPER_ERRORS"))
+ if (this->Makefile->IsOn("CMAKE_ERROR_DEVELOPER_WARNINGS"))
{
fatal = true;
type = cmake::AUTHOR_ERROR;
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index d4bca9a..8c455b2 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -1289,7 +1289,7 @@ int cmake::Configure()
" the author of the CMakeLists.txt files.",
cmState::INTERNAL);
this->CacheManager->
- AddCacheEntry("CMAKE_SUPPRESS_DEVELOPER_ERRORS", "TRUE",
+ AddCacheEntry("CMAKE_ERROR_DEVELOPER_WARNINGS", "FALSE",
"Suppress errors that are meant for"
" the author of the CMakeLists.txt files.",
cmState::INTERNAL);
@@ -1328,7 +1328,7 @@ int cmake::Configure()
else if (warningLevel == ERROR_LEVEL)
{
this->CacheManager->
- AddCacheEntry("CMAKE_SUPPRESS_DEVELOPER_ERRORS", "FALSE",
+ AddCacheEntry("CMAKE_ERROR_DEVELOPER_WARNINGS", "TRUE",
"Suppress errors that are meant for"
" the author of the CMakeLists.txt files.",
cmState::INTERNAL);
@@ -1676,11 +1676,11 @@ int cmake::Run(const std::vector<std::string>& args, bool noconfigure)
}
// don't turn dev warnings into errors by default, if no value has been
- // specified for the flag, enable it
- if (!this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_ERRORS"))
+ // specified for the flag, disable it
+ if (!this->State->GetCacheEntryValue("CMAKE_ERROR_DEVELOPER_WARNINGS"))
{
this->CacheManager->
- AddCacheEntry("CMAKE_SUPPRESS_DEVELOPER_ERRORS", "TRUE",
+ AddCacheEntry("CMAKE_ERROR_DEVELOPER_WARNINGS", "FALSE",
"Suppress errors that are meant for"
" the author of the CMakeLists.txt files.",
cmState::INTERNAL);
diff --git a/Source/kwsys/EncodingC.c b/Source/kwsys/EncodingC.c
index ba2cec2..32b9bff 100644
--- a/Source/kwsys/EncodingC.c
+++ b/Source/kwsys/EncodingC.c
@@ -45,8 +45,11 @@ wchar_t* kwsysEncoding_DupToWide(const char* str)
if(length > 0)
{
ret = (wchar_t*)malloc((length)*sizeof(wchar_t));
- ret[0] = 0;
- kwsysEncoding_mbstowcs(ret, str, length);
+ if(ret)
+ {
+ ret[0] = 0;
+ kwsysEncoding_mbstowcs(ret, str, length);
+ }
}
return ret;
}
@@ -72,8 +75,11 @@ char* kwsysEncoding_DupToNarrow(const wchar_t* str)
if(length > 0)
{
ret = (char*)malloc(length);
- ret[0] = 0;
- kwsysEncoding_wcstombs(ret, str, length);
+ if(ret)
+ {
+ ret[0] = 0;
+ kwsysEncoding_wcstombs(ret, str, length);
+ }
}
return ret;
}
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx
index 3452259..0714344 100644
--- a/Source/kwsys/SystemTools.cxx
+++ b/Source/kwsys/SystemTools.cxx
@@ -3198,8 +3198,16 @@ bool SystemTools::FileIsDirectory(const kwsys_stl::string& inName)
bool SystemTools::FileIsSymlink(const kwsys_stl::string& name)
{
#if defined( _WIN32 )
- (void)name;
- return false;
+ DWORD attr = GetFileAttributesW(
+ SystemTools::ConvertToWindowsExtendedPath(name).c_str());
+ if (attr != INVALID_FILE_ATTRIBUTES)
+ {
+ return (attr & FILE_ATTRIBUTE_REPARSE_POINT) != 0;
+ }
+ else
+ {
+ return false;
+ }
#else
struct stat fs;
if(lstat(name.c_str(), &fs) == 0)
@@ -4230,6 +4238,11 @@ SystemTools::DetectFileType(const char *filename,
return SystemTools::FileTypeUnknown;
}
+ if (SystemTools::FileIsDirectory(filename))
+ {
+ return SystemTools::FileTypeUnknown;
+ }
+
FILE *fp = Fopen(filename, "rb");
if (!fp)
{
@@ -4243,6 +4256,7 @@ SystemTools::DetectFileType(const char *filename,
fclose(fp);
if (read_length == 0)
{
+ delete [] buffer;
return SystemTools::FileTypeUnknown;
}
diff --git a/Source/kwsys/testSystemTools.cxx b/Source/kwsys/testSystemTools.cxx
index 15d8eab..7b5c025 100644
--- a/Source/kwsys/testSystemTools.cxx
+++ b/Source/kwsys/testSystemTools.cxx
@@ -98,6 +98,10 @@ static bool CheckEscapeChars(kwsys_stl::string input,
static bool CheckFileOperations()
{
bool res = true;
+ const kwsys_stl::string testNonExistingFile(TEST_SYSTEMTOOLS_SOURCE_DIR
+ "/testSystemToolsNonExistingFile");
+ const kwsys_stl::string testDotFile(TEST_SYSTEMTOOLS_SOURCE_DIR
+ "/.");
const kwsys_stl::string testBinFile(TEST_SYSTEMTOOLS_SOURCE_DIR
"/testSystemTools.bin");
const kwsys_stl::string testTxtFile(TEST_SYSTEMTOOLS_SOURCE_DIR
@@ -106,6 +110,24 @@ static bool CheckFileOperations()
"/testSystemToolsNewDir");
const kwsys_stl::string testNewFile(testNewDir + "/testNewFile.txt");
+ if (kwsys::SystemTools::DetectFileType(testNonExistingFile.c_str()) !=
+ kwsys::SystemTools::FileTypeUnknown)
+ {
+ kwsys_ios::cerr
+ << "Problem with DetectFileType - failed to detect type of: "
+ << testNonExistingFile << kwsys_ios::endl;
+ res = false;
+ }
+
+ if (kwsys::SystemTools::DetectFileType(testDotFile.c_str()) !=
+ kwsys::SystemTools::FileTypeUnknown)
+ {
+ kwsys_ios::cerr
+ << "Problem with DetectFileType - failed to detect type of: "
+ << testDotFile << kwsys_ios::endl;
+ res = false;
+ }
+
if (kwsys::SystemTools::DetectFileType(testBinFile.c_str()) !=
kwsys::SystemTools::FileTypeBinary)
{