commit 249c27b3f1687074460421eb1be82c39de6f42ab
Author: Thomas Schöpping <tschoepp@cit-ec.uni-bielefeld.de>
Date:   Tue Nov 6 10:07:05 2018 +0100

    Enhanced the makefile system and extended the HelloWorld app and configuration to serve as template.
    The submodules AMiRo-OS and µRtWare have been updated in the process as well.

diff --git a/apps/HelloWorld/HelloWorld.mk b/apps/HelloWorld/HelloWorld.mk
index b1d9abe..e57473a 100644
--- a/apps/HelloWorld/HelloWorld.mk
+++ b/apps/HelloWorld/HelloWorld.mk
@@ -30,7 +30,7 @@ HelloWorldAPP_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
 HelloWorldAPP_INC = $(HelloWorldAPP_DIR)
 
 # C source files
-HelloWorldAPP_CSRC =
+HelloWorldAPP_CSRC = $(HelloWorldAPP_DIR)/helloworld.c
 
 # C++ source files
 HelloWorldAPP_CPPSRC =
diff --git a/apps/HelloWorld/helloworld.c b/apps/HelloWorld/helloworld.c
new file mode 100644
index 0000000..f480347
--- /dev/null
+++ b/apps/HelloWorld/helloworld.c
@@ -0,0 +1,22 @@
+/*
+AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
+Copyright (C) 2018..2018  Thomas Schöpping et al.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <helloworld.h>
+
+#warning "HEY, THIS IS HELLOWORLD.C!"
+
diff --git a/apps/HelloWorld/helloworld.h b/apps/HelloWorld/helloworld.h
new file mode 100644
index 0000000..f462e19
--- /dev/null
+++ b/apps/HelloWorld/helloworld.h
@@ -0,0 +1,24 @@
+/*
+AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
+Copyright (C) 2018..2018  Thomas Schöpping et al.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _HELLOWORLD_H_
+#define _HELLOWORLD_H_
+
+#warning "HEY, THIS IS HELLOWORLD.H!"
+
+#endif /* _HELLOWORLD_H_ */
diff --git a/configurations/HelloWorld/Makefile b/configurations/HelloWorld/Makefile
index c0d7edf..cf5ff69 100644
--- a/configurations/HelloWorld/Makefile
+++ b/configurations/HelloWorld/Makefile
@@ -26,10 +26,6 @@
 # absolue path to this directory
 HelloWorldCONF_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
 
-ifneq ($(BUILDDIR),)
-  export BUILDDIR
-endif
-
 # list of available modules
 HelloWorldCONF_MODULES = $(patsubst $(HelloWorldCONF_DIR)/modules/%/,%,$(sort $(dir $(wildcard $(HelloWorldCONF_DIR)/modules/*/*))))
 
diff --git a/configurations/HelloWorld/modules/DiWheelDrive_1-1/Makefile b/configurations/HelloWorld/modules/DiWheelDrive_1-1/Makefile
index de264fa..3d60236 100644
--- a/configurations/HelloWorld/modules/DiWheelDrive_1-1/Makefile
+++ b/configurations/HelloWorld/modules/DiWheelDrive_1-1/Makefile
@@ -24,28 +24,25 @@
 
 
 # absolue path to this directory
-APPCONFIG_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
+APPCONFIG_MODULE_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
 
-# AMiRo-Apps root directory
-AMIROAPPS_DIR = $(realpath $(APPCONFIG_DIR)/../../../..)
+# environment setup
+include $(APPCONFIG_MODULE_DIR)/../modules.mk
 
-# path to the middleware
-MIDDLEWARE_DIR = $(AMIROAPPS_DIR)/middleware
+# include apps
+include $(APPS_DIR)/HelloWorld/HelloWorld.mk
 
-# path to the operating system
-OS_DIR = $(AMIROAPPS_DIR)/os
+# include directories for configurations
+APPSINC += $(APPCONFIG_MODULE_DIR) \
+           $(HelloWorldAPP_INC)
 
-# include environments
-include $(MIDDLEWARE_DIR)/middleware.mk
-include $(OS_DIR)/os.mk
+# C sources
+APPSCSRC += $(HelloWorldAPP_CSRC)
 
-# include directories for configurations
-APPSINC = $(APPCONFIG_DIR)/../ \
-          $(APPCONFIG_DIR)
+# C++ sources
+APPSCPPSRC += $(HelloWorldAPP_CPPSRC)
 
 # call DiWHeelDrive Makefile module from OS
-export
-
 all:
 	$(MAKE) -C $(OS_DIR)/AMiRo-OS/modules/DiWheelDrive_1-1/
 
diff --git a/configurations/HelloWorld/modules/DiWheelDrive_1-1/mainincludes.hpp b/configurations/HelloWorld/modules/DiWheelDrive_1-1/mainincludes.hpp
index 12dcc51..191c6fc 100644
--- a/configurations/HelloWorld/modules/DiWheelDrive_1-1/mainincludes.hpp
+++ b/configurations/HelloWorld/modules/DiWheelDrive_1-1/mainincludes.hpp
@@ -17,6 +17,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #ifndef _MAININCLUDES_HPP_
-#define _HAININCLUDES_HPP_
+#define _MAININCLUDES_HPP_
+
+#warning "HEY, THIS IS MAININCLUDES.HPP!"
 
 #endif /* _MAININCLUDES_HPP_ */
diff --git a/configurations/HelloWorld/modules/HelloWorld_osconf.h b/configurations/HelloWorld/modules/HelloWorld_osconf.h
index 5c64f74..599321f 100644
--- a/configurations/HelloWorld/modules/HelloWorld_osconf.h
+++ b/configurations/HelloWorld/modules/HelloWorld_osconf.h
@@ -19,4 +19,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef _HELLOWORLD_OSCONF_H_
 #define _HELLOWORLD_OSCONF_H_
 
+#define AMIROOS_CFG_MAIN_EXTRA_INCLUDE_HEADER <mainincludes.hpp>
+
 #endif /* _HELLOWORLD_OSCONF_H_ */
diff --git a/configurations/HelloWorld/modules/modules.mk b/configurations/HelloWorld/modules/modules.mk
new file mode 100644
index 0000000..61ac3bd
--- /dev/null
+++ b/configurations/HelloWorld/modules/modules.mk
@@ -0,0 +1,40 @@
+################################################################################
+# AMiRo-Apps is a collection of applications for the Autonomous Mini Robot     #
+# (AMiRo) platform.                                                            #
+# Copyright (C) 2018..2018  Thomas Schöpping et al.                            #
+#                                                                              #
+# This program is free software: you can redistribute it and/or modify         #
+# it under the terms of the GNU General Public License as published by         #
+# the Free Software Foundation, either version 3 of the License, or            #
+# (at your option) any later version.                                          #
+#                                                                              #
+# This program is distributed in the hope that it will be useful,              #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of               #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                #
+# GNU General Public License for more details.                                 #
+#                                                                              #
+# You should have received a copy of the GNU General Public License            #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.        #
+#                                                                              #
+# This research/work was supported by the Cluster of Excellence Cognitive      #
+# Interaction Technology 'CITEC' (EXC 277) at Bielefeld University, which is   #
+# funded by the German Research Foundation (DFG).                              #
+################################################################################
+
+
+
+# absolue path to this directory
+APPCONFIG_MODULES_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
+
+# environment setup
+CONFIG_USE_MIDDLEWARE = true
+include $(APPCONFIG_MODULES_DIR)/../../apps.mk
+
+# include directories for configurations
+APPSINC += $(APPCONFIG_MODULES_DIR)
+
+# set the build directory
+ifeq ($(BUILDDIR),)
+  BUILDDIR = $(APPCONFIG_MODULE_DIR)/build
+endif
+export BUILDDIR
diff --git a/configurations/apps.mk b/configurations/apps.mk
new file mode 100644
index 0000000..f7c377e
--- /dev/null
+++ b/configurations/apps.mk
@@ -0,0 +1,42 @@
+################################################################################
+# AMiRo-Apps is a collection of applications for the Autonomous Mini Robot     #
+# (AMiRo) platform.                                                            #
+# Copyright (C) 2018..2018  Thomas Schöpping et al.                            #
+#                                                                              #
+# This program is free software: you can redistribute it and/or modify         #
+# it under the terms of the GNU General Public License as published by         #
+# the Free Software Foundation, either version 3 of the License, or            #
+# (at your option) any later version.                                          #
+#                                                                              #
+# This program is distributed in the hope that it will be useful,              #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of               #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                #
+# GNU General Public License for more details.                                 #
+#                                                                              #
+# You should have received a copy of the GNU General Public License            #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.        #
+#                                                                              #
+# This research/work was supported by the Cluster of Excellence Cognitive      #
+# Interaction Technology 'CITEC' (EXC 277) at Bielefeld University, which is   #
+# funded by the German Research Foundation (DFG).                              #
+################################################################################
+
+
+
+# absolue path to this directory
+APPSCONFIG_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
+
+# absolute path to the applications directory
+APPS_DIR := $(APPSCONFIG_DIR)/../apps
+
+# operating system setup
+include $(APPSCONFIG_DIR)/../os/os.mk
+
+# middleware setup
+ifneq ($(CONFIG_USE_MIDDLEWARE),)
+  $(info middleware enabled)
+  include $(APPSCONFIG_DIR)/../middleware/middleware.mk
+else
+  $(info middleware disabled)
+endif
+
diff --git a/middleware/uRtWare b/middleware/uRtWare
index e98c61a..5f113d7 160000
--- a/middleware/uRtWare
+++ b/middleware/uRtWare
@@ -1 +1 @@
-Subproject commit e98c61a84c06395279399244de0bd009e53740db
+Subproject commit 5f113d7b692f0a8082b0a36c077d5607b270080c
diff --git a/os/AMiRo-OS b/os/AMiRo-OS
index 2e69d67..a4a18ef 160000
--- a/os/AMiRo-OS
+++ b/os/AMiRo-OS
@@ -1 +1 @@
-Subproject commit 2e69d6712b0aefca44bb5d0191d7c0e7de0ca157
+Subproject commit a4a18efc98046bcdd382e6de5b5f8d786f165ae8
