parameters: ()
docstring: Registers all features and variants declared by this module.
docstring_summary: Registers all features and variants declared by this module.
docstring_tokens: Registers all features and variants declared by this module .
function: def register_globals ():
      """ Registers all features and variants declared by this module.
      """
  
      # This feature is used to determine which OS we're on.
      # In future, this may become <target-os> and <host-os>
      # TODO: check this. Compatibility with bjam names? Subfeature for version?
      os = sys.platform
      feature.feature ('os', [os], ['propagated', 'link-incompatible'])
  
  
      # The two OS features define a known set of abstract OS names. The host-os is
      # the OS under which bjam is running. Even though this should really be a fixed
      # property we need to list all the values to prevent unknown value errors. Both
      # set the default value to the current OS to account for the default use case of
      # building on the target OS.
      feature.feature('host-os', __os_names)
      feature.set_default('host-os', default_host_os())
  
      feature.feature('target-os', __os_names, ['propagated', 'link-incompatible'])
      feature.set_default('target-os', default_host_os())
  
      feature.feature ('toolset', [], ['implicit', 'propagated' ,'symmetric'])
  
      feature.feature ('stdlib', ['native'], ['propagated', 'composite'])
  
      feature.feature ('link', ['shared', 'static'], ['propagated'])
      feature.feature ('runtime-link', ['shared', 'static'], ['propagated'])
      feature.feature ('runtime-debugging', ['on', 'off'], ['propagated'])
  
  
      feature.feature ('optimization',  ['off', 'speed', 'space'], ['propagated'])
      feature.feature ('profiling', ['off', 'on'], ['propagated'])
      feature.feature ('inlining', ['off', 'on', 'full'], ['propagated'])
  
      feature.feature ('threading', ['single', 'multi'], ['propagated'])
      feature.feature ('rtti', ['on', 'off'], ['propagated'])
      feature.feature ('exception-handling', ['on', 'off'], ['propagated'])
  
      # Whether there is support for asynchronous EH (e.g. catching SEGVs).
      feature.feature ('asynch-exceptions', ['off', 'on'], ['propagated'])
  
      # Whether all extern "C" functions are considered nothrow by default.
      feature.feature ('extern-c-nothrow', ['off', 'on'], ['propagated'])
  
      feature.feature ('debug-symbols', ['on', 'off'], ['propagated'])
      feature.feature ('define', [], ['free'])
      feature.feature ('undef', [], ['free'])
      feature.feature ('include', [], ['free', 'path']) #order-sensitive
      feature.feature ('cflags', [], ['free'])
      feature.feature ('cxxflags', [], ['free'])
      feature.feature ('asmflags', [], ['free'])
      feature.feature ('linkflags', [], ['free'])
      feature.feature ('archiveflags', [], ['free'])
      feature.feature ('version', [], ['free'])
  
      feature.feature ('location-prefix', [], ['free'])
  
      feature.feature ('action', [], ['free'])
  
  
      # The following features are incidental, since
      # in themself they have no effect on build products.
      # Not making them incidental will result in problems in corner
      # cases, for example:
      #
      #    unit-test a : a.cpp : <use>b ;
      #    lib b : a.cpp b ;
      #
      # Here, if <use> is not incidental, we'll decide we have two
      # targets for a.obj with different properties, and will complain.
      #
      # Note that making feature incidental does not mean it's ignored. It may
      # be ignored when creating the virtual target, but the rest of build process
      # will use them.
      feature.feature ('use', [], ['free', 'dependency', 'incidental'])
      feature.feature ('dependency', [], ['free', 'dependency', 'incidental'])
      feature.feature ('implicit-dependency', [], ['free', 'dependency', 'incidental'])
  
      feature.feature('warnings', [
          'on',         # Enable default/"reasonable" warning level for the tool.
          'all',        # Enable all possible warnings issued by the tool.
          'off'],       # Disable all warnings issued by the tool.
          ['incidental', 'propagated'])
  
      feature.feature('warnings-as-errors', [
          'off',        # Do not fail the compilation if there are warnings.
          'on'],        # Fail the compilation if there are warnings.
          ['incidental', 'propagated'])
  
      feature.feature('c++-template-depth',
          [str(i) for i in range(64,1024+1,64)] +
          [str(i) for i in range(20,1000+1,10)] +
          #   Maximum template instantiation depth guaranteed for ANSI/ISO C++
          # conforming programs.
          ['17'],
          ['incidental', 'optional', 'propagated'])
  
      feature.feature ('source', [], ['free', 'dependency', 'incidental'])
      feature.feature ('library', [], ['free', 'dependency', 'incidental'])
      feature.feature ('file', [], ['free', 'dependency', 'incidental'])
      feature.feature ('find-shared-library', [], ['free']) #order-sensitive ;
      feature.feature ('find-static-library', [], ['free']) #order-sensitive ;
      feature.feature ('library-path', [], ['free', 'path']) #order-sensitive ;
      # Internal feature.
      feature.feature ('library-file', [], ['free', 'dependency'])
  
      feature.feature ('name', [], ['free'])
      feature.feature ('tag', [], ['free'])
      feature.feature ('search', [], ['free', 'path']) #order-sensitive ;
      feature.feature ('location', [], ['free', 'path'])
  
      feature.feature ('dll-path', [], ['free', 'path'])
      feature.feature ('hardcode-dll-paths', ['true', 'false'], ['incidental'])
  
  
      # This is internal feature which holds the paths of all dependency
      # dynamic libraries. On Windows, it's needed so that we can all
      # those paths to PATH, when running applications.
      # On Linux, it's needed to add proper -rpath-link command line options.
      feature.feature ('xdll-path', [], ['free', 'path'])
  
      #provides means to specify def-file for windows dlls.
      feature.feature ('def-file', [], ['free', 'dependency'])
  
      # This feature is used to allow specific generators to run.
      # For example, QT tools can only be invoked when QT library
      # is used. In that case, <allow>qt will be in usage requirement
      # of the library.
      feature.feature ('allow', [], ['free'])
  
      # The addressing model to generate code for. Currently a limited set only
      # specifying the bit size of pointers.
      feature.feature('address-model', ['16', '32', '64'], ['propagated', 'optional'])
  
      # Type of CPU architecture to compile for.
      feature.feature('architecture', [
          # x86 and x86-64
          'x86',
  
          # ia64
          'ia64',
  
          # Sparc
          'sparc',
  
          # RS/6000 & PowerPC
          'power',
  
          # MIPS/SGI
          'mips1', 'mips2', 'mips3', 'mips4', 'mips32', 'mips32r2', 'mips64',
  
          # HP/PA-RISC
          'parisc',
  
          # Advanced RISC Machines
          'arm',
  
          # Combined architectures for platforms/toolsets that support building for
          # multiple architectures at once. "combined" would be the default multi-arch
          # for the toolset.
          'combined',
          'combined-x86-power'],
  
          ['propagated', 'optional'])
  
      # The specific instruction set in an architecture to compile.
      feature.feature('instruction-set', [
          # x86 and x86-64
          'native', 'i486', 'i586', 'i686', 'pentium', 'pentium-mmx', 'pentiumpro', 'pentium2', 'pentium3',
          'pentium3m', 'pentium-m', 'pentium4', 'pentium4m', 'prescott', 'nocona', 'core2', 'corei7', 'corei7-avx', 'core-avx-i',
          'conroe', 'conroe-xe', 'conroe-l', 'allendale', 'merom', 'merom-xe', 'kentsfield', 'kentsfield-xe', 'penryn', 'wolfdale',
          'yorksfield', 'nehalem', 'sandy-bridge', 'ivy-bridge', 'haswell', 'k6', 'k6-2', 'k6-3', 'athlon', 'athlon-tbird', 'athlon-4', 'athlon-xp',
          'athlon-mp', 'k8', 'opteron', 'athlon64', 'athlon-fx', 'k8-sse3', 'opteron-sse3', 'athlon64-sse3', 'amdfam10', 'barcelona',
          'bdver1', 'bdver2', 'bdver3', 'btver1', 'btver2', 'winchip-c6', 'winchip2', 'c3', 'c3-2', 'atom',
  
          # ia64
          'itanium', 'itanium1', 'merced', 'itanium2', 'mckinley',
  
          # Sparc
          'v7', 'cypress', 'v8', 'supersparc', 'sparclite', 'hypersparc', 'sparclite86x', 'f930', 'f934',
          'sparclet', 'tsc701', 'v9', 'ultrasparc', 'ultrasparc3',
  
          # RS/6000 & PowerPC
          '401', '403', '405', '405fp', '440', '440fp', '505', '601', '602',
          '603', '603e', '604', '604e', '620', '630', '740', '7400',
          '7450', '750', '801', '821', '823', '860', '970', '8540',
          'power-common', 'ec603e', 'g3', 'g4', 'g5', 'power', 'power2',
          'power3', 'power4', 'power5', 'powerpc', 'powerpc64', 'rios',
          'rios1', 'rsc', 'rios2', 'rs64a',
  
          # MIPS
          '4kc', '4kp', '5kc', '20kc', 'm4k', 'r2000', 'r3000', 'r3900', 'r4000',
          'r4100', 'r4300', 'r4400', 'r4600', 'r4650',
          'r6000', 'r8000', 'rm7000', 'rm9000', 'orion', 'sb1', 'vr4100',
          'vr4111', 'vr4120', 'vr4130', 'vr4300',
          'vr5000', 'vr5400', 'vr5500',
  
          # HP/PA-RISC
          '700', '7100', '7100lc', '7200', '7300', '8000',
  
          # Advanced RISC Machines
          'armv2', 'armv2a', 'armv3', 'armv3m', 'armv4', 'armv4t', 'armv5',
          'armv5t', 'armv5te', 'armv6', 'armv6j', 'iwmmxt', 'ep9312'],
  
          ['propagated', 'optional'])
  
      feature.feature('conditional', [], ['incidental', 'free'])
  
      # The value of 'no' prevents building of a target.
      feature.feature('build', ['yes', 'no'], ['optional'])
  
      # Windows-specific features
      feature.feature ('user-interface', ['console', 'gui', 'wince', 'native', 'auto'], [])
      feature.feature ('variant', [], ['implicit', 'composite', 'propagated', 'symmetric'])
  
  
      variant ('debug', ['<optimization>off', '<debug-symbols>on', '<inlining>off', '<runtime-debugging>on'])
      variant ('release', ['<optimization>speed', '<debug-symbols>off', '<inlining>full',
                           '<runtime-debugging>off', '<define>NDEBUG'])
      variant ('profile', ['release'], ['<profiling>on', '<debug-symbols>on'])
function_tokens: def register_globals ( ) : # This feature is used to determine which OS we're on. # In future, this may become <target-os> and <host-os> # TODO: check this. Compatibility with bjam names? Subfeature for version? os = sys . platform feature . feature ( 'os' , [ os ] , [ 'propagated' , 'link-incompatible' ] ) # The two OS features define a known set of abstract OS names. The host-os is # the OS under which bjam is running. Even though this should really be a fixed # property we need to list all the values to prevent unknown value errors. Both # set the default value to the current OS to account for the default use case of # building on the target OS. feature . feature ( 'host-os' , __os_names ) feature . set_default ( 'host-os' , default_host_os ( ) ) feature . feature ( 'target-os' , __os_names , [ 'propagated' , 'link-incompatible' ] ) feature . set_default ( 'target-os' , default_host_os ( ) ) feature . feature ( 'toolset' , [ ] , [ 'implicit' , 'propagated' , 'symmetric' ] ) feature . feature ( 'stdlib' , [ 'native' ] , [ 'propagated' , 'composite' ] ) feature . feature ( 'link' , [ 'shared' , 'static' ] , [ 'propagated' ] ) feature . feature ( 'runtime-link' , [ 'shared' , 'static' ] , [ 'propagated' ] ) feature . feature ( 'runtime-debugging' , [ 'on' , 'off' ] , [ 'propagated' ] ) feature . feature ( 'optimization' , [ 'off' , 'speed' , 'space' ] , [ 'propagated' ] ) feature . feature ( 'profiling' , [ 'off' , 'on' ] , [ 'propagated' ] ) feature . feature ( 'inlining' , [ 'off' , 'on' , 'full' ] , [ 'propagated' ] ) feature . feature ( 'threading' , [ 'single' , 'multi' ] , [ 'propagated' ] ) feature . feature ( 'rtti' , [ 'on' , 'off' ] , [ 'propagated' ] ) feature . feature ( 'exception-handling' , [ 'on' , 'off' ] , [ 'propagated' ] ) # Whether there is support for asynchronous EH (e.g. catching SEGVs). feature . feature ( 'asynch-exceptions' , [ 'off' , 'on' ] , [ 'propagated' ] ) # Whether all extern "C" functions are considered nothrow by default. feature . feature ( 'extern-c-nothrow' , [ 'off' , 'on' ] , [ 'propagated' ] ) feature . feature ( 'debug-symbols' , [ 'on' , 'off' ] , [ 'propagated' ] ) feature . feature ( 'define' , [ ] , [ 'free' ] ) feature . feature ( 'undef' , [ ] , [ 'free' ] ) feature . feature ( 'include' , [ ] , [ 'free' , 'path' ] ) #order-sensitive feature . feature ( 'cflags' , [ ] , [ 'free' ] ) feature . feature ( 'cxxflags' , [ ] , [ 'free' ] ) feature . feature ( 'asmflags' , [ ] , [ 'free' ] ) feature . feature ( 'linkflags' , [ ] , [ 'free' ] ) feature . feature ( 'archiveflags' , [ ] , [ 'free' ] ) feature . feature ( 'version' , [ ] , [ 'free' ] ) feature . feature ( 'location-prefix' , [ ] , [ 'free' ] ) feature . feature ( 'action' , [ ] , [ 'free' ] ) # The following features are incidental, since # in themself they have no effect on build products. # Not making them incidental will result in problems in corner # cases, for example: # #    unit-test a : a.cpp : <use>b ; #    lib b : a.cpp b ; # # Here, if <use> is not incidental, we'll decide we have two # targets for a.obj with different properties, and will complain. # # Note that making feature incidental does not mean it's ignored. It may # be ignored when creating the virtual target, but the rest of build process # will use them. feature . feature ( 'use' , [ ] , [ 'free' , 'dependency' , 'incidental' ] ) feature . feature ( 'dependency' , [ ] , [ 'free' , 'dependency' , 'incidental' ] ) feature . feature ( 'implicit-dependency' , [ ] , [ 'free' , 'dependency' , 'incidental' ] ) feature . feature ( 'warnings' , [ 'on' , # Enable default/"reasonable" warning level for the tool. 'all' , # Enable all possible warnings issued by the tool. 'off' ] , # Disable all warnings issued by the tool. [ 'incidental' , 'propagated' ] ) feature . feature ( 'warnings-as-errors' , [ 'off' , # Do not fail the compilation if there are warnings. 'on' ] , # Fail the compilation if there are warnings. [ 'incidental' , 'propagated' ] ) feature . feature ( 'c++-template-depth' , [ str ( i ) for i in range ( 64 , 1024 + 1 , 64 ) ] + [ str ( i ) for i in range ( 20 , 1000 + 1 , 10 ) ] + #   Maximum template instantiation depth guaranteed for ANSI/ISO C++ # conforming programs. [ '17' ] , [ 'incidental' , 'optional' , 'propagated' ] ) feature . feature ( 'source' , [ ] , [ 'free' , 'dependency' , 'incidental' ] ) feature . feature ( 'library' , [ ] , [ 'free' , 'dependency' , 'incidental' ] ) feature . feature ( 'file' , [ ] , [ 'free' , 'dependency' , 'incidental' ] ) feature . feature ( 'find-shared-library' , [ ] , [ 'free' ] ) #order-sensitive ; feature . feature ( 'find-static-library' , [ ] , [ 'free' ] ) #order-sensitive ; feature . feature ( 'library-path' , [ ] , [ 'free' , 'path' ] ) #order-sensitive ; # Internal feature. feature . feature ( 'library-file' , [ ] , [ 'free' , 'dependency' ] ) feature . feature ( 'name' , [ ] , [ 'free' ] ) feature . feature ( 'tag' , [ ] , [ 'free' ] ) feature . feature ( 'search' , [ ] , [ 'free' , 'path' ] ) #order-sensitive ; feature . feature ( 'location' , [ ] , [ 'free' , 'path' ] ) feature . feature ( 'dll-path' , [ ] , [ 'free' , 'path' ] ) feature . feature ( 'hardcode-dll-paths' , [ 'true' , 'false' ] , [ 'incidental' ] ) # This is internal feature which holds the paths of all dependency # dynamic libraries. On Windows, it's needed so that we can all # those paths to PATH, when running applications. # On Linux, it's needed to add proper -rpath-link command line options. feature . feature ( 'xdll-path' , [ ] , [ 'free' , 'path' ] ) #provides means to specify def-file for windows dlls. feature . feature ( 'def-file' , [ ] , [ 'free' , 'dependency' ] ) # This feature is used to allow specific generators to run. # For example, QT tools can only be invoked when QT library # is used. In that case, <allow>qt will be in usage requirement # of the library. feature . feature ( 'allow' , [ ] , [ 'free' ] ) # The addressing model to generate code for. Currently a limited set only # specifying the bit size of pointers. feature . feature ( 'address-model' , [ '16' , '32' , '64' ] , [ 'propagated' , 'optional' ] ) # Type of CPU architecture to compile for. feature . feature ( 'architecture' , [ # x86 and x86-64 'x86' , # ia64 'ia64' , # Sparc 'sparc' , # RS/6000 & PowerPC 'power' , # MIPS/SGI 'mips1' , 'mips2' , 'mips3' , 'mips4' , 'mips32' , 'mips32r2' , 'mips64' , # HP/PA-RISC 'parisc' , # Advanced RISC Machines 'arm' , # Combined architectures for platforms/toolsets that support building for # multiple architectures at once. "combined" would be the default multi-arch # for the toolset. 'combined' , 'combined-x86-power' ] , [ 'propagated' , 'optional' ] ) # The specific instruction set in an architecture to compile. feature . feature ( 'instruction-set' , [ # x86 and x86-64 'native' , 'i486' , 'i586' , 'i686' , 'pentium' , 'pentium-mmx' , 'pentiumpro' , 'pentium2' , 'pentium3' , 'pentium3m' , 'pentium-m' , 'pentium4' , 'pentium4m' , 'prescott' , 'nocona' , 'core2' , 'corei7' , 'corei7-avx' , 'core-avx-i' , 'conroe' , 'conroe-xe' , 'conroe-l' , 'allendale' , 'merom' , 'merom-xe' , 'kentsfield' , 'kentsfield-xe' , 'penryn' , 'wolfdale' , 'yorksfield' , 'nehalem' , 'sandy-bridge' , 'ivy-bridge' , 'haswell' , 'k6' , 'k6-2' , 'k6-3' , 'athlon' , 'athlon-tbird' , 'athlon-4' , 'athlon-xp' , 'athlon-mp' , 'k8' , 'opteron' , 'athlon64' , 'athlon-fx' , 'k8-sse3' , 'opteron-sse3' , 'athlon64-sse3' , 'amdfam10' , 'barcelona' , 'bdver1' , 'bdver2' , 'bdver3' , 'btver1' , 'btver2' , 'winchip-c6' , 'winchip2' , 'c3' , 'c3-2' , 'atom' , # ia64 'itanium' , 'itanium1' , 'merced' , 'itanium2' , 'mckinley' , # Sparc 'v7' , 'cypress' , 'v8' , 'supersparc' , 'sparclite' , 'hypersparc' , 'sparclite86x' , 'f930' , 'f934' , 'sparclet' , 'tsc701' , 'v9' , 'ultrasparc' , 'ultrasparc3' , # RS/6000 & PowerPC '401' , '403' , '405' , '405fp' , '440' , '440fp' , '505' , '601' , '602' , '603' , '603e' , '604' , '604e' , '620' , '630' , '740' , '7400' , '7450' , '750' , '801' , '821' , '823' , '860' , '970' , '8540' , 'power-common' , 'ec603e' , 'g3' , 'g4' , 'g5' , 'power' , 'power2' , 'power3' , 'power4' , 'power5' , 'powerpc' , 'powerpc64' , 'rios' , 'rios1' , 'rsc' , 'rios2' , 'rs64a' , # MIPS '4kc' , '4kp' , '5kc' , '20kc' , 'm4k' , 'r2000' , 'r3000' , 'r3900' , 'r4000' , 'r4100' , 'r4300' , 'r4400' , 'r4600' , 'r4650' , 'r6000' , 'r8000' , 'rm7000' , 'rm9000' , 'orion' , 'sb1' , 'vr4100' , 'vr4111' , 'vr4120' , 'vr4130' , 'vr4300' , 'vr5000' , 'vr5400' , 'vr5500' , # HP/PA-RISC '700' , '7100' , '7100lc' , '7200' , '7300' , '8000' , # Advanced RISC Machines 'armv2' , 'armv2a' , 'armv3' , 'armv3m' , 'armv4' , 'armv4t' , 'armv5' , 'armv5t' , 'armv5te' , 'armv6' , 'armv6j' , 'iwmmxt' , 'ep9312' ] , [ 'propagated' , 'optional' ] ) feature . feature ( 'conditional' , [ ] , [ 'incidental' , 'free' ] ) # The value of 'no' prevents building of a target. feature . feature ( 'build' , [ 'yes' , 'no' ] , [ 'optional' ] ) # Windows-specific features feature . feature ( 'user-interface' , [ 'console' , 'gui' , 'wince' , 'native' , 'auto' ] , [ ] ) feature . feature ( 'variant' , [ ] , [ 'implicit' , 'composite' , 'propagated' , 'symmetric' ] ) variant ( 'debug' , [ '<optimization>off' , '<debug-symbols>on' , '<inlining>off' , '<runtime-debugging>on' ] ) variant ( 'release' , [ '<optimization>speed' , '<debug-symbols>off' , '<inlining>full' , '<runtime-debugging>off' , '<define>NDEBUG' ] ) variant ( 'profile' , [ 'release' ] , [ '<profiling>on' , '<debug-symbols>on' ] )