From 26b527ac0fd63d2a86d3552122bd44a5b32d6adb Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Wed, 6 Dec 2006 23:05:10 -0500 Subject: ENH: fix bug in full path to target depends stuff --- Source/CMakeLists.txt | 13 +++++++------ Source/cmLocalGenerator.cxx | 2 ++ Source/cmTarget.cxx | 2 ++ Tests/CustComDepend/CMakeLists.txt | 11 +++++++++++ Tests/CustComDepend/foo.cxx | 15 +++++++++++++++ 5 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 Tests/CustComDepend/CMakeLists.txt create mode 100644 Tests/CustComDepend/foo.cxx diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 9896b17..5311c72 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -410,16 +410,17 @@ IF(BUILD_TESTING) --test-command ${CMAKE_CMAKE_COMMAND} -E compare_files ${CMake_SOURCE_DIR}/Tests/TargetName/scripts/hello_world ${CMake_BINARY_DIR}/Tests/TargetName/scripts/hello_world) - ADD_TEST(LibName ${CMAKE_CTEST_COMMAND} + + ADD_TEST(CustComDepend ${CMAKE_CTEST_COMMAND} --build-and-test - "${CMake_SOURCE_DIR}/Tests/LibName" - "${CMake_BINARY_DIR}/Tests/LibName" + "${CMake_SOURCE_DIR}/Tests/CustComDepend" + "${CMake_BINARY_DIR}/Tests/CustComDepend" --build-two-config --build-generator ${CMAKE_TEST_GENERATOR} --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} - --build-project LibName - --build-exe-dir "${CMake_BINARY_DIR}/Tests/LibName/lib" - --test-command foobar + --build-project CustComDepend + --build-exe-dir "${CMake_BINARY_DIR}/Tests/CustComDepend/bin" + --test-command foo bar.c ) ADD_TEST(CustomCommand ${CMAKE_CTEST_COMMAND} diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 398093d..d437899 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1863,6 +1863,8 @@ std::string cmLocalGenerator::GetRealDependency(const char* inName, tLocation = cmSystemTools::GetFilenamePath(tLocation); std::string depLocation = cmSystemTools::GetFilenamePath( std::string(inName)); + depLocation = cmSystemTools::CollapseFullPath(depLocation.c_str()); + tLocation = cmSystemTools::CollapseFullPath(tLocation.c_str()); if(depLocation != tLocation) { // it is a full path to a depend that has the same name diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 0dc8bd9..0b6f21d 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -253,6 +253,8 @@ void cmTarget::TraceVSDependencies(std::string projFile, tLocation = cmSystemTools::GetFilenamePath(tLocation); std::string depLocation = cmSystemTools::GetFilenamePath( std::string(fullName)); + depLocation = cmSystemTools::CollapseFullPath(depLocation.c_str()); + tLocation = cmSystemTools::CollapseFullPath(tLocation.c_str()); if(depLocation == tLocation) { isUtility = true; diff --git a/Tests/CustComDepend/CMakeLists.txt b/Tests/CustComDepend/CMakeLists.txt new file mode 100644 index 0000000..0f2c763 --- /dev/null +++ b/Tests/CustComDepend/CMakeLists.txt @@ -0,0 +1,11 @@ +project(CustComDepend) +add_definitions(-D_CRT_SECURE_NO_DEPRECATE=1) +set(EXECUTABLE_OUTPUT_PATH ${CustComDepend_BINARY_DIR}/bin) +add_executable(foo foo.cxx) +add_custom_command( + OUTPUT ${CustComDepend_BINARY_DIR}/bar.c + COMMAND ${CustComDepend_BINARY_DIR}/bin/foo ${CustComDepend_BINARY_DIR}/bar.c + DEPENDS ${CustComDepend_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/foo +) + +add_library(bar SHARED ${CustComDepend_BINARY_DIR}/bar.c) diff --git a/Tests/CustComDepend/foo.cxx b/Tests/CustComDepend/foo.cxx new file mode 100644 index 0000000..54471cc --- /dev/null +++ b/Tests/CustComDepend/foo.cxx @@ -0,0 +1,15 @@ +#include + +int main(int ac, char** av) +{ + FILE* fout = fopen(av[1], "w"); + printf("create %s\n", av[1]); + if(!fout) + { + return -1; + } + fprintf(fout, "int bar(){ return 10;}\n"); + fclose(fout); + return 0; +} + -- cgit v0.12