ROVER - Changes to CMake file and added CMake modules

Signed-off-by: Mustafa Ozcelikors <mozcelikors@gmail.com>
diff --git a/rover/CMakeLists.txt b/rover/CMakeLists.txt
index 01f6d58..54d2711 100644
--- a/rover/CMakeLists.txt
+++ b/rover/CMakeLists.txt
@@ -10,8 +10,12 @@
 cmake_minimum_required (VERSION 2.8.11)
 project (roverapp)
 
-#For find_package packages, export someextlib_DIR=/path/to/..
+# To find modules from other cmake-built projects that are searched with find_package,
+# external cmake modules need to be provided. Those are typically named as Find<package>.cmake or <package>Config.cmake.
+# Those must be added to the CMAKE_MODULE_PATH set below:
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/ExternalCMakeModules)
 
+#For find_package packages, export someextlib_DIR=/path/to/..
 # Required packages
 find_package (OpenCV REQUIRED)
 find_package (raspicam REQUIRED)
@@ -35,6 +39,7 @@
 
 #Include directories for external libraries
 include_directories( ${OpenCV_INCLUDE_DIRS} )
+include_directories( ${raspicam_INCLUDE_DIRS} )
 #include_directories( ${jsoncpp_INCLUDE_DIRS} )
 #include_directories( ${bluetooth_INCLUDE_DIRS} )
 
@@ -42,8 +47,12 @@
 # LIBRARIES
 #
 
-#Add api
-add_library(roverapi SHARED ${CMAKE_SOURCE_DIR}/src/api/basic_psys_rover.c)
+#Add roverapi
+file (GLOB_RECURSE ROVERAPI_FILES
+  ${CMAKE_SOURCE_DIR}/src/roverapi/*.c
+  ${CMAKE_SOURCE_DIR}/src/roverapi/*.cpp
+)
+add_library (roverapi SHARED ${ROVERAPI_FILES})
 
 set(CUSTOM_LIBS_DIR ${CMAKE_SOURCE_DIR}/src/libraries)
 
@@ -80,12 +89,27 @@
 add_executable(roverapp ${CMAKE_SOURCE_DIR}/src/roverapp.cpp)
 
 #
+#  LINKING TO ROVER API
+#
+
+target_link_libraries (roverapi wiringPi)
+target_link_libraries (roverapi wiringPiDev)
+
+target_link_libraries(roverapi hono_interaction)
+target_link_libraries(roverapi pthread_distribution)
+target_link_libraries(roverapi status_library)
+target_link_libraries(roverapi pthread_monitoring)
+target_link_libraries(roverapi timing)
+
+target_link_libraries (roverapi roverappdrivers)
+
+#
 #  LINKING TO ROVER TASKS
 #
 
 #Link external libraries
 # Search with sudo find / -name *libx*
-# If there is an x.so, you can link x library
+# If there is an x.so in /usr/lib/ or /usr/local/lib/, you can link x library
 target_link_libraries (roverapptasks opencv_core)
 target_link_libraries (roverapptasks opencv_imgproc)
 target_link_libraries (roverapptasks opencv_highgui)
diff --git a/rover/ExternalCMakeModules/Findraspicam.cmake b/rover/ExternalCMakeModules/Findraspicam.cmake
new file mode 100644
index 0000000..5c27b7c
--- /dev/null
+++ b/rover/ExternalCMakeModules/Findraspicam.cmake
@@ -0,0 +1,34 @@
+# ===================================================================================
+#  raspicam CMake configuration file
+#
+#             ** File generated automatically, do not modify **
+#
+#  Usage from an external project:
+#    In your CMakeLists.txt, add these lines:
+#
+#    FIND_PACKAGE(raspicam REQUIRED )
+#    TARGET_LINK_LIBRARIES(MY_TARGET_NAME )
+#
+#    This file will define the following variables:
+#      - raspicam_LIBS          : The list of libraries to links against.
+#      - raspicam_LIB_DIR       : The directory where lib files are. Calling LINK_DIRECTORIES
+#                                with this path is NOT needed.
+#      - raspicam_VERSION       : The  version of this PROJECT_NAME build. Example: "1.2.0"
+#      - raspicam_VERSION_MAJOR : Major version part of VERSION. Example: "1"
+#      - raspicam_VERSION_MINOR : Minor version part of VERSION. Example: "2"
+#      - raspicam_VERSION_PATCH : Patch version part of VERSION. Example: "0"
+#
+# ===================================================================================
+INCLUDE_DIRECTORIES(;/usr/local/include)
+LINK_DIRECTORIES("/usr/local/lib")
+
+SET(raspicam_LIBS /opt/vc/lib/libmmal_core.so;/opt/vc/lib/libmmal_util.so;/opt/vc/lib/libmmal.so raspicam) 
+SET(raspicam_FOUND "YES") 
+
+SET(raspicam_CV_FOUND  "YES")
+SET(raspicam_CV_LIBS /opt/vc/lib/libmmal_core.so;/opt/vc/lib/libmmal_util.so;/opt/vc/lib/libmmal.so raspicam opencv_calib3d;opencv_core;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab;opencv_aruco;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_datasets;opencv_dnn;opencv_dpm;opencv_face;opencv_freetype;opencv_fuzzy;opencv_line_descriptor;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_reg;opencv_rgbd;opencv_saliency;opencv_stereo;opencv_structured_light;opencv_surface_matching;opencv_text;opencv_tracking;opencv_xfeatures2d;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto raspicam_cv)
+
+SET(raspicam_VERSION        0.1.2)
+SET(raspicam_VERSION_MAJOR  0)
+SET(raspicam_VERSION_MINOR  1)
+SET(raspicam_VERSION_PATCH  2)
diff --git a/rover/ExternalCMakeModules/raspicamConfig.cmake b/rover/ExternalCMakeModules/raspicamConfig.cmake
new file mode 100644
index 0000000..5c27b7c
--- /dev/null
+++ b/rover/ExternalCMakeModules/raspicamConfig.cmake
@@ -0,0 +1,34 @@
+# ===================================================================================
+#  raspicam CMake configuration file
+#
+#             ** File generated automatically, do not modify **
+#
+#  Usage from an external project:
+#    In your CMakeLists.txt, add these lines:
+#
+#    FIND_PACKAGE(raspicam REQUIRED )
+#    TARGET_LINK_LIBRARIES(MY_TARGET_NAME )
+#
+#    This file will define the following variables:
+#      - raspicam_LIBS          : The list of libraries to links against.
+#      - raspicam_LIB_DIR       : The directory where lib files are. Calling LINK_DIRECTORIES
+#                                with this path is NOT needed.
+#      - raspicam_VERSION       : The  version of this PROJECT_NAME build. Example: "1.2.0"
+#      - raspicam_VERSION_MAJOR : Major version part of VERSION. Example: "1"
+#      - raspicam_VERSION_MINOR : Minor version part of VERSION. Example: "2"
+#      - raspicam_VERSION_PATCH : Patch version part of VERSION. Example: "0"
+#
+# ===================================================================================
+INCLUDE_DIRECTORIES(;/usr/local/include)
+LINK_DIRECTORIES("/usr/local/lib")
+
+SET(raspicam_LIBS /opt/vc/lib/libmmal_core.so;/opt/vc/lib/libmmal_util.so;/opt/vc/lib/libmmal.so raspicam) 
+SET(raspicam_FOUND "YES") 
+
+SET(raspicam_CV_FOUND  "YES")
+SET(raspicam_CV_LIBS /opt/vc/lib/libmmal_core.so;/opt/vc/lib/libmmal_util.so;/opt/vc/lib/libmmal.so raspicam opencv_calib3d;opencv_core;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab;opencv_aruco;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_datasets;opencv_dnn;opencv_dpm;opencv_face;opencv_freetype;opencv_fuzzy;opencv_line_descriptor;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_reg;opencv_rgbd;opencv_saliency;opencv_stereo;opencv_structured_light;opencv_surface_matching;opencv_text;opencv_tracking;opencv_xfeatures2d;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto raspicam_cv)
+
+SET(raspicam_VERSION        0.1.2)
+SET(raspicam_VERSION_MAJOR  0)
+SET(raspicam_VERSION_MINOR  1)
+SET(raspicam_VERSION_PATCH  2)