This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  49cff25ca3e667d6d5a20a6b64ed55ef875890c1 (commit)
       via  111cd679191c8aa4e081765ac4f7bc2e08657c7f (commit)
      from  96f661517d1e98a7a940f16781e6713745074e2a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=49cff25ca3e667d6d5a20a6b64ed55ef875890c1
commit 49cff25ca3e667d6d5a20a6b64ed55ef875890c1
Merge: 96f6615 111cd67
Author:     Gregor Jasny <gja...@googlemail.com>
AuthorDate: Wed Mar 9 14:33:43 2016 -0500
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Wed Mar 9 14:33:43 2016 -0500

    Merge topic 'xcode-regenerate-on-deleted-files' into next
    
    111cd679 Xcode: ReRunCMake even if files disappeared (#15992)


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=111cd679191c8aa4e081765ac4f7bc2e08657c7f
commit 111cd679191c8aa4e081765ac4f7bc2e08657c7f
Author:     Gregor Jasny <gja...@googlemail.com>
AuthorDate: Sun Mar 6 17:46:53 2016 +0100
Commit:     Gregor Jasny <gja...@googlemail.com>
CommitDate: Wed Mar 9 20:33:01 2016 +0100

    Xcode: ReRunCMake even if files disappeared (#15992)

diff --git a/Source/cmGlobalXCodeGenerator.cxx 
b/Source/cmGlobalXCodeGenerator.cxx
index ef18729..7c85281 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -593,19 +593,28 @@ void cmGlobalXCodeGenerator::CreateReRunCMakeFile(
   cmGeneratedFileStream makefileStream
     (this->CurrentReRunCMakeMakefile.c_str());
   makefileStream.SetCopyIfDifferent(true);
-  makefileStream << "# Generated by CMake, DO NOT EDIT\n";
-  std::string checkCache = root->GetBinaryDirectory();
-  checkCache += "/";
-  checkCache += cmake::GetCMakeFilesDirectoryPostSlash();
-  checkCache += "cmake.check_cache";
-  makefileStream << this->ConvertToRelativeForMake(checkCache.c_str())
-                 << ": ";
+  makefileStream << "# Generated by CMake, DO NOT EDIT\n\n";
+
+  makefileStream << "empty:= \n";
+  makefileStream << "space:= $(empty) $(empty)\n";
+  makefileStream << "spaceplus:= $(empty)\\ $(empty)\n\n";
+
   for(std::vector<std::string>::const_iterator i = lfiles.begin();
       i !=  lfiles.end(); ++i)
     {
-    makefileStream << "\\\n" << this->ConvertToRelativeForMake(i->c_str());
+    makefileStream << "TARGETS += $(subst $(space),$(spaceplus),$(wildcard "
+                   << this->ConvertToRelativeForMake(i->c_str())
+                   << "))\n";
     }
-  makefileStream << "\n\t" <<
+
+  std::string checkCache = root->GetBinaryDirectory();
+  checkCache += "/";
+  checkCache += cmake::GetCMakeFilesDirectoryPostSlash();
+  checkCache += "cmake.check_cache";
+
+  makefileStream << "\n" << this->ConvertToRelativeForMake(checkCache.c_str())
+                 << ": $(TARGETS)\n";
+  makefileStream << "\t" <<
     this->ConvertToRelativeForMake(cmSystemTools::GetCMakeCommand().c_str())
                  << " -H" << this->ConvertToRelativeForMake(
                    root->GetSourceDirectory())
diff --git a/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake 
b/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake
index 31c72fb..51e0b0a 100644
--- a/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake
+++ b/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake
@@ -40,3 +40,42 @@ if(NOT RunCMake_GENERATOR MATCHES "Visual Studio [67]|Xcode")
 endif()
 
 run_BuildDepends(Custom-Always)
+
+function(run_ReGeneration)
+  # test re-generation of project even if CMakeLists.txt files disappeared
+
+  # Use a single build tree for a few tests without cleaning.
+  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/regenerate-project-build)
+  set(RunCMake_TEST_SOURCE_DIR 
${RunCMake_BINARY_DIR}/regenerate-project-source)
+  set(RunCMake_TEST_NO_CLEAN 1)
+  file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
+  file(REMOVE_RECURSE "${RunCMake_TEST_SOURCE_DIR}")
+  set(ProjectHeader [=[
+    cmake_minimum_required(VERSION 3.5)
+    project(Regenerate-Project NONE)
+  ]=])
+
+  # create project with subdirectory
+  file(WRITE "${RunCMake_TEST_SOURCE_DIR}/CMakeLists.txt" "${ProjectHeader}"
+    "add_subdirectory(mysubdir)")
+  file(MAKE_DIRECTORY "${RunCMake_TEST_SOURCE_DIR}/mysubdir")
+  file(WRITE "${RunCMake_TEST_SOURCE_DIR}/mysubdir/CMakeLists.txt" "# empty")
+
+  run_cmake(Regenerate-Project)
+  execute_process(COMMAND ${CMAKE_COMMAND} -E sleep ${fs_delay})
+
+  # now we delete the subdirectory and adjust the CMakeLists.txt
+  file(REMOVE_RECURSE "${RunCMake_TEST_SOURCE_DIR}/mysubdir")
+  file(WRITE "${RunCMake_TEST_SOURCE_DIR}/CMakeLists.txt" "${ProjectHeader}")
+
+  run_cmake_command(Regenerate-Project-Directory-Removed
+    ${CMAKE_COMMAND} --build "${RunCMake_TEST_BINARY_DIR}")
+
+  unset(RunCMake_TEST_BINARY_DIR)
+  unset(RunCMake_TEST_SOURCE_DIR)
+  unset(RunCMake_TEST_NO_CLEAN)
+endfunction()
+
+if(RunCMake_GENERATOR STREQUAL "Xcode")
+  run_ReGeneration(regenerate-project)
+endif()

-----------------------------------------------------------------------

Summary of changes:
 Source/cmGlobalXCodeGenerator.cxx              |   27 ++++++++++------
 Tests/RunCMake/BuildDepends/RunCMakeTest.cmake |   39 ++++++++++++++++++++++++
 2 files changed, 57 insertions(+), 9 deletions(-)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/mailman/listinfo/cmake-commits

Reply via email to