From f7b7cbb98587fe4ffcb5d0a4b44f5a06dadb28f4 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Wed, 30 Mar 2016 12:02:09 +0200
Subject: [PATCH] [CMake] Fixed submodule init / update on Windows.

---
 scripts/cmake/SubmoduleCheck.sh    | 14 --------------
 scripts/cmake/SubmoduleSetup.cmake | 21 +++++++++------------
 2 files changed, 9 insertions(+), 26 deletions(-)
 delete mode 100644 scripts/cmake/SubmoduleCheck.sh

diff --git a/scripts/cmake/SubmoduleCheck.sh b/scripts/cmake/SubmoduleCheck.sh
deleted file mode 100644
index 726930c4a45..00000000000
--- a/scripts/cmake/SubmoduleCheck.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-# Checks for unitialized git submodules
-# Parameter 1: The path to the submodule
-# Returns 0 if the module is already initialized
-# Returns 1 if there is no such submodule
-# Returns 2 if the checked out submodule is out of date
-
-# Check for modified
-result=$(git submodule status $1 | grep '^+' | wc -l);
-if [[ result -eq 0 ]]; then
-	result=$(git submodule status $1 | grep '^-' | wc -l);
-	exit $result;
-else
-	exit 2;
-fi
diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake
index 5ffb0a1e014..c4b9a93f55a 100644
--- a/scripts/cmake/SubmoduleSetup.cmake
+++ b/scripts/cmake/SubmoduleSetup.cmake
@@ -17,24 +17,21 @@ if(OGS_BUILD_TESTS)
 endif()
 
 foreach(SUBMODULE ${REQUIRED_SUBMODULES})
-	if(WIN32)
-		set(SUBMODULE_STATE 1)
-	else()
-		# Check if submodule is already initialized
-		execute_process(
-			COMMAND ${BASH_TOOL_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/SubmoduleCheck.sh ${SUBMODULE}
-			WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-			RESULT_VARIABLE SUBMODULE_STATE
-		)
-	endif()
+	execute_process(
+		COMMAND ${GIT_TOOL_PATH} submodule status ${SUBMODULE}
+		WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+		OUTPUT_VARIABLE SUBMODULE_STATE
+	)
+	string(REGEX MATCH "^\\-" UNINITIALIZED ${SUBMODULE_STATE})
+	string(REGEX MATCH "^\\+" MISMATCH ${SUBMODULE_STATE})
 
-	if(SUBMODULE_STATE EQUAL 1)
+	if(UNINITIALIZED)
 		message(STATUS "Initializing submodule ${SUBMODULE}")
 		execute_process(
 			COMMAND ${GIT_TOOL_PATH} submodule update --init ${SUBMODULE}
 			WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 		)
-	elseif(SUBMODULE_STATE EQUAL 2)
+	elseif(MISMATCH)
 		message(STATUS "Updating submodule ${SUBMODULE}")
 		execute_process(
 			COMMAND git submodule update ${SUBMODULE}
-- 
GitLab