From 03208fcefcf32d88ad71341db289943cd12d8f17 Mon Sep 17 00:00:00 2001
From: ebensza <bence.janos.szabo@ericsson.com>
Date: Wed, 31 Aug 2016 10:38:16 +0200
Subject: [PATCH] Corrected testcases of the required config analysis, and more
 accurate circular detection(Bug 499534)

Change-Id: I702a8dc0479d8e6c05c6b5425dc2199901373f87
Signed-off-by: ebensza <bence.janos.szabo@ericsson.com>
---
 compiler2/xpather.cc                          | 88 +++++++++++++++----
 .../invalid_buildconfig_param/Makefile        |  2 +-
 .../invalid_buildconfig_tpd/Makefile          |  2 +-
 .../mfgen-tpd/required_config/1/Makefile      |  6 +-
 .../mfgen-tpd/required_config/10/Makefile     |  2 +-
 .../mfgen-tpd/required_config/10/a.tpd        |  4 +-
 .../mfgen-tpd/required_config/10/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/11/Makefile     |  2 +-
 .../mfgen-tpd/required_config/11/a.tpd        |  4 +-
 .../mfgen-tpd/required_config/11/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/12/Makefile     |  2 +-
 .../mfgen-tpd/required_config/12/a.tpd        |  2 +-
 .../mfgen-tpd/required_config/13/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/14/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/14/c.tpd        |  4 +-
 .../mfgen-tpd/required_config/15/Makefile     |  2 +-
 .../mfgen-tpd/required_config/15/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/15/c.tpd        |  4 +-
 .../mfgen-tpd/required_config/16/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/16/c.tpd        |  6 +-
 .../mfgen-tpd/required_config/17/Makefile     |  2 +-
 .../mfgen-tpd/required_config/17/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/18/Makefile     | 18 ++--
 .../mfgen-tpd/required_config/18/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/18/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/18/d.tpd        | 12 ---
 .../mfgen-tpd/required_config/19/Makefile     |  2 +-
 .../mfgen-tpd/required_config/19/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/19/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/19/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/2/Makefile      |  2 +-
 .../mfgen-tpd/required_config/20/a.tpd        |  2 +-
 .../mfgen-tpd/required_config/20/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/20/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/20/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/21/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/21/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/22/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/22/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/23/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/23/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/23/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/24/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/24/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/24/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/25/Makefile     |  4 +-
 .../mfgen-tpd/required_config/25/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/25/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/25/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/25/e.tpd        | 12 ++-
 .../mfgen-tpd/required_config/26/Makefile     |  6 +-
 .../mfgen-tpd/required_config/26/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/26/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/26/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/26/e.tpd        |  4 +-
 .../mfgen-tpd/required_config/27/Makefile     |  2 +-
 .../mfgen-tpd/required_config/27/a.tpd        |  2 +-
 .../mfgen-tpd/required_config/27/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/27/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/27/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/28/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/28/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/28/e.tpd        |  4 +-
 .../mfgen-tpd/required_config/29/Makefile     |  2 +-
 .../mfgen-tpd/required_config/29/a.tpd        |  2 +-
 .../mfgen-tpd/required_config/29/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/29/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/29/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/29/e.tpd        |  4 +-
 .../mfgen-tpd/required_config/3/a.tpd         |  2 +-
 .../mfgen-tpd/required_config/30/Makefile     |  2 +-
 .../mfgen-tpd/required_config/30/a.tpd        |  2 +-
 .../mfgen-tpd/required_config/30/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/30/e.tpd        |  4 +-
 .../mfgen-tpd/required_config/31/Makefile     |  2 +-
 .../mfgen-tpd/required_config/31/d.tpd        |  1 -
 .../mfgen-tpd/required_config/31/e.tpd        |  4 +-
 .../mfgen-tpd/required_config/31/f.tpd        |  2 +-
 .../mfgen-tpd/required_config/32/a.tpd        |  2 +-
 .../mfgen-tpd/required_config/32/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/32/f.tpd        |  2 +-
 .../mfgen-tpd/required_config/33/Makefile     |  2 +-
 .../mfgen-tpd/required_config/33/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/33/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/33/f.tpd        |  2 +-
 .../mfgen-tpd/required_config/34/Makefile     | 18 ++--
 .../mfgen-tpd/required_config/34/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/34/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/34/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/34/f.tpd        |  2 +-
 .../mfgen-tpd/required_config/35/Makefile     |  2 +-
 .../mfgen-tpd/required_config/35/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/35/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/36/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/37/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/37/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/38/Makefile     | 10 +--
 .../mfgen-tpd/required_config/38/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/38/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/38/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/39/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/39/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/4/Makefile      |  2 +-
 .../mfgen-tpd/required_config/4/a.tpd         |  2 +-
 .../mfgen-tpd/required_config/40/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/40/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/41/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/42/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/42/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/42/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/43/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/43/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/43/e.tpd        |  4 +-
 .../mfgen-tpd/required_config/43/f.tpd        |  2 +-
 .../mfgen-tpd/required_config/44/Makefile     |  2 +-
 .../mfgen-tpd/required_config/44/a.tpd        |  2 +-
 .../mfgen-tpd/required_config/44/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/44/c.tpd        |  2 +-
 .../mfgen-tpd/required_config/44/e.tpd        |  4 +-
 .../mfgen-tpd/required_config/44/f.tpd        |  2 +-
 .../mfgen-tpd/required_config/46/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/47/Makefile     |  2 +-
 .../mfgen-tpd/required_config/47/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/48/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/48/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/49/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/49/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/5/a.tpd         |  2 +-
 .../mfgen-tpd/required_config/50/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/50/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/50/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/51/Makefile     |  2 +-
 .../mfgen-tpd/required_config/51/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/51/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/51/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/52/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/52/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/52/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/53/Makefile     | 18 ++--
 .../mfgen-tpd/required_config/53/b.tpd        |  2 +-
 .../mfgen-tpd/required_config/53/d.tpd        |  2 +-
 .../mfgen-tpd/required_config/53/e.tpd        |  2 +-
 .../mfgen-tpd/required_config/54/Makefile     | 64 ++++++++++++++
 .../mfgen-tpd/required_config/54/a.tpd        | 32 +++++++
 .../mfgen-tpd/required_config/54/b.tpd        | 49 +++++++++++
 .../mfgen-tpd/required_config/54/c.tpd        | 29 ++++++
 .../mfgen-tpd/required_config/54/d.tpd        | 30 +++++++
 .../mfgen-tpd/required_config/54/e.tpd        | 35 ++++++++
 .../mfgen-tpd/required_config/54/f.tpd        | 45 ++++++++++
 .../mfgen-tpd/required_config/55/Makefile     | 52 +++++++++++
 .../mfgen-tpd/required_config/55/a.tpd        | 36 ++++++++
 .../mfgen-tpd/required_config/55/b.tpd        | 45 ++++++++++
 .../mfgen-tpd/required_config/55/c.tpd        | 45 ++++++++++
 .../mfgen-tpd/required_config/55/d.tpd        | 46 ++++++++++
 .../mfgen-tpd/required_config/55/e.tpd        | 51 +++++++++++
 .../mfgen-tpd/required_config/56/Makefile     | 52 +++++++++++
 .../mfgen-tpd/required_config/56/a.tpd        | 30 +++++++
 .../mfgen-tpd/required_config/56/b.tpd        | 45 ++++++++++
 .../mfgen-tpd/required_config/56/c.tpd        | 45 ++++++++++
 .../mfgen-tpd/required_config/56/d.tpd        | 46 ++++++++++
 .../mfgen-tpd/required_config/56/e.tpd        | 35 ++++++++
 .../mfgen-tpd/required_config/6/Makefile      |  8 +-
 .../mfgen-tpd/required_config/7/a.tpd         |  4 +-
 .../mfgen-tpd/required_config/8/Makefile      |  6 +-
 .../mfgen-tpd/required_config/8/a.tpd         |  2 +-
 .../mfgen-tpd/required_config/8/b.tpd         |  2 +-
 .../mfgen-tpd/required_config/9/a.tpd         |  4 +-
 .../mfgen-tpd/required_config/9/b.tpd         |  2 +-
 .../mfgen-tpd/required_config/Makefile        |  2 +-
 169 files changed, 1098 insertions(+), 225 deletions(-)
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/54/Makefile
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/54/a.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/54/b.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/54/c.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/54/d.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/54/e.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/54/f.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/55/Makefile
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/55/a.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/55/b.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/55/c.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/55/d.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/55/e.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/56/Makefile
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/56/a.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/56/b.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/56/c.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/56/d.tpd
 create mode 100644 regression_test/compileonly/mfgen-tpd/required_config/56/e.tpd

diff --git a/compiler2/xpather.cc b/compiler2/xpather.cc
index 658be18d9..d1cbef008 100644
--- a/compiler2/xpather.cc
+++ b/compiler2/xpather.cc
@@ -903,7 +903,7 @@ static boolean is_circular_dep(const struct config_struct* all_configs, const ch
         }
         // Remove child
         last_list = *list;
-        while(last_list && last_list->str) {
+        while(last_list && last_list->next != NULL && last_list->next->next != NULL) {
           last_list = last_list->next;
         }
         Free(last_list->str);
@@ -953,11 +953,11 @@ static boolean analyse_child(struct config_struct* const all_configs, const char
     // Insert all required config of project_name project's act_config configuration
     struct string2_list* last_proj_config = tmp->requirements;
     while (last_proj_config && last_proj_config->str1 != NULL && last_proj_config->str2 != NULL) {
-      result = insert_to_required_config(all_configs, last_proj_config->str1, last_proj_config->str2, required_configs);
+      insert_to_required_config(all_configs, last_proj_config->str1, last_proj_config->str2, required_configs);
       last_proj_config = last_proj_config->next;
     }
     // Analyse the children of this project too.
-    result = insert_to_tmp_config(tmp_configs, project_name, act_config, TRUE);
+    insert_to_tmp_config(tmp_configs, project_name, act_config, TRUE);
     struct string_list* last_child = tmp->children;
     while (last_child && last_child->str != NULL) {
       result = analyse_child(all_configs, last_child->str, NULL, required_configs, tmp_configs);
@@ -981,14 +981,18 @@ static boolean analyse_child(struct config_struct* const all_configs, const char
         // If someone requires something about project_name project
         if (strcmp(req_config->str1, project_name) == 0) {
           const struct config_struct* tmp = all_configs;
-          // Get the active configuration of project_name project
-          while (tmp && tmp->project_name != NULL && tmp->project_conf != NULL) {
-            if (strcmp(tmp->project_name, project_name) == 0 && tmp->is_active == TRUE) {
-              act_config = tmp->project_conf;
-              is_active = TRUE;
-              break;
+          if (project_config == NULL) {
+            // Get the active configuration of project_name project
+            while (tmp && tmp->project_name != NULL && tmp->project_conf != NULL) {
+              if (strcmp(tmp->project_name, project_name) == 0 && tmp->is_active == TRUE) {
+                act_config = tmp->project_conf;
+                is_active = TRUE;
+                break;
+              }
+              tmp = tmp->next;
             }
-            tmp = tmp->next;
+          } else {
+            act_config = project_config;
           }
           found = TRUE;
           
@@ -1070,7 +1074,7 @@ static boolean analyse_child(struct config_struct* const all_configs, const char
       // Insert the active configuration to the required_configs
       result = insert_to_required_config(all_configs, project_name, act_config, required_configs);
       if (result == FALSE) return result;
-   
+      
       //Insert the project requirements of the project_name project's active configuration
       struct string2_list* last_proj_config = last->requirements;
       while (last_proj_config && last_proj_config->str1 != NULL && last_proj_config->str2 != NULL) {
@@ -1079,12 +1083,44 @@ static boolean analyse_child(struct config_struct* const all_configs, const char
         // project_name is an element of the circle
         struct string_list* list = NULL;
         boolean circular = is_circular_dep(all_configs, last_proj_config->str1, last_proj_config->str1, project_name, &list);
+        boolean need_circular_error = FALSE;
+        // Find the last_proj_config->str1 project in the circle, and 
+        // determine if it has parent projects other than that are in the circle
+        if (circular) {
+          // Find the config struct of last_proj_config->str1
+          struct config_struct* tmp2 = all_configs;
+          while (tmp2 && tmp2->project_name != NULL) {
+            if (strcmp(tmp2->project_name, last_proj_config->str1) == 0) {
+              break;
+            }
+            tmp2 = tmp2->next;
+          }
+          if (list && tmp2 && tmp2->dependencies != NULL) {
+            struct string_list* deps = tmp2->dependencies;
+            while (deps && deps->str != NULL) {
+              struct string_list* tmp_list = list;
+              boolean tmp_error = FALSE;
+              while (tmp_list && tmp_list->str != NULL) {
+                if (strcmp(tmp_list->str, deps->str) == 0) {
+                  tmp_error = TRUE;
+                  break;
+                }
+                tmp_list = tmp_list->next;
+              }
+              if (tmp_error == FALSE) {
+                need_circular_error = TRUE;
+                break;
+              }
+              deps = deps->next;
+            }
+          }
+        }
         free_string_list(list);
         // Go through the tmp_configs to check inconsistency
         while (tmp_tmp && tmp_tmp->str1 != NULL && tmp_tmp->str2 != NULL) {
           if (strcmp(tmp_tmp->str1, last_proj_config->str1) == 0 && 
-             (strcmp(tmp_tmp->str2, last_proj_config->str2) != 0 &&
-             (!tmp_tmp->is_active || circular))) {
+              strcmp(tmp_tmp->str2, last_proj_config->str2) != 0 && 
+              circular && need_circular_error) {
             // Insert the configuration. This will cause an error later.
             insert_to_required_config(all_configs, tmp_tmp->str1, tmp_tmp->str2, required_configs);
             result = FALSE;
@@ -1491,14 +1527,14 @@ static tpd_result process_tpd_internal(const char *p_tpd_name, char *tpdName, co
   { // check if the active configuration exists
     expstring_t xpathActCfg= mprintf(
       "/TITAN_Project_File_Information/Configurations/"
-        "Configuration[@name='%s']/text()", actcfg); // todo
+        "Configuration[@name='%s']/text()", actcfg);
     XPathObject theConfigEx(run_xpath(xpathCtx, xpathActCfg));
     Free(xpathActCfg);
 
     xmlNodeSetPtr nodes = theConfigEx->nodesetval;
     if (nodes == NULL) {
-      ERROR("The active build configuration named '%s' does not exist",
-          actcfg);
+      ERROR("The active build configuration named '%s' of project '%s' does not exist",
+        actcfg, *p_project_name);
       for (size_t i = 0; i < folders.size(); ++i) {
         Free(const_cast<char*>(folders.get_nth_elem(i)));
       }
@@ -1512,7 +1548,25 @@ static tpd_result process_tpd_internal(const char *p_tpd_name, char *tpdName, co
     //                        To ensure that the first elem is checked too if last_elem->next is null
     while (last_elem && last_elem->str1 != NULL && last_elem->str2 != NULL) {
       if (!strcmp(last_elem->str1, *p_project_name) && strcmp(last_elem->str2, actcfg)) {
-        ERROR("Required configuration is inconsistent : Project '%s' cannot have 2 "
+        { // check if the other configuration exists
+          expstring_t xpathActCfg= mprintf(
+            "/TITAN_Project_File_Information/Configurations/"
+              "Configuration[@name='%s']/text()", last_elem->str2);
+          XPathObject theConfigEx(run_xpath(xpathCtx, xpathActCfg));
+          Free(xpathActCfg);
+
+          xmlNodeSetPtr nodes = theConfigEx->nodesetval;
+          if (nodes == NULL) {
+            ERROR("The active build configuration named '%s' of project '%s' does not exist",
+              last_elem->str2, *p_project_name);
+            for (size_t i = 0; i < folders.size(); ++i) {
+              Free(const_cast<char*>(folders.get_nth_elem(i)));
+            }
+            folders.clear();
+            return TPD_FAILED;
+          }
+        }
+        ERROR("Required configuration is inconsistent or circular : Project '%s' cannot have 2 "
               "different configuration '%s' and '%s'",
               last_elem->str1, actcfg, last_elem->str2);
         for (size_t i = 0; i < folders.size(); ++i) {
diff --git a/regression_test/compileonly/mfgen-tpd/invalid_buildconfig_param/Makefile b/regression_test/compileonly/mfgen-tpd/invalid_buildconfig_param/Makefile
index d5f4473b2..7431fed77 100644
--- a/regression_test/compileonly/mfgen-tpd/invalid_buildconfig_param/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/invalid_buildconfig_param/Makefile
@@ -34,7 +34,7 @@ BuildHelloTpd:
 	 -t ../HelloTpd.tpd -b notexisting 2>&1 | tee ../output
 
 CheckHelloTpd: BuildHelloTpd
-	if [ `grep -c "error: The active build configuration named 'notexisting' does not exist" ./HelloTpd/output` -ne 1 ]; \
+	if [ `grep -c "error: The active build configuration named 'notexisting' of project 'HelloTpd' does not exist" ./HelloTpd/output` -ne 1 ]; \
 	then exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/invalid_buildconfig_tpd/Makefile b/regression_test/compileonly/mfgen-tpd/invalid_buildconfig_tpd/Makefile
index 0fa7dbb8c..88576d93f 100644
--- a/regression_test/compileonly/mfgen-tpd/invalid_buildconfig_tpd/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/invalid_buildconfig_tpd/Makefile
@@ -34,7 +34,7 @@ BuildHelloTpd:
 	 -t ../HelloTpd.tpd 2>&1 | tee ../../output
 
 CheckHelloTpd: BuildHelloTpd
-	if [ `grep -c "error: The active build configuration named 'notExistingBuildConfig' does not exist" ./output` -ne 1 ] \
+	if [ `grep -c "error: The active build configuration named 'notExistingBuildConfig' of project 'Hello000' does not exist" ./output` -ne 1 ] \
 	  || [ `grep -c "error: Failed to process .*../Hello000/Hello000.tpd" ./output` -ne 1 ]; \
 	then exit 1; fi
 
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/1/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/1/Makefile
index 5c8a97fe9..3a8a31ecc 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/1/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/1/Makefile
@@ -21,7 +21,7 @@ endif
 # If we used ${MAKE} in the rules below, 'make -n' would succeed once,
 # then fail on every subsequent invocation until a 'make clean' is done. 
 
-#This tests that the -b badConfig does not exists and an error is produced
+#This tests that the -b goodConfig exists and it is being used.
 
 MAKEPROG := ${MAKE}
 
@@ -29,14 +29,14 @@ all: CheckTpd
 
 BuildTpd:
 	$(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \
-	-t a.tpd -r -c -b goodConfig  2>&1 | tee output
+	-t a.tpd -r -c -b goodConfig
 
 CheckTpd: BuildTpd
 	if [ `grep -c "EXECUTABLE = binGood" ./binGood/Makefile` -ne 1 ]; \
 	then echo "Makefilegen required config test 1 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
-	-rm -rf binDefault binGood output
+	-rm -rf binGood
 
 distclean: clean
 	-rm -f *.out
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/10/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/10/Makefile
index 8f853e0a8..260bbc3a4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/10/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/10/Makefile
@@ -42,7 +42,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'c' cannot have 2 different configuration '2' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'c' cannot have 2 different configuration '2' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 10 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/10/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/10/a.tpd
index 818e6df69..e677a0e0c 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/10/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/10/a.tpd
@@ -26,11 +26,11 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>2</rerquiredConfiguration>
+            <requiredConfiguration>2</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/10/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/10/b.tpd
index de23eb7e8..595ec0023 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/10/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/10/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
       </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/11/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/11/Makefile
index 37a194fa3..d9a42390f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/11/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/11/Makefile
@@ -43,7 +43,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: The active build configuration named '2' does not exist" ./output` -ne 1 ]; \
+	if [ `grep -c "error: The active build configuration named '2' of project 'c' does not exist" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 11 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/11/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/11/a.tpd
index 818e6df69..e677a0e0c 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/11/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/11/a.tpd
@@ -26,11 +26,11 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>2</rerquiredConfiguration>
+            <requiredConfiguration>2</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/11/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/11/b.tpd
index de23eb7e8..595ec0023 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/11/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/11/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
       </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/12/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/12/Makefile
index 7858cbf41..316899e0a 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/12/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/12/Makefile
@@ -34,7 +34,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'a' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'a' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 12 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/12/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/12/a.tpd
index ae51e64c0..552898657 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/12/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/12/a.tpd
@@ -25,7 +25,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>a</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/13/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/13/c.tpd
index da949771b..036a3cdc4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/13/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/13/c.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/14/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/14/b.tpd
index b842d9036..b8f382cc0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/14/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/14/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/14/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/14/c.tpd
index 434052d5e..ee25ecc92 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/14/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/14/c.tpd
@@ -27,11 +27,11 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/15/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/15/Makefile
index c127363b5..e975b126f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/15/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/15/Makefile
@@ -40,7 +40,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'd' cannot have 2 different configuration '1' and '2'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'd' cannot have 2 different configuration '1' and '2'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 15 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/15/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/15/b.tpd
index f1652a2ac..516b97ef5 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/15/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/15/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>2</rerquiredConfiguration>
+            <requiredConfiguration>2</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/15/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/15/c.tpd
index 434052d5e..ee25ecc92 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/15/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/15/c.tpd
@@ -27,11 +27,11 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/16/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/16/b.tpd
index b842d9036..b8f382cc0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/16/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/16/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/16/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/16/c.tpd
index 5b402657c..d3918bd11 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/16/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/16/c.tpd
@@ -24,13 +24,9 @@
           <workingDirectory>binDefault</workingDirectory>
         </LocalBuildSettings>
         <ConfigurationRequirements>
-          <configurationRequirement>
-            <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
-          </configurationRequirement>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/17/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/17/Makefile
index 134720988..870ac42da 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/17/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/17/Makefile
@@ -39,7 +39,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'b' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'b' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 17 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/17/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/17/d.tpd
index 0b56fcd4b..137fc8e34 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/17/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/17/d.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/18/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/18/Makefile
index e4b084789..aadd0aca0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/18/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/18/Makefile
@@ -29,21 +29,27 @@ endif
 #            c    |b:1
 #    c:1=>d:1|    |
 #            d>--->
-#Result will be: Error
+#Result will be: a:Default, b:Default, c:1, d:1
 MAKEPROG := ${MAKE}
 
 all: CheckTpd 
 
 BuildTpd:
-	$(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \
-	-t a.tpd -r -c -W -g 2>&1 | tee output
+	$(TTCN3_DIR)/bin/ttcn3_makefilegen -F $(MFGEN_FLAGS) $(COVERAGE_FLAG) \
+	-t a.tpd -r -c -W -g
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'b' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
-	then echo "Makefilegen required config test 18 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = binDefault" ./a_binDefault/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 52 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = binDefault" ./b_binDefault/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 52 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = bin1" ./c_bin1/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 52 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = bin1" ./d_bin1/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 52 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
-	-rm -rf output a_binDefault
+	-rm -rf a_binDefault b_binDefault c_bin1 d_bin1
 
 distclean: clean
 	-rm -f *.out
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/18/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/18/b.tpd
index 56de0488f..32d083ff7 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/18/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/18/b.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/18/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/18/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/18/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/18/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/18/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/18/d.tpd
index 6e6c91e3b..35b8333c9 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/18/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/18/d.tpd
@@ -23,12 +23,6 @@
         <LocalBuildSettings>
           <workingDirectory>binDefault</workingDirectory>
         </LocalBuildSettings>
-        <ConfigurationRequirements>
-          <configurationRequirement>
-            <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
-          </configurationRequirement>
-        </ConfigurationRequirements>
       </ProjectProperties>
     </Configuration>
     <Configuration name="1">
@@ -39,12 +33,6 @@
         <LocalBuildSettings>
           <workingDirectory>bin1</workingDirectory>
         </LocalBuildSettings>
-        <ConfigurationRequirements>
-          <configurationRequirement>
-            <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
-          </configurationRequirement>
-        </ConfigurationRequirements>
       </ProjectProperties>
     </Configuration>
   </Configurations>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/19/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/19/Makefile
index c8c8ae0f9..8fb85bf84 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/19/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/19/Makefile
@@ -39,7 +39,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'c' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'b' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 19 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/19/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/19/b.tpd
index 56de0488f..32d083ff7 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/19/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/19/b.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/19/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/19/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/19/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/19/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/19/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/19/d.tpd
index ee6862041..a3d6ee0bc 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/19/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/19/d.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/2/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/2/Makefile
index 9fa5a86d2..8b0904fd8 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/2/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/2/Makefile
@@ -32,7 +32,7 @@ BuildTpd:
 	-t a.tpd -r -c -b badConfig  2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: The active build configuration named 'badConfig' does not exist" ./output` -ne 1 ]; \
+	if [ `grep -c "error: The active build configuration named 'badConfig' of project 'a' does not exist" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 2 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/20/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/20/a.tpd
index 82101ee12..5ae3a92c5 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/20/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/20/a.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/20/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/20/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/20/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/20/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/20/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/20/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/20/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/20/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/20/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/20/d.tpd
index ee6862041..a3d6ee0bc 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/20/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/20/d.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/21/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/21/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/21/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/21/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/21/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/21/d.tpd
index ee6862041..a3d6ee0bc 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/21/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/21/d.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/22/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/22/b.tpd
index 56de0488f..32d083ff7 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/22/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/22/b.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/22/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/22/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/22/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/22/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/23/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/23/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/23/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/23/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/23/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/23/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/23/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/23/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/23/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/23/e.tpd
index aaa5044b0..19d60a91e 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/23/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/23/e.tpd
@@ -25,7 +25,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/24/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/24/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/24/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/24/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/24/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/24/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/24/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/24/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/24/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/24/e.tpd
index 080542cb1..91462bdef 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/24/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/24/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>Default</rerquiredConfiguration>
+            <requiredConfiguration>Default</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/25/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/25/Makefile
index 07430e195..a8a02ab12 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/25/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/25/Makefile
@@ -39,11 +39,11 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'b' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'e' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 25 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
-	-rm -rf output a_binDefault e_binDefault
+	-rm -rf output a_binDefault b_bin1 c_bin1 d_bin1 e_binDefault
 
 distclean: clean
 	-rm -f *.out
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/25/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/25/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/25/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/25/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/25/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/25/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/25/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/25/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/25/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/25/d.tpd
index 5cd5b377a..16f4770a4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/25/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/25/d.tpd
@@ -37,7 +37,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>e</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/25/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/25/e.tpd
index 1dc522d70..1cf3d44e1 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/25/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/25/e.tpd
@@ -26,10 +26,20 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
     </Configuration>
+     <Configuration name="1">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin1</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin1</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
   </Configurations>
 </TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/26/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/26/Makefile
index 3dbe34994..909f2edd4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/26/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/26/Makefile
@@ -23,7 +23,7 @@ endif
 
 # Hierarchy
 #            a--->e------<
-#         b:2|    |(b:1) |
+#            |    |(b:1) |
 #            b<---<      |
 #    b:1=>c:1|    |      |
 #            c    |      |d:1=>e:1
@@ -39,11 +39,11 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'b' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'e' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 26 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
-	-rm -rf output a_binDefault e_binDefault
+	-rm -rf output a_binDefault b_bin1 c_bin1 d_bin1 e_binDefault
 
 distclean: clean
 	-rm -f *.out
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/26/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/26/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/26/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/26/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/26/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/26/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/26/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/26/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/26/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/26/d.tpd
index 5cd5b377a..16f4770a4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/26/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/26/d.tpd
@@ -37,7 +37,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>e</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/26/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/26/e.tpd
index bb38f6f90..b21b6ecf4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/26/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/26/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
@@ -42,7 +42,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/27/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/27/Makefile
index 78f78eb44..48df40fe8 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/27/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/27/Makefile
@@ -39,7 +39,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'b' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'b' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 27 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/27/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/27/a.tpd
index a1587388f..93d26ed6b 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/27/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/27/a.tpd
@@ -27,7 +27,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>Default</rerquiredConfiguration>
+            <requiredConfiguration>Default</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/27/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/27/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/27/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/27/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/27/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/27/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/27/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/27/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/27/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/27/e.tpd
index 1dc522d70..0fad11119 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/27/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/27/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/28/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/28/b.tpd
index 3cc20cf9f..fe37aaee2 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/28/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/28/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+             <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/28/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/28/c.tpd
index 398d19781..47a31d583 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/28/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/28/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+             <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/28/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/28/e.tpd
index bb38f6f90..6bbfb7083 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/28/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/28/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+             <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
@@ -42,7 +42,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+             <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/29/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/29/Makefile
index d14c071ce..aec479f94 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/29/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/29/Makefile
@@ -35,7 +35,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'a' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'a' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 29 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/29/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/29/a.tpd
index ea703ac61..d0dd43065 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/29/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/29/a.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>a</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/29/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/29/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/29/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/29/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/29/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/29/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/29/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/29/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/29/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/29/d.tpd
index 5cd5b377a..16f4770a4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/29/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/29/d.tpd
@@ -37,7 +37,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>e</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/29/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/29/e.tpd
index bb38f6f90..b21b6ecf4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/29/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/29/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
@@ -42,7 +42,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/3/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/3/a.tpd
index 82101ee12..5ae3a92c5 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/3/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/3/a.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/30/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/30/Makefile
index 6143ee96f..5aec3e6d2 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/30/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/30/Makefile
@@ -35,7 +35,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'a' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'a' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 30 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/30/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/30/a.tpd
index 3e9f6be8f..50bdaf217 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/30/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/30/a.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>a</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/30/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/30/d.tpd
index 5cd5b377a..16f4770a4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/30/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/30/d.tpd
@@ -37,7 +37,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>e</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/30/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/30/e.tpd
index bb38f6f90..b21b6ecf4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/30/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/30/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
@@ -42,7 +42,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/31/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/31/Makefile
index 8239689f1..af6680ef9 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/31/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/31/Makefile
@@ -40,7 +40,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'b' cannot have 2 different configuration '1' and '2'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'b' cannot have 2 different configuration '1' and '2'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 31 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/31/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/31/d.tpd
index 7e0501118..93fac9127 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/31/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/31/d.tpd
@@ -12,7 +12,6 @@
   <ProjectName>d</ProjectName>
   <ReferencedProjects>
     <ReferencedProject name="b" projectLocationURI="b.tpd"/>
-    <ReferencedProject name="e" projectLocationURI="e.tpd"/>
   </ReferencedProjects>
   <ActiveConfiguration>Default</ActiveConfiguration>
   <Configurations>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/31/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/31/e.tpd
index ba59b0bc8..91c59624b 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/31/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/31/e.tpd
@@ -26,11 +26,11 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>f</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/31/f.tpd b/regression_test/compileonly/mfgen-tpd/required_config/31/f.tpd
index 7703f595f..77673c192 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/31/f.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/31/f.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>2</rerquiredConfiguration>
+            <requiredConfiguration>2</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/32/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/32/a.tpd
index a0323b463..d4fa7f173 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/32/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/32/a.tpd
@@ -11,8 +11,8 @@
 <TITAN_Project_File_Information version="1.0">
   <ProjectName>a</ProjectName>
   <ReferencedProjects>
-    <ReferencedProject name="e" projectLocationURI="e.tpd"/>
     <ReferencedProject name="b" projectLocationURI="b.tpd"/>
+    <ReferencedProject name="e" projectLocationURI="e.tpd"/>
   </ReferencedProjects>
   <ActiveConfiguration>Default</ActiveConfiguration>
   <Configurations>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/32/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/32/e.tpd
index 8a8270060..e57150df5 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/32/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/32/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>f</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/32/f.tpd b/regression_test/compileonly/mfgen-tpd/required_config/32/f.tpd
index d6f9140c2..ee6213825 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/32/f.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/32/f.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/33/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/33/Makefile
index 3d1351a05..ff0656d17 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/33/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/33/Makefile
@@ -42,7 +42,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'b' cannot have 2 different configuration '2' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'b' cannot have 2 different configuration '2' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 33 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/33/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/33/d.tpd
index fd47b1ae9..d6d020a10 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/33/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/33/d.tpd
@@ -27,7 +27,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/33/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/33/e.tpd
index 8a8270060..e57150df5 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/33/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/33/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>f</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/33/f.tpd b/regression_test/compileonly/mfgen-tpd/required_config/33/f.tpd
index 7703f595f..77673c192 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/33/f.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/33/f.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>2</rerquiredConfiguration>
+            <requiredConfiguration>2</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/34/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/34/Makefile
index 6180210b1..21b989963 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/34/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/34/Makefile
@@ -22,14 +22,14 @@ endif
 # then fail on every subsequent invocation until a 'make clean' is done. 
 
 # Hierarchy
-#            a--->e-------->
-#            |    |        |
-#            |    |        |
-#            b<---<---<    |
-#    b:2=>d:1|    |   |    |f:1
-#            c    |   |b:2 |
-#            |    |   |    |
-#            d>--->   <----f
+#            a--->e------------->
+#            |    |             |
+#            |    |             |
+#            b<---<---<         |
+#    b:2=>d:1|    |   |         |f:1
+#            c    |   |f:1=>b:2 |
+#            |    |   |         |
+#            d>--->   <---------f
 #           d:1=>b:1
 #
 #Result will be: Error
@@ -42,7 +42,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'b' cannot have 2 different configuration '2' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'b' cannot have 2 different configuration '2' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 34 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/34/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/34/b.tpd
index 7aa001986..b0781cf21 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/34/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/34/b.tpd
@@ -46,7 +46,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/34/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/34/d.tpd
index b3f629148..4f634a021 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/34/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/34/d.tpd
@@ -37,7 +37,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/34/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/34/e.tpd
index 8a8270060..e57150df5 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/34/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/34/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>f</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/34/f.tpd b/regression_test/compileonly/mfgen-tpd/required_config/34/f.tpd
index 7703f595f..77673c192 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/34/f.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/34/f.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>2</rerquiredConfiguration>
+            <requiredConfiguration>2</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/35/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/35/Makefile
index fed5fab4c..e36940db9 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/35/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/35/Makefile
@@ -42,7 +42,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'b' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'b' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 35 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/35/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/35/d.tpd
index fd47b1ae9..d6d020a10 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/35/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/35/d.tpd
@@ -27,7 +27,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/35/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/35/e.tpd
index 8a8270060..e57150df5 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/35/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/35/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>f</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/36/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/36/d.tpd
index ee6862041..a3d6ee0bc 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/36/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/36/d.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/37/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/37/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/37/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/37/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/37/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/37/d.tpd
index ee6862041..a3d6ee0bc 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/37/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/37/d.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/38/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/38/Makefile
index 3c9a00c54..c935501a1 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/38/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/38/Makefile
@@ -29,7 +29,7 @@ endif
 #            c    |d:1=>b:1
 #    c:1=>d:1|    |
 #            d>--->
-#Result will be: a:Default, b:Default, c:Default, d:Default
+#Result will be: a:Default, b:1, c:1, d:1
 MAKEPROG := ${MAKE}
 
 all: CheckTpd 
@@ -41,15 +41,15 @@ BuildTpd:
 CheckTpd: BuildTpd
 	if [ `grep -c "EXECUTABLE = binDefault" ./a_binDefault/Makefile` -ne 1 ]; \
 	then echo "Makefilegen required config test 38 failed: Overall verdict: fail" && exit 1; fi
-	if [ `grep -c "EXECUTABLE = binDefault" ./b_binDefault/Makefile` -ne 1 ]; \
+	if [ `grep -c "EXECUTABLE = bin1" ./b_bin1/Makefile` -ne 1 ]; \
 	then echo "Makefilegen required config test 38 failed: Overall verdict: fail" && exit 1; fi
-	if [ `grep -c "EXECUTABLE = binDefault" ./c_binDefault/Makefile` -ne 1 ]; \
+	if [ `grep -c "EXECUTABLE = bin1" ./c_bin1/Makefile` -ne 1 ]; \
 	then echo "Makefilegen required config test 38 failed: Overall verdict: fail" && exit 1; fi
-	if [ `grep -c "EXECUTABLE = binDefault" ./d_binDefault/Makefile` -ne 1 ]; \
+	if [ `grep -c "EXECUTABLE = bin1" ./d_bin1/Makefile` -ne 1 ]; \
 	then echo "Makefilegen required config test 38 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
-	-rm -rf a_binDefault b_binDefault c_binDefault d_binDefault
+	-rm -rf a_binDefault b_bin1 c_bin1 d_bin1
 
 distclean: clean
 	-rm -f *.out
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/38/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/38/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/38/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/38/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/38/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/38/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/38/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/38/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/38/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/38/d.tpd
index ee6862041..a3d6ee0bc 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/38/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/38/d.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/39/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/39/b.tpd
index b842d9036..b8f382cc0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/39/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/39/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/39/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/39/c.tpd
index 352e50fc1..d3918bd11 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/39/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/39/c.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/4/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/4/Makefile
index d7695f604..7d075a06e 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/4/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/4/Makefile
@@ -39,7 +39,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g  2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: The active build configuration named '2' does not exist" ./output` -ne 1 ]; \
+	if [ `grep -c "error: The active build configuration named '2' of project 'b' does not exist" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 4 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/4/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/4/a.tpd
index f68c8336e..5d58cf44b 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/4/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/4/a.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>2</rerquiredConfiguration>
+            <requiredConfiguration>2</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/40/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/40/b.tpd
index b842d9036..b8f382cc0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/40/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/40/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/40/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/40/c.tpd
index 67695d80d..5625db5d1 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/40/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/40/c.tpd
@@ -25,7 +25,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/41/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/41/b.tpd
index b842d9036..b8f382cc0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/41/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/41/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/42/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/42/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/42/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/42/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/42/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/42/c.tpd
index 398d19781..4b0689715 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/42/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/42/c.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/42/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/42/e.tpd
index aaa5044b0..19d60a91e 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/42/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/42/e.tpd
@@ -25,7 +25,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/43/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/43/b.tpd
index b842d9036..b8f382cc0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/43/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/43/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/43/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/43/c.tpd
index c38ac36ac..e45370ad0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/43/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/43/c.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>e</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/43/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/43/e.tpd
index ff90c24f6..c740b3f41 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/43/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/43/e.tpd
@@ -37,11 +37,11 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>f</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
           <configurationRequirement>
             <projectName>h</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/43/f.tpd b/regression_test/compileonly/mfgen-tpd/required_config/43/f.tpd
index 7cbf7d75e..59700f077 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/43/f.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/43/f.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>g</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/44/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/44/Makefile
index cf2adff51..a7943cd08 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/44/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/44/Makefile
@@ -43,7 +43,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'h' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'h' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 44 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/44/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/44/a.tpd
index 95ee41d58..8280c6ed0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/44/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/44/a.tpd
@@ -27,7 +27,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>h</projectName>
-            <rerquiredConfiguration>Default</rerquiredConfiguration>
+            <requiredConfiguration>Default</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/44/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/44/b.tpd
index b842d9036..b8f382cc0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/44/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/44/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>d</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/44/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/44/c.tpd
index c38ac36ac..e45370ad0 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/44/c.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/44/c.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>e</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/44/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/44/e.tpd
index ff90c24f6..c740b3f41 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/44/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/44/e.tpd
@@ -37,11 +37,11 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>f</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
           <configurationRequirement>
             <projectName>h</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/44/f.tpd b/regression_test/compileonly/mfgen-tpd/required_config/44/f.tpd
index 7cbf7d75e..59700f077 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/44/f.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/44/f.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>g</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/46/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/46/b.tpd
index 025aa6a00..e206c2d18 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/46/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/46/b.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/47/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/47/Makefile
index ae5284bbb..8e6268ac4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/47/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/47/Makefile
@@ -30,7 +30,7 @@ endif
 #                
 
 
-#Result will be: a:Default, b:Default, c:1, d:Default, e:Default
+#Result will be: a:Default, b:Default, c:Default, d:Default, e:Default
 MAKEPROG := ${MAKE}
 
 all: CheckTpd 
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/47/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/47/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/47/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/47/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/48/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/48/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/48/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/48/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/48/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/48/e.tpd
index 2a02e62f7..2669abb8a 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/48/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/48/e.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/49/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/49/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/49/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/49/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/49/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/49/e.tpd
index 352b8d4d2..66b2c0cbf 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/49/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/49/e.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/5/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/5/a.tpd
index 5a11e0051..37bf5e9c4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/5/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/5/a.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/50/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/50/b.tpd
index 3cc20cf9f..75a70078f 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/50/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/50/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/50/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/50/d.tpd
index aed3744b9..c44d64ae8 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/50/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/50/d.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>e</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/50/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/50/e.tpd
index 352b8d4d2..66b2c0cbf 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/50/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/50/e.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/51/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/51/Makefile
index ea8e67049..c6881fcb4 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/51/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/51/Makefile
@@ -40,7 +40,7 @@ BuildTpd:
 	-t a.tpd -r -c -W -g 2>&1 | tee output
 
 CheckTpd: BuildTpd
-	if [ `grep -c "error: Required configuration is inconsistent : Project 'c' cannot have 2 different configuration '2' and '1'" ./output` -ne 1 ]; \
+	if [ `grep -c "error: Required configuration is inconsistent or circular : Project 'c' cannot have 2 different configuration '2' and '1'" ./output` -ne 1 ]; \
 	then echo "Makefilegen required config test 51 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/51/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/51/b.tpd
index 80570a388..43ce1a252 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/51/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/51/b.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>2</rerquiredConfiguration>
+            <requiredConfiguration>2</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/51/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/51/d.tpd
index aed3744b9..c44d64ae8 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/51/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/51/d.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>e</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/51/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/51/e.tpd
index 352b8d4d2..66b2c0cbf 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/51/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/51/e.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/52/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/52/b.tpd
index 49295640b..20b199fb8 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/52/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/52/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>2</rerquiredConfiguration>
+            <requiredConfiguration>2</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/52/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/52/d.tpd
index aed3744b9..c44d64ae8 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/52/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/52/d.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>e</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/52/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/52/e.tpd
index 352b8d4d2..66b2c0cbf 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/52/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/52/e.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/53/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/53/Makefile
index a827d3f45..5a6c75372 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/53/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/53/Makefile
@@ -39,15 +39,23 @@ MAKEPROG := ${MAKE}
 all: CheckTpd 
 
 BuildTpd:
-	$(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \
-	-t a.tpd -r -c -W -g 2>&1 | tee output
+	$(TTCN3_DIR)/bin/ttcn3_makefilegen -F $(MFGEN_FLAGS) $(COVERAGE_FLAG) \
+	-t a.tpd -r -c -W -g
 
 CheckTpd: BuildTpd
-	if [ `grep -c " error: Required configuration is inconsistent : Project 'e' cannot have 2 different configuration 'Default' and '1'" ./output` -ne 1 ]; \
-	then echo "Makefilegen required config test 53 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = binDefault" ./a_binDefault/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 54 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = binDefault" ./b_binDefault/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 54 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = bin1" ./c_bin1/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 54 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = binDefault" ./d_binDefault/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 54 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = bin1" ./e_bin1/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 54 failed: Overall verdict: fail" && exit 1; fi
 
 clean:
-	-rm -rf a_binDefault b_binDefault c_binDefault d_binDefault output
+	-rm -rf a_binDefault b_binDefault c_bin1 d_binDefault e_bin1
 
 distclean: clean
 	-rm -f *.out
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/53/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/53/b.tpd
index 49295640b..20b199fb8 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/53/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/53/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>2</rerquiredConfiguration>
+            <requiredConfiguration>2</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/53/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/53/d.tpd
index aed3744b9..c44d64ae8 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/53/d.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/53/d.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>e</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/53/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/53/e.tpd
index 352b8d4d2..66b2c0cbf 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/53/e.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/53/e.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/54/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/54/Makefile
new file mode 100644
index 000000000..98fd84985
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/54/Makefile
@@ -0,0 +1,64 @@
+##############################################################################
+# Copyright (c) 2000-2016 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#   Szabo, Bence Janos
+#
+##############################################################################
+TOPDIR := ../../../..
+include $(TOPDIR)/Makefile.regression
+
+ifdef LCOV
+COVERAGE_FLAG := -C
+endif
+
+# ${MAKEPROG} has the same content as the built-in ${MAKE},
+# except the special handling of ${MAKE} does not apply.
+# If we used ${MAKE} in the rules below, 'make -n' would succeed once,
+# then fail on every subsequent invocation until a 'make clean' is done. 
+
+# Hierarchy   
+#            a--->e-------->
+#            |    |        |
+#            |    |        |
+#            b<---|---<    |
+#            |    |   |    |f:1
+#            c    |   |b:1 |
+#            |    |   |    |
+#            d>--->   <----f
+# d refers both b and e
+#Result will be: a:Default, b:1, c:Default, d:Default, e:Default, f:1
+MAKEPROG := ${MAKE}
+
+all: CheckTpd 
+
+BuildTpd:
+	$(TTCN3_DIR)/bin/ttcn3_makefilegen -F $(MFGEN_FLAGS) $(COVERAGE_FLAG) \
+	-t a.tpd -r -c -W -g
+
+CheckTpd: BuildTpd
+	if [ `grep -c "EXECUTABLE = binDefault" ./a_binDefault/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 32 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = bin1" ./b_bin1/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 32 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = binDefault" ./c_binDefault/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 32 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = binDefault" ./d_binDefault/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 32 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = binDefault" ./e_binDefault/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 32 failed: Overall verdict: fail" && exit 1; fi
+	if [ `grep -c "EXECUTABLE = bin1" ./f_bin1/Makefile` -ne 1 ]; \
+	then echo "Makefilegen required config test 32 failed: Overall verdict: fail" && exit 1; fi
+
+clean:
+	-rm -rf a_binDefault b_bin1 c_binDefault d_binDefault e_binDefault f_bin1
+
+distclean: clean
+	-rm -f *.out
+
+.PHONY: all clean distclean BuildTpd CheckTpd
+
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/54/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/54/a.tpd
new file mode 100644
index 000000000..93d32616f
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/54/a.tpd
@@ -0,0 +1,32 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>a</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="e" projectLocationURI="e.tpd"/>
+    <ReferencedProject name="b" projectLocationURI="b.tpd"/>
+        <ReferencedProject name="f" projectLocationURI="f.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/54/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/54/b.tpd
new file mode 100644
index 000000000..12207521f
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/54/b.tpd
@@ -0,0 +1,49 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>b</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="c" projectLocationURI="c.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+    <Configuration name="1">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin1</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin1</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+   <Configuration name="2">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin2</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin2</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/54/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/54/c.tpd
new file mode 100644
index 000000000..555023e27
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/54/c.tpd
@@ -0,0 +1,29 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>c</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="d" projectLocationURI="d.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/54/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/54/d.tpd
new file mode 100644
index 000000000..7e0501118
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/54/d.tpd
@@ -0,0 +1,30 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>d</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="b" projectLocationURI="b.tpd"/>
+    <ReferencedProject name="e" projectLocationURI="e.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/54/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/54/e.tpd
new file mode 100644
index 000000000..e57150df5
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/54/e.tpd
@@ -0,0 +1,35 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>e</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="f" projectLocationURI="f.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>f</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/54/f.tpd b/regression_test/compileonly/mfgen-tpd/required_config/54/f.tpd
new file mode 100644
index 000000000..ee6213825
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/54/f.tpd
@@ -0,0 +1,45 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>f</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="b" projectLocationURI="b.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+    <Configuration name="1">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin1</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin1</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>b</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/55/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/55/Makefile
new file mode 100644
index 000000000..f9f1476df
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/55/Makefile
@@ -0,0 +1,52 @@
+##############################################################################
+# Copyright (c) 2000-2016 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#   Szabo, Bence Janos
+#
+##############################################################################
+TOPDIR := ../../../..
+include $(TOPDIR)/Makefile.regression
+
+ifdef LCOV
+COVERAGE_FLAG := -C
+endif
+
+# ${MAKEPROG} has the same content as the built-in ${MAKE},
+# except the special handling of ${MAKE} does not apply.
+# If we used ${MAKE} in the rules below, 'make -n' would succeed once,
+# then fail on every subsequent invocation until a 'make clean' is done. 
+
+# Hierarchy
+#            a--->e------<
+#         b:2|    |(b:1) |
+#            b<---<      |
+#    b:1=>c:1|    |      |
+#            c    |      |d:1=>e:1
+#    c:1=>d:1|    |      |
+#            d>--->------>
+#Result will be: Error
+MAKEPROG := ${MAKE}
+
+all: CheckTpd 
+
+BuildTpd:
+	$(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \
+	-t a.tpd -r -c -W -g 2>&1 | tee output
+
+CheckTpd: BuildTpd
+	if [ `grep -c "error: The active build configuration named '2' of project 'b' does not exist" ./output` -ne 1 ]; \
+	then echo "Makefilegen required config test 55 failed: Overall verdict: fail" && exit 1; fi
+
+clean:
+	-rm -rf output a_binDefault e_binDefault
+
+distclean: clean
+	-rm -f *.out
+
+.PHONY: all clean distclean BuildTpd CheckTpd
+
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/55/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/55/a.tpd
new file mode 100644
index 000000000..665791648
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/55/a.tpd
@@ -0,0 +1,36 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>a</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="b" projectLocationURI="b.tpd"/>
+    <ReferencedProject name="e" projectLocationURI="e.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+         <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>b</projectName>
+            <requiredConfiguration>2</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/55/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/55/b.tpd
new file mode 100644
index 000000000..75a70078f
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/55/b.tpd
@@ -0,0 +1,45 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>b</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="c" projectLocationURI="c.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+    <Configuration name="1">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin1</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin1</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>c</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/55/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/55/c.tpd
new file mode 100644
index 000000000..4b0689715
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/55/c.tpd
@@ -0,0 +1,45 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>c</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="d" projectLocationURI="d.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+    <Configuration name="1">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin1</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin1</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>d</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/55/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/55/d.tpd
new file mode 100644
index 000000000..16f4770a4
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/55/d.tpd
@@ -0,0 +1,46 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>d</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="b" projectLocationURI="b.tpd"/>
+    <ReferencedProject name="e" projectLocationURI="e.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+    <Configuration name="1">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin1</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin1</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>e</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/55/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/55/e.tpd
new file mode 100644
index 000000000..b21b6ecf4
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/55/e.tpd
@@ -0,0 +1,51 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>e</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="b" projectLocationURI="b.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>b</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+    <Configuration name="1">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin1</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin1</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>b</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/56/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/56/Makefile
new file mode 100644
index 000000000..4b70fca38
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/56/Makefile
@@ -0,0 +1,52 @@
+##############################################################################
+# Copyright (c) 2000-2016 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#   Szabo, Bence Janos
+#
+##############################################################################
+TOPDIR := ../../../..
+include $(TOPDIR)/Makefile.regression
+
+ifdef LCOV
+COVERAGE_FLAG := -C
+endif
+
+# ${MAKEPROG} has the same content as the built-in ${MAKE},
+# except the special handling of ${MAKE} does not apply.
+# If we used ${MAKE} in the rules below, 'make -n' would succeed once,
+# then fail on every subsequent invocation until a 'make clean' is done. 
+
+# Hierarchy
+#            a--->e------<
+#            |    |(b:1) |
+#            b<---<      |
+#    b:1=>c:1|    |      |
+#            c    |      |d:1=>e:1
+#    c:1=>d:1|    |      |
+#            d>--->------>
+#Result will be: Error
+MAKEPROG := ${MAKE}
+
+all: CheckTpd 
+
+BuildTpd:
+	$(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \
+	-t a.tpd -r -c -W -g 2>&1 | tee output
+
+CheckTpd: BuildTpd
+	if [ `grep -c " error: The active build configuration named '1' of project 'e' does not exist" ./output` -ne 1 ]; \
+	then echo "Makefilegen required config test 56 failed: Overall verdict: fail" && exit 1; fi
+
+clean:
+	-rm -rf output a_binDefault b_bin1 c_bin1 d_bin1 e_binDefault
+
+distclean: clean
+	-rm -f *.out
+
+.PHONY: all clean distclean BuildTpd CheckTpd
+
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/56/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/56/a.tpd
new file mode 100644
index 000000000..d4fa7f173
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/56/a.tpd
@@ -0,0 +1,30 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>a</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="b" projectLocationURI="b.tpd"/>
+    <ReferencedProject name="e" projectLocationURI="e.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/56/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/56/b.tpd
new file mode 100644
index 000000000..75a70078f
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/56/b.tpd
@@ -0,0 +1,45 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>b</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="c" projectLocationURI="c.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+    <Configuration name="1">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin1</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin1</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>c</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/56/c.tpd b/regression_test/compileonly/mfgen-tpd/required_config/56/c.tpd
new file mode 100644
index 000000000..4b0689715
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/56/c.tpd
@@ -0,0 +1,45 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>c</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="d" projectLocationURI="d.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+    <Configuration name="1">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin1</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin1</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>d</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/56/d.tpd b/regression_test/compileonly/mfgen-tpd/required_config/56/d.tpd
new file mode 100644
index 000000000..16f4770a4
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/56/d.tpd
@@ -0,0 +1,46 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>d</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="b" projectLocationURI="b.tpd"/>
+    <ReferencedProject name="e" projectLocationURI="e.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+    <Configuration name="1">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>bin1</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin1</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>e</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/56/e.tpd b/regression_test/compileonly/mfgen-tpd/required_config/56/e.tpd
new file mode 100644
index 000000000..0fad11119
--- /dev/null
+++ b/regression_test/compileonly/mfgen-tpd/required_config/56/e.tpd
@@ -0,0 +1,35 @@
+<!--
+ Copyright (c) 2000-2016 Ericsson Telecom AB
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+  Szabo, Bence Janos – initial implementation
+-->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>e</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="b" projectLocationURI="b.tpd"/>
+  </ReferencedProjects>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <targetExecutable>binDefault</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>binDefault</workingDirectory>
+        </LocalBuildSettings>
+        <ConfigurationRequirements>
+          <configurationRequirement>
+            <projectName>b</projectName>
+            <requiredConfiguration>1</requiredConfiguration>
+          </configurationRequirement>
+        </ConfigurationRequirements>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/6/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/6/Makefile
index eb3c223b0..bf47248eb 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/6/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/6/Makefile
@@ -24,10 +24,10 @@ endif
 #This tests that 'a' references 'b' and 'b' references 'c' and every project
 #has the Default configuration. Nobody requires anything from anyone.
 #      a
-#     / \
-#    /   \
-#   /     \
-#  b       c
+#     / 
+#    /   
+#   /     
+#  b------->c
 
 MAKEPROG := ${MAKE}
 
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/7/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/7/a.tpd
index 1ece244d4..b9327fff9 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/7/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/7/a.tpd
@@ -26,11 +26,11 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/8/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/8/Makefile
index ebc63a584..fa727da08 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/8/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/8/Makefile
@@ -24,9 +24,9 @@ endif
 #This tests that 'a' references 'b' and 'b' references 'c' and 'a' requires
 #'b''s '1' configuration and 'b''s '1' configuration requires 'c''s '1' config.
 #      a
-#     / \
-# b:1/   \
-#   /     \
+#     / 
+# b:1/   
+#   /     
 #  b------>c
 #   b:1=>c:1
 
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/8/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/8/a.tpd
index 82101ee12..5ae3a92c5 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/8/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/8/a.tpd
@@ -26,7 +26,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/8/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/8/b.tpd
index de23eb7e8..595ec0023 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/8/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/8/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
       </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/9/a.tpd b/regression_test/compileonly/mfgen-tpd/required_config/9/a.tpd
index 1ece244d4..b9327fff9 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/9/a.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/9/a.tpd
@@ -26,11 +26,11 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>b</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
         </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/9/b.tpd b/regression_test/compileonly/mfgen-tpd/required_config/9/b.tpd
index de23eb7e8..595ec0023 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/9/b.tpd
+++ b/regression_test/compileonly/mfgen-tpd/required_config/9/b.tpd
@@ -36,7 +36,7 @@
         <ConfigurationRequirements>
           <configurationRequirement>
             <projectName>c</projectName>
-            <rerquiredConfiguration>1</rerquiredConfiguration>
+            <requiredConfiguration>1</requiredConfiguration>
           </configurationRequirement>
       </ConfigurationRequirements>
       </ProjectProperties>
diff --git a/regression_test/compileonly/mfgen-tpd/required_config/Makefile b/regression_test/compileonly/mfgen-tpd/required_config/Makefile
index 07fa8e7e0..6d730a11c 100644
--- a/regression_test/compileonly/mfgen-tpd/required_config/Makefile
+++ b/regression_test/compileonly/mfgen-tpd/required_config/Makefile
@@ -14,7 +14,7 @@ include $(TOPDIR)/Makefile.regression
 
 CODIRS := 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 \
 	  26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 \
-	  48 49 50 51 52 53
+	  48 49 50 51 52 53 54 55 56
 
 
 #The configurations of the TPD files only differ in the name of the working
-- 
GitLab