From 5d496eb40060c5eb601a800e59385eb3d1bd7818 Mon Sep 17 00:00:00 2001
From: Guilhem Saurel <guilhem.saurel@laas.fr>
Date: Mon, 25 Oct 2021 18:58:30 +0200
Subject: [PATCH] [CMake] FetchContent on missing submodule

---
 CMakeLists.txt        | 22 ++++++++++++++++------
 python/CMakeLists.txt |  3 +--
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9226fdc5..765d2abf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,8 +13,18 @@ SET(PROJECT_USE_KEYWORD_LINK_LIBRARIES TRUE)
 SET(PROJECT_CUSTOM_HEADER_EXTENSION "hpp")
 
 # Check if the submodule cmake have been initialized
+set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake")
 IF(NOT EXISTS "${CMAKE_SOURCE_DIR}/cmake/base.cmake")
-  MESSAGE(FATAL_ERROR "\nPlease run the following command first:\ngit submodule update --init\n")
+  IF(${CMAKE_VERSION} VERSION_LESS "3.14.0")
+    MESSAGE(FATAL_ERROR "\nPlease run the following command first:\ngit submodule update --init\n")
+  ELSE()
+    message(STATUS "JRL cmakemodules not found. Let's fetch it.")
+    include(FetchContent)
+    FetchContent_Declare("jrl-cmakemodules"
+      GIT_REPOSITORY "https://github.com/jrl-umi3218/jrl-cmakemodules.git")
+    FetchContent_MakeAvailable("jrl-cmakemodules")
+    FetchContent_GetProperties("jrl-cmakemodules" SOURCE_DIR JRL_CMAKE_MODULES)
+  ENDIF()
 ENDIF()
 
 # Disable -Werror on Unix for now.
@@ -35,14 +45,14 @@ IF(DEFINED BUILD_UNIT_TESTS)
   SET(BUILD_TESTING ${BUILD_UNIT_TESTS})
 ENDIF(DEFINED BUILD_UNIT_TESTS)
 
-INCLUDE(cmake/base.cmake)
+INCLUDE("${JRL_CMAKE_MODULES}/base.cmake")
 COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX)
 PROJECT(${PROJECT_NAME} ${PROJECT_ARGS})
 
-INCLUDE(cmake/boost.cmake)
-INCLUDE(cmake/python.cmake)
-INCLUDE(cmake/ide.cmake)
-INCLUDE(cmake/apple.cmake)
+INCLUDE("${JRL_CMAKE_MODULES}/boost.cmake")
+INCLUDE("${JRL_CMAKE_MODULES}/python.cmake")
+INCLUDE("${JRL_CMAKE_MODULES}/ide.cmake")
+INCLUDE("${JRL_CMAKE_MODULES}/apple.cmake")
 
 OPTION(GENERATE_PYTHON_STUBS "Generate the Python stubs associated to the Python library" OFF)
 
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index a8a37f32..75faa46f 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -7,7 +7,7 @@ SET(PYWRAP ${PROJECT_NAME}_pywrap)
 SET(PYWRAP ${PYWRAP} PARENT_SCOPE)
 
 MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/python/${PROJECT_NAME}")
-include(${PROJECT_SOURCE_DIR}/cmake/stubs.cmake)
+include("${JRL_CMAKE_MODULES}/stubs.cmake")
 
 ADD_CUSTOM_TARGET(python)
 SET_TARGET_PROPERTIES(python PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD True)
@@ -58,4 +58,3 @@ FOREACH(python ${PYTHON_FILES})
     "${CMAKE_CURRENT_SOURCE_DIR}/eigenpy/${python}"
     DESTINATION ${${PYWRAP}_INSTALL_DIR})
 ENDFOREACH(python)
-
-- 
GitLab