summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2012-11-27 18:34:31 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2012-11-27 18:34:31 (GMT)
commit9c48fc7213c2a7426a2c1713653484aa58beebcb (patch)
tree58693c8bd3f4390d6e5b9083359ce5292e290421
parent4046fc01041e1bd9ece928bd77d494c38cc0c70a (diff)
parent7ae7d6650344f7a36216af8424abbf0b834688d1 (diff)
downloadCMake-9c48fc7213c2a7426a2c1713653484aa58beebcb.zip
CMake-9c48fc7213c2a7426a2c1713653484aa58beebcb.tar.gz
CMake-9c48fc7213c2a7426a2c1713653484aa58beebcb.tar.bz2
Merge topic 'fix-13392-nmake-empty-depends-problem'
7ae7d66 NMake: Fix problem with empty DEPENDS args (#13392) 078e35d NMake: Add a test to demonstrate EmptyDepends issue (#13392)
-rw-r--r--Source/cmLocalGenerator.cxx8
-rw-r--r--Tests/CMakeLists.txt2
-rw-r--r--Tests/EmptyDepends/CMakeLists.txt15
3 files changed, 25 insertions, 0 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 4952a8c..d48f43a 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1875,6 +1875,14 @@ bool cmLocalGenerator::GetRealDependency(const char* inName,
// modify the name so stripping down to just the file name should
// produce the target name in this case.
std::string name = cmSystemTools::GetFilenameName(inName);
+
+ // If the input name is the empty string, there is no real
+ // dependency. Short-circuit the other checks:
+ if(name == "")
+ {
+ return false;
+ }
+
if(cmSystemTools::GetFilenameLastExtension(name) == ".exe")
{
name = cmSystemTools::GetFilenameWithoutLastExtension(name);
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index f2a198c..7dc2643 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -573,6 +573,8 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
)
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CustomCommand")
+ ADD_TEST_MACRO(EmptyDepends ${CMAKE_CTEST_COMMAND})
+
add_test(CustomCommandWorkingDirectory ${CMAKE_CTEST_COMMAND}
--build-and-test
"${CMake_SOURCE_DIR}/Tests/CustomCommandWorkingDirectory"
diff --git a/Tests/EmptyDepends/CMakeLists.txt b/Tests/EmptyDepends/CMakeLists.txt
new file mode 100644
index 0000000..a24382c
--- /dev/null
+++ b/Tests/EmptyDepends/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+project(EmptyDepends)
+
+include(CTest)
+
+set(extra_dep)
+
+add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/qrc_my.cxx
+ COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_BINARY_DIR}/qrc_my.cxx"
+ DEPENDS "${extra_dep}" "${CMAKE_BINARY_DIR}/my.qrc")
+
+add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/my.qrc
+ COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/my.qrc)
+
+add_library(qrc SHARED ${CMAKE_BINARY_DIR}/qrc_my.cxx)