# fss-0002 iki-0000
#
# license open-standard-license-1.0-or-later
# version 2025/03/07
#
# This file (assumed to be named settings.txt) can be more easily read using the following iki_read commands:
#   iki_read settings.txt +Q -w -rrr ASCII ASCII FLL FLL GCC GCC -WW character "'" "'" code '"' '"'
#
# To read the "Settings Documentation" section of this file, use this command sequence:
#   fss_basic_list_read settings.txt +Q -cn "Settings Documentation" | iki_read +Q -w -rr ASCII ASCII FLL FLL -WW character "'" "'" code '"' '"'
#

Settings Documentation:
  This describes intent and purposes of the build bold:"settings" file bold:"settings".
  The bold:"settings" file is designed for very simple compilations that represent a single named program and/or a single named library.
  For specific details on the allowed formatting, see the file:"settings.txt" under the specifications folder.

  - code:"build_compiler"\:
    This represents the name of the compiler program to use, such as code:"gcc".

    This defaults to code:"gcc" (the bold:"GNU C Compiler").

    The programs code:"gcc" and code:"clang" are known to work.
    Many of the parameters in the bold:"settings" file can be changed if not using GCC:"GNU Compiler Collection", but there may be certain hard-coded functionality that may need to be changed.

  - code:"build_compiler_arguments"\:
    This represents arguments passed directly to the code:"build_compiler".
    These arguments are placed immediately after the code:"build_compiler" program.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive".

  - code:"build_compiler_arguments_shared"\:
    This represents arguments passed directly to the code:"build_compiler" for shared.
    These arguments are placed immediately after the code:"build_compiler" program.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive".

  - code:"build_compiler_arguments_static"\:
    This represents arguments passed directly to the code:"build_compiler for static".
    These arguments are placed immediately after the code:"build_compiler" program.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive".

  - code:"build_compiler_arguments_library"\:
    This represents arguments passed directly to the code:"build_compiler" when building libraries.
    These arguments are placed immediately after the code:"build_compiler_arguments" parameters.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive".

  - code:"build_compiler_arguments_library_shared"\:
    This represents arguments passed directly to the code:"build_compiler" when building libraries that are shared.
    These arguments are placed immediately after the code:"build_compiler_arguments_library" parameters.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive".

  - code:"build_compiler_arguments_library_static"\:
    This represents arguments passed directly to the code:"build_compiler" when building libraries that are static.
    These arguments are placed immediately after the code:"build_compiler_arguments_library" parameters.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive".

  - code:"build_compiler_arguments_object"\:
    This represents arguments passed directly to the code:"build_compiler" when building objects.
    These arguments are placed immediately after the code:"build_compiler_arguments" parameters.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive"

  - code:"build_compiler_arguments_object_shared"\:
    This represents arguments passed directly to the code:"build_compiler" when building objects that are shared.
    These arguments are placed immediately after the code:"build_compiler_arguments_object" parameters.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive"

  - code:"build_compiler_arguments_object_static"\:
    This represents arguments passed directly to the code:"build_compiler" when building objects that are static.
    These arguments are placed immediately after the code:"build_compiler_arguments_object" parameters.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive"

  - code:"build_compiler_arguments_program"\:
    This represents arguments passed directly to the code:"build_compiler" when building programs.
    These arguments are placed immediately after the code:"build_compiler_arguments" parameters.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive".

  - code:"build_compiler_arguments_program_shared"\:
    This represents arguments passed directly to the code:"build_compiler" when building programs that are shared.
    These arguments are placed immediately after the code:"build_compiler_arguments_program" parameters.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive".

  - code:"build_compiler_arguments_program_static"\:
    This represents arguments passed directly to the code:"build_compiler" when building programs that are static.
    These arguments are placed immediately after the code:"build_compiler_arguments_program" parameters.
    This is useful for some languages, such as code:"go" which might need to operate like code:"go build" or code:"go build -buildmode=archive".

  - code:"build_indexer"\:
    This represents the name of the indexer program to use, such as code:"ar".
    An indexer is often called a linker.

    This defaults to code:"ar" (the GNU code:"ar" program).
    Similar to code:"build_compiler", any linker that supports the code:"ar" program parameters is effectively supported.

  - code:"build_indexer_arguments"\:
    This represents arguments needed to build an archive file from object files, such as code:"rcs".
    These arguments are placed immediately before the object files passed to the code:"indexer" program.

  - code:"build_language"\:
    The programming language to build with.
    The languages code:"c", code:"c++", code:"go", and code:"shell" are the commonly known and supported languages.
    The code:"shell" language is for shell languages such as code:"bash" or code:"zsh" and might not need special handling because there is nothing to compile.
    The code:"shell" language might be implemented to build a set of individual scripts, and perhaps script dependencies, into a single script.
    Individual implementations may restrict this to a select number of languages such as the commonly known and supported languages mentioned.
    Languages not in the commonly known and supported languages are generally treated as compiled languages but the user must take care to properly configure it.

  - code:"build_language_path"\:
    A path relative to the sources directory reprsenting the sources.
    This defaults to a path based on the code:"build_language" when not defined.

  - code:"build_libraries"\:
    A collection of libraries to be linked against.
    This should include the compiler specific parameter parts, such as the code:"-l" prefix in code:"-lc".
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.

  - code:"build_libraries_shared"\:
    A collection of libraries to be linked against.
    This should include the compiler specific parameter parts, such as the code:"-l" prefix in code:"-lc".
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These are applied to only shared builds.

  - code:"build_libraries_static"\:
    A collection of libraries to be linked against.
    This should include the compiler specific parameter parts, such as the code:"-l" prefix in code:"-lc".
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These are applied to only static builds.

  - code:"build_objects_library"\:
    A collection of object files to be compile with when building objects for libraries.
    These are intended to represent already compiled object files.
    These paths are relative to the code:"path_object_script", code:"path_object_shared", or code:"path_object_static".
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.

  - code:"build_objects_library_shared"\:
    A collection of object files to be compile with when building objects for shared libraries.
    These are intended to represent already compiled object files.
    These paths are relative to the code:"path_object_shared".
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These are applied to only shared builds.

  - code:"build_objects_library_static"\:
    A collection of object files to be compile with when building objects for static libraries.
    These are intended to represent already compiled object files.
    These paths are relative to the code:"path_object_static".
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These are applied to only static builds.

  - code:"build_objects_program"\:
    A collection of object files to be compile with when building objects for programs.
    These are intended to represent already compiled object files.
    These paths are relative to the code:"path_object_script", code:"path_object_shared", or code:"path_object_static".
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.

  - code:"build_objects_program_shared"\:
    A collection of object files to be compile with when building objects for shared programs.
    These are intended to represent already compiled object files.
    These paths are relative to the code:"path_object_shared".
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These are applied to only shared builds.

  - code:"build_objects_program_static"\:
    A collection of object files to be compile with when building objects for static programs.
    These are intended to represent already compiled object files.
    These paths are relative to the code:"path_object_static".
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These are applied to only static builds.

  - code:"build_name"\:
    The name of the build, which often represents the project name.
    If program sources are specified, then this will be used as the program name.
    If library sources are specified, then this will be used in the library name, such as code:"libX.so" where code:"X" would be the code:"build_name" value.
    If script sources are specified, then this will be used as the script name.
    This is required even if one of the more specific types, such as code:"build_name_library_shared", is specified.

  - code:"build_name_library"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the library name involving objects, such as code:"libX.so" where code:"X" would be the code:"build_name_library" value.

  - code:"build_name_library_shared"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the library name for shared builds involving objects.
    These are applied to only to shared builds.

  - code:"build_name_library_static"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the library name for static builds involving objects.
    These are applied to only to static builds.

  - code:"build_name_object"\:
    The name of the build, which often represents the project name.
    If library sources are specified, then this is a variation of code:"build_name" used specifically for the program name involving objects.
    If program sources are specified, then this is a variation of code:"build_name" used specifically for the library name involving objects.

  - code:"build_name_object_library"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the library name involving objects, such as code:"libX.so" where code:"X" would be the code:"build_name_library" value.

  - code:"build_name_object_library_shared"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the library name for shared builds involving objects.
    These are applied to only to shared builds.

  - code:"build_name_object_library_static"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the library name for static builds involving objects.
    These are applied to only to static builds.

  - code:"build_name_object_program"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the program name involving objects.

  - code:"build_name_object_program_shared"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the program name for shared builds involving objects.
    These are applied to only to shared builds.

  - code:"build_name_object_program_static"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the program name for static builds involving objects.
    These are applied to only to static builds.

  - code:"build_name_object_shared"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the program name for shared builds involving objects.
    These are applied to only to shared builds.

  - code:"build_name_object_static"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the program name for static builds involving objects.
    These are applied to only to static builds.

  - code:"build_name_program"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the program name.

  - code:"build_name_program_shared"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the program name for shared builds.
    These are applied to only to shared builds.

  - code:"build_name_program_static"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the program name for static builds.
    These are applied to only to static builds.

  - code:"build_name_script"\:
    The name of the build, which often represents the project name.
    This is a variation of code:"build_name" used specifically for the script name.

  - code:"build_script"\:
    When code:"yes", the build process will build any scripts, such as a Bash script.
    This is currently not implemented.

  - code:"build_shared"\:
    When code:"yes", the build process will compile any source code for any supported language that supports shared library linking.

  - code:"build_sources_documentation"\:
    A collection of documentation files.
    These are documentation files used by the project and are simply copied over to the build directory.
    Unless a pre-process script (or in theory post-process script) is configured to alter these, they are not modified.

  - code:"build_sources_headers"\:
    A collection of header files.
    May include a relative sub-path to each individual header (such as: code:"level_0/a.h level_0/b.h level_1/c.h").
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.

  - code:"build_sources_headers_shared"\:
    A collection of header files.
    May include a relative sub-path to each individual header (such as: code:"level_0/a.h level_0/b.h level_1/c.h").
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    Be careful not to have any conflicting names between this and build_sources_headers_static in case of when static and shared builds are both enabled.
    These are applied to only shared builds.

  - code:"build_sources_headers_static"\:
    A collection of header files.
    May include a relative sub-path to each individual header (such as: code:"level_0/a.h level_0/b.h level_1/c.h").
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These files are used when compiling the library.
    Be careful not to have any conflicting names between this and build_sources_headers_shared in case of when static and shared builds are both enabled.
    These are applied to only static builds.

  - code:"build_sources_library"\:
    A collection of library related source files.
    May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c level_1/c.c").
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.

  - code:"build_sources_library_shared"\:
    A collection of library related source files.
    May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c level_1/c.c").
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These are applied to only shared builds.

  - code:"build_sources_library_static"\:
    A collection of library related source files.
    May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c level_1/c.c").
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These are applied to only static builds.

  - code:"build_sources_object"\:
    A collection of source files used for generating an object file with the same name as each source file.
    The source files are located within the path designated by code:"path_sources_object".
    The built objects do not get linked and therefore no linker arguments apply.
    The built object files are named using the same name as the file with the file extension changed to the code:".o" extension.
    May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c").
    Multiple files are supported and multiple object files are created.

  - code:"build_sources_object_shared"\:
    A collection of source files used for generating an object file with the same name as each source file.
    The source files are located within the path designated by code:"path_sources_object".
    The built objects do not get linked and therefore no linker arguments apply.
    The built object files are named using the same name as the file with the file extension changed to the code:".o" extension.
    May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c").
    Multiple files are supported and multiple object files are created.
    These are applied to only shared builds.

  - code:"build_sources_object_static"\:
    A collection of source files used for generating an object file with the same name as each source file.
    The source files are located within the path designated by code:"path_sources_object".
    The built objects do not get linked and therefore no linker arguments apply.
    The built object files are named using the same name as the file with the file extension changed to the code:".o" extension.
    May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c").
    Multiple files are supported and multiple object files are created.
    These are applied to only static builds.

  - code:"build_sources_program"\:
    A collection of program related source files.
    May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c level_1/c.c").
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These files are used when compiling the program.

  - code:"build_sources_program_shared"\:
    A collection of program related source files.
    May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c level_1/c.c").
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These files are used when compiling the program for shared builds.

  - code:"build_sources_program_static"\:
    A collection of program related source files.
    May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c level_1/c.c").
    The order of these may matter if the compiler (such as GCC:"GNU Compiler Collection" or a linker via GCC:"GNU Compiler Collection") is order sensitive.
    These files are used when compiling the program for static builds.

  - code:"build_sources_script"\:
    A collection of script files.
    These are script files used by the project and are simply copied over to the build directory.
    Unless a pre-process script (or in theory post-process script) is configured to alter these, they are not modified.
    Unlike the code:"compile_language" setting code:"bash", this is not for built Bash script, but is instead for any valid scripting language (including Bash).
    These could be in any language.

  - code:"build_sources_setting"\:
    A collection of settings files.
    These are settings files used by the project and are simply copied over to the build directory.
    Unless a pre-process script (or in theory post-process script) is configured to alter these, they are not modified.

  - code:"build_static"\:
    When code:"yes", the build process will compile any source code for any supported language that supports static library linking.

  - code:"defines"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to both shared and static builds.

  - code:"defines_library"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only library builds.

  - code:"defines_library_shared"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only shared library builds.

  - code:"defines_library_static"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only static library builds.

  - code:"defines_object"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only object builds.

  - code:"defines_object_shared"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only shared object builds.

  - code:"defines_object_static"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only static object builds.

  - code:"defines_program"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only program builds.

  - code:"defines_program_shared"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only shared program builds.

  - code:"defines_program_static"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only shared program builds.

  - code:"defines_shared"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only shared builds.

  - code:"defines_static"\:
    A collection of macro names.
    This includes the any compiler specific parameters required by the code:"build_compiler", such as the code:"-D" used by code:"gcc" and code:"clang".
    These will be appended to the compiler for compiled languages such as code:"C" and code:"C++".
    These are applied to only static builds.

  - code:"environment"\:
    A collection of environment names to pass from the callers environment into the executed programs environment.
    When provided, all environment variables are removed when calling user-space programs, such as code:"gcc".
    To remove all environment variables define this with no bold:"Content".
    When not provided, all environment variables are loaded.

  - code:"flags"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied to both shared and static builds.

  - code:"flags_library"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied when building a library.

  - code:"flags_library_shared"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied to only library shared builds.

  - code:"flags_library_static"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied to only library static builds.

  - code:"flags_object"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied when building an object.

  - code:"flags_object_shared"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied to only object shared builds.

  - code:"flags_object_static"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied to only object static builds.

  - code:"flags_program"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied when building a program.

  - code:"flags_program_shared"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied to only program shared builds.

  - code:"flags_program_static"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied to only program static builds.

  - code:"flags_shared"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied to only shared builds.

  - code:"flags_static"\:
    A collection of any flag supported by the code:"build_compiler", such as code:"gcc".
    This includes the any compiler specific parameters to defined this, such as the code:"-f" used by code:"gcc" and code:"clang".
    These are applied to only static builds.

  - code:"has_path_standard"\:
    When code:"yes", the sources path will be built using the sources path with the language, such as code:"sources/c/".
    When code:"no", the default sources path structure is not used and instead code:"path_sources" is used.
    When the parameter code:"-S/--sources" is specified, such as code:"-S xxx", then when this is set to code:"yes" is used then the path would be code:"xxx/c/" and when this is set to code:"no" then the path would be code:"xxx/".

    This defaults to code:"yes".

  - code:"import"\:
    Load this bold:"settings" file at this point in the bold:"settings" file.
    This can be an absolute or a relative path.
    This is intended to reduce repition and likely should be placed at the top of the bold:"settings" file.
    This a non-recursive operation and the imported file itself cannot perform an import.
    Loaded values are processed as if they are in the file at the spot where the import setting is specified.
    Relative paths are relative to the importing file.
    Absolute paths that start with "./" are relative to the project root rather than the importing file.
    Absolute paths that start with "/" are treated normally.

  - code:"modes"\:
    A collection of available build modes.
    Build modes provide custom variants of the build process where certain bold:"settings" are appended onto others.
    See the file:"settings.txt" specification for a list of which setting names this applies to.

  - code:"modes_default"\:
    The name of the default mode to use when no mode is specified.
    This must be one of the modes specified in the code:"modes" setting.

  - code:"path_headers"\:
    A sub-path in which headers are to be installed under.
    For example, the FLL:"Featureless Linux Library" project might use the code:"level_0", code:"level_1", etc.. headers without requiring that structure within the source.
    A resulting build destination for a code:"path_headers" of code:"level_0" would be something like code:"build/includes/level_0/".
    If code:"path_headers" is code:"level_0", code:"preserve_path_headers" is code:"yes", and code:"build_sources_headers" has code:"xxx/a.h yyy/zzz/b.h", then the headers would be at: code:"build/includes/level_0/xxx/a.h build/includes/level_0/yyy/zzz/b.h"

  - code:"path_language"\:
    A sub-path in which to find the source files for the currently defined language.
    If the code:"build_language" is changed, it is recommended to change this as well to match.

  - code:"path_library_script"\:
    A sub-path representing the destination where the built library script files are placed.

    This defaults to code:"script".
    This is currently not implemented.

  - code:"path_library_shared"\:
    A sub-path representing the destination where the built shared library files are placed.

    This defaults to code:"shared".

  - code:"path_library_static"\:
    A sub-path representing the destination where the built shared library files are placed.

    This defaults to code:"static".

  - code:"path_object_script"\:
    A sub-path representing the destination where the built object script files are placed.

    This defaults to code:"script".
    This is currently not implemented.

  - code:"path_object_shared"\:
    A sub-path representing the destination where the built object library files are placed.

    This defaults to code:"shared".

  - code:"path_object_static"\:
    A sub-path representing the destination where the built object library files are placed.

    This defaults to code:"static".

  - code:"path_program_script"\:
    A sub-path representing the destination where the built program script files are placed.

    This defaults to code:"script".
    This is currently not implemented.

  - code:"path_program_shared"\:
    A sub-path representing the destination where the built shared program files are placed.

    This defaults to code:"shared".

  - code:"path_program_static"\:
    A sub-path representing the destination where built shared program files are placed.

    This defaults to code:"static".

  - code:"path_sources"\:
    A sub-path representing where the source files are found.

    This defaults to code:"sources".

  - code:"path_sources_headers"\:
    A sub-path representing where the header source files are found.
    This is used by code:"build_sources_headers".

    This defaults to code:"sources".

  - code:"path_sources_library"\:
    A sub-path representing where the library source files are found.
    This is used by code:"build_sources_library".

    This defaults to code:"sources".

  - code:"path_sources_object"\:
    A sub-path representing where the object source files are found.
    This is used by code:"build_sources_object".

    This defaults to code:"sources".

  - code:"path_sources_program"\:
    A sub-path representing where the program source files are found.
    This is used by code:"build_sources_program".

    This defaults to code:"sources".

  - code:"path_sources_script"\:
    A sub-path representing where the script source files are found.
    This is used by code:"build_sources_script".

    This defaults to code:"sources".

  - code:"preserve_path_headers"\:
    When this is code:"yes", then the relative directory structure in the source (as defined in code:"build_sources_headers") is preserved.
    If the code:"build_sources_headers" has the header files code:"xxx/a.h yyy/zzz/b.h" and this is code:"yes", then the directories code:"xxx/" and code:"yyy/zzz/" are created and the files are stored within them.
    If the code:"build_sources_headers" has the header files code:"xxx/a.h yyy/zzz/b.h" and this is code:"no", then the directories code:"xxx/" and code:"yyy/zzz/" are stripped before installing.
    When this is code:"no" and the code:"build_sources_headers" has header files code:"xxx/a.h yyy/a.h", then one of the code:"a.h" files will be overwritten, depending on order they were supplied.

  - code:"process_post"\:
    The filename (relative to the file:"data/build/" directory) of a script to execute after the code:"build" operation successfully completes.
    A small subset of parameters from the main execution are passed to this script during execution as parameters (using short parameter codes)\:
      Color context parameters, such as: code:"+l", code:"+n", and code:"+d".
      Operation mode, such as: code:"build", code:"clean", code:"make", or code:"skeleton".
      Verbosity parameters, such as: code:"+q", code:"+D", or code:"+V".
      Define parameters, such as code:"-d X" or code:"-d Y", whereas code:"X" or code:"Y" are any valid argument associated with code:"-d".
      Process parameter, such as code:"-p X", whereas code:"X" is any valid argument associated with code:"-p".
      Settings parameter, such as code:"-s X', whereas code:"X" is any valid argument associated with code:"-s".
      Build Path parameter, such as code:"-b X', whereas code:"X" is any valid argument associated with code:"-b".
      Data Path parameter, such as code:"-D X', whereas code:"X" is any valid argument associated with code:"-D".
      Sources Path parameter, such as code:"-S X', whereas code:"X" is any valid argument associated with code:"-S".
      Work Path parameter, such as code:"-w X', whereas code:"X" is any valid argument associated with code:"-w".

  - code:"process_pre"\:
    The filename (relative to the file:"data/build/" directory) of a script to execute before the code:"build" operation is executed.
    A small subset of parameters from the main execution are passed to this script during execution as parameters (using short parameter codes)\:
      Color context parameters, such as: code:"+l", code:"+n", and code:"+d".
      Operation mode, such as: code:"build", code:"clean", code:"make", or code:"skeleton".
      Verbosity parameters, such as: code:"+q", code:"+D", or code:"+V".
      Define parameters, such as code:"-d X" or code:"-d Y", whereas code:"X" or code:"Y" are any valid argument associated with code:"-d".
      Process parameter, such as code:"-p X", whereas code:"X" is any valid argument associated with code:"-p".
      Settings parameter, such as code:"-s X', whereas code:"X" is any valid argument associated with code:"-s".
      Build Path parameter, such as code:"-b X', whereas code:"X" is any valid argument associated with code:"-b".
      Data Path parameter, such as code:"-D X', whereas code:"X" is any valid argument associated with code:"-D".
      Sources Path parameter, such as code:"-S X', whereas code:"X" is any valid argument associated with code:"-S".
      Work Path parameter, such as code:"-w X', whereas code:"X" is any valid argument associated with code:"-w".

  - code:"search_exclusive"\:
    When code:"yes", the search path during compile for shared libraries will only include shared library paths.
    When code:"no", the search path during compile time for shared libraries will include shared library paths followed by static library paths.
    Setting this to code:"yes" helps prevent static libraries from ending up in shared libraries (very useful when bootstrapping a system).
    Setting this to code:"no" allows for including static libraries if no shared libraries are found but static are.
    This does not alter search paths introduced automatically by the code:"build_compiler" or code:"build_indexer", so it is still possible for static libraries to end up even when this is set to code:"yes".

  - code:"search_shared"\:
    When code:"yes", shared library paths are searched during compile.
    Both this and code:"search_static" cannot be code:"no" at the same time.

    This defaults to code:"yes".

  - code:"search_shared"\:
    When code:"yes", static library paths are searched during compile.
    Both this and search_shared cannot be code:"no" at the same time.

  - code:"stage"\:
    This defines a name that is added to the build stage files to help uniquely identify build stages associated with this file.
    This name must only have valid characters for a particular file system.
    The variables allowed are different from file system to file system and so special characters should generally be avoided.

    To help prevent problems with paths, slashes (forward slash and backward slash) are not allowed in the stage name.

  - code:"version_file"\:
    Designates which version should be used when building the symbolic links.
    Any version prefixes are used as defined.
    A Symbolic link is created against this created file such that code:"libX.so" is a link to code:"libX.so.A".
    For all files other than when file is code:"major", another symbolic link is created against this such that code:"libX.so.A" is a link to code:"libX.so.A.X" such that X is the respective code:"B", code:"B.C', or code:"B.C.D" as described below.
    The default file is code:"major".
    When code:"major" is used, the file created is code:"libX.so.A", whereas code:"X" is the code:"build_name" and code:"A" is the major version.
    When code:"minor" is used, the file created is code:"libX.so.A.B", whereas code:"X" is the code:"build_name" and code:"A.B" is the major and minor versions, respectively.
    When code:"micro" is used, the file created is code:"libX.so.A.B.C", whereas code:"X" is the code:"build_name" and code:"A.B.C" is the major, minor, and micro versions, respectively.
    When code:"nano" is used, the file created is code:"libX.so.A.B.C.D", whereas code:"X" is the code:"build_name" and code:"A.B.C.D" is the major, minor, micro, and nano versions, respectively.

  - code:"version_major"\:
    The major version number (or in theory any characters allowed in a filename).
    This should generally be a positive number or 0.
    Anything else is currently untested but allowed.
    With a structure of code:"A.B.C", the major version would be the character:"A".

  - code:"version_major_prefix"\:
    The version major prefix is the character used to designate the start of the major version.
    This can zero or more characters.
    With a structure of code:"A.B.C", the major version prefix would be before the character:"A".
    This is only added if code:"version_major" is not empty.

    This defaults to the ASCII:"American Standard Code for Information Interchange" period character character:".".

  - code:"version_minor"\:
    The minor version number (or in theory any characters allowed in a filename).
    This should generally be a positive number or 0.
    Anything else is currently untested but allowed.
    With a structure of code:"A.B.C", the minor version would be the character:"B".

  - code:"version_minor_prefix"\:
    The version minor prefix is the character used to separate the major from the minor.
    This can zero or more characters.
    With a structure of code:"A.B.C", the minor version prefix would be the character:"." before the character:"B".
    This is only added if code:"version_minor" is not empty.

    This defaults to the ASCII:"American Standard Code for Information Interchange" period character character:".".

  - code:"version_micro"\:
    The micro version number (or in theory any characters allowed in a filename).
    This should generally be a positive number or 0.
    Anything else is currently untested but allowed.
    With a structure of code:"A.B.C", the micro version would be the character:"C".

  - code:"version_micro_prefix"\:
    The version micro prefix is the character used to separate the minor from the micro.
    This can zero or more characters.
    With a structure of code:"A.B.C", the micro version prefix would be the character:"." before the character:"C".
    This is only added if code:"version_micro" is not empty.

    This defaults to the ASCII:"American Standard Code for Information Interchange" period character character:".".

  - code:"version_nano"\:
    The nano version number (or in theory any characters allowed in a filename).
    This should generally be a positive number or 0.
    Anything else is currently untested but allowed.
    With a structure of code:"A.B.C.D", the micro version prefix would be the character:"." before the character:"D".

  - code:"version_nano_prefix"\:
    The version nano prefix is the character used to separate the micro from the nano.
    This can zero or more characters.
    With a structure of code:"A.B.C.D", the minor version would be the character:"." before the character:"D".
    This is only added if code:"version_nano" is not empty.

    This defaults to the ASCII:"American Standard Code for Information Interchange" period character character:".".

  - code:"version_target"\:
    Designates which version should be used when linking the shared library.
    Any version prefixes are used as defined.
    The default target is code:"micro".
    When code:"major" is used, a shared library is generated with code:"-Wl,-soname,libX.so.A", whereas code:"X" is the code:"build_name" and code:"A" is the major version.
    When code:"minor" is used, a shared library is generated with code:"-Wl,-soname,libX.so.A.B", whereas code:"X" is the code:"build_name" and code:"A.B" is the major and minor versions, respectively.
    When code:"micro" is used, a shared library is generated with code:"-Wl,-soname,libX.so.A.B.C", whereas code:"X" is the code:"build_name" and code:"A.B.C" is the major, minor, and micro versions, respectively.
    When code:"nano" is used, a shared library is generated with code:"-Wl,-soname,libX.so.A.B.C.D", whereas code:"X" is the code:"build_name" and code:"A.B.C.D" is the major, minor, micro, and nano versions, respectively.
