]> Kevux Git Server - fll/commitdiff
Feature: Enable support for modes on (almost) all Fake build settings Objects.
authorKevin Day <thekevinday@gmail.com>
Sat, 19 Feb 2022 04:49:48 +0000 (22:49 -0600)
committerKevin Day <thekevinday@gmail.com>
Sat, 19 Feb 2022 04:52:26 +0000 (22:52 -0600)
The only ones that are now not supposed to support this are the "modes" and "modes_default" Objects.

It should now be possible to build against clang with a command like the following:
  fake clean build -m monolithic -m clang

This is possible because of the "build_compiler-clang clang" and similar settings added to the build settings file in addition to the functionality added by this commit.

77 files changed:
build/scripts/bootstrap.sh
level_0/f_account/data/build/settings
level_0/f_capability/data/build/settings
level_0/f_color/data/build/settings
level_0/f_console/data/build/settings
level_0/f_control_group/data/build/settings
level_0/f_conversion/data/build/settings
level_0/f_directory/data/build/settings
level_0/f_environment/data/build/settings
level_0/f_execute/data/build/settings
level_0/f_file/data/build/settings
level_0/f_fss/data/build/settings
level_0/f_iki/data/build/settings
level_0/f_limit/data/build/settings
level_0/f_memory/data/build/settings
level_0/f_path/data/build/settings
level_0/f_pipe/data/build/settings
level_0/f_print/data/build/settings
level_0/f_serialize/data/build/settings
level_0/f_signal/data/build/settings
level_0/f_socket/data/build/settings
level_0/f_status/data/build/settings
level_0/f_status_string/data/build/settings
level_0/f_string/data/build/settings
level_0/f_thread/data/build/settings
level_0/f_type/data/build/settings
level_0/f_type_array/data/build/settings
level_0/f_utf/data/build/settings
level_1/fl_control_group/data/build/settings
level_1/fl_conversion/data/build/settings
level_1/fl_directory/data/build/settings
level_1/fl_environment/data/build/settings
level_1/fl_execute/data/build/settings
level_1/fl_fss/data/build/settings
level_1/fl_iki/data/build/settings
level_1/fl_print/data/build/settings
level_1/fl_signal/data/build/settings
level_1/fl_string/data/build/settings
level_1/fl_utf/data/build/settings
level_1/fl_utf_file/data/build/settings
level_2/fll_control_group/data/build/settings
level_2/fll_error/data/build/settings
level_2/fll_execute/data/build/settings
level_2/fll_file/data/build/settings
level_2/fll_fss/data/build/settings
level_2/fll_fss_status_string/data/build/settings
level_2/fll_iki/data/build/settings
level_2/fll_path/data/build/settings
level_2/fll_print/data/build/settings
level_2/fll_program/data/build/settings
level_2/fll_status_string/data/build/settings
level_3/byte_dump/data/build/settings
level_3/control/data/build/settings
level_3/controller/data/build/settings
level_3/fake/c/private-build-load.c
level_3/fake/data/build/settings
level_3/fake/data/projects/example-objects/sources/fake.c
level_3/fake/specifications/settings.txt
level_3/firewall/data/build/settings
level_3/fss_basic_list_read/data/build/settings
level_3/fss_basic_list_write/data/build/settings
level_3/fss_basic_read/data/build/settings
level_3/fss_basic_write/data/build/settings
level_3/fss_embedded_list_read/data/build/settings
level_3/fss_embedded_list_write/data/build/settings
level_3/fss_extended_list_read/data/build/settings
level_3/fss_extended_list_write/data/build/settings
level_3/fss_extended_read/data/build/settings
level_3/fss_extended_write/data/build/settings
level_3/fss_identify/data/build/settings
level_3/fss_payload_read/data/build/settings
level_3/fss_payload_write/data/build/settings
level_3/fss_status_code/data/build/settings
level_3/iki_read/data/build/settings
level_3/iki_write/data/build/settings
level_3/status_code/data/build/settings
level_3/utf8/data/build/settings

index c3079e24699ced6072fbf51133e91ec9e3ef04d0..5be4e217370b7563f770ac1cf56a2cf85badd197 100644 (file)
@@ -8,6 +8,7 @@
 # This script is only designed specifically for bootstrap compiling the FLL project and does not necessarily fully follow the fake (featureless make) build process.
 
 bootstrap_main() {
+
   local public_name="Simple FLL Bootstrap Script"
   local system_name=bootstrap
   local called_name=$(basename $0)
@@ -36,6 +37,8 @@ bootstrap_main() {
   local settings_file=
   local settings_defines=
   local mode=
+  local modes=
+  local modes_available=
   local operation=
   local operation_failure=
   local path_build=build/
@@ -116,7 +119,7 @@ bootstrap_main() {
         if [[ $grab_next == "defines_override" ]] ; then
           defines_override="$p"
         elif [[ $grab_next == "mode" ]] ; then
-          mode="$p"
+          modes="$modes$p "
         elif [[ $grab_next == "process" ]] ; then
           process="$p"
         elif [[ $grab_next == "settings_name" ]] ; then
@@ -155,36 +158,27 @@ bootstrap_main() {
     return 0
   fi
 
+  bootstrap_load_settings
+
   # FSS and Featurless Make supports more flexible mode names, but for the purpose of this bootstrap script and avoiding potential problems, keep it simple.
-  if [[ $mode != "" && $(echo "$mode" | grep -s -o "[^_[:alnum:]+-]") != "" ]] ; then
-    if [[ $verbosity != "quiet" ]] ; then
-      echo -e "${c_error}ERROR: the mode $c_notice$mode$c_error includes invalid characters, only alphanumeric, underscore, minus, and plus are allowed.$c_reset"
-    fi
+  if [[ $modes != "" ]] ; then
+    for mode in $modes ; do
+      if [[ $(echo "$mode" | grep -s -o "[^_[:alnum:]+-]") != "" ]] ; then
+        if [[ $verbosity != "quiet" ]] ; then
+          echo -e "${c_error}ERROR: The mode $c_notice$mode$c_error includes invalid characters, only alphanumeric, underscore, minus, and plus are allowed.$c_reset"
+        fi
 
-    bootstrap_cleanup
-    return 1
+        bootstrap_cleanup
+        return 1
+      fi
+    done
   fi
 
-  bootstrap_load_settings
-
   if [[ $? -ne 0 ]] ; then
     bootstrap_cleanup
     return 1
   fi
 
-  if [[ $mode == "" ]] ; then
-    mode=${variables[$(bootstrap_id modes_default)]}
-
-    if [[ $mode != "" && $(echo "$mode" | grep -s -o "[^_[:alnum:]+-]") != "" ]] ; then
-      if [[ $verbosity != "quiet" ]] ; then
-        echo -e "${c_error}ERROR: the mode $c_notice$mode$c_error includes invalid characters, only alphanumeric, underscore, minus, and plus are allowed.$c_reset"
-      fi
-
-      bootstrap_cleanup
-      return 1
-    fi
-  fi
-
   bootstrap_load_settings_mode
 
   if [[ $? -ne 0 ]] ; then
@@ -207,10 +201,10 @@ bootstrap_main() {
   project_built_shared="${project_built}.shared"
   project_built_static="${project_built}.static"
 
-  if [[ ${variables[$(bootstrap_id modes)]} == "" ]] ; then
-    if [[ $mode != "" ]] ; then
+  if [[ $modes_available == "" ]] ; then
+    if [[ $modes != "" ]] ; then
       if [[ $verbosity != "quiet" ]] ; then
-        echo -e "${c_error}ERROR: The mode $c_notice$mode$c_error is not a valid mode, there are no available modes.$c_error$c_reset"
+        echo -e "${c_error}ERROR: The mode(s) $c_notice$modes$c_error are not a valid modes, there are no available modes.$c_error$c_reset"
       fi
 
       bootstrap_cleanup
@@ -218,16 +212,20 @@ bootstrap_main() {
     fi
   else
     let i=0
-    for m in ${variables[$(bootstrap_id modes)]} ; do
-      if [[ "$mode" == "$m" ]] ; then
-        let i=1
-        break
-      fi
+    for m in $modes_available ; do
+      for mode in $modes ; do
+        if [[ "$mode" == "$m" ]] ; then
+          let i=1
+          break
+        fi
+      done
+
+      if [[ $i -eq 1 ]] ; then break ; fi
     done
 
     if [[ $i -eq 0 ]] ; then
       if [[ $verbosity != "quiet" ]] ; then
-        echo -e "${c_error}ERROR: The mode $c_notice$mode$c_error is not a valid mode, it must be one of: $c_notice${variables[$(bootstrap_id modes)]}$c_error.$c_reset"
+        echo -e "${c_error}ERROR: The mode(s) $c_notice$modes$c_error are not valid modes, they must be one of: $c_notice$modes_available$c_error.$c_reset"
       fi
 
       bootstrap_cleanup
@@ -377,6 +375,7 @@ bootstrap_main() {
 }
 
 bootstrap_handle_colors() {
+
   if [[ $do_color == "light" ]] ; then
     c_error="\\033[1;31m"
     c_warning="\\033[0;31m"
@@ -398,6 +397,7 @@ bootstrap_handle_colors() {
 }
 
 bootstrap_help() {
+
   echo
   echo -e "${c_title}$public_name$c_reset"
   echo -e " ${c_notice}Version $version$c_reset"
@@ -434,6 +434,7 @@ bootstrap_help() {
 }
 
 bootstrap_id() {
+
   case $1 in
     "build_compiler") echo -n 0;;
     "build_indexer") echo -n 1;;
@@ -524,92 +525,92 @@ bootstrap_id() {
     "version_nano_prefix") echo -n 86;;
     "version_target") echo -n 87;;
 
-    "build_compiler-$mode") echo -n 88;;
-    "build_indexer-$mode") echo -n 89;;
-    "build_indexer_arguments-$mode") echo -n 90;;
-    "build_language-$mode") echo -n 91;;
-    "build_libraries-$mode") echo -n 92;;
-    "build_libraries_shared-$mode") echo -n 93;;
-    "build_libraries_static-$mode") echo -n 94;;
-    "build_name-$mode") echo -n 95;;
-    "build_objects_library-$mode") echo -n 96;;
-    "build_objects_library_shared-$mode") echo -n 97;;
-    "build_objects_library_static-$mode") echo -n 98;;
-    "build_objects_program-$mode") echo -n 99;;
-    "build_objects_program_shared-$mode") echo -n 100;;
-    "build_objects_program_static-$mode") echo -n 101;;
-    "build_script-$mode") echo -n 102;;
-    "build_shared-$mode") echo -n 103;;
-    "build_sources_headers-$mode") echo -n 104;;
-    "build_sources_headers_shared-$mode") echo -n 105;;
-    "build_sources_headers_static-$mode") echo -n 106;;
-    "build_sources_library-$mode") echo -n 107;;
-    "build_sources_library_shared-$mode") echo -n 108;;
-    "build_sources_library_static-$mode") echo -n 109;;
-    "build_sources_object-$mode") echo -n 110;;
-    "build_sources_object_shared-$mode") echo -n 111;;
-    "build_sources_object_static-$mode") echo -n 112;;
-    "build_sources_program-$mode") echo -n 113;;
-    "build_sources_program_shared-$mode") echo -n 114;;
-    "build_sources_program_static-$mode") echo -n 115;;
-    "build_sources_script-$mode") echo -n 116;;
-    "build_sources_setting-$mode") echo -n 117;;
-    "build_static-$mode") echo -n 118;;
-    "defines-$mode") echo -n 119;;
-    "defines_library-$mode") echo -n 120;;
-    "defines_library_shared-$mode") echo -n 121;;
-    "defines_library_static-$mode") echo -n 122;;
-    "defines_object-$mode") echo -n 123;;
-    "defines_object_shared-$mode") echo -n 124;;
-    "defines_object_static-$mode") echo -n 125;;
-    "defines_program-$mode") echo -n 126;;
-    "defines_program_shared-$mode") echo -n 127;;
-    "defines_program_static-$mode") echo -n 128;;
-    "defines_shared-$mode") echo -n 129;;
-    "defines_static-$mode") echo -n 130;;
-    "environment-$mode") echo -n 131;;
-    "flags-$mode") echo -n 132;;
-    "flags_library-$mode") echo -n 133;;
-    "flags_library_shared-$mode") echo -n 134;;
-    "flags_library_static-$mode") echo -n 135;;
-    "flags_object-$mode") echo -n 136;;
-    "flags_object_shared-$mode") echo -n 137;;
-    "flags_object_static-$mode") echo -n 138;;
-    "flags_program-$mode") echo -n 139;;
-    "flags_program_shared-$mode") echo -n 140;;
-    "flags_program_static-$mode") echo -n 141;;
-    "flags_shared-$mode") echo -n 142;;
-    "flags_static-$mode") echo -n 143;;
-    "has_path_standard-$mode") echo -n 144;;
-    "path_headers-$mode") echo -n 145;;
-    "path_language-$mode") echo -n 146;;
-    "path_library_script-$mode") echo -n 147;;
-    "path_library_shared-$mode") echo -n 148;;
-    "path_library_static-$mode") echo -n 149;;
-    "path_object_script-$mode") echo -n 150;;
-    "path_object_shared-$mode") echo -n 151;;
-    "path_object_static-$mode") echo -n 152;;
-    "path_program_script-$mode") echo -n 153;;
-    "path_program_shared-$mode") echo -n 154;;
-    "path_program_static-$mode") echo -n 155;;
-    "path_sources-$mode") echo -n 156;;
-    "path_sources_object-$mode") echo -n 157;;
-    "preserve_path_headers-$mode") echo -n 158;;
-    "process_post-$mode") echo -n 159;;
-    "process_pre-$mode") echo -n 160;;
-    "search_exclusive-$mode") echo -n 161;;
-    "search_shared-$mode") echo -n 162;;
-    "search_static-$mode") echo -n 163;;
-    "version_file-$mode") echo -n 164;;
-    "version_major-$mode") echo -n 165;;
-    "version_major_prefix-$mode") echo -n 166;;
-    "version_micro-$mode") echo -n 167;;
-    "version_micro_prefix-$mode") echo -n 168;;
-    "version_minor-$mode") echo -n 169;;
-    "version_minor_prefix-$mode") echo -n 170;;
-    "version_nano-$mode") echo -n 171;;
-    "version_nano_prefix-$mode") echo -n 172;;
-    "version_target-$mode") echo -n 173;;
+    "build_compiler-mode") echo -n 88;;
+    "build_indexer-mode") echo -n 89;;
+    "build_indexer_arguments-mode") echo -n 90;;
+    "build_language-mode") echo -n 91;;
+    "build_libraries-mode") echo -n 92;;
+    "build_libraries_shared-mode") echo -n 93;;
+    "build_libraries_static-mode") echo -n 94;;
+    "build_name-mode") echo -n 95;;
+    "build_objects_library-mode") echo -n 96;;
+    "build_objects_library_shared-mode") echo -n 97;;
+    "build_objects_library_static-mode") echo -n 98;;
+    "build_objects_program-mode") echo -n 99;;
+    "build_objects_program_shared-mode") echo -n 100;;
+    "build_objects_program_static-mode") echo -n 101;;
+    "build_script-mode") echo -n 102;;
+    "build_shared-mode") echo -n 103;;
+    "build_sources_headers-mode") echo -n 104;;
+    "build_sources_headers_shared-mode") echo -n 105;;
+    "build_sources_headers_static-mode") echo -n 106;;
+    "build_sources_library-mode") echo -n 107;;
+    "build_sources_library_shared-mode") echo -n 108;;
+    "build_sources_library_static-mode") echo -n 109;;
+    "build_sources_object-mode") echo -n 110;;
+    "build_sources_object_shared-mode") echo -n 111;;
+    "build_sources_object_static-mode") echo -n 112;;
+    "build_sources_program-mode") echo -n 113;;
+    "build_sources_program_shared-mode") echo -n 114;;
+    "build_sources_program_static-mode") echo -n 115;;
+    "build_sources_script-mode") echo -n 116;;
+    "build_sources_setting-mode") echo -n 117;;
+    "build_static-mode") echo -n 118;;
+    "defines-mode") echo -n 119;;
+    "defines_library-mode") echo -n 120;;
+    "defines_library_shared-mode") echo -n 121;;
+    "defines_library_static-mode") echo -n 122;;
+    "defines_object-mode") echo -n 123;;
+    "defines_object_shared-mode") echo -n 124;;
+    "defines_object_static-mode") echo -n 125;;
+    "defines_program-mode") echo -n 126;;
+    "defines_program_shared-mode") echo -n 127;;
+    "defines_program_static-mode") echo -n 128;;
+    "defines_shared-mode") echo -n 129;;
+    "defines_static-mode") echo -n 130;;
+    "environment-mode") echo -n 131;;
+    "flags-mode") echo -n 132;;
+    "flags_library-mode") echo -n 133;;
+    "flags_library_shared-mode") echo -n 134;;
+    "flags_library_static-mode") echo -n 135;;
+    "flags_object-mode") echo -n 136;;
+    "flags_object_shared-mode") echo -n 137;;
+    "flags_object_static-mode") echo -n 138;;
+    "flags_program-mode") echo -n 139;;
+    "flags_program_shared-mode") echo -n 140;;
+    "flags_program_static-mode") echo -n 141;;
+    "flags_shared-mode") echo -n 142;;
+    "flags_static-mode") echo -n 143;;
+    "has_path_standard-mode") echo -n 144;;
+    "path_headers-mode") echo -n 145;;
+    "path_language-mode") echo -n 146;;
+    "path_library_script-mode") echo -n 147;;
+    "path_library_shared-mode") echo -n 148;;
+    "path_library_static-mode") echo -n 149;;
+    "path_object_script-mode") echo -n 150;;
+    "path_object_shared-mode") echo -n 151;;
+    "path_object_static-mode") echo -n 152;;
+    "path_program_script-mode") echo -n 153;;
+    "path_program_shared-mode") echo -n 154;;
+    "path_program_static-mode") echo -n 155;;
+    "path_sources-mode") echo -n 156;;
+    "path_sources_object-mode") echo -n 157;;
+    "preserve_path_headers-mode") echo -n 158;;
+    "process_post-mode") echo -n 159;;
+    "process_pre-mode") echo -n 160;;
+    "search_exclusive-mode") echo -n 161;;
+    "search_shared-mode") echo -n 162;;
+    "search_static-mode") echo -n 163;;
+    "version_file-mode") echo -n 164;;
+    "version_major-mode") echo -n 165;;
+    "version_major_prefix-mode") echo -n 166;;
+    "version_micro-mode") echo -n 167;;
+    "version_micro_prefix-mode") echo -n 168;;
+    "version_minor-mode") echo -n 169;;
+    "version_minor_prefix-mode") echo -n 170;;
+    "version_nano-mode") echo -n 171;;
+    "version_nano_prefix-mode") echo -n 172;;
+    "version_target-mode") echo -n 173;;
 
     "has-has_path_standard") echo -n 175;;
     "has-path_library_script") echo -n 176;;
@@ -632,9 +633,11 @@ bootstrap_id() {
 }
 
 bootstrap_load_settings() {
+
   local -i failure=0
   local i=
   local key=
+  local value=
 
   if [[ ! -d ${path_data}build/ ]] ; then
     if [[ $verbosity != "quiet" ]] ; then
@@ -654,7 +657,21 @@ bootstrap_load_settings() {
     return 1
   fi
 
-  for i in build_compiler build_indexer build_indexer_arguments build_language build_libraries build_libraries_shared build_libraries_static build_name build_objects_library build_objects_library_shared build_objects_library_static build_objects_program build_objects_program_shared build_objects_program_static build_script build_shared build_sources_headers build_sources_headers_shared build_sources_headers_static build_sources_library build_sources_library_shared build_sources_library_static build_sources_object build_sources_object_shared build_sources_object_static build_sources_program build_sources_program_shared build_sources_program_static build_sources_script build_sources_setting build_static defines defines_library defines_library_shared defines_library_static defines_object defines_object_shared defines_object_static defines_program defines_program_shared defines_program_static defines_shared defines_static ; do
+  # Get available modes.
+  if [[ $modes_available == "" ]] ; then
+    modes_available=$(grep -s -o "^[[:space:]]*modes[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*modes\>||" -e 's|^[[:space:]]*||')
+  fi
+
+  # Get default modes.
+  modes_default=$(grep -s -o "^[[:space:]]*modes_default[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*modes_default\>||" -e 's|^[[:space:]]*||')
+
+  # Use default modes if no mode is explicitly provided.
+  if [[ $modes == "" ]] ; then
+    modes=$modes_default
+  fi
+
+  # Single value Objects.
+  for i in build_compiler build_indexer build_language build_name build_script build_shared build_sources_object build_sources_object_shared build_sources_object_static build_static has_path_standard path_headers path_language path_library_script path_library_shared path_library_static path_object_script path_object_shared path_object_static path_program_script path_program_shared path_program_static path_sources path_sources_object preserve_path_headers process_post process_pre search_exclusive search_shared search_static version_file version_major version_major_prefix version_micro version_micro_prefix version_minor version_minor_prefix version_nano version_nano_prefix version_target ; do
     key=$(bootstrap_id $i)
 
     if [[ $key == "" ]] ; then
@@ -662,11 +679,16 @@ bootstrap_load_settings() {
         echo -e "${c_warning}WARNING: Failed to find index for '$c_notice$i$c_error' when calling ${c_notice}bootstrap_id()$c_error.$c_reset"
       fi
     else
-      variables[$key]=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||')
+      value=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||')
+
+      if [[ $value != "" ]] ; then
+        variables[$key]="$value"
+      fi
     fi
   done
 
-  for i in environment flags flags_library flags_library_shared flags_library_static flags_object flags_object_shared flags_object_static flags_program flags_program_shared flags_program_static flags_shared flags_static has_path_standard modes modes_default path_headers path_language path_library_script path_library_shared path_library_static path_object_script path_object_shared path_object_static path_program_script path_program_shared path_program_static path_sources path_sources_object preserve_path_headers process_post process_pre search_exclusive search_shared search_static version_file version_major version_major_prefix version_micro version_micro_prefix version_minor version_minor_prefix version_nano version_nano_prefix version_target ; do
+  # Multi value Objects.
+  for i in build_indexer_arguments build_libraries build_libraries_shared build_libraries_static build_objects_library build_objects_library_shared build_objects_library_static build_objects_program build_objects_program_shared build_objects_program_static build_sources_headers build_sources_headers_shared build_sources_headers_static build_sources_library build_sources_library_shared build_sources_library_static build_sources_program build_sources_program_shared build_sources_program_static build_sources_script build_sources_setting defines defines_library defines_library_shared defines_library_static defines_object defines_object_shared defines_object_static defines_program defines_program_shared defines_program_static defines_shared defines_static environment flags flags_library flags_library_shared flags_library_static flags_object flags_object_shared flags_object_static flags_program flags_program_shared flags_program_static flags_shared flags_static ; do
     key=$(bootstrap_id $i)
 
     if [[ $key == "" ]] ; then
@@ -674,42 +696,64 @@ bootstrap_load_settings() {
         echo -e "${c_warning}WARNING: Failed to find index for '$c_notice$i$c_error' when calling ${c_notice}bootstrap_id()$c_error.$c_reset"
       fi
     else
-      variables[$key]=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||')
+      value=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||')
+
+      if [[ $value != "" ]] ; then
+        variables[$key]="$value"
+      fi
     fi
   done
 }
 
 bootstrap_load_settings_mode() {
+
   local i=
   local key=
+  local m=
+  local value=
 
-  for i in build_compiler-$mode build_indexer-$mode build_indexer_arguments-$mode build_language-$mode build_libraries-$mode build_libraries_shared-$mode build_libraries_static-$mode build_name-$mode build_objects_library-$mode build_objects_library_shared-$mode build_objects_library_static-$mode build_objects_program-$mode build_objects_program_shared-$mode build_objects_program_static-$mode build_script-$mode build_shared-$mode build_sources_headers-$mode build_sources_headers_shared-$mode build_sources_headers_static-$mode build_sources_library-$mode build_sources_library_shared-$mode build_sources_library_static-$mode build_sources_object-$mode build_sources_object_shared-$mode build_sources_object_static-$mode build_sources_program-$mode build_sources_program_shared-$mode build_sources_program_static-$mode build_sources_script-$mode build_sources_setting-$mode build_static-$mode defines-$mode defines_library-$mode defines_library_shared-$mode defines_library_static-$mode defines_object-$mode defines_object_shared-$mode defines_object_static-$mode defines_program-$mode defines_program_shared-$mode defines_program_static-$mode defines_shared-$mode defines_static-$mode ; do
-    key=$(bootstrap_id $i)
+  for m in $modes ; do
 
-    if [[ $key == "" ]] ; then
-      if [[ $verbosity != "quiet" ]] ; then
-        echo -e "${c_warning}WARNING: Failed to find index for '$c_notice$i$c_error' when calling ${c_notice}bootstrap_id()$c_error.$c_reset"
+    # Single value Objects.
+    for i in build_compiler build_indexer build_language build_name build_script build_shared build_sources_object build_sources_object_shared build_sources_object_static build_static has_path_standard path_headers path_language path_library_script path_library_shared path_library_static path_object_script path_object_shared path_object_static path_program_script path_program_shared path_program_static path_sources path_sources_object preserve_path_headers process_post process_pre search_exclusive search_shared search_static version_file version_major version_major_prefix version_micro version_micro_prefix version_minor version_minor_prefix version_nano version_nano_prefix version_target ; do
+      key=$(bootstrap_id $i-mode)
+
+      if [[ $key == "" ]] ; then
+        if [[ $verbosity != "quiet" ]] ; then
+          echo -e "${c_warning}WARNING: Failed to find index for '$c_notice$i-$m$c_error' when calling ${c_notice}bootstrap_id()$c_error.$c_reset"
+        fi
+      else
+        value=$(grep -s -o "^[[:space:]]*$i-$m[[:space:]].*\$" $settings_file | sed -e "H;/$i-$m/h;\$!d;x" | sed -e "s|^[[:space:]]*$i-$m\>||" -e 's|^[[:space:]]*||')
+
+        if [[ $value != "" ]] ; then
+          variables[$key]="$value"
+        fi
       fi
-    else
-      variables[$key]=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||')
-    fi
-  done
+    done
 
-  for i in environment-$mode flags-$mode flags_library-$mode flags_library_shared-$mode flags_library_static-$mode flags_object-$mode flags_object_shared-$mode flags_object_static-$mode flags_program-$mode flags_program_shared-$mode flags_program_static-$mode flags_shared-$mode flags_static-$mode has_path_standard-$mode path_headers-$mode path_language-$mode path_library_script-$mode path_library_shared-$mode path_library_static-$mode path_object_script-$mode path_object_shared-$mode path_object_static-$mode path_program_script-$mode path_program_shared-$mode path_program_static-$mode path_sources-$mode path_sources_object-$mode preserve_path_headers-$mode process_post-$mode process_pre-$mode search_exclusive-$mode search_shared-$mode search_static-$mode version_file-$mode version_major-$mode version_major_prefix-$mode version_micro-$mode version_micro_prefix-$mode version_minor-$mode version_minor_prefix-$mode version_nano-$mode version_nano_prefix-$mode version_target-$mode ; do
-    key=$(bootstrap_id $i)
+    # Multi value Objects.
+    for i in build_indexer_arguments build_libraries build_libraries_shared build_libraries_static build_objects_library build_objects_library_shared build_objects_library_static build_objects_program build_objects_program_shared build_objects_program_static build_sources_headers build_sources_headers_shared build_sources_headers_static build_sources_library build_sources_library_shared build_sources_library_static build_sources_program build_sources_program_shared build_sources_program_static build_sources_script build_sources_setting defines defines_library defines_library_shared defines_library_static defines_object defines_object_shared defines_object_static defines_program defines_program_shared defines_program_static defines_shared defines_static environment flags flags_library flags_library_shared flags_library_static flags_object flags_object_shared flags_object_static flags_program flags_program_shared flags_program_static flags_shared flags_static ; do
+      key=$(bootstrap_id $i-mode)
 
-    if [[ $key == "" ]] ; then
-      if [[ $verbosity != "quiet" ]] ; then
-        echo -e "${c_warning}WARNING: Failed to find index for '$c_notice$i$c_error' when calling ${c_notice}bootstrap_id()$c_error.$c_reset"
+      if [[ $key == "" ]] ; then
+        if [[ $verbosity != "quiet" ]] ; then
+          echo -e "${c_warning}WARNING: Failed to find index for '$c_notice$i-$m$c_warning' when calling ${c_notice}bootstrap_id()$c_warning.$c_reset"
+        fi
+      else
+        value=$(grep -s -o "^[[:space:]]*$i-$m[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i-$m\>||" -e 's|^[[:space:]]*||')
+
+        if [[ $value != "" ]] ; then
+          variables[$key]="$value"
+        fi
       fi
-    else
-      variables[$key]=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||')
-    fi
+    done
   done
 }
 
 bootstrap_load_settings_has() {
+
   local i=
+  local m=
 
   for i in build_compiler build_indexer build_shared has_path_standard path_library_script path_library_shared path_library_static path_object_script path_object_shared path_object_static path_program_script path_program_shared path_program_static path_sources path_sources_object search_shared version_major_prefix version_minor_prefix version_micro_prefix version_nano_prefix ; do
     if [[ $(grep -s -o "^[[:space:]]*$i\>" $settings_file | sed -e "s|^[[:space:]]*||") ]] ; then
@@ -719,16 +763,19 @@ bootstrap_load_settings_has() {
     fi
   done
 
-  for i in build_compiler-$mode build_indexer-$mode build_shared-$mode has_path_standard-$mode path_library_script-$mode path_library_shared-$mode path_library_static-$mode path_object_script-$mode path_object_shared-$mode path_object_static-$mode path_program_script-$mode path_program_shared-$mode path_program_static-$mode path_sources-$mode path_sources_object-$mode search_shared-$mode version_major_prefix-$mode version_minor_prefix-$mode version_micro_prefix-$mode version_nano_prefix-$mode ; do
-    if [[ $(grep -s -o "^[[:space:]]*$i-$mode\>" $settings_file | sed -e "s|^[[:space:]]*||") ]] ; then
-      variables[$(bootstrap_id has-$i)]="yes"
-    else
-      variables[$(bootstrap_id has-$i)]="no"
-    fi
+  for m in $modes ; do
+    for i in build_compiler build_indexer build_shared has_path_standard path_library_script path_library_shared path_library_static path_object_script path_object_shared path_object_static path_program_script path_program_shared path_program_static path_sources path_sources_object search_shared version_major_prefix version_minor_prefix version_micro_prefix version_nano_prefix ; do
+      if [[ $(grep -s -o "^[[:space:]]*$i-$m\>" $settings_file | sed -e "s|^[[:space:]]*||") ]] ; then
+        variables[$(bootstrap_id has-$i-mode)]="yes"
+      else
+        variables[$(bootstrap_id has-$i-mode)]="no"
+      fi
+    done
   done
 }
 
 bootstrap_prepare_build() {
+
   local -i failure=0
   local alt=$1
   local i=
@@ -743,8 +790,8 @@ bootstrap_prepare_build() {
     return $failure
   fi
 
-  if [[ ${variables[$(bootstrap_id path_headers-$mode)]} != "" ]] ; then
-    mkdir $verbose -p ${path_build}includes/${variables[$(bootstrap_id path_headers-$mode)]} || failure=1
+  if [[ ${variables[$(bootstrap_id path_headers-mode)]} != "" ]] ; then
+    mkdir $verbose -p ${path_build}includes/${variables[$(bootstrap_id path_headers-mode)]} || failure=1
   elif [[ ${variables[$(bootstrap_id path_headers)]} != "" ]] ; then
     mkdir $verbose -p ${path_build}includes/${variables[$(bootstrap_id path_headers)]} || failure=1
   fi
@@ -761,6 +808,7 @@ bootstrap_prepare_build() {
 }
 
 bootstrap_operation_build() {
+
   local -i failure=0
   local i=
   local n=
@@ -769,8 +817,12 @@ bootstrap_operation_build() {
   local alt=$1
   local directory=
 
+  local build_compiler=${variables[$(bootstrap_id build_compiler)]}
+  local build_indexer=${variables[$(bootstrap_id build_indexer)]}
+  local build_indexer_arguments=${variables[$(bootstrap_id build_indexer_arguments)]}
   local build_name=${variables[$(bootstrap_id build_name)]}
-  local compiler=${variables[$(bootstrap_id build_compiler)]}
+  local build_shared=${variables[$(bootstrap_id build_shared)]}
+  local build_static=${variables[$(bootstrap_id build_static)]}
   local defines=${variables[$(bootstrap_id defines)]}
   local defines_library=${variables[$(bootstrap_id defines_library)]}
   local defines_library_shared=${variables[$(bootstrap_id defines_library_shared)]}
@@ -783,7 +835,6 @@ bootstrap_operation_build() {
   local defines_program_static=${variables[$(bootstrap_id defines_program_static)]}
   local defines_shared=${variables[$(bootstrap_id defines_shared)]}
   local defines_static=${variables[$(bootstrap_id defines_static)]}
-  local file=${variables[$(bootstrap_id version_file)]}
   local flags=${variables[$(bootstrap_id flags)]}
   local flags_library=${variables[$(bootstrap_id flags_library)]}
   local flags_library_shared=${variables[$(bootstrap_id flags_library_shared)]}
@@ -796,20 +847,10 @@ bootstrap_operation_build() {
   local flags_program_static=${variables[$(bootstrap_id flags_program_static)]}
   local flags_shared=${variables[$(bootstrap_id flags_shared)]}
   local flags_static=${variables[$(bootstrap_id flags_static)]}
-  local indexer=${variables[$(bootstrap_id build_indexer)]}
-  local indexer_arguments=${variables[$(bootstrap_id build_indexer_arguments)]}
   local libraries=${variables[$(bootstrap_id build_libraries)]}
   local libraries_shared=${variables[$(bootstrap_id build_libraries_shared)]}
   local libraries_static=${variables[$(bootstrap_id build_libraries_static)]}
   local links=
-  local major=${variables[$(bootstrap_id version_major)]}
-  local major_prefix=${variables[$(bootstrap_id version_major_prefix)]}
-  local minor=${variables[$(bootstrap_id version_minor)]}
-  local minor_prefix=${variables[$(bootstrap_id version_minor_prefix)]}
-  local micro=${variables[$(bootstrap_id version_micro)]}
-  local micro_prefix=${variables[$(bootstrap_id version_micro_prefix)]}
-  local nano=${variables[$(bootstrap_id version_nano)]}
-  local nano_prefix=${variables[$(bootstrap_id version_nano_prefix)]}
   local objects_library=${variables[$(bootstrap_id build_objects_library)]}
   local objects_library_shared=${variables[$(bootstrap_id build_objects_library_shared)]}
   local objects_library_static=${variables[$(bootstrap_id build_objects_library_static)]}
@@ -831,7 +872,6 @@ bootstrap_operation_build() {
   local search_exclusive=${variables[$(bootstrap_id search_exclusive)]}
   local search_shared=${variables[$(bootstrap_id search_shared)]}
   local search_static=${variables[$(bootstrap_id search_static)]}
-  local shared=${variables[$(bootstrap_id build_shared)]}
   local sources_headers=${variables[$(bootstrap_id build_sources_headers)]}
   local sources_library=${variables[$(bootstrap_id build_sources_library)]}
   local sources_library_shared=${variables[$(bootstrap_id build_sources_library_shared)]}
@@ -845,8 +885,16 @@ bootstrap_operation_build() {
   local sources_script=${variables[$(bootstrap_id build_sources_script)]}
   local sources_setting=${variables[$(bootstrap_id build_sources_setting)]}
   local sources=
-  local static=${variables[$(bootstrap_id build_static)]}
-  local target=${variables[$(bootstrap_id version_target)]}
+  local version_file_value=${variables[$(bootstrap_id version_file)]}
+  local version_major=${variables[$(bootstrap_id version_major)]}
+  local version_major_prefix=${variables[$(bootstrap_id version_major_prefix)]}
+  local version_minor=${variables[$(bootstrap_id version_minor)]}
+  local version_minor_prefix=${variables[$(bootstrap_id version_minor_prefix)]}
+  local version_micro=${variables[$(bootstrap_id version_micro)]}
+  local version_micro_prefix=${variables[$(bootstrap_id version_micro_prefix)]}
+  local version_nano=${variables[$(bootstrap_id version_nano)]}
+  local version_nano_prefix=${variables[$(bootstrap_id version_nano_prefix)]}
+  local version_target_value=${variables[$(bootstrap_id version_target)]}
 
   bootstrap_operation_build_prepare_defaults
 
@@ -870,7 +918,9 @@ bootstrap_operation_build() {
 
   bootstrap_operation_build_prepare_headers
 
-  if [[ $shared == "yes" && -f ${project_built_shared}.built || $static == "yes" && -f ${project_built_static}.built ]] ; then
+  bootstrap_operation_build_prepare_remaining
+
+  if [[ $build_shared == "yes" && -f ${project_built_shared}.built || $build_static == "yes" && -f ${project_built_static}.built ]] ; then
     if [[ $verbosity != "quiet" ]] ; then
       echo -e "${c_warning}WARNING: This project has already been built.$c_reset"
     fi
@@ -942,7 +992,7 @@ bootstrap_operation_build() {
     fi
   fi
 
-  if [[ $failure -eq 0 && $shared == "yes" && ! -f ${project_built_shared}.built ]] ; then
+  if [[ $failure -eq 0 && $build_shared == "yes" && ! -f ${project_built_shared}.built ]] ; then
     if [[ $sources_object != "" || $sources_object_shared != "" ]] ; then
       sources=
       let count=0
@@ -981,10 +1031,10 @@ bootstrap_operation_build() {
       fi
 
       if [[ $verbosity == "verbose" ]] ; then
-        echo $compiler $sources -c -o ${path_build}objects/$path_object_shared$build_name.o $arguments_shared $arguments_include $libraries $libraries_shared $flags $flags_shared $flags_object $flags_object_shared $defines $defines_shared $defines_object $defines_object_shared
+        echo $build_compiler $sources -c -o ${path_build}objects/$path_object_shared$build_name.o $arguments_shared $arguments_include $libraries $libraries_shared $flags $flags_shared $flags_object $flags_object_shared $defines $defines_shared $defines_object $defines_object_shared
       fi
 
-      $compiler $sources -c -o ${path_build}objects/$path_object_shared$build_name.o $arguments_shared $arguments_include $libraries $libraries_shared $flags $flags_shared $flags_object $flags_object_shared $defines $defines_shared $defines_object $defines_object_shared || failure=1
+      $build_compiler $sources -c -o ${path_build}objects/$path_object_shared$build_name.o $arguments_shared $arguments_include $libraries $libraries_shared $flags $flags_shared $flags_object $flags_object_shared $defines $defines_shared $defines_object $defines_object_shared || failure=1
     fi
 
     if [[ $sources_library != "" || $sources_library_shared != "" ]] ; then
@@ -1001,26 +1051,26 @@ bootstrap_operation_build() {
       done
 
       if [[ $verbosity == "verbose" ]] ; then
-        echo $compiler $sources -shared -Wl,-soname,lib$build_name.so$version_target -o ${path_build}libraries/${path_library_shared}lib$build_name.so$version_file $arguments_shared $arguments_include $libraries $libraries_shared $flags $flags_shared $flags_library $flags_library_shared $defines $defines_shared $defines_library $defines_library_shared
+        echo $build_compiler $sources -shared -Wl,-soname,lib$build_name.so$version_target -o ${path_build}libraries/${path_library_shared}lib$build_name.so$version_file $arguments_shared $arguments_include $libraries $libraries_shared $flags $flags_shared $flags_library $flags_library_shared $defines $defines_shared $defines_library $defines_library_shared
       fi
 
-      $compiler $sources -shared -Wl,-soname,lib$build_name.so$version_target -o ${path_build}libraries/${path_library_shared}lib$build_name.so$version_file $arguments_shared $arguments_include $libraries $libraries_shared $flags $flags_shared $flags_library $flags_library_shared $defines $defines_shared $defines_library $defines_library_shared || failure=1
+      $build_compiler $sources -shared -Wl,-soname,lib$build_name.so$version_target -o ${path_build}libraries/${path_library_shared}lib$build_name.so$version_file $arguments_shared $arguments_include $libraries $libraries_shared $flags $flags_shared $flags_library $flags_library_shared $defines $defines_shared $defines_library $defines_library_shared || failure=1
 
       if [[ $failure -eq 0 ]] ; then
-        if [[ $file != "major" ]] ; then
-          if [[ $file == "minor" ]] ; then
-            ln $verbose -sf lib$build_name.so$version_file ${path_build}libraries/${path_library_shared}lib$build_name.so$major_prefix$major || failure=1
+        if [[ $version_file_value != "major" ]] ; then
+          if [[ $version_file_value == "minor" ]] ; then
+            ln $verbose -sf lib$build_name.so$version_file ${path_build}libraries/${path_library_shared}lib$build_name.so$version_major_prefix$version_major || failure=1
           else
-            ln $verbose -sf lib$build_name.so$major_prefix$major$minor_prefix$minor ${path_build}libraries/${path_library_shared}lib$build_name.so$major_prefix$major || failure=1
+            ln $verbose -sf lib$build_name.so$version_major_prefix$version_major$version_minor_prefix$version_minor ${path_build}libraries/${path_library_shared}lib$build_name.so$version_major_prefix$version_major || failure=1
 
             if [[ $failure -eq 0 ]] ; then
-              if [[ $file == "micro" ]] ; then
-                ln $verbose -sf lib$build_name.so$version_file ${path_build}libraries/${path_library_shared}lib$build_name.so$major_prefix$major$minor_prefix$minor || failure=1
+              if [[ $version_file_value == "micro" ]] ; then
+                ln $verbose -sf lib$build_name.so$version_file ${path_build}libraries/${path_library_shared}lib$build_name.so$version_major_prefix$version_major$version_minor_prefix$version_minor || failure=1
               else
-                ln $verbose -sf lib$build_name.so$major_prefix$major$minor_prefix$minor$micro_prefix$micro ${path_build}libraries/${path_library_shared}lib$build_name.so$major_prefix$major$minor_prefix$minor || failure=1
+                ln $verbose -sf lib$build_name.so$version_major_prefix$version_major$version_minor_prefix$version_minor$version_micro_prefix$version_micro ${path_build}libraries/${path_library_shared}lib$build_name.so$version_major_prefix$version_major$version_minor_prefix$version_minor || failure=1
 
                 if [[ $failure -eq 0 ]] ; then
-                  ln $verbose -sf lib$build_name.so$version_file ${path_build}libraries/${path_library_shared}lib$build_name.so$major_prefix$major$minor_prefix$minor_prefix$minor$micro_prefix$micro || failure=1
+                  ln $verbose -sf lib$build_name.so$version_file ${path_build}libraries/${path_library_shared}lib$build_name.so$version_major_prefix$version_major$version_minor_prefix$version_minor_prefix$version_minor$version_micro_prefix$version_micro || failure=1
                 fi
               fi
             fi
@@ -1028,7 +1078,7 @@ bootstrap_operation_build() {
         fi
 
         if [[ $failure -eq 0 ]] ; then
-          ln $verbose -sf lib$build_name.so$major_prefix$major ${path_build}libraries/${path_library_shared}lib$build_name.so || failure=1
+          ln $verbose -sf lib$build_name.so$version_major_prefix$version_major ${path_build}libraries/${path_library_shared}lib$build_name.so || failure=1
         fi
       fi
     fi
@@ -1052,10 +1102,10 @@ bootstrap_operation_build() {
       done
 
       if [[ $verbosity == "verbose" ]] ; then
-        echo $compiler $sources -o ${path_build}programs/${path_program_shared}$build_name $arguments_shared $arguments_include $links $libraries $libraries_shared $flags $flags_shared $flags_program $flags_program_shared $defines $defines_shared $defines_program $defines_program_shared
+        echo $build_compiler $sources -o ${path_build}programs/${path_program_shared}$build_name $arguments_shared $arguments_include $links $libraries $libraries_shared $flags $flags_shared $flags_program $flags_program_shared $defines $defines_shared $defines_program $defines_program_shared
       fi
 
-      $compiler $sources -o ${path_build}programs/${path_program_shared}$build_name $arguments_shared $arguments_include $links $libraries $libraries_shared $flags $flags_shared $flags_program $flags_program_shared $defines $defines_shared $defines_program $defines_program_shared || failure=1
+      $build_compiler $sources -o ${path_build}programs/${path_program_shared}$build_name $arguments_shared $arguments_include $links $libraries $libraries_shared $flags $flags_shared $flags_program $flags_program_shared $defines $defines_shared $defines_program $defines_program_shared || failure=1
     fi
 
     if [[ $failure -eq 0 ]] ; then
@@ -1063,7 +1113,7 @@ bootstrap_operation_build() {
     fi
   fi
 
-  if [[ $failure -eq 0 && $static == "yes" && ! -f ${project_built_static}.built ]] ; then
+  if [[ $failure -eq 0 && $build_static == "yes" && ! -f ${project_built_static}.built ]] ; then
     if [[ $sources_object != "" || $sources_object_static != "" ]] ; then
       let count=0
 
@@ -1101,10 +1151,10 @@ bootstrap_operation_build() {
       fi
 
       if [[ $verbosity == "verbose" ]] ; then
-        echo $compiler $sources -c -o ${path_build}objects/$path_object_static$build_name.o $arguments_static $arguments_include $libraries $libraries_static $flags $flags_static $flags_object $flags_object_static $defines $defines_static $defines_object $defines_object_static
+        echo $build_compiler $sources -c -o ${path_build}objects/$path_object_static$build_name.o $arguments_static $arguments_include $libraries $libraries_static $flags $flags_static $flags_object $flags_object_static $defines $defines_static $defines_object $defines_object_static
       fi
 
-      $compiler $sources -c -o ${path_build}objects/$path_object_static$build_name.o $arguments_static $arguments_include $libraries $libraries_static $flags $flags_static $flags_object $flags_object_static $defines $defines_static $defines_object $defines_object_static || failure=1
+      $build_compiler $sources -c -o ${path_build}objects/$path_object_static$build_name.o $arguments_static $arguments_include $libraries $libraries_static $flags $flags_static $flags_object $flags_object_static $defines $defines_static $defines_object $defines_object_static || failure=1
     fi
 
     if [[ $sources_library != "" || $sources_library_static != "" ]] ; then
@@ -1134,10 +1184,10 @@ bootstrap_operation_build() {
         sources="$sources${path_build}objects/$directory/$n.o "
 
         if [[ $verbosity == "verbose" ]] ; then
-          echo $compiler $path_sources$path_language$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $libraries_static $flags $flags_static $flags_library $flags_library_static $defines $defines_static $defines_library $defines_library_static
+          echo $build_compiler $path_sources$path_language$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $libraries_static $flags $flags_static $flags_library $flags_library_static $defines $defines_static $defines_library $defines_library_static
         fi
 
-        $compiler $path_sources$path_language$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $libraries_static $flags $flags_static $flags_library $flags_library_static $defines $defines_static $defines_library $defines_library_static || failure=1
+        $build_compiler $path_sources$path_language$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $libraries_static $flags $flags_static $flags_library $flags_library_static $defines $defines_static $defines_library $defines_library_static || failure=1
 
         if [[ $failure -eq 1 ]] ; then
           break;
@@ -1147,10 +1197,10 @@ bootstrap_operation_build() {
       if [[ $failure -eq 0 && ( $sources_library != "" || $sources_library_static != "" ) ]] ; then
 
         if [[ $verbosity == "verbose" ]] ; then
-          echo $indexer $indexer_arguments ${path_build}libraries/${path_library_static}lib$build_name.a $sources
+          echo $build_indexer $build_indexer_arguments ${path_build}libraries/${path_library_static}lib$build_name.a $sources
         fi
 
-        $indexer $indexer_arguments ${path_build}libraries/${path_library_static}lib$build_name.a $sources || failure=1
+        $build_indexer $build_indexer_arguments ${path_build}libraries/${path_library_static}lib$build_name.a $sources || failure=1
       fi
     fi
 
@@ -1173,10 +1223,10 @@ bootstrap_operation_build() {
       done
 
       if [[ $verbosity == "verbose" ]] ; then
-        echo $compiler $sources -static -o ${path_build}programs/${path_program_static}$build_name $arguments_static $arguments_include $links $libraries $libraries_static $flags $flags_static $flags_program $flags_program_static $defines $defines_static $defines_program $defines_program_static
+        echo $build_compiler $sources -static -o ${path_build}programs/${path_program_static}$build_name $arguments_static $arguments_include $links $libraries $libraries_static $flags $flags_static $flags_program $flags_program_static $defines $defines_static $defines_program $defines_program_static
       fi
 
-      $compiler $sources -static -o ${path_build}programs/${path_program_static}$build_name $arguments_static $arguments_include $links $libraries $libraries_static $flags $flags_static $flags_program $flags_program_static $defines $defines_static $defines_program $defines_program_static || failure=1
+      $build_compiler $sources -static -o ${path_build}programs/${path_program_static}$build_name $arguments_static $arguments_include $links $libraries $libraries_static $flags $flags_static $flags_program $flags_program_static $defines $defines_static $defines_program $defines_program_static || failure=1
     fi
 
     if [[ $failure -eq 0 ]] ; then
@@ -1196,27 +1246,27 @@ bootstrap_operation_build() {
 bootstrap_operation_build_prepare_defaults() {
 
   if [[ ${variables[$(bootstrap_id has-version_major_prefix)]} != "yes" ]] ; then
-    major_prefix="."
+    version_major_prefix="."
   fi
 
   if [[ ${variables[$(bootstrap_id has-version_minor_prefix)]} != "yes" ]] ; then
-    minor_prefix="."
+    version_minor_prefix="."
   fi
 
   if [[ ${variables[$(bootstrap_id has-version_micro_prefix)]} != "yes" ]] ; then
-    micro_prefix="."
+    version_micro_prefix="."
   fi
 
   if [[ ${variables[$(bootstrap_id has-version_nano_prefix)]} != "yes" ]] ; then
-    nano_prefix="."
+    version_nano_prefix="."
   fi
 
   if [[ ${variables[$(bootstrap_id has-build_compiler)]} != "yes" ]] ; then
-    compiler="gcc"
+    build_compiler="gcc"
   fi
 
   if [[ ${variables[$(bootstrap_id has-build_indexer)]} != "yes" ]] ; then
-    indexer="ar"
+    build_indexer="ar"
   fi
 
   if [[ ${variables[$(bootstrap_id has-path_library_script)]} != "yes" ]] ; then
@@ -1272,99 +1322,100 @@ bootstrap_operation_build_prepare_defaults() {
   fi
 
   if [[ ${variables[$(bootstrap_id has-build_shared)]} != "yes" ]] ; then
-    shared="yes"
+    build_shared="yes"
   fi
 }
 
 bootstrap_operation_build_prepare_defines() {
+
   if [[ $defines == "" ]] ; then
-    defines=${variables[$(bootstrap_id defines-$mode)]}
+    defines=${variables[$(bootstrap_id defines-mode)]}
   else
-    defines="$defines ${variables[$(bootstrap_id defines-$mode)]}"
+    defines="$defines ${variables[$(bootstrap_id defines-mode)]}"
   fi
 
   if [[ $defines_library == "" ]] ; then
-    defines_library=${variables[$(bootstrap_id defines_library-$mode)]}
+    defines_library=${variables[$(bootstrap_id defines_library-mode)]}
   else
-    defines_library="$defines_library ${variables[$(bootstrap_id defines_library-$mode)]}"
+    defines_library="$defines_library ${variables[$(bootstrap_id defines_library-mode)]}"
   fi
 
   if [[ $defines_library_shared == "" ]] ; then
-    defines_library_shared=${variables[$(bootstrap_id defines_library_shared-$mode)]}
+    defines_library_shared=${variables[$(bootstrap_id defines_library_shared-mode)]}
   else
-    defines_library_shared="$defines_library_shared ${variables[$(bootstrap_id defines_library_shared-$mode)]}"
+    defines_library_shared="$defines_library_shared ${variables[$(bootstrap_id defines_library_shared-mode)]}"
   fi
 
   if [[ $defines_library_static == "" ]] ; then
-    defines_library_static=${variables[$(bootstrap_id defines_library_static-$mode)]}
+    defines_library_static=${variables[$(bootstrap_id defines_library_static-mode)]}
   else
-    defines_library_static="$defines_library_static ${variables[$(bootstrap_id defines_library_static-$mode)]}"
+    defines_library_static="$defines_library_static ${variables[$(bootstrap_id defines_library_static-mode)]}"
   fi
 
   if [[ $defines_object_library == "" ]] ; then
-    defines_object_library=${variables[$(bootstrap_id defines_object_library-$mode)]}
+    defines_object_library=${variables[$(bootstrap_id defines_object_library-mode)]}
   else
-    defines_object_library="$defines_object_library ${variables[$(bootstrap_id defines_object_library-$mode)]}"
+    defines_object_library="$defines_object_library ${variables[$(bootstrap_id defines_object_library-mode)]}"
   fi
 
   if [[ $defines_object_library_shared == "" ]] ; then
-    defines_object_library_shared=${variables[$(bootstrap_id defines_object_library_shared-$mode)]}
+    defines_object_library_shared=${variables[$(bootstrap_id defines_object_library_shared-mode)]}
   else
-    defines_object_library_shared="$defines_object_library_shared ${variables[$(bootstrap_id defines_object_library_shared-$mode)]}"
+    defines_object_library_shared="$defines_object_library_shared ${variables[$(bootstrap_id defines_object_library_shared-mode)]}"
   fi
 
   if [[ $defines_object_library_static == "" ]] ; then
-    defines_object_library_static=${variables[$(bootstrap_id defines_object_library_static-$mode)]}
+    defines_object_library_static=${variables[$(bootstrap_id defines_object_library_static-mode)]}
   else
-    defines_object_library_static="$defines_object_library_static ${variables[$(bootstrap_id defines_object_library_static-$mode)]}"
+    defines_object_library_static="$defines_object_library_static ${variables[$(bootstrap_id defines_object_library_static-mode)]}"
   fi
 
   if [[ $defines_object_program == "" ]] ; then
-    defines_object_program=${variables[$(bootstrap_id defines_object_program-$mode)]}
+    defines_object_program=${variables[$(bootstrap_id defines_object_program-mode)]}
   else
-    defines_object_program="$defines_object_program ${variables[$(bootstrap_id defines_object_program-$mode)]}"
+    defines_object_program="$defines_object_program ${variables[$(bootstrap_id defines_object_program-mode)]}"
   fi
 
   if [[ $defines_object_program_shared == "" ]] ; then
-    defines_object_program_shared=${variables[$(bootstrap_id defines_object_program_shared-$mode)]}
+    defines_object_program_shared=${variables[$(bootstrap_id defines_object_program_shared-mode)]}
   else
-    defines_object_program_shared="$defines_object_program_shared ${variables[$(bootstrap_id defines_object_program_shared-$mode)]}"
+    defines_object_program_shared="$defines_object_program_shared ${variables[$(bootstrap_id defines_object_program_shared-mode)]}"
   fi
 
   if [[ $defines_object_program_static == "" ]] ; then
-    defines_object_program_static=${variables[$(bootstrap_id defines_object_program_static-$mode)]}
+    defines_object_program_static=${variables[$(bootstrap_id defines_object_program_static-mode)]}
   else
-    defines_object_program_static="$defines_object_program_static ${variables[$(bootstrap_id defines_object_program_static-$mode)]}"
+    defines_object_program_static="$defines_object_program_static ${variables[$(bootstrap_id defines_object_program_static-mode)]}"
   fi
 
   if [[ $defines_program == "" ]] ; then
-    defines_program=${variables[$(bootstrap_id defines_program-$mode)]}
+    defines_program=${variables[$(bootstrap_id defines_program-mode)]}
   else
-    defines_program="$defines_program ${variables[$(bootstrap_id defines_program-$mode)]}"
+    defines_program="$defines_program ${variables[$(bootstrap_id defines_program-mode)]}"
   fi
 
   if [[ $defines_program_shared == "" ]] ; then
-    defines_program_shared=${variables[$(bootstrap_id defines_program_shared-$mode)]}
+    defines_program_shared=${variables[$(bootstrap_id defines_program_shared-mode)]}
   else
-    defines_program_shared="$defines_program_shared ${variables[$(bootstrap_id defines_program_shared-$mode)]}"
+    defines_program_shared="$defines_program_shared ${variables[$(bootstrap_id defines_program_shared-mode)]}"
   fi
 
   if [[ $defines_program_static == "" ]] ; then
-    defines_program_static=${variables[$(bootstrap_id defines_program_static-$mode)]}
+    defines_program_static=${variables[$(bootstrap_id defines_program_static-mode)]}
   else
-    defines_program_static="$defines_program_static ${variables[$(bootstrap_id defines_program_static-$mode)]}"
+    defines_program_static="$defines_program_static ${variables[$(bootstrap_id defines_program_static-mode)]}"
   fi
 
   if [[ $defines_shared == "" ]] ; then
-    defines_shared=${variables[$(bootstrap_id defines_shared-$mode)]}
+    defines_shared=${variables[$(bootstrap_id defines_shared-mode)]}
   else
-    defines_shared="$defines_shared ${variables[$(bootstrap_id defines_shared-$mode)]}"
+    defines_shared="$defines_shared ${variables[$(bootstrap_id defines_shared-mode)]}"
   fi
 
   if [[ $defines_static == "" ]] ; then
-    defines_static=${variables[$(bootstrap_id defines_static-$mode)]}
+    defines_static=${variables[$(bootstrap_id defines_static-mode)]}
   else
-    defines_static="$defines_static ${variables[$(bootstrap_id defines_static-$mode)]}"
+    defines_static="$defines_static ${variables[$(bootstrap_id defines_static-mode)]}"
   fi
 
   if [[ $defines_override != "" ]] ; then
@@ -1379,105 +1430,107 @@ bootstrap_operation_build_prepare_defines() {
 }
 
 bootstrap_operation_build_prepare_flags() {
+
   if [[ $flags == "" ]] ; then
-    flags=${variables[$(bootstrap_id flags-$mode)]}
+    flags=${variables[$(bootstrap_id flags-mode)]}
   else
-    flags="$flags ${variables[$(bootstrap_id flags-$mode)]}"
+    flags="$flags ${variables[$(bootstrap_id flags-mode)]}"
   fi
 
   if [[ $flags_library == "" ]] ; then
-    flags_library=${variables[$(bootstrap_id flags_library-$mode)]}
+    flags_library=${variables[$(bootstrap_id flags_library-mode)]}
   else
-    flags_library="$flags_library ${variables[$(bootstrap_id flags_library-$mode)]}"
+    flags_library="$flags_library ${variables[$(bootstrap_id flags_library-mode)]}"
   fi
 
   if [[ $flags_library_shared == "" ]] ; then
-    flags_library_shared=${variables[$(bootstrap_id flags_library_shared-$mode)]}
+    flags_library_shared=${variables[$(bootstrap_id flags_library_shared-mode)]}
   else
-    flags_library_shared="$flags_library_shared ${variables[$(bootstrap_id flags_library_shared-$mode)]}"
+    flags_library_shared="$flags_library_shared ${variables[$(bootstrap_id flags_library_shared-mode)]}"
   fi
 
   if [[ $flags_library_static == "" ]] ; then
-    flags_library_static=${variables[$(bootstrap_id flags_library_static-$mode)]}
+    flags_library_static=${variables[$(bootstrap_id flags_library_static-mode)]}
   else
-    flags_library_static="$flags_library_static ${variables[$(bootstrap_id flags_library_static-$mode)]}"
+    flags_library_static="$flags_library_static ${variables[$(bootstrap_id flags_library_static-mode)]}"
   fi
 
   if [[ $flags_object_library == "" ]] ; then
-    flags_object_library=${variables[$(bootstrap_id flags_object_library-$mode)]}
+    flags_object_library=${variables[$(bootstrap_id flags_object_library-mode)]}
   else
-    flags_object_library="$flags_object_library ${variables[$(bootstrap_id flags_object_library-$mode)]}"
+    flags_object_library="$flags_object_library ${variables[$(bootstrap_id flags_object_library-mode)]}"
   fi
 
   if [[ $flags_object_library_shared == "" ]] ; then
-    flags_object_library_shared=${variables[$(bootstrap_id flags_object_library_shared-$mode)]}
+    flags_object_library_shared=${variables[$(bootstrap_id flags_object_library_shared-mode)]}
   else
-    flags_object_library_shared="$flags_object_library_shared ${variables[$(bootstrap_id flags_object_library_shared-$mode)]}"
+    flags_object_library_shared="$flags_object_library_shared ${variables[$(bootstrap_id flags_object_library_shared-mode)]}"
   fi
 
   if [[ $flags_object_library_static == "" ]] ; then
-    flags_object_library_static=${variables[$(bootstrap_id flags_object_library_static-$mode)]}
+    flags_object_library_static=${variables[$(bootstrap_id flags_object_library_static-mode)]}
   else
-    flags_object_library_static="$flags_object_library_static ${variables[$(bootstrap_id flags_object_library_static-$mode)]}"
+    flags_object_library_static="$flags_object_library_static ${variables[$(bootstrap_id flags_object_library_static-mode)]}"
   fi
 
   if [[ $flags_object_program == "" ]] ; then
-    flags_object_program=${variables[$(bootstrap_id flags_object_program-$mode)]}
+    flags_object_program=${variables[$(bootstrap_id flags_object_program-mode)]}
   else
-    flags_object_program="$flags_object_program ${variables[$(bootstrap_id flags_object_program-$mode)]}"
+    flags_object_program="$flags_object_program ${variables[$(bootstrap_id flags_object_program-mode)]}"
   fi
 
   if [[ $flags_object_program_shared == "" ]] ; then
-    flags_object_program_shared=${variables[$(bootstrap_id flags_object_program_shared-$mode)]}
+    flags_object_program_shared=${variables[$(bootstrap_id flags_object_program_shared-mode)]}
   else
-    flags_object_program_shared="$flags_object_program_shared ${variables[$(bootstrap_id flags_object_program_shared-$mode)]}"
+    flags_object_program_shared="$flags_object_program_shared ${variables[$(bootstrap_id flags_object_program_shared-mode)]}"
   fi
 
   if [[ $flags_object_program_static == "" ]] ; then
-    flags_object_program_static=${variables[$(bootstrap_id flags_object_program_static-$mode)]}
+    flags_object_program_static=${variables[$(bootstrap_id flags_object_program_static-mode)]}
   else
-    flags_object_program_static="$flags_object_program_static ${variables[$(bootstrap_id flags_object_program_static-$mode)]}"
+    flags_object_program_static="$flags_object_program_static ${variables[$(bootstrap_id flags_object_program_static-mode)]}"
   fi
 
   if [[ $flags_program == "" ]] ; then
-    flags_program=${variables[$(bootstrap_id flags_program-$mode)]}
+    flags_program=${variables[$(bootstrap_id flags_program-mode)]}
   else
-    flags_program="$flags_program ${variables[$(bootstrap_id flags_program-$mode)]}"
+    flags_program="$flags_program ${variables[$(bootstrap_id flags_program-mode)]}"
   fi
 
   if [[ $flags_program_shared == "" ]] ; then
-    flags_program_shared=${variables[$(bootstrap_id flags_program_shared-$mode)]}
+    flags_program_shared=${variables[$(bootstrap_id flags_program_shared-mode)]}
   else
-    flags_program_shared="$flags_program_shared ${variables[$(bootstrap_id flags_program_shared-$mode)]}"
+    flags_program_shared="$flags_program_shared ${variables[$(bootstrap_id flags_program_shared-mode)]}"
   fi
 
   if [[ $flags_program_static == "" ]] ; then
-    flags_program_static=${variables[$(bootstrap_id flags_program_static-$mode)]}
+    flags_program_static=${variables[$(bootstrap_id flags_program_static-mode)]}
   else
-    flags_program_static="$flags_program_static ${variables[$(bootstrap_id flags_program_static-$mode)]}"
+    flags_program_static="$flags_program_static ${variables[$(bootstrap_id flags_program_static-mode)]}"
   fi
 
   if [[ $flags_shared == "" ]] ; then
-    flags_shared=${variables[$(bootstrap_id flags_shared-$mode)]}
+    flags_shared=${variables[$(bootstrap_id flags_shared-mode)]}
   else
-    flags_shared="$flags_shared ${variables[$(bootstrap_id flags_shared-$mode)]}"
+    flags_shared="$flags_shared ${variables[$(bootstrap_id flags_shared-mode)]}"
   fi
 
   if [[ $flags_static == "" ]] ; then
-    flags_static=${variables[$(bootstrap_id flags_static-$mode)]}
+    flags_static=${variables[$(bootstrap_id flags_static-mode)]}
   else
-    flags_static="$flags_static ${variables[$(bootstrap_id flags_static-$mode)]}"
+    flags_static="$flags_static ${variables[$(bootstrap_id flags_static-mode)]}"
   fi
 }
 
 bootstrap_operation_build_prepare_headers() {
+
   if [[ $sources_headers == "" ]] ; then
-    sources_headers=${variables[$(bootstrap_id build_sources_headers-$mode)]}
+    sources_headers=${variables[$(bootstrap_id build_sources_headers-mode)]}
   else
-    sources_headers="$sources_headers ${variables[$(bootstrap_id build_sources_headers-$mode)]}"
+    sources_headers="$sources_headers ${variables[$(bootstrap_id build_sources_headers-mode)]}"
   fi
 
-  if [[ $shared == "yes" ]] ; then
+  if [[ $build_shared == "yes" ]] ; then
     if [[ $sources_headers == "" ]] ; then
       sources_headers=${variables[$(bootstrap_id build_sources_headers_shared)]}
     else
@@ -1491,22 +1544,22 @@ bootstrap_operation_build_prepare_headers() {
     fi
   fi
 
-  if [[ $static == "yes" ]] ; then
+  if [[ $build_static == "yes" ]] ; then
     if [[ $sources_headers == "" ]] ; then
-      sources_headers=${variables[$(bootstrap_id build_sources_headers_shared-$mode)]}
+      sources_headers=${variables[$(bootstrap_id build_sources_headers_shared-mode)]}
     else
-      sources_headers="$sources_headers ${variables[$(bootstrap_id build_sources_headers_shared-$mode)]}"
+      sources_headers="$sources_headers ${variables[$(bootstrap_id build_sources_headers_shared-mode)]}"
     fi
 
     if [[ $sources_headers == "" ]] ; then
-      sources_headers=${variables[$(bootstrap_id build_sources_headers_static-$mode)]}
+      sources_headers=${variables[$(bootstrap_id build_sources_headers_static-mode)]}
     else
-      sources_headers="$sources_headers ${variables[$(bootstrap_id build_sources_headers_static-$mode)]}"
+      sources_headers="$sources_headers ${variables[$(bootstrap_id build_sources_headers_static-mode)]}"
     fi
   fi
 
-  if [[ ${variables[$(bootstrap_id path_headers-$mode)]} != "" ]] ; then
-    path_headers=${variables[$(bootstrap_id path_headers-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_headers-mode)]} != "" ]] ; then
+    path_headers=${variables[$(bootstrap_id path_headers-mode)]}
   elif [[ ${variables[$(bootstrap_id path_headers)]} != "" ]] ; then
     path_headers=${variables[$(bootstrap_id path_headers)]}
   fi
@@ -1517,97 +1570,100 @@ bootstrap_operation_build_prepare_headers() {
 }
 
 bootstrap_operation_build_prepare_libraries() {
+
   if [[ $libraries == "" ]] ; then
-    libraries=${variables[$(bootstrap_id build_libraries-$mode)]}
+    libraries=${variables[$(bootstrap_id build_libraries-mode)]}
   else
-    libraries="${variables[$(bootstrap_id build_libraries-$mode)]} $libraries"
+    libraries="${variables[$(bootstrap_id build_libraries-mode)]} $libraries"
   fi
 
   if [[ $libraries_shared == "" ]] ; then
-    libraries_shared=${variables[$(bootstrap_id build_libraries_shared-$mode)]}
+    libraries_shared=${variables[$(bootstrap_id build_libraries_shared-mode)]}
   else
-    libraries_shared="${variables[$(bootstrap_id build_libraries_shared-$mode)]} $libraries_shared"
+    libraries_shared="${variables[$(bootstrap_id build_libraries_shared-mode)]} $libraries_shared"
   fi
 
   if [[ $libraries_static == "" ]] ; then
-    libraries_static=${variables[$(bootstrap_id build_libraries_static-$mode)]}
+    libraries_static=${variables[$(bootstrap_id build_libraries_static-mode)]}
   else
-    libraries_static="${variables[$(bootstrap_id build_libraries_static-$mode)]} $libraries_static"
+    libraries_static="${variables[$(bootstrap_id build_libraries_static-mode)]} $libraries_static"
   fi
 
   if [[ $sources_library == "" ]] ; then
-    sources_library=${variables[$(bootstrap_id build_sources_library-$mode)]}
+    sources_library=${variables[$(bootstrap_id build_sources_library-mode)]}
   else
-    sources_library="$sources_library ${variables[$(bootstrap_id build_sources_library-$mode)]}"
+    sources_library="$sources_library ${variables[$(bootstrap_id build_sources_library-mode)]}"
   fi
 
   if [[ $sources_library_shared == "" ]] ; then
-    sources_library_shared=${variables[$(bootstrap_id build_sources_library_shared-$mode)]}
+    sources_library_shared=${variables[$(bootstrap_id build_sources_library_shared-mode)]}
   else
-    sources_library_shared="$build_sources_library_shared ${variables[$(bootstrap_id build_sources_library_shared-$mode)]}"
+    sources_library_shared="$build_sources_library_shared ${variables[$(bootstrap_id build_sources_library_shared-mode)]}"
   fi
 
   if [[ $sources_library_static == "" ]] ; then
-    sources_library_static=${variables[$(bootstrap_id build_sources_library_static-$mode)]}
+    sources_library_static=${variables[$(bootstrap_id build_sources_library_static-mode)]}
   else
-    sources_library_static="$build_sources_library_static ${variables[$(bootstrap_id build_sources_library_static-$mode)]}"
+    sources_library_static="$build_sources_library_static ${variables[$(bootstrap_id build_sources_library_static-mode)]}"
   fi
 }
 
 bootstrap_operation_build_prepare_objects() {
+
   if [[ $objects_library == "" ]] ; then
-    objects_library=${variables[$(bootstrap_id build_objects_library-$mode)]}
+    objects_library=${variables[$(bootstrap_id build_objects_library-mode)]}
   else
-    objects_library="${variables[$(bootstrap_id build_objects_library-$mode)]} $objects_library"
+    objects_library="${variables[$(bootstrap_id build_objects_library-mode)]} $objects_library"
   fi
 
   if [[ $objects_library_shared == "" ]] ; then
-    objects_library_shared=${variables[$(bootstrap_id build_objects_library_shared-$mode)]}
+    objects_library_shared=${variables[$(bootstrap_id build_objects_library_shared-mode)]}
   else
-    objects_library_shared="${variables[$(bootstrap_id build_objects_library_shared-$mode)]} $objects_library_shared"
+    objects_library_shared="${variables[$(bootstrap_id build_objects_library_shared-mode)]} $objects_library_shared"
   fi
 
   if [[ $objects_library_static == "" ]] ; then
-    objects_library_static=${variables[$(bootstrap_id build_objects_library_static-$mode)]}
+    objects_library_static=${variables[$(bootstrap_id build_objects_library_static-mode)]}
   else
-    objects_library_static="${variables[$(bootstrap_id build_objects_library_static-$mode)]} $objects_library_static"
+    objects_library_static="${variables[$(bootstrap_id build_objects_library_static-mode)]} $objects_library_static"
   fi
 
   if [[ $objects_program == "" ]] ; then
-    objects_program=${variables[$(bootstrap_id build_objects_program-$mode)]}
+    objects_program=${variables[$(bootstrap_id build_objects_program-mode)]}
   else
-    objects_program="${variables[$(bootstrap_id build_objects_program-$mode)]} $objects_program"
+    objects_program="${variables[$(bootstrap_id build_objects_program-mode)]} $objects_program"
   fi
 
   if [[ $objects_program_shared == "" ]] ; then
-    objects_program_shared=${variables[$(bootstrap_id build_objects_program_shared-$mode)]}
+    objects_program_shared=${variables[$(bootstrap_id build_objects_program_shared-mode)]}
   else
-    objects_program_shared="${variables[$(bootstrap_id build_objects_program_shared-$mode)]} $objects_program_shared"
+    objects_program_shared="${variables[$(bootstrap_id build_objects_program_shared-mode)]} $objects_program_shared"
   fi
 
   if [[ $objects_program_static == "" ]] ; then
-    objects_program_static=${variables[$(bootstrap_id build_objects_program_static-$mode)]}
+    objects_program_static=${variables[$(bootstrap_id build_objects_program_static-mode)]}
   else
-    objects_program_static="${variables[$(bootstrap_id build_objects_program_static-$mode)]} $objects_program_static"
+    objects_program_static="${variables[$(bootstrap_id build_objects_program_static-mode)]} $objects_program_static"
   fi
 
   if [[ $sources_object == "" ]] ; then
-    sources_object=${variables[$(bootstrap_id build_sources_object-$mode)]}
+    sources_object=${variables[$(bootstrap_id build_sources_object-mode)]}
   fi
 
   if [[ $sources_object_shared == "" ]] ; then
-    sources_object_shared=${variables[$(bootstrap_id build_sources_object_shared-$mode)]}
+    sources_object_shared=${variables[$(bootstrap_id build_sources_object_shared-mode)]}
   fi
 
   if [[ $sources_object_static == "" ]] ; then
-    sources_object_static=${variables[$(bootstrap_id build_sources_object_static-$mode)]}
+    sources_object_static=${variables[$(bootstrap_id build_sources_object_static-mode)]}
   fi
 }
 
 bootstrap_operation_build_prepare_paths() {
+
   if [[ $override_path_sources == "" ]] ; then
-    if [[ ${variables[$(bootstrap_id path_sources-$mode)]} != "" ]] ; then
-      path_sources=${variables[$(bootstrap_id path_sources-$mode)]}
+    if [[ ${variables[$(bootstrap_id path_sources-mode)]} != "" ]] ; then
+      path_sources=${variables[$(bootstrap_id path_sources-mode)]}
     elif [[ ${variables[$(bootstrap_id path_sources)]} != "" ]] ; then
       path_sources=${variables[$(bootstrap_id path_sources)]}
     fi
@@ -1617,8 +1673,8 @@ bootstrap_operation_build_prepare_paths() {
     path_sources=$(echo $path_sources | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_sources_object-$mode)]} != "" ]] ; then
-    path_sources_object=${variables[$(bootstrap_id path_sources_object-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_sources_object-mode)]} != "" ]] ; then
+    path_sources_object=${variables[$(bootstrap_id path_sources_object-mode)]}
   elif [[ ${variables[$(bootstrap_id path_sources_object)]} != "" ]] ; then
     path_sources_object=${variables[$(bootstrap_id path_sources_object)]}
   fi
@@ -1627,23 +1683,23 @@ bootstrap_operation_build_prepare_paths() {
     path_sources_object=$(echo $path_sources_object | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_headers-$mode)]} != "" ]] ; then
-    path_headers=${variables[$(bootstrap_id path_headers-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_headers-mode)]} != "" ]] ; then
+    path_headers=${variables[$(bootstrap_id path_headers-mode)]}
   fi
 
   if [[ $path_headers != "" ]] ; then
     path_headers=$(echo $path_headers | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id has_path_standard-$mode)]} != "" ]] ; then
-    has_path_standard=${variables[$(bootstrap_id has_path_standard-$mode)]}
+  if [[ ${variables[$(bootstrap_id has_path_standard-mode)]} != "" ]] ; then
+    has_path_standard=${variables[$(bootstrap_id has_path_standard-mode)]}
   fi
 
   if [[ $has_path_standard == "no" ]] ; then
     path_language=
   else
-    if [[ ${variables[$(bootstrap_id path_language-$mode)]} != "" ]] ; then
-      path_language=${variables[$(bootstrap_id path_language-$mode)]}
+    if [[ ${variables[$(bootstrap_id path_language-mode)]} != "" ]] ; then
+      path_language=${variables[$(bootstrap_id path_language-mode)]}
     elif [[ ${variables[$(bootstrap_id path_language)]} != "" ]] ; then
       path_language=${variables[$(bootstrap_id path_language)]}
     fi
@@ -1653,112 +1709,112 @@ bootstrap_operation_build_prepare_paths() {
     fi
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_library-$mode)]} != "" ]] ; then
-    path_object_library=${variables[$(bootstrap_id path_object_library-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_library-mode)]} != "" ]] ; then
+    path_object_library=${variables[$(bootstrap_id path_object_library-mode)]}
   fi
 
   if [[ $path_object_library != "" ]] ; then
     path_object_library=$(echo $path_object_library | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_program-$mode)]} != "" ]] ; then
-    path_object_program=${variables[$(bootstrap_id path_object_program-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_program-mode)]} != "" ]] ; then
+    path_object_program=${variables[$(bootstrap_id path_object_program-mode)]}
   fi
 
   if [[ $path_object_program != "" ]] ; then
     path_object_program=$(echo $path_object_program | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_library_script-$mode)]} != "" ]] ; then
-    path_library_script=${variables[$(bootstrap_id path_library_script-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_library_script-mode)]} != "" ]] ; then
+    path_library_script=${variables[$(bootstrap_id path_library_script-mode)]}
   fi
 
   if [[ $path_library_script != "" ]] ; then
     path_library_script=$(echo $path_library_script | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_library_shared-$mode)]} != "" ]] ; then
-    path_library_shared=${variables[$(bootstrap_id path_library_shared-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_library_shared-mode)]} != "" ]] ; then
+    path_library_shared=${variables[$(bootstrap_id path_library_shared-mode)]}
   fi
 
   if [[ $path_library_shared != "" ]] ; then
     path_library_shared=$(echo $path_library_shared | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_library_static-$mode)]} != "" ]] ; then
-    path_library_static=${variables[$(bootstrap_id path_library_static-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_library_static-mode)]} != "" ]] ; then
+    path_library_static=${variables[$(bootstrap_id path_library_static-mode)]}
   fi
 
   if [[ $path_library_static != "" ]] ; then
     path_library_static=$(echo $path_library_static | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_library_script-$mode)]} != "" ]] ; then
-    path_object_library_script=${variables[$(bootstrap_id path_object_library_script-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_library_script-mode)]} != "" ]] ; then
+    path_object_library_script=${variables[$(bootstrap_id path_object_library_script-mode)]}
   fi
 
   if [[ $path_object_library_script != "" ]] ; then
     path_object_library_script=$(echo $path_object_library_script | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_library_shared-$mode)]} != "" ]] ; then
-    path_object_library_shared=${variables[$(bootstrap_id path_object_library_shared-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_library_shared-mode)]} != "" ]] ; then
+    path_object_library_shared=${variables[$(bootstrap_id path_object_library_shared-mode)]}
   fi
 
   if [[ $path_object_library_shared != "" ]] ; then
     path_object_library_shared=$(echo $path_object_library_shared | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_library_static-$mode)]} != "" ]] ; then
-    path_object_library_static=${variables[$(bootstrap_id path_object_library_static-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_library_static-mode)]} != "" ]] ; then
+    path_object_library_static=${variables[$(bootstrap_id path_object_library_static-mode)]}
   fi
 
   if [[ $path_object_library_static != "" ]] ; then
     path_object_library_static=$(echo $path_object_library_static | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_program_script-$mode)]} != "" ]] ; then
-    path_object_program_script=${variables[$(bootstrap_id path_object_program_script-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_program_script-mode)]} != "" ]] ; then
+    path_object_program_script=${variables[$(bootstrap_id path_object_program_script-mode)]}
   fi
 
   if [[ $path_object_program_script != "" ]] ; then
     path_object_program_script=$(echo $path_object_program_script | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_program_shared-$mode)]} != "" ]] ; then
-    path_object_program_shared=${variables[$(bootstrap_id path_object_program_shared-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_program_shared-mode)]} != "" ]] ; then
+    path_object_program_shared=${variables[$(bootstrap_id path_object_program_shared-mode)]}
   fi
 
   if [[ $path_object_program_shared != "" ]] ; then
     path_object_program_shared=$(echo $path_object_program_shared | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_program_static-$mode)]} != "" ]] ; then
-    path_object_program_static=${variables[$(bootstrap_id path_object_program_static-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_program_static-mode)]} != "" ]] ; then
+    path_object_program_static=${variables[$(bootstrap_id path_object_program_static-mode)]}
   fi
 
   if [[ $path_object_program_static != "" ]] ; then
     path_object_program_static=$(echo $path_object_program_static | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_script-$mode)]} != "" ]] ; then
-    path_object_script=${variables[$(bootstrap_id path_object_script-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_script-mode)]} != "" ]] ; then
+    path_object_script=${variables[$(bootstrap_id path_object_script-mode)]}
   fi
 
   if [[ $path_object_script != "" ]] ; then
     path_object_script=$(echo $path_object_script | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_shared-$mode)]} != "" ]] ; then
-    path_object_shared=${variables[$(bootstrap_id path_object_shared-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_shared-mode)]} != "" ]] ; then
+    path_object_shared=${variables[$(bootstrap_id path_object_shared-mode)]}
   fi
 
   if [[ $path_object_shared != "" ]] ; then
     path_object_shared=$(echo $path_object_shared | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_object_static-$mode)]} != "" ]] ; then
-    path_object_static=${variables[$(bootstrap_id path_object_static-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_object_static-mode)]} != "" ]] ; then
+    path_object_static=${variables[$(bootstrap_id path_object_static-mode)]}
   fi
 
   if [[ $path_object_static != "" ]] ; then
@@ -1769,24 +1825,24 @@ bootstrap_operation_build_prepare_paths() {
     path_object_static=$(echo $path_object_static | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_program_script-$mode)]} != "" ]] ; then
-    path_program_script=${variables[$(bootstrap_id path_program_script-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_program_script-mode)]} != "" ]] ; then
+    path_program_script=${variables[$(bootstrap_id path_program_script-mode)]}
   fi
 
   if [[ $path_program_script != "" ]] ; then
     path_program_script=$(echo $path_program_script | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_program_shared-$mode)]} != "" ]] ; then
-    path_program_shared=${variables[$(bootstrap_id path_program_shared-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_program_shared-mode)]} != "" ]] ; then
+    path_program_shared=${variables[$(bootstrap_id path_program_shared-mode)]}
   fi
 
   if [[ $path_program_shared != "" ]] ; then
     path_program_shared=$(echo $path_program_shared | sed -e 's|//*|/|g' -e 's|/*$|/|')
   fi
 
-  if [[ ${variables[$(bootstrap_id path_program_static-$mode)]} != "" ]] ; then
-    path_program_static=${variables[$(bootstrap_id path_program_static-$mode)]}
+  if [[ ${variables[$(bootstrap_id path_program_static-mode)]} != "" ]] ; then
+    path_program_static=${variables[$(bootstrap_id path_program_static-mode)]}
   fi
 
   if [[ $path_program_static != "" ]] ; then
@@ -1799,47 +1855,169 @@ bootstrap_operation_build_prepare_paths() {
 }
 
 bootstrap_operation_build_prepare_programs() {
+
   if [[ $sources_program == "" ]] ; then
-    sources_program=${variables[$(bootstrap_id build_sources_program-$mode)]}
+    sources_program=${variables[$(bootstrap_id build_sources_program-mode)]}
   else
-    sources_program="$sources_program ${variables[$(bootstrap_id build_sources_program-$mode)]}"
+    sources_program="$sources_program ${variables[$(bootstrap_id build_sources_program-mode)]}"
   fi
 
   if [[ $sources_program_shared == "" ]] ; then
-    sources_program_shared=${variables[$(bootstrap_id build_sources_program_shared-$mode)]}
+    sources_program_shared=${variables[$(bootstrap_id build_sources_program_shared-mode)]}
   else
-    sources_program_shared="$sources_program_shared ${variables[$(bootstrap_id build_sources_program_shared-$mode)]}"
+    sources_program_shared="$sources_program_shared ${variables[$(bootstrap_id build_sources_program_shared-mode)]}"
   fi
 
   if [[ $sources_program_static == "" ]] ; then
-    sources_program_static=${variables[$(bootstrap_id build_sources_program_static-$mode)]}
+    sources_program_static=${variables[$(bootstrap_id build_sources_program_static-mode)]}
   else
-    sources_program_static="$sources_program_static ${variables[$(bootstrap_id build_sources_program_static-$mode)]}"
+    sources_program_static="$sources_program_static ${variables[$(bootstrap_id build_sources_program_static-mode)]}"
+  fi
+}
+
+bootstrap_operation_build_prepare_remaining() {
+
+  if [[ ${variables[$(bootstrap_id build_name-mode)]} != "" ]] ; then
+    build_name=${variables[$(bootstrap_id build_name-mode)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id build_compiler-mode)]} != "" ]] ; then
+    build_compiler=${variables[$(bootstrap_id build_compiler-mode)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id build_indexer-mode)]} != "" ]] ; then
+    build_indexer=${variables[$(bootstrap_id build_indexer-mode)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id build_indexer_arguments-mode)]} != "" ]] ; then
+    build_indexer_arguments=${variables[$(bootstrap_id build_indexer_arguments)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id version_major-mode)]} != "" ]] ; then
+    version_major=${variables[$(bootstrap_id version_major)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id version_major_prefix-mode)]} != "" ]] ; then
+    version_major_prefix=${variables[$(bootstrap_id version_major_prefix)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id version_minor-mode)]} != "" ]] ; then
+    version_minor=${variables[$(bootstrap_id version_minor)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id version_minor_prefix-mode)]} != "" ]] ; then
+    version_minor_prefix=${variables[$(bootstrap_id version_minor_prefix)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id version_micro-mode)]} != "" ]] ; then
+    version_micro=${variables[$(bootstrap_id version_micro)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id version_micro_prefix-mode)]} != "" ]] ; then
+    version_micro_prefix=${variables[$(bootstrap_id version_micro_prefix)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id version_nano-mode)]} != "" ]] ; then
+    version_nano=${variables[$(bootstrap_id version_nano)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id version_nano_prefix-mode)]} != "" ]] ; then
+    version_nano_prefix=${variables[$(bootstrap_id version_nano_prefix)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id path_headers-mode)]} != "" ]] ; then
+    path_headers=${variables[$(bootstrap_id path_headers)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id preserve_path_headers-mode)]} != "" ]] ; then
+    preserve_path_headers=${variables[$(bootstrap_id preserve_path_headers)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id path_library_script-mode)]} != "" ]] ; then
+    path_library_script=${variables[$(bootstrap_id path_library_script)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id path_library_shared-mode)]} != "" ]] ; then
+    path_library_shared=${variables[$(bootstrap_id path_library_shared)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id path_library_static-mode)]} != "" ]] ; then
+    path_library_static=${variables[$(bootstrap_id path_library_static)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id path_object_script-mode)]} != "" ]] ; then
+    path_object_script=${variables[$(bootstrap_id path_object_script)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id path_object_shared-mode)]} != "" ]] ; then
+    path_object_shared=${variables[$(bootstrap_id path_object_shared)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id path_object_static-mode)]} != "" ]] ; then
+    path_object_static=${variables[$(bootstrap_id path_object_static)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id path_program_script-mode)]} != "" ]] ; then
+    path_program_script=${variables[$(bootstrap_id path_program_script)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id path_program_shared-mode)]} != "" ]] ; then
+    path_program_shared=${variables[$(bootstrap_id path_program_shared)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id path_program_static-mode)]} != "" ]] ; then
+    path_program_static=${variables[$(bootstrap_id path_program_static)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id has_path_standard-mode)]} != "" ]] ; then
+    has_path_standard=${variables[$(bootstrap_id has_path_standard)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id search_exclusive-mode)]} != "" ]] ; then
+    search_exclusive=${variables[$(bootstrap_id search_exclusive)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id search_shared-mode)]} != "" ]] ; then
+    search_shared=${variables[$(bootstrap_id search_shared)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id search_static-mode)]} != "" ]] ; then
+    search_static=${variables[$(bootstrap_id search_static)]}
   fi
 }
 
 bootstrap_operation_build_prepare_settings() {
+
   if [[ $sources_setting == "" ]] ; then
-    sources_setting=${variables[$(bootstrap_id build_sources_setting-$mode)]}
+    sources_setting=${variables[$(bootstrap_id build_sources_setting-mode)]}
   else
-    sources_setting="$sources_setting ${variables[$(bootstrap_id build_sources_setting-$mode)]}"
+    sources_setting="$sources_setting ${variables[$(bootstrap_id build_sources_setting-mode)]}"
   fi
 }
 
 bootstrap_operation_build_prepare_shared_static() {
+
+  if [[ ${variables[$(bootstrap_id build_shared-mode)]} != "" ]] ; then
+    build_shared=${variables[$(bootstrap_id build_shared-mode)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id build_static-mode)]} != "" ]] ; then
+    build_static=${variables[$(bootstrap_id build_static-mode)]}
+  fi
+
   if [[ $enable_shared == "yes" ]] ; then
-    shared="yes"
+    build_shared="yes"
     search_shared="yes"
   elif [[ $enable_shared == "no" ]] ; then
-    shared="no"
+    build_shared="no"
     search_shared="no"
   fi
 
   if [[ $enable_static == "yes" ]] ; then
-    static="yes"
+    build_static="yes"
     search_static="yes"
   elif [[ $enable_static == "no" ]] ; then
-    static="no"
+    build_static="no"
     search_static="no"
   fi
 
@@ -1853,7 +2031,8 @@ bootstrap_operation_build_prepare_shared_static() {
 }
 
 bootstrap_operation_build_validate_build() {
-  if [[ $compiler == "" ]] ; then
+
+  if [[ $build_compiler == "" ]] ; then
     if [[ $verbosity != "quiet" ]] ; then
       echo -e "${c_error}ERROR: Cannot Build, no '${c_notice}build_compiler${c_error}' specified, such as '${c_notice}gcc${c_error}'.$c_reset"
     fi
@@ -1861,7 +2040,7 @@ bootstrap_operation_build_validate_build() {
     let failure=1
   fi
 
-  if [[ $indexer == "" ]] ; then
+  if [[ $build_indexer == "" ]] ; then
     if [[ $verbosity != "quiet" ]] ; then
       echo -e "${c_error}ERROR: Cannot Build, no '${c_notice}build_indexer${c_error}' specified, such as '${c_notice}ar${c_error}'.$c_reset"
     fi
@@ -1871,6 +2050,7 @@ bootstrap_operation_build_validate_build() {
 }
 
 bootstrap_operation_build_validate_paths() {
+
   if [[ $path_sources == "" || ! -d $path_sources ]] ; then
     if [[ $verbosity != "quiet" ]] ; then
       echo -e "${c_error}ERROR: The sources directory $c_notice$path_sources$c_error is not a valid directory.$c_reset"
@@ -1897,7 +2077,8 @@ bootstrap_operation_build_validate_search() {
 }
 
 bootstrap_operation_build_validate_shared_static() {
-  if [[ $shared != "yes" && $static != "yes" ]] ; then
+
+  if [[ $build_shared != "yes" && $build_static != "yes" ]] ; then
     if [[ $verbosity != "quiet" ]] ; then
       echo -e "${c_error}ERROR: Cannot Build, either build_shared or build_static must be set to 'yes'.$c_reset"
     fi
@@ -1915,6 +2096,7 @@ bootstrap_operation_build_validate_shared_static() {
 }
 
 bootstrap_operation_build_validate_sources() {
+
   for i in $sources_script ; do
     if [[ $i != "$(echo $i | sed -e 's|^//*||' -e 's|^\.\.//*||' -e 's|/*$||')" ]] ; then
       if [[ $verbosity != "quiet" ]] ; then
@@ -1987,52 +2169,62 @@ bootstrap_operation_build_validate_sources() {
 }
 
 bootstrap_operation_build_prepare_versions() {
-  if [[ $file == "" ]] ; then
-    file="micro"
+
+  if [[ ${variables[$(bootstrap_id version_file-mode)]} != "" ]] ; then
+    version_file_value=${variables[$(bootstrap_id version_file-mode)]}
+  fi
+
+  if [[ ${variables[$(bootstrap_id version_target-mode)]} != "" ]] ; then
+    version_target_value=${variables[$(bootstrap_id version_target-mode)]}
+  fi
+
+  if [[ $version_file_value == "" ]] ; then
+    version_file_value="micro"
   fi
 
-  if [[ $target == "" ]] ; then
-    target="major"
+  if [[ $version_target_value == "" ]] ; then
+    version_target_value="major"
   fi
 
-  if [[ $major == "" ]] ; then
-    major_prefix=
+  if [[ $version_major == "" ]] ; then
+    version_major_prefix=
   fi
 
-  if [[ $minor == "" ]] ; then
-    minor_prefix=
+  if [[ $version_minor == "" ]] ; then
+    version_minor_prefix=
   fi
 
-  if [[ $micro == "" ]] ; then
-    micro_prefix=
+  if [[ $version_micro == "" ]] ; then
+    version_micro_prefix=
   fi
 
-  if [[ $nano == "" ]] ; then
-    nano_prefix=
+  if [[ $version_nano == "" ]] ; then
+    version_nano_prefix=
   fi
 
-  if [[ $file == "major" ]] ; then
-    version_file="$major_prefix$major"
-  elif [[ $file == "minor" ]] ; then
-    version_file="$major_prefix$major$minor_prefix$minor"
-  elif [[ $file == "micro" ]] ; then
-    version_file="$major_prefix$major$minor_prefix$minor$micro_prefix$micro"
-  elif [[ $file == "nano" ]] ; then
-    version_file="$major_prefix$major$minor_prefix$minor$micro_prefix$micro$nano_prefix$nano"
+  if [[ $version_file_value == "major" ]] ; then
+    version_file="$version_major_prefix$version_major"
+  elif [[ $version_file_value == "minor" ]] ; then
+    version_file="$version_major_prefix$version_major$version_minor_prefix$version_minor"
+  elif [[ $version_file_value == "micro" ]] ; then
+    version_file="$version_major_prefix$version_major$version_minor_prefix$version_minor$version_micro_prefix$version_micro"
+  elif [[ $version_file_value == "nano" ]] ; then
+    version_file="$version_major_prefix$version_major$version_minor_prefix$version_minor$version_micro_prefix$version_micro$version_nano_prefix$version_nano"
   fi
 
-  if [[ $target == "major" ]] ; then
-    version_target="$major_prefix$major"
-  elif [[ $target == "minor" ]] ; then
-    version_target="$major_prefix$major$minor_prefix$minor"
-  elif [[ $target == "micro" ]] ; then
-    version_target="$major_prefix$major$minor_prefix$minor$micro_prefix$micro"
-  elif [[ $target == "nano" ]] ; then
-    version_target="$major_prefix$major$minor_prefix$minor$micro_prefix$micro$nano_prefix$nano"
+  if [[ $version_target_value == "major" ]] ; then
+    version_target="$version_major_prefix$version_major"
+  elif [[ $version_target_value == "minor" ]] ; then
+    version_target="$version_major_prefix$version_major$version_minor_prefix$version_minor"
+  elif [[ $version_target_value == "micro" ]] ; then
+    version_target="$version_major_prefix$version_major$version_minor_prefix$version_minor$version_micro_prefix$version_micro"
+  elif [[ $version_target_value == "nano" ]] ; then
+    version_target="$version_major_prefix$version_major$version_minor_prefix$version_minor$version_micro_prefix$version_micro$version_nano_prefix$version_nano"
   fi
 }
 
 bootstrap_operation_clean() {
+
   local i=
 
   for i in ${path_build}{documents,includes,libraries,objects,programs,settings,stage} ; do
@@ -2055,6 +2247,7 @@ bootstrap_operation_clean() {
 }
 
 bootstrap_cleanup() {
+
   unset bootstrap_main
   unset bootstrap_handle_colors
   unset bootstrap_help
@@ -2072,6 +2265,7 @@ bootstrap_cleanup() {
   unset bootstrap_operation_build_prepare_objects
   unset bootstrap_operation_build_prepare_paths
   unset bootstrap_operation_build_prepare_programs
+  unset bootstrap_operation_build_prepare_remaining
   unset bootstrap_operation_build_prepare_settings
   unset bootstrap_operation_build_prepare_shared_static
   unset bootstrap_operation_build_prepare_versions
index dd60074c341726ed8fd28f13ef5d21f765a53c87..53103dc99b817397670c59adf193cfe9b758d7f4 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 4241f05867eb4ed220ff3747b935c7aca111933c..a4897909843beedededd75d3bded147d3e517c80 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 64c31616f13869621f717183850e5da6798384d3..6b2c01af186e609383bb99802688b1438a0a2b32 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 095298123c4b358e99c5d241d2581df9ef3e59c8..b46e4a55d25e412e0ef62d8fca2337659445c45b 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 248d7cb0230a8480df8684f560b116db0d87276b..22b8a4e2825e398fa7ac300eac110d641cb93493 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index bf2ab89eba3b7721c6e7e0993da6e5630a850de1..15b54c3a7fe39f980f13ea5cccd72c09ed94b4a2 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 0127ce93f3e3ccadfc1d5f4fd50c4518d5cca6c8..2d0ffcd87f8c5bb5dbe460127a5fb2005da5efcb 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 844652d1bce5b92ccfee679ad7063ca7c0060e9b..3a40825a07b7000fa39af8954ac621005f4add5c 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 34fb9ac40f2cd08c6626f4e72c5d7192cdcace38..33b98a47a7499026303bf6224429190a86f6754a 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index f984b6e551f8d2f84f76879bdb6c801202de0dc5..5821ab839f9ae6171ec13117bf8eae28c68df4ff 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 12246677399dfb39e808c58ee1ac869c4923c215..575f3518ba3dae3e1b22f37107dfbb89221cc20c 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index feb7cef37ab482e11033e7aad5b53dba2f211ce8..15ddb6de0cd98015049d4f9871117425638131f9 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index a1aa7934e1eb4425875eb9a56a253eedbeb14f8f..eaa082357f5ad87df62d8d970f3951f08c9d7f09 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index efc84a3cdd63a9a6d6032fd7fa4f76556c38a5ff..4251b966baef8e714297693199f2cadb8a22e599 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index dc7e797c86753fdd70d9293999df997f9d19a68f..abee72d6420e7bf0b16db23c773908a64a8008e1 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 5b148345ed6b7f81e0adc178c223de7e4661da03..37de697f251850d6e61e1ea3e08513a477e7edbf 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 8f5354fdcdcd8c9b23614e9b0b9459de3c869eac..8396ee0b88390f44ecc8983019244768c7dc5d01 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 8db60ae4509baebec512ce642e4898ee596479d0..c88c4416039f386f5efd74ce1d53023d602aa083 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 9bba594015b5117d614dedf7efcb6e611bb62b3f..23b9df8dd732ffc1db94f14582290948e7ffa7dc 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index bfd79e6421bd3fcfaad12d20f5747ec23223d6a5..8dddfcddbb22383d0a748cc7c5a7c23d1f2b178b 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 61f1349f9be1442c2f7c772f0bf3af199045d461..315cc097d4aa9f996a91eb1f2f8abd03ba5cf9b8 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index ca983b6d0bbca8fd1dba3272b8e7883b37f088ba..259027b79bf1640fff97f4699f595839dd15d100 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 07299e93dcf9557a1cc0cdc987c5e062b060500c..97b8bd3e8c112c384dc96b33528a059d0af515eb 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 9ed7b204d8205a746c445b77c06d1ae6c132ccbb..8d26c4ae6e353b80f84942d7e6e8f22d1eaa604a 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 4e890767c7536a53b091d92060d66bc476966619..908aca6653617702316c50a73418eb0fbadfc51b 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index bf285270cfc33c88a8066175bf88364703bae8bc..ca978d520767a508350c950e42f9503c7960f9b0 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index ae0d8db9bb244394f5667ca0c2713581f9063c3c..efb17bb4b729d11d908396654da3e6c5ef82b6f6 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index d3c34ce85c057c124123a253e536fa06b5b269fd..7987fa3d3f1b3a4b5a02df488ed268780ad87064 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 88e697e435c14cdfd6ac3d07e255caa642df6e09..0b74a25e5a62ab609dc6f364ba1d702dd33ed96b 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 45703079359996b89efdf15961c5cbb18e26c14d..acd979f1f2cb36f7eaf434f3fe1ede316b592704 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index cd9bc1e155d284fa27b30834daf33426f4c27e9d..5fbf194a4cf5f4b85e7953f4306c7335b2b1eb96 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 54a400de76823e2474cb01f6aa4ecfcbc300e249..5aa8068e885a79ec3aa62d838a718b97fa1217d0 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 2f764565df88281d3231c3a5910424bf66695fe3..9d43d65669c3678d6d6b32eceaad5c374b040775 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index dc42be54d2353cc1088b633302e0ae706bb35ee8..ed8c5ae2ecf0bc1f7cf7cc32d8e9a296a06e9375 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 5e83171ac7f31ed52e4a0fd212bcfef206d9f393..f685d9fb435f76d9037e724a7df1865bb9b28b7c 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 4739eb0bb4dfd765eb9b97aac33977b964ff9687..da82407d6ae975af97184e46b5c4c3e576149952 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index ad18680b938429bd22f3e3f379a0b643a46b0258..094d8ab428fe1a530af2a27d6771b0554f602412 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 1bd8217a0fb5495e409e74b14ac1409a6f90afef..c0fb75ec712d49ca4c77f0867da63ef5b11320f0 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index a2a6895809e436abc3f0703adedaac7a3c324231..d1f8b0430917a9b9d2ba878650af58a7854a41b8 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 1ddc3ffba4eaa82464221a3060a03ed1d0a849ee..d7d07616ab3ed8138e9f7c3268c779a08b46d854 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 933a436bfdf92abd75af352a8a6ca89a54192e0b..95b07bdb8bdf51fa93cf23af07ef61742c351a05 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index d541e5b17273ff5d0fc5f31be341b2a7af52c4ec..de966bcb9ff804644ecd8fa8c1535e68a760f470 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index e58dacb599ffa3b3b7bed94748a01c8b0f6e0e13..923164f4a1ceae8ed5372675cf98259fbad45db9 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 6d984e954b7a72fb62406dbf127397b40101b03e..2ddb61f36e4ab977ca1e31f66103dc99e1cf5dd4 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 23f7e1c38d20482e2aa71fe6a57f65c73d47ed3c..2bcc17f31d819b3c23783681ae5505ce6dfdf4f1 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index ea77245951db26510d0fc7796e1db5c79fa4ac59..8a9e2179bd9a932c5a6bb6f779d8811c922cd4f6 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 2d4ce6088e3192a41c8df1034f9c3bf5ba4fd814..e85df1e40ce0f85608e3c144c69b0619a8a67c99 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 80f9cc257e0e14ecf25523966a97f5a76b8bd5a5..a2b1f2bf9ea56f1d2b8ed211cd2e4da654f85b8b 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 52343487d9ff8a31e9313f9bf68a21f6d63fb516..65bf91696c5bd719f2daca237b57d834f0310767 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 4693b5fb17572c47dc89b6e880aba8cedc8cf8a1..017436b4e97e6c42b367381d3c22dcb6693713c4 100644 (file)
@@ -18,7 +18,6 @@ modes_default individual
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index f1c21abbab8bdc6b26fcc89ee7ab0f1a5e99bf3f..ff21b83e2c72f1434ecfbce3d0c0d0281c817449 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 028837f4f8a40ca0a9e97beb7b7620ba55b67482..7efe7d1940298b431ad34ebafcf926db9c8e546f 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 009cde35cca3b5812c1b31d9c7fc9f33917e1784..3332de2fc5c8b8989295aa1a78b6289f7d1f2a7a 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 3f2cbb6817cdb196271092834b528e5d8cbbfd79..d178c119c1848929fda0fa49288a88edc31b4464 100644 (file)
@@ -1059,7 +1059,7 @@ extern "C" {
             fl_print_format("%[' in the file '%]", main->warning.to.stream, main->warning.context, main->warning.context);
             fl_print_format("%[%Q%]", main->warning.to.stream, main->warning.notable, path_file, main->warning.notable);
             fl_print_format("%[' may only have a single property, only using the first: '%]", main->warning.to.stream, main->warning.context, main->warning.context);
-            fl_print_format("%[%Q%]", main->warning.to.stream, main->warning.notable, settings_single_source[i]->array[0], main->warning.notable);
+            fl_print_format("%[%Q%]", main->warning.to.stream, main->warning.notable, settings_single_source[i]->array[settings_single_source[i]->used - 1], main->warning.notable);
             fl_print_format("%['.%]%r", main->warning.to.stream, main->warning.context, main->warning.context, f_string_eol_s);
 
             funlockfile(main->warning.to.stream);
@@ -1067,10 +1067,10 @@ extern "C" {
         }
 
         if (settings_single_type[i] == 1) {
-          if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[0], fake_common_setting_bool_yes_s) == F_equal_to) {
+          if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[settings_single_source[i]->used - 1], fake_common_setting_bool_yes_s) == F_equal_to) {
             *settings_single_bool[i] = F_true;
           }
-          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[0], fake_common_setting_bool_no_s) == F_equal_to) {
+          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[settings_single_source[i]->used - 1], fake_common_setting_bool_no_s) == F_equal_to) {
             *settings_single_bool[i] = F_false;
           }
           else {
@@ -1096,13 +1096,13 @@ extern "C" {
           }
         }
         else if (settings_single_type[i] == 4) {
-          if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[0], fake_build_language_bash_s) == F_equal_to) {
+          if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[settings_single_source[i]->used - 1], fake_build_language_bash_s) == F_equal_to) {
             *settings_single_language[i] = fake_build_language_type_bash_e;
           }
-          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[0], fake_build_language_c_s) == F_equal_to) {
+          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[settings_single_source[i]->used - 1], fake_build_language_c_s) == F_equal_to) {
             *settings_single_language[i] = fake_build_language_type_c_e;
           }
-          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[0], fake_build_language_cpp_s) == F_equal_to) {
+          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[settings_single_source[i]->used - 1], fake_build_language_cpp_s) == F_equal_to) {
             *settings_single_language[i] = fake_build_language_type_cpp_e;
           }
           else {
@@ -1130,16 +1130,16 @@ extern "C" {
           }
         }
         else if (settings_single_type[i] == 5) {
-          if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[0], fake_build_version_major_s) == F_equal_to) {
+          if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[settings_single_source[i]->used - 1], fake_build_version_major_s) == F_equal_to) {
             *settings_single_version[i] = fake_build_version_type_major_e;
           }
-          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[0], fake_build_version_minor_s) == F_equal_to) {
+          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[settings_single_source[i]->used - 1], fake_build_version_minor_s) == F_equal_to) {
             *settings_single_version[i] = fake_build_version_type_minor_e;
           }
-          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[0], fake_build_version_micro_s) == F_equal_to) {
+          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[settings_single_source[i]->used - 1], fake_build_version_micro_s) == F_equal_to) {
             *settings_single_version[i] = fake_build_version_type_micro_e;
           }
-          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[0], fake_build_version_nano_s) == F_equal_to) {
+          else if (fl_string_dynamic_compare_trim(settings_single_source[i]->array[settings_single_source[i]->used - 1], fake_build_version_nano_s) == F_equal_to) {
             *settings_single_version[i] = fake_build_version_type_nano_e;
           }
           else {
@@ -1174,7 +1174,7 @@ extern "C" {
           settings_single_destination[i]->used = 0;
 
           if (settings_single_type[i] == 2) {
-            *status = f_path_directory_cleanup(settings_single_source[i]->array[0], settings_single_destination[i]);
+            *status = f_path_directory_cleanup(settings_single_source[i]->array[settings_single_source[i]->used - 1], settings_single_destination[i]);
 
             if (F_status_is_error(*status)) {
               fll_error_print(main->error, F_status_set_fine(*status), "f_path_directory_cleanup", F_true);
@@ -1183,7 +1183,7 @@ extern "C" {
             }
           }
           else {
-            *status = f_string_dynamic_increase_by(settings_single_source[i]->array[0].used + 1, settings_single_destination[i]);
+            *status = f_string_dynamic_increase_by(settings_single_source[i]->array[settings_single_source[i]->used - 1].used + 1, settings_single_destination[i]);
 
             if (F_status_is_error(*status)) {
               fll_error_print(main->error, F_status_set_fine(*status), "f_string_dynamic_increase_by", F_true);
@@ -1191,7 +1191,7 @@ extern "C" {
               break;
             }
 
-            *status = f_string_dynamic_append_nulless(settings_single_source[i]->array[0], settings_single_destination[i]);
+            *status = f_string_dynamic_append_nulless(settings_single_source[i]->array[settings_single_source[i]->used - 1], settings_single_destination[i]);
 
             if (F_status_is_error(*status)) {
               fll_error_print(main->error, F_status_set_fine(*status), "f_string_dynamic_append_nulless", F_true);
index 45043b8eadfbe24be379a7ff52d203b63591f06e..ae4cf0c1f22133a8391f25920d8dcd8837978842 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 586a50957f459a4668164c4a3dd14ab9404d83c8..c1be16f7aa98b03a4373fc4a4787d83bcb4b17d4 100644 (file)
@@ -6,6 +6,7 @@ extern void print_k(void);
 extern void print_e(void);
 
 int main(int argc, char *argv[], char *envp[]) {
+
   print_f();
   print_a();
   print_k();
index 021a2dc5071cb98fa2885059f630e4426b16c8f5..dd4d81b33440c25e7aed6f201a611c90ca995f5b 100644 (file)
@@ -99,52 +99,4 @@ Settings Specification:
     - version_nano_prefix: Must be zero or more valid filename characters.
     - version_target: Must only be one of: "major", "minor", "micro", or "nano".
 
-  The following Object names support having a "-" and a "mode" name, such as "build_libraries-individual" for a mode called "individual"\:
-    - build_libraries
-    - build_libraries_shared
-    - build_libraries_static
-    - build_objects_library
-    - build_objects_library_shared
-    - build_objects_library_static
-    - build_objects_program
-    - build_objects_program_shared
-    - build_objects_program_static
-    - build_sources_headers
-    - build_sources_headers_shared
-    - build_sources_headers_static
-    - build_sources_library
-    - build_sources_library_shared
-    - build_sources_library_static
-    - build_sources_object
-    - build_sources_object_shared
-    - build_sources_object_static
-    - build_sources_program
-    - build_sources_program_shared
-    - build_sources_program_static
-    - build_sources_script
-    - build_sources_setting
-    - defines
-    - defines_library
-    - defines_library_shared
-    - defines_library_static
-    - defines_object
-    - defines_object_shared
-    - defines_object_static
-    - defines_program
-    - defines_program_shared
-    - defines_program_static
-    - defines_shared
-    - defines_static
-    - environment
-    - flags
-    - flags_library
-    - flags_library_shared
-    - flags_library_static
-    - flags_object
-    - flags_object_shared
-    - flags_object_static
-    - flags_program
-    - flags_program_shared
-    - flags_program_static
-    - flags_shared
-    - flags_static
+  All Object names support having a "-" and a "mode" name, such as "build_libraries-individual" for a mode called "individual", except for the "modes" and the "modes_default" Object names.
index 7721bbdab60392acd0d31f3a14d2b5d1bc694e27..b5e12776695f292ae9e50a6fb220d7afbcdb5753 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 57573657094e0c6ce949b45d1688e4a9bbe8680a..288ddad0b612a28bb5ef335041e961201e0e3ee4 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index fee017312c43f93e95dfdacea6c5a6ec86d2bde3..4be80cb22e0ebc2c52ad2a070b5573f359e49803 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 9c069bfec86df150d83fb82bd7aa007cf0752d12..3507bdb89f51705266488cfe7855dc91934796be 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 00a0f0e4104b894caeeb180f25a5bc631e4f88c9..7dee76846b6fded2546bd5671e38dcaaa5de6766 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 39947d6401572a9a948b367944c7f7362cd7d75c..64d18ac98c22932d71727296b1740a4d6742ae12 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index b9e9facd440fece94992cd9d79f4ffea050c8e7a..043ad3af4355a2fdadc12c2d79caafa3d5e935a3 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 8627098adc18b0be894a60f6e75d72192bb9120b..d52a6cdd2ca78bb91bb9dd33a13a4645fcf6c358 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 07ca19f905df03b61e76926792e28f646935634f..4cc1ccc1e684ca9df60d38b53f6b67f5d8af27d0 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 6c3fb9a6f46c6c94cc975c98b7f3696ba8402bf7..b73bfca2248bf1f0022ecb55372bf7c4d1fd7597 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 3def8d428e257d2967b1ab923e1c9cd702fd58a4..dd8d295f6c440f800b568b2269f519fbdc306343 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index f9081da80dcf43516fff1a51a8153f8543c4688b..f5dac4d75f46b3b00b0b6a107d0c61dbca9e61cb 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 8b8ba7974a871822ffb95e1733dba64d4faf8349..c7ee8056782e3e181543f7fabdbfed2bd70fcf4d 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 2c4bc8007e1641024a3a434983ad95c78e1e4ca1..35e762a1f46467932eb3f59e9302ebe37479e1e0 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index cd675882ed38761a44d9bc174559800505d07613..c786da7723d629811b7a2bbe69ff55f80c32b638 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 3c9898cb2495a3247535f5524e092cb5e3e338f8..c991b10a5331911e9c1a4832a0caba6dcfca2115 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 0344926273013f2cedf7069893e6f4331d9bb92b..5a862a808969bfa696249133e068c2575911487e 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 618c69c20fc03f136ce99b3d53eeb6d97b780605..419c98f84fd4cb63b659704646983512d31a8577 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c
index 5407cb4febbe2c7e305052f1da1d4e55151d600f..0c50a8832e3e603dcd1186f58c014950d9088746 100644 (file)
@@ -18,7 +18,6 @@ modes_default monolithic
 
 build_compiler gcc
 build_compiler-clang clang
-build_compiler-clang clang
 build_indexer ar
 build_indexer_arguments rcs
 build_language c