# 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 -WW character "'" "'" code '"' '"'
#
# To read the "Settings Specification" section of this file, use this command sequence:
#   fss_basic_list_read settings.txt +Q -cn "Settings Specification" | iki_read +Q -w -WW character "'" "'" code '"' '"'
#

Settings Specification:
  The build settings bold:"settings" file follows the code:"FSS-0001 (Extended)" format.

  Each bold:"Object" represents a settings property name.
  There is only a distinct set of setting property names (see below).

  Each bold:"Content" represents the values associated with that property.
  Additional restrictions are applied to each bold:"Content" depending on each specific bold:"Object" name (see below).

  bold:"Object" names and their respective bold:"Content" purpose/restrictions\:
    - code:"build_compiler": Only one bold:"Content", which must only be a valid filename.
    - code:"build_compiler_arguments": Must be zero or more parameters.
    - code:"build_compiler_arguments_shared": Must be zero or more parameters.
    - code:"build_compiler_arguments_static": Must be zero or more parameters.
    - code:"build_compiler_arguments_library": Must be zero or more parameters.
    - code:"build_compiler_arguments_library_shared": Must be zero or more parameters.
    - code:"build_compiler_arguments_library_static": Must be zero or more parameters.
    - code:"build_compiler_arguments_object": Must be zero or more parameters.
    - code:"build_compiler_arguments_object_shared": Must be zero or more parameters.
    - code:"build_compiler_arguments_object_static": Must be zero or more parameters.
    - code:"build_compiler_arguments_program": Must be zero or more parameters.
    - code:"build_compiler_arguments_program_shared": Must be zero or more parameters.
    - code:"build_compiler_arguments_program_static": Must be zero or more parameters.
    - code:"build_indexer": Only one bold:"Content", which must only be a valid filename.
    - code:"build_indexer_arguments": Zero or more arguments supported by the indexer specified in code:"build_indexer".
    - code:"build_language": May be any language but is generally only a known or supported language, such as: code:"c", code:"c++", or code:"go".
    - code:"build_libraries": Must only contain any number of valid library include arguments that are valid for the compiler defined in "build_compiler" bold:"Object".
    - code:"build_libraries_shared": Must only contain any number of valid library include arguments that are valid for the compiler defined in "build_compiler" bold:"Object".
    - code:"build_libraries_static": Must only contain any number of valid library include arguments that are valid for the compiler defined in "build_compiler" bold:"Object".
    - code:"build_name": Must only contain characters allowed in a filename (no slashes allowed) (required).
    - code:"build_name_library": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_library_shared": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_library_static": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_object": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_object_library": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_object_library_shared": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_object_library_static": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_object_program": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_object_program_shared": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_object_program_static": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_object_shared": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_object_static": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_program": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_program_shared": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_program_static": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_name_script": Must only contain characters allowed in a filename (no slashes allowed).
    - code:"build_objects_library": Must only contain any number of valid object file names relative to the appropriate code:"path_object_*" path.
    - code:"build_objects_library_shared": Must only contain any number of valid object file names relative to the code:"path_object_shared" path.
    - code:"build_objects_library_static": Must only contain any number of valid object file names relative to the code:"path_object_static" path.
    - code:"build_objects_program": Must only contain any number of valid object file names relative to the appropriate code:"path_object_*" path.
    - code:"build_objects_program_shared": Must only contain any number of valid object file names relative to the code:"path_object_shared" path.
    - code:"build_objects_program_static": Must only contain any number of valid object file names relative to the code:"path_object_static" path.
    - code:"build_script": Must only one of: code:"yes" or code:"no".
    - code:"build_shared": Must only one of: code:"yes" or code:"no".
    - code:"build_sources_documentation": Must only contain any number of valid filenames.
    - code:"build_sources_headers": Must only contain any number of valid filenames.
    - code:"build_sources_headers_shared": Must only contain any number of valid filenames.
    - code:"build_sources_headers_static": Must only contain any number of valid filenames.
    - code:"build_sources_library": Must only contain any number of valid filenames.
    - code:"build_sources_library_shared": Must only contain any number of valid filenames.
    - code:"build_sources_library_static": Must only contain any number of valid filenames.
    - code:"build_sources_object": Must only contain any number of valid filenames.
    - code:"build_sources_object_shared": Must only contain any number of valid filenames.
    - code:"build_sources_object_static": Must only contain any number of valid filenames.
    - code:"build_sources_program": Must only contain any number of valid filenames.
    - code:"build_sources_program_shared": Must only contain any number of valid filenames.
    - code:"build_sources_program_static": Must only contain any number of valid filenames.
    - code:"build_sources_script": Must only contain any number of valid filenames.
    - code:"build_sources_setting": Must only contain any number of valid filenames.
    - code:"build_static": Must only one of: code:"yes" or code:"no".
    - code:"defines": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_library": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_library_shared": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_library_static": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_object": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_object_shared": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_object_static": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_program": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_program_shared": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_program_static": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_shared": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"defines_static": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler".
    - code:"environment": Environment variable names, case-sensitive, usually uppercase. May only contain characters allowed in an environment variable.
    - code:"flags": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_library": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_library_shared": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_library_static": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_object": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_object_shared": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_object_static": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_program": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_program_shared": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_program_static": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_shared": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"flags_static": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler".
    - code:"has_path_standard": Must only one of: code:"yes" or code:"no".
    - code:"import": Only one bold:"Content", which must only be a valid filename.
    - code:"modes": Any valid word character, character:'-', or character:'+'.
    - code:"modes_default": May only be a single complete bold:"Content" word defined in code:"modes" bold:"Object".
    - code:"path_headers": Must be a single valid path.
    - code:"path_language": Must be a single valid path.
    - code:"path_library_script": Must be a single valid path.
    - code:"path_library_shared": Must be a single valid path.
    - code:"path_library_static": Must be a single valid path.
    - code:"path_object_script": Must be a single valid path.
    - code:"path_object_shared": Must be a single valid path.
    - code:"path_object_static": Must be a single valid path.
    - code:"path_program_script": Must be a single valid path.
    - code:"path_program_shared": Must be a single valid path.
    - code:"path_program_static": Must be a single valid path.
    - code:"path_sources": Must only be a valid directory path or not specified.
    - code:"path_sources_headers": Must only be a valid directory path or not specified.
    - code:"path_sources_library": Must only be a valid directory path or not specified.
    - code:"path_sources_object": Must only be a valid directory path or not specified.
    - code:"path_sources_program": Must only be a valid directory path or not specified.
    - code:"path_sources_script": Must only be a valid directory path or not specified.
    - code:"preserve_path_headers": Must only be one of code:"yes" or code:"no".
    - code:"process_post": Only one bold:"Content", which must only be a valid filename.
    - code:"process_pre": Only one bold:"Content", which must only be a valid filename.
    - code:"search_exclusive": Must only one of: code:"yes" or code:"no".
    - code:"search_shared": Must only one of: code:"yes" or code:"no".
    - code:"search_static": Must only one of: code:"yes" or code:"no".
    - code:"stage": Only zero or one bold:"Content", which represents the build stage name (case-sensitive) (no slashes allowed).
    - code:"version_file": Must only be one of: code:"major", code:"minor", code:"micro", or code:"nano".
    - code:"version_major": Must only be a single value containing valid filename characters (no slashes allowed).
    - code:"version_major_prefix": Must be zero or more valid filename characters (no slashes allowed).
    - code:"version_micro": Must only be a single value containing valid filename characters (no slashes allowed).
    - code:"version_micro_prefix": Must be zero or more valid filename characters (no slashes allowed).
    - code:"version_minor": Must only be a single value containing valid filename characters (no slashes allowed).
    - code:"version_minor_prefix": Must be zero or more valid filename characters (no slashes allowed).
    - code:"version_nano": Must only be a single value containing valid filename characters (no slashes allowed).
    - code:"version_nano_prefix": Must be zero or more valid filename characters (no slashes allowed).
    - code:"version_target": Must only be one of: code:"major", code:"minor", code:"micro", or code:"nano" (no slashes allowed).

  All bold:"Object" names support having a code:"-" and a code:"mode" name, such as code:"build_libraries-individual" for a mode called code:"individual", except for the code:"modes" and the code:"modes_default" bold:"Object" names.
