From a10faf3bfc150d6b6a484847d9a217ee7c7bb4ea Mon Sep 17 00:00:00 2001
From: fherrero <fherrero@iri.upc.edu>
Date: Tue, 2 Jul 2019 11:57:02 +0200
Subject: [PATCH] Add submodule check/init and make target. Move and rename
 privileges.sh script to /scripts/set_example_privileges.sh.

---
 CMakeLists.txt                    |  2 +-
 privileges.sh                     |  2 --
 scripts/set_example_privileges.sh |  3 +++
 src/CMakeLists.txt                | 25 +++++++++++++++++++++++++
 src/examples/CMakeLists.txt       |  2 +-
 5 files changed, 30 insertions(+), 4 deletions(-)
 delete mode 100755 privileges.sh
 create mode 100755 scripts/set_example_privileges.sh

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b0f7a95..0212a38 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -96,4 +96,4 @@ ELSE(UNIX)
     COMMENT "packaging only implemented in unix"
     TARGET  uninstall
   )
-ENDIF(UNIX)
+ENDIF(UNIX)
\ No newline at end of file
diff --git a/privileges.sh b/privileges.sh
deleted file mode 100755
index 0f97b5e..0000000
--- a/privileges.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-sudo chown root:audio bin/battery_monitor_test
-sudo chmod u+s bin/battery_monitor_test
diff --git a/scripts/set_example_privileges.sh b/scripts/set_example_privileges.sh
new file mode 100755
index 0000000..9c65944
--- /dev/null
+++ b/scripts/set_example_privileges.sh
@@ -0,0 +1,3 @@
+echo "battery_monitor_test: setting example privileges (needs sudo)"
+sudo chown root:audio bin/battery_monitor_test
+sudo chmod u+s bin/battery_monitor_test
\ No newline at end of file
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b25620b..b04f03f 100755
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -35,3 +35,28 @@ INSTALL(FILES  ../scripts/unbind_ftdi_udev.sh
                DESTINATION share/iri/${PROJECT_NAME}/scripts 
                PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ)
 ADD_SUBDIRECTORY(examples)
+
+find_package(Git QUIET)
+if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
+# Update submodules as needed
+    option(GIT_SUBMODULE "Check submodules during build" ON)
+    if(GIT_SUBMODULE)
+        message(STATUS "Submodule update")
+        execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
+                        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+                        RESULT_VARIABLE GIT_SUBMOD_RESULT)
+        if(NOT GIT_SUBMOD_RESULT EQUAL "0")
+            message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
+        endif()
+    endif()
+endif()
+
+SET(firmware_dir avr8_smbus_battery_monitor)
+
+if(NOT EXISTS "${PROJECT_SOURCE_DIR}/${firmware_dir}/Makefile")
+    message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
+endif()
+
+add_custom_target(firmware ALL COMMAND make
+                   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../${firmware_dir}
+)
diff --git a/src/examples/CMakeLists.txt b/src/examples/CMakeLists.txt
index 79cad01..87b3022 100755
--- a/src/examples/CMakeLists.txt
+++ b/src/examples/CMakeLists.txt
@@ -4,6 +4,6 @@ ADD_EXECUTABLE(battery_monitor_test battery_monitor_test.cpp)
 TARGET_LINK_LIBRARIES(battery_monitor_test battery_monitor)
 
 add_custom_command(TARGET battery_monitor_test POST_BUILD 
-  COMMAND sh ./privileges.sh 
+  COMMAND sh ./scripts/set_example_privileges.sh 
   WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
    
-- 
GitLab