]> Kevux Git Server - fll/commitdiff
Bugfix: The bootstrap.sh script isn't loading build_libraries setting properly.
authorKevin Day <Kevin@kevux.org>
Thu, 30 Apr 2026 04:23:39 +0000 (23:23 -0500)
committerKevin Day <Kevin@kevux.org>
Thu, 30 Apr 2026 04:23:39 +0000 (23:23 -0500)
The variable for the `build_libraries` setting is just `libraries`.
The code is incorrectly saving that setting in `build_libraries` variable.
Make the code save values in `libraries` variable instead of `build_variables` variable.

Add an additional conditional logic check for when setting a variable "has" key to `no`.
If the value already exists and has a `yes` assigned, then do not set it to `no`!

Do some code cleanup up:
  - Move all of the keys into a single location for the loops (one location for single values and one location for multi values).
    - Make these read only local variables.
  - Add additional safety checks for when `${key}` might be NULL.

build/scripts/bootstrap.sh

index 71235a65021860a8b7290a2d688fd0218ee3acd6..459fa553427af7db17bc6aac1d862660797cb8ce 100644 (file)
@@ -81,6 +81,12 @@ bootstrap_main() {
   local enable_shared=
   local enable_static=
 
+  local objects_multi="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_documentation 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_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 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"
+  local objects_single="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_headers path_sources_library path_sources_object path_sources_program path_sources_script preserve_path_headers process_post process_pre search_exclusive search_shared search_static stage version_file version_major version_major_prefix version_micro version_micro_prefix version_minor version_minor_prefix version_nano version_nano_prefix version_target"
+
+  readonly objects_multi
+  readonly objects_single
+
   if [[ ${#} -gt 0 ]] ; then
     t=${#}
 
@@ -539,7 +545,7 @@ bootstrap_id() {
   # Start index position at index 1.
   let key=1
 
-  for name 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_documentation 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 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_headers path_sources_library path_sources_object path_sources_program path_sources_script preserve_path_headers process_post process_pre search_exclusive search_shared search_static stage 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
+  for name in ${objects_single} ${objects_multi} ; do
 
     if [[ ${name} == ${match} ]] ; then return ; fi
 
@@ -676,7 +682,7 @@ bootstrap_load_settings() {
   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_headers path_sources_library path_sources_object path_sources_program path_sources_script preserve_path_headers process_post process_pre search_exclusive search_shared search_static stage 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
+  for i in ${objects_single} ; do
 
     bootstrap_id "${i}"
 
@@ -715,7 +721,7 @@ bootstrap_load_settings() {
   done
 
   # 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_documentation 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_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 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
+  for i in ${objects_multi} ; do
 
     bootstrap_id "${i}"
 
@@ -745,8 +751,9 @@ bootstrap_load_settings() {
           variables[${key}]="yes"
         fi
       else
+
         bootstrap_id "has-${i}"
-        if [[ ${key} -ne 0 ]] ; then
+        if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
           variables[${key}]="no"
         fi
       fi
@@ -759,12 +766,10 @@ bootstrap_load_settings_mode() {
   local m=
   local value=
 
-  local -i key=0
-
   for m in ${modes} ; do
 
     # 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_headers path_sources_library path_sources_object path_sources_program path_sources_script preserve_path_headers process_post process_pre search_exclusive search_shared search_static stage 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
+    for i in ${objects_single} ; do
 
       bootstrap_id "${i}-mode"
 
@@ -807,7 +812,7 @@ bootstrap_load_settings_mode() {
     done
 
     # 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_documentation 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_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 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
+    for i in ${objects_multi} ; do
 
       bootstrap_id "${i}-mode"
 
@@ -839,11 +844,10 @@ bootstrap_load_settings_mode() {
             variables[${key}]="yes"
           fi
         else
+
           bootstrap_id "has-${i}-mode"
-          if [[ ${key} -ne 0 ]] ; then
-            if [[ ${variables[${key}]} != "yes" ]] ; then
-              variables[${key}]="no"
-            fi
+          if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
+            variables[${key}]="no"
           fi
         fi
       fi
@@ -914,6 +918,9 @@ bootstrap_operation_build() {
 
   local -i key=0
 
+  # Initialiaze not found to empty string.
+  variables[0]=""
+
   bootstrap_id "build_compiler"
   local build_compiler=${variables[${key}]}
 
@@ -1529,194 +1536,266 @@ bootstrap_operation_build() {
 bootstrap_operation_build_prepare_defaults() {
 
   bootstrap_id "has-version_major_prefix-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-version_major_prefix"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      version_major_prefix="."
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        version_major_prefix="."
+      fi
     fi
   fi
 
   bootstrap_id "has-version_minor_prefix-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-version_minor_prefix"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      version_minor_prefix="."
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        version_minor_prefix="."
+      fi
     fi
   fi
 
   bootstrap_id "has-version_micro_prefix-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-version_micro_prefix"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      version_micro_prefix="."
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        version_micro_prefix="."
+      fi
     fi
   fi
 
   bootstrap_id "has-version_nano_prefix-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-version_nano_prefix"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      version_nano_prefix="."
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        version_nano_prefix="."
+      fi
     fi
   fi
 
   bootstrap_id "has-build_compiler-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-build_compiler"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      build_compiler="gcc"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        build_compiler="gcc"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_indexer-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-build_indexer"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      build_indexer="ar"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        build_indexer="ar"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_library_script-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_library_script"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_library_script="script/"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_library_script="script/"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_library_shared-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_library_shared"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_library_shared="shared/"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_library_shared="shared/"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_library_static-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_library_static"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_library_static="static/"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_library_static="static/"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_object_script-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_object_script"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_object_script="script/"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_object_script="script/"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_object_shared-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_object_shared"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_object_shared="shared/"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_object_shared="shared/"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_object_static-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_object_static"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_object_static="static/"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_object_static="static/"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_program_script-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_program_script"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_program_script="script/"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_program_script="script/"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_program_shared-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_program_shared"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_program_shared="shared/"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_program_shared="shared/"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_program_static-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_program_static"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_program_static="static/"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_program_static="static/"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_sources-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_sources"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_sources="sources/"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_sources="sources/"
+      fi
     fi
   fi
 
   bootstrap_id "has-path_sources_headers-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_sources_headers"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_sources_headers=${path_sources}
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_sources_headers=${path_sources}
+      fi
     fi
   fi
 
   bootstrap_id "has-path_sources_library-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_sources_library"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_sources_library=${path_sources}
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_sources_library=${path_sources}
+      fi
     fi
   fi
 
   bootstrap_id "has-path_sources_object-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_sources_object"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_sources_object=${path_sources}
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_sources_object=${path_sources}
+      fi
     fi
   fi
 
   bootstrap_id "has-path_sources_program-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_sources_program"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_sources_program=${path_sources}
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_sources_program=${path_sources}
+      fi
     fi
   fi
 
   bootstrap_id "has-path_sources_script-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-path_sources_script"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      path_sources_script=${path_sources}
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        path_sources_script=${path_sources}
+      fi
     fi
   fi
 
   bootstrap_id "has-has_path_standard-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-has_path_standard"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      has_path_standard="yes"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        has_path_standard="yes"
+      fi
     fi
   fi
 
   bootstrap_id "has-search_shared-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-search_shared"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      search_shared="yes"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        search_shared="yes"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_shared-mode"
-  if [[ ${variables[${key}]} != "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} != "yes" ]] ; then
     bootstrap_id "has-build_shared"
-    if [[ ${variables[${key}]} != "yes" ]] ; then
-      build_shared="yes"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${variables[${key}]} != "yes" ]] ; then
+        build_shared="yes"
+      fi
     fi
   fi
 }
@@ -1724,122 +1803,158 @@ bootstrap_operation_build_prepare_defaults() {
 bootstrap_operation_build_prepare_defines() {
 
   bootstrap_id "has-defines-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines-mode"
-    if [[ ${defines} == "" ]] ; then
-      defines=${variables[${key}]}
-    else
-      defines="${defines} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines} == "" ]] ; then
+        defines=${variables[${key}]}
+      else
+        defines="${defines} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_library-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_library-mode"
-    if [[ ${defines_library} == "" ]] ; then
-      defines_library=${variables[${key}]}
-    else
-      defines_library="${defines_library} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_library} == "" ]] ; then
+        defines_library=${variables[${key}]}
+      else
+        defines_library="${defines_library} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_library_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_library_shared-mode"
-    if [[ ${defines_library_shared} == "" ]] ; then
-      defines_library_shared=${variables[${key}]}
-    else
-      defines_library_shared="${defines_library_shared} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_library_shared} == "" ]] ; then
+        defines_library_shared=${variables[${key}]}
+      else
+        defines_library_shared="${defines_library_shared} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_library_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_library_static-mode"
-    if [[ ${defines_library_static} == "" ]] ; then
-      defines_library_static=${variables[${key}]}
-    else
-      defines_library_static="${defines_library_static} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_library_static} == "" ]] ; then
+        defines_library_static=${variables[${key}]}
+      else
+        defines_library_static="${defines_library_static} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_object-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_object-mode"
-    if [[ ${defines_object} == "" ]] ; then
-      defines_object=${variables[${key}]}
-    else
-      defines_object="${defines_object} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_object} == "" ]] ; then
+        defines_object=${variables[${key}]}
+      else
+        defines_object="${defines_object} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_object_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_object_shared-mode"
-    if [[ ${defines_object_shared} == "" ]] ; then
-      defines_object_shared=${variables[${key}]}
-    else
-      defines_object_shared="${defines_object_shared} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_object_shared} == "" ]] ; then
+        defines_object_shared=${variables[${key}]}
+      else
+        defines_object_shared="${defines_object_shared} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_object_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_object_static-mode"
-    if [[ ${defines_object_static} == "" ]] ; then
-      defines_object_static=${variables[${key}]}
-    else
-      defines_object_static="${defines_object_static} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_object_static} == "" ]] ; then
+        defines_object_static=${variables[${key}]}
+      else
+        defines_object_static="${defines_object_static} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_program-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_program-mode"
-    if [[ ${defines_program} == "" ]] ; then
-      defines_program=${variables[${key}]}
-    else
-      defines_program="${defines_program} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_program} == "" ]] ; then
+        defines_program=${variables[${key}]}
+      else
+        defines_program="${defines_program} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_program_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_program_shared-mode"
-    if [[ ${defines_program_shared} == "" ]] ; then
-      defines_program_shared=${variables[${key}]}
-    else
-      defines_program_shared="${defines_program_shared} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_program_shared} == "" ]] ; then
+        defines_program_shared=${variables[${key}]}
+      else
+        defines_program_shared="${defines_program_shared} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_program_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_program_static-mode"
-    if [[ ${defines_program_static} == "" ]] ; then
-      defines_program_static=${variables[${key}]}
-    else
-      defines_program_static="${defines_program_static} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_program_static} == "" ]] ; then
+        defines_program_static=${variables[${key}]}
+      else
+        defines_program_static="${defines_program_static} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_shared-mode"
-    if [[ ${defines_shared} == "" ]] ; then
-      defines_shared=${variables[${key}]}
-    else
-      defines_shared="${defines_shared} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_shared} == "" ]] ; then
+        defines_shared=${variables[${key}]}
+      else
+        defines_shared="${defines_shared} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-defines_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "defines_static-mode"
-    if [[ ${defines_static} == "" ]] ; then
-      defines_static=${variables[${key}]}
-    else
-      defines_static="${defines_static} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${defines_static} == "" ]] ; then
+        defines_static=${variables[${key}]}
+      else
+        defines_static="${defines_static} ${variables[${key}]}"
+      fi
     fi
   fi
 }
@@ -1847,12 +1962,15 @@ bootstrap_operation_build_prepare_defines() {
 bootstrap_operation_build_prepare_documentation() {
 
   bootstrap_id "has-build_sources_documentation-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_documentation-mode"
-    if [[ ${sources_documentation} == "" ]] ; then
-      sources_documentation=${variables[${key}]}
-    else
-      sources_documentation="${sources_documentation} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${sources_documentation} == "" ]] ; then
+        sources_documentation=${variables[${key}]}
+      else
+        sources_documentation="${sources_documentation} ${variables[${key}]}"
+      fi
     fi
   fi
 }
@@ -1860,122 +1978,158 @@ bootstrap_operation_build_prepare_documentation() {
 bootstrap_operation_build_prepare_flags() {
 
   bootstrap_id "has-flags-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags-mode"
-    if [[ ${flags} == "" ]] ; then
-      flags=${variables[${key}]}
-    else
-      flags="${flags} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags} == "" ]] ; then
+        flags=${variables[${key}]}
+      else
+        flags="${flags} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_library-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_library-mode"
-    if [[ ${flags_library} == "" ]] ; then
-      flags_library=${variables[${key}]}
-    else
-      flags_library="${flags_library} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_library} == "" ]] ; then
+        flags_library=${variables[${key}]}
+      else
+        flags_library="${flags_library} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_library_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_library_shared-mode"
-    if [[ ${flags_library_shared} == "" ]] ; then
-      flags_library_shared=${variables[${key}]}
-    else
-      flags_library_shared="${flags_library_shared} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_library_shared} == "" ]] ; then
+        flags_library_shared=${variables[${key}]}
+      else
+        flags_library_shared="${flags_library_shared} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_library_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_library_static-mode"
-    if [[ ${flags_library_static} == "" ]] ; then
-      flags_library_static=${variables[${key}]}
-    else
-      flags_library_static="${flags_library_static} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_library_static} == "" ]] ; then
+        flags_library_static=${variables[${key}]}
+      else
+        flags_library_static="${flags_library_static} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_object-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_object-mode"
-    if [[ ${flags_object} == "" ]] ; then
-      flags_object=${variables[${key}]}
-    else
-      flags_object="${flags_object} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_object} == "" ]] ; then
+        flags_object=${variables[${key}]}
+      else
+        flags_object="${flags_object} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_object_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_object_shared-mode"
-    if [[ ${flags_object_shared} == "" ]] ; then
-      flags_object_shared=${variables[${key}]}
-    else
-      flags_object_shared="${flags_object_shared} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_object_shared} == "" ]] ; then
+        flags_object_shared=${variables[${key}]}
+      else
+        flags_object_shared="${flags_object_shared} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_object_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_object_static-mode"
-    if [[ ${flags_object_static} == "" ]] ; then
-      flags_object_static=${variables[${key}]}
-    else
-      flags_object_static="${flags_object_static} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_object_static} == "" ]] ; then
+        flags_object_static=${variables[${key}]}
+      else
+        flags_object_static="${flags_object_static} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_program-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_program-mode"
-    if [[ ${flags_program} == "" ]] ; then
-      flags_program=${variables[${key}]}
-    else
-      flags_program="${flags_program} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_program} == "" ]] ; then
+        flags_program=${variables[${key}]}
+      else
+        flags_program="${flags_program} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_program_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_program_shared-mode"
-    if [[ ${flags_program_shared} == "" ]] ; then
-      flags_program_shared=${variables[${key}]}
-    else
-      flags_program_shared="${flags_program_shared} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_program_shared} == "" ]] ; then
+        flags_program_shared=${variables[${key}]}
+      else
+        flags_program_shared="${flags_program_shared} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_program_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_program_static-mode"
-    if [[ ${flags_program_static} == "" ]] ; then
-      flags_program_static=${variables[${key}]}
-    else
-      flags_program_static="${flags_program_static} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_program_static} == "" ]] ; then
+        flags_program_static=${variables[${key}]}
+      else
+        flags_program_static="${flags_program_static} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_shared-mode"
-    if [[ ${flags_shared} == "" ]] ; then
-      flags_shared=${variables[${key}]}
-    else
-      flags_shared="${flags_shared} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_shared} == "" ]] ; then
+        flags_shared=${variables[${key}]}
+      else
+        flags_shared="${flags_shared} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-flags_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "flags_static-mode"
-    if [[ ${flags_static} == "" ]] ; then
-      flags_static=${variables[${key}]}
-    else
-      flags_static="${flags_static} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${flags_static} == "" ]] ; then
+        flags_static=${variables[${key}]}
+      else
+        flags_static="${flags_static} ${variables[${key}]}"
+      fi
     fi
   fi
 }
@@ -1983,35 +2137,43 @@ bootstrap_operation_build_prepare_flags() {
 bootstrap_operation_build_prepare_headers() {
 
   bootstrap_id "has-build_sources_headers-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_headers-mode"
-    if [[ ${sources_headers} == "" ]] ; then
-      sources_headers=${variables[${key}]}
-    else
-      sources_headers="${sources_headers} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${sources_headers} == "" ]] ; then
+        sources_headers=${variables[${key}]}
+      else
+        sources_headers="${sources_headers} ${variables[${key}]}"
+      fi
     fi
   fi
 
   if [[ ${build_shared} == "yes" ]] ; then
 
     bootstrap_id "has-build_sources_headers_shared-mode"
-    if [[ ${variables[${key}]} == "yes" ]] ; then
+    if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
       bootstrap_id "build_sources_headers_shared"
-      if [[ ${sources_headers} == "" ]] ; then
-        sources_headers=${variables[${key}]}
-      else
-        sources_headers="${sources_headers} ${variables[${key}]}"
+
+      if [[ ${key} -ne 0 ]] ; then
+        if [[ ${sources_headers} == "" ]] ; then
+          sources_headers=${variables[${key}]}
+        else
+          sources_headers="${sources_headers} ${variables[${key}]}"
+        fi
       fi
     fi
 
-
     bootstrap_id "has-build_sources_headers_static-mode"
-    if [[ ${variables[${key}]} == "yes" ]] ; then
+    if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
       bootstrap_id "build_sources_headers_static"
-      if [[ ${sources_headers} == "" ]] ; then
-        sources_headers=${variables[${key}]}
-      else
-        sources_headers="${sources_headers} ${variables[${key}]}"
+
+      if [[ ${key} -ne 0 ]] ; then
+        if [[ ${sources_headers} == "" ]] ; then
+          sources_headers=${variables[${key}]}
+        else
+          sources_headers="${sources_headers} ${variables[${key}]}"
+        fi
       fi
     fi
   fi
@@ -2019,22 +2181,28 @@ bootstrap_operation_build_prepare_headers() {
   if [[ ${build_static} == "yes" ]] ; then
 
     bootstrap_id "has-build_sources_headers_shared-mode"
-    if [[ ${variables[${key}]} == "yes" ]] ; then
+    if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
       bootstrap_id "build_sources_headers_shared-mode"
-      if [[ ${sources_headers} == "" ]] ; then
-        sources_headers=${variables[${key}]}
-      else
-        sources_headers="${sources_headers} ${variables[${key}]}"
+
+      if [[ ${key} -ne 0 ]] ; then
+        if [[ ${sources_headers} == "" ]] ; then
+          sources_headers=${variables[${key}]}
+        else
+          sources_headers="${sources_headers} ${variables[${key}]}"
+        fi
       fi
     fi
 
     bootstrap_id "has-build_sources_headers_static-mode"
-    if [[ ${variables[${key}]} == "yes" ]] ; then
+    if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
       bootstrap_id "build_sources_headers_static-mode"
-      if [[ ${sources_headers} == "" ]] ; then
-        sources_headers=${variables[${key}]}
-      else
-        sources_headers="${sources_headers} ${variables[${key}]}"
+
+      if [[ ${key} -ne 0 ]] ; then
+        if [[ ${sources_headers} == "" ]] ; then
+          sources_headers=${variables[${key}]}
+        else
+          sources_headers="${sources_headers} ${variables[${key}]}"
+        fi
       fi
     fi
   fi
@@ -2043,61 +2211,79 @@ bootstrap_operation_build_prepare_headers() {
 bootstrap_operation_build_prepare_libraries() {
 
   bootstrap_id "has-build_libraries-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_libraries-mode"
-    if [[ ${build_libraries} == "" ]] ; then
-      build_libraries=${variables[${key}]}
-    else
-      build_libraries="${variables[${key}]} ${build_libraries}"
-    fi
-  fi
 
-  bootstrap_id "has-build_libraries_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${libraries} == "" ]] ; then
+        libraries=${variables[${key}]}
+      else
+        libraries="${variables[${key}]} ${libraries}"
+      fi
+    fi
+  fi
+
+  bootstrap_id "has-build_libraries_shared-mode"
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_libraries_shared-mode"
-    if [[ ${libraries_shared} == "" ]] ; then
-      libraries_shared=${variables[${key}]}
-    else
-      libraries_shared="${variables[${key}]} ${libraries_shared}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${key} -ne 0 && ${libraries_shared} == "" ]] ; then
+        libraries_shared=${variables[${key}]}
+      else
+        libraries_shared="${variables[${key}]} ${libraries_shared}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_libraries_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_libraries_static-mode"
-    if [[ ${libraries_static} == "" ]] ; then
-      libraries_static=${variables[${key}]}
-    else
-      libraries_static="${variables[${key}]} ${libraries_static}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${libraries_static} == "" ]] ; then
+        libraries_static=${variables[${key}]}
+      else
+        libraries_static="${variables[${key}]} ${libraries_static}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_sources_library-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_library-mode"
-    if [[ ${sources_library} == "" ]] ; then
-      sources_library=${variables[${key}]}
-    else
-      sources_library="${sources_library} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${sources_library} == "" ]] ; then
+        sources_library=${variables[${key}]}
+      else
+        sources_library="${sources_library} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_sources_library_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
-    if [[ ${build_sources_library_shared} == "" ]] ; then
-      sources_library_shared=${variables[${key}]}
-    else
-      sources_library_shared="${sources_library_shared} ${variables[${key}]}"
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${build_sources_library_shared} == "" ]] ; then
+        sources_library_shared=${variables[${key}]}
+      else
+        sources_library_shared="${sources_library_shared} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_sources_library_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_library_static-mode"
-    if [[ ${sources_library_static} == "" ]] ; then
-      sources_library_static=${variables[${key}]}
-    else
-      sources_library_static="${sources_library_static} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${sources_library_static} == "" ]] ; then
+        sources_library_static=${variables[${key}]}
+      else
+        sources_library_static="${sources_library_static} ${variables[${key}]}"
+      fi
     fi
   fi
 }
@@ -2105,81 +2291,108 @@ bootstrap_operation_build_prepare_libraries() {
 bootstrap_operation_build_prepare_objects() {
 
   bootstrap_id "has-build_objects_library-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_objects_library-mode"
-    if [[ ${objects_library} == "" ]] ; then
-      objects_library=${variables[${key}]}
-    else
-      objects_library="${variables[${key}]} ${objects_library}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${objects_library} == "" ]] ; then
+        objects_library=${variables[${key}]}
+      else
+        objects_library="${variables[${key}]} ${objects_library}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_objects_library_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_objects_library_shared-mode"
-    if [[ ${objects_library_shared} == "" ]] ; then
-      objects_library_shared=${variables[${key}]}
-    else
-      objects_library_shared="${variables[${key}]} ${objects_library_shared}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${objects_library_shared} == "" ]] ; then
+        objects_library_shared=${variables[${key}]}
+      else
+        objects_library_shared="${variables[${key}]} ${objects_library_shared}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_objects_library_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_objects_library_static-mode"
-    if [[ ${objects_library_static} == "" ]] ; then
-      objects_library_static=${variables[${key}]}
-    else
-      objects_library_static="${variables[${key}]} ${objects_library_static}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${objects_library_static} == "" ]] ; then
+        objects_library_static=${variables[${key}]}
+      else
+        objects_library_static="${variables[${key}]} ${objects_library_static}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_objects_program-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_objects_program-mode"
-    if [[ ${objects_program} == "" ]] ; then
-      objects_program=${variables[${key}]}
-    else
-      objects_program="${variables[${key}]} ${objects_program}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${objects_program} == "" ]] ; then
+        objects_program=${variables[${key}]}
+      else
+        objects_program="${variables[${key}]} ${objects_program}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_objects_program_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_objects_program_shared-mode"
-    if [[ ${objects_program_shared} == "" ]] ; then
-      objects_program_shared=${variables[${key}]}
-    else
-      objects_program_shared="${variables[${key}]} ${objects_program_shared}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${objects_program_shared} == "" ]] ; then
+        objects_program_shared=${variables[${key}]}
+      else
+        objects_program_shared="${variables[${key}]} ${objects_program_shared}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_objects_program_static--mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_objects_program_static-mode"
-    if [[ ${objects_program_static} == "" ]] ; then
-      objects_program_static=${variables[${key}]}
-    else
-      objects_program_static="${variables[${key}]} ${objects_program_static}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${objects_program_static} == "" ]] ; then
+        objects_program_static=${variables[${key}]}
+      else
+        objects_program_static="${variables[${key}]} ${objects_program_static}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_sources_object-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_object-mode"
-    sources_object=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      sources_object=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-build_sources_object_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_object_shared-mode"
-    sources_object_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      sources_object_shared=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-build_sources_object_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_object_static-mode"
-    sources_object_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      sources_object_static=${variables[${key}]}
+    fi
   fi
 }
 
@@ -2187,9 +2400,12 @@ bootstrap_operation_build_prepare_paths() {
 
   if [[ ${override_path_sources} == "" ]] ; then
     bootstrap_id "has-path_sources-mode"
-    if [[ ${variables[${key}]} == "yes" ]] ; then
+    if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
       bootstrap_id "path_sources-mode"
-      path_sources=${variables[${key}]}
+
+      if [[ ${key} -ne 0 ]] ; then
+        path_sources=${variables[${key}]}
+      fi
     fi
   fi
 
@@ -2198,9 +2414,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_sources_object-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_sources_object-mode"
-    path_sources_object=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_sources_object=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_sources_object} != "" ]] ; then
@@ -2208,9 +2427,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_headers-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_headers-mode"
-    path_headers=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_headers=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_headers} != "" ]] ; then
@@ -2218,22 +2440,28 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-has_path_standard-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "has_path_standard-mode"
-    has_path_standard=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      has_path_standard=${variables[${key}]}
+    fi
   fi
 
   if [[ ${has_path_standard} == "no" ]] ; then
     path_language=
   else
     bootstrap_id "has-path_language-mode"
-    if [[ ${variables[${key}]} == "yes" ]] ; then
+    if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
       bootstrap_id "path_language-mode"
-      if [[ ${variables[${key}]} != "" ]] ; then
-        path_language=${variables[${key}]}
-      else
-        bootstrap_id "path_language"
-        path_language=${variables[${key}]}
+
+      if [[ ${key} -ne 0 ]] ; then
+        if [[ ${variables[${key}]} != "" ]] ; then
+          path_language=${variables[${key}]}
+        else
+          bootstrap_id "path_language"
+          path_language=${variables[${key}]}
+        fi
       fi
     fi
 
@@ -2243,9 +2471,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_library-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_library-mode"
-    path_object_library=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_library=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_library} != "" ]] ; then
@@ -2253,9 +2484,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_program-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_program-mode"
-    path_object_program=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_program=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_program} != "" ]] ; then
@@ -2263,9 +2497,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_library_script-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_library_script-mode"
-    path_library_script=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_library_script=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_library_script} != "" ]] ; then
@@ -2273,9 +2510,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_library_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_library_shared-mode"
-    path_library_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_library_shared=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_library_shared} != "" ]] ; then
@@ -2283,9 +2523,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_library_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_library_static-mode"
-    path_library_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_library_static=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_library_static} != "" ]] ; then
@@ -2293,9 +2536,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_library_script-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_library_script-mode"
-    path_object_library_script=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_library_script=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_library_script} != "" ]] ; then
@@ -2303,9 +2549,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_library_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_library_shared-mode"
-    path_object_library_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_library_shared=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_library_shared} != "" ]] ; then
@@ -2313,9 +2562,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_library_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_library_static-mode"
-    path_object_library_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_library_static=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_library_static} != "" ]] ; then
@@ -2323,9 +2575,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_program_script-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_program_script-mode"
-    path_object_program_script=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_program_script=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_program_script} != "" ]] ; then
@@ -2333,9 +2588,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_program_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_program_shared-mode"
-    path_object_program_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_program_shared=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_program_shared} != "" ]] ; then
@@ -2343,9 +2601,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_program_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_program_static-mode"
-    path_object_program_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_program_static=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_program_static} != "" ]] ; then
@@ -2353,9 +2614,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_script-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_script-mode"
-    path_object_script=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_script=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_script} != "" ]] ; then
@@ -2363,9 +2627,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_shared-mode"
-    path_object_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_shared=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_shared} != "" ]] ; then
@@ -2373,9 +2640,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_object_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_static-mode"
-    path_object_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_static=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_object_static} != "" ]] ; then
@@ -2383,9 +2653,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_program_script-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_program_script-mode"
-    path_program_script=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_program_script=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_program_script} != "" ]] ; then
@@ -2393,9 +2666,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_program_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_program_shared-mode"
-    path_program_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_program_shared=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_program_shared} != "" ]] ; then
@@ -2403,9 +2679,12 @@ bootstrap_operation_build_prepare_paths() {
   fi
 
   bootstrap_id "has-path_program_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_program_static-mode"
-    path_program_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_program_static=${variables[${key}]}
+    fi
   fi
 
   if [[ ${path_program_static} != "" ]] ; then
@@ -2416,32 +2695,41 @@ bootstrap_operation_build_prepare_paths() {
 bootstrap_operation_build_prepare_programs() {
 
   bootstrap_id "has-build_sources_program-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_program-mode"
-    if [[ ${sources_program} == "" ]] ; then
-      sources_program=${variables[${key}]}
-    else
-      sources_program="${sources_program} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${sources_program} == "" ]] ; then
+        sources_program=${variables[${key}]}
+      else
+        sources_program="${sources_program} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_sources_program_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_program_shared-mode"
-    if [[ ${sources_program_shared} == "" ]] ; then
-      sources_program_shared=${variables[${key}]}
-    else
-      sources_program_shared="${sources_program_shared} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${sources_program_shared} == "" ]] ; then
+        sources_program_shared=${variables[${key}]}
+      else
+        sources_program_shared="${sources_program_shared} ${variables[${key}]}"
+      fi
     fi
   fi
 
   bootstrap_id "has-build_sources_program_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_program_static-mode"
-    if [[ ${sources_program_static} == "" ]] ; then
-      sources_program_static=${variables[${key}]}
-    else
-      sources_program_static="${sources_program_static} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${sources_program_static} == "" ]] ; then
+        sources_program_static=${variables[${key}]}
+      else
+        sources_program_static="${sources_program_static} ${variables[${key}]}"
+      fi
     fi
   fi
 }
@@ -2449,177 +2737,261 @@ bootstrap_operation_build_prepare_programs() {
 bootstrap_operation_build_prepare_remaining() {
 
   bootstrap_id "has-build_compiler-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_compiler-mode"
-    build_compiler=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      build_compiler=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-build_indexer-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_indexer-mode"
-    build_indexer=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      build_indexer=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-build_indexer_arguments-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_indexer_arguments-mode"
-    build_indexer_arguments=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      build_indexer_arguments=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-build_name-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_name-mode"
-    build_name=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      build_name=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_major-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_major-mode"
-    version_major=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_major=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_major_prefix-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_major_prefix-mode"
-    version_major_prefix=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_major_prefix=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_minor-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_minor-mode"
-    version_minor=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_minor=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_minor_prefix-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_minor_prefix-mode"
-    version_minor_prefix=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_minor_prefix=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_micro-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_micro-mode"
-    version_micro=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_micro=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_micro_prefix-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_micro_prefix-mode"
-    version_micro_prefix=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_micro_prefix=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_nano-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_nano-mode"
-    version_nano=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_nano=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_nano_prefix-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_nano_prefix-mode"
-    version_nano_prefix=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_nano_prefix=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-preserve_path_headers-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "preserve_path_headers-mode"
-    preserve_path_headers=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      preserve_path_headers=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-path_library_script-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_library_script-mode"
-    path_library_script=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_library_script=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-path_library_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_library_shared-mode"
-    path_library_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_library_shared=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-path_library_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_library_static-mode"
-    path_library_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_library_static=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-path_object_script-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_script-mode"
-    path_object_script=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_script=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-path_object_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_shared-mode"
-    path_object_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_shared=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-path_object_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_object_static-mode"
-    path_object_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_object_static=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-path_program_script-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_program_script-mode"
-    path_program_script=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_program_script=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-path_program_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_program_shared-mode"
-    path_program_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_program_shared=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-path_program_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "path_program_static-mode"
-    path_program_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      path_program_static=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-has_path_standard-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "has_path_standard-mode"
-    has_path_standard=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      has_path_standard=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-search_exclusive-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "search_exclusive-mode"
-    search_exclusive=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      search_exclusive=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-search_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "search_shared-mode"
-    search_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      search_shared=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-search_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "search_static-mode"
-    search_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      search_static=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-stage-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "stage-mode"
-    stage=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      stage=${variables[${key}]}
+    fi
   fi
 }
 
 bootstrap_operation_build_prepare_scripts() {
 
   bootstrap_id "has-build_sources_script-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_script-mode"
-    if [[ ${sources_script} == "" ]] ; then
-      sources_script=${variables[${key}]}
-    else
-      sources_script="${sources_script} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${sources_script} == "" ]] ; then
+        sources_script=${variables[${key}]}
+      else
+        sources_script="${sources_script} ${variables[${key}]}"
+      fi
     fi
   fi
 }
@@ -2627,12 +2999,15 @@ bootstrap_operation_build_prepare_scripts() {
 bootstrap_operation_build_prepare_settings() {
 
   bootstrap_id "has-build_sources_setting-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_sources_setting-mode"
-    if [[ ${sources_setting} == "" ]] ; then
-      sources_setting=${variables[${key}]}
-    else
-      sources_setting="${sources_setting} ${variables[${key}]}"
+
+    if [[ ${key} -ne 0 ]] ; then
+      if [[ ${sources_setting} == "" ]] ; then
+        sources_setting=${variables[${key}]}
+      else
+        sources_setting="${sources_setting} ${variables[${key}]}"
+      fi
     fi
   fi
 }
@@ -2640,15 +3015,21 @@ bootstrap_operation_build_prepare_settings() {
 bootstrap_operation_build_prepare_shared_static() {
 
   bootstrap_id "has-build_shared-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_shared-mode"
-    build_shared=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      build_shared=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-build_static-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "build_static-mode"
-    build_static=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      build_static=${variables[${key}]}
+    fi
   fi
 
   if [[ ${enable_shared} == "yes" ]] ; then
@@ -2851,69 +3232,102 @@ bootstrap_operation_build_validate_sources() {
 bootstrap_operation_build_prepare_versions() {
 
   bootstrap_id "has-version_file-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_file-mode"
-    version_file_value=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_file_value=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_major-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_major-mode"
-    version_major=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_major=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_major_prefix-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_major_prefix-mode"
-    version_major_prefix=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_major_prefix=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_minor-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_minor-mode"
-    version_minor=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_minor=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_minor_prefix-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_minor_prefix-mode"
-    version_minor_prefix=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_minor_prefix=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_micro-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_micro-mode"
-    version_micro=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_micro=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_micro_prefix-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_micro_prefix-mode"
-    version_micro_prefix=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_micro_prefix=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_micro-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_micro-mode"
-    version_micro=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_micro=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_nano-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_nano-mode"
-    version_nano=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_nano=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_nano_prefix-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_nano_prefix-mode"
-    version_nano_prefix=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_nano_prefix=${variables[${key}]}
+    fi
   fi
 
   bootstrap_id "has-version_target-mode"
-  if [[ ${variables[${key}]} == "yes" ]] ; then
+  if [[ ${key} -ne 0 && ${variables[${key}]} == "yes" ]] ; then
     bootstrap_id "version_target-mode"
-    version_target=${variables[${key}]}
+
+    if [[ ${key} -ne 0 ]] ; then
+      version_target=${variables[${key}]}
+    fi
   fi
 
   if [[ ${version_file_value} == "" ]] ; then