]> granicus.if.org Git - esp-idf/commitdiff
cmake: Re-run cmake if submodule commits change or a submodule is deinit-ed
authorAngus Gratton <angus@espressif.com>
Fri, 19 Jan 2018 05:34:00 +0000 (16:34 +1100)
committerAngus Gratton <gus@projectgus.com>
Sun, 29 Apr 2018 23:59:20 +0000 (09:59 +1000)
tools/cmake/git_submodules.cmake

index be71f41f6c72a0a4c4beb3342279c18b61a17f3c..73e1f35f9c3ad6a2e24df5dd0a71539c74de9e3b 100644 (file)
@@ -41,6 +41,16 @@ else(NOT GIT_FOUND)
       elseif(NOT "${status}" STREQUAL " ")
         message(WARNING "Git submodule ${submodule_path} is out of date. Run 'git submodule update --init --recursive' to fix.")
       endif()
+
+      # Force a re-run of cmake if the submodule's .git file changes or is changed (ie accidental deinit)
+      get_filename_component(submodule_abs_path ${submodule_path} ABSOLUTE BASE_DIR ${root_path})
+      set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${submodule_abs_path}/.git)
+      # same if the HEAD file in the submodule's directory changes (ie commit changes). This will at least prit the 'out of date' warning
+      set(submodule_head "${root_path}/.git/modules/${submodule_path}/HEAD")
+      if(EXISTS "${submodule_head}")
+        set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${submodule_head})
+      endif()
+
     endforeach()
   endfunction(git_submodule_check)