From 4e92eeee271ba3ae67c74550f4a743f97fbb6248 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Wed, 7 Nov 2012 13:45:49 +0100
Subject: [PATCH] Added functionality for automatically initializing git
 submodules.

See scripts/cmake/SubmoduleSetup.cmake for details.
---
 CMakeLists.txt                     |  1 +
 GeoLib/CMakeLists.txt              |  4 ++--
 scripts/cmake/SubmoduleCheck.sh    |  5 +++++
 scripts/cmake/SubmoduleSetup.cmake | 23 +++++++++++++++++++++++
 4 files changed, 31 insertions(+), 2 deletions(-)
 create mode 100755 scripts/cmake/SubmoduleCheck.sh
 create mode 100644 scripts/cmake/SubmoduleSetup.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index fd49d63f6a1..e7f54da3257 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,6 +25,7 @@ INCLUDE(scripts/cmake/FindIncludeHeader.cmake)
 INCLUDE(scripts/cmake/Functions.cmake)
 INCLUDE(scripts/cmake/CMakeSetup.cmake)
 INCLUDE(scripts/cmake/CompilerSetup.cmake)
+INCLUDE(scripts/cmake/SubmoduleSetup.cmake)
 IF(NOT OGS_NO_EXTERNAL_LIBS)
 	INCLUDE(scripts/cmake/Find.cmake)
 ENDIF() # NOT OGS_NO_EXTERNAL_LIBS
diff --git a/GeoLib/CMakeLists.txt b/GeoLib/CMakeLists.txt
index 928424bb772..d0b60e6785a 100644
--- a/GeoLib/CMakeLists.txt
+++ b/GeoLib/CMakeLists.txt
@@ -7,8 +7,8 @@ ADD_LIBRARY(GeoLib STATIC ${SOURCES_GeoLib})
 
 include_directories(
 	.
-	../BaseLib
-	../MathLib
+	${CMAKE_SOURCE_DIR}/BaseLib
+	${CMAKE_SOURCE_DIR}/MathLib
 )
 
 
diff --git a/scripts/cmake/SubmoduleCheck.sh b/scripts/cmake/SubmoduleCheck.sh
new file mode 100755
index 00000000000..85d61dfcf33
--- /dev/null
+++ b/scripts/cmake/SubmoduleCheck.sh
@@ -0,0 +1,5 @@
+# Checks for unitialized git submodules
+# Parameter 1: The path to the submodule
+# Returns 0 if there is no such submodule
+# Returns 1 if the module is already initialized
+result=$(git submodule status $1 | grep '^-' | wc -l); exit $result
\ No newline at end of file
diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake
new file mode 100644
index 00000000000..9f1e49a9f5a
--- /dev/null
+++ b/scripts/cmake/SubmoduleSetup.cmake
@@ -0,0 +1,23 @@
+# This file initializes the required submodules
+
+SET(REQUIRED_SUBMODULES
+	Tests/quickcheck
+)
+
+FOREACH(SUBMODULE ${REQUIRED_SUBMODULES})
+	# Check if submodule is already initialized
+	# MESSAGE(STATUS "Checking module ${SUBMODULE}")
+	EXECUTE_PROCESS(
+		COMMAND bash ${CMAKE_SOURCE_DIR}/scripts/cmake/SubmoduleCheck.sh ${SUBMODULE}
+		WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+		RESULT_VARIABLE SUBMODULE_IS_NOT_INITIALIZED
+	)
+
+	IF(SUBMODULE_IS_NOT_INITIALIZED)
+		MESSAGE(STATUS "Initializing submodule ${SUBMODULE}")
+		EXECUTE_PROCESS(
+			COMMAND git submodule update --init ${SUBMODULE}
+			WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+		)
+	ENDIF()
+ENDFOREACH()
\ No newline at end of file
-- 
GitLab