This file is indexed.

/usr/share/boost-build/util/option.jam is in libboost1.54-tools-dev 1.54.0-4ubuntu3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
#  Copyright (c) 2005 Vladimir Prus.
#
#  Use, modification and distribution is subject to the Boost Software
#  License Version 1.0. (See accompanying file LICENSE_1_0.txt or
#  http://www.boost.org/LICENSE_1_0.txt)

import modules ;

# Set a value for a named option, to be used when not overridden on the command
# line.
rule set ( name : value ? )
{
    .option.$(name) = $(value) ;
}

rule get ( name : default-value ? : implied-value ? )
{
    local m = [ MATCH --$(name)=(.*) : [ modules.peek : ARGV ] ] ;
    if $(m)
    {
        return $(m[1]) ;
    }
    else  
    {        
        m = [ MATCH (--$(name)) : [ modules.peek : ARGV ] ] ;
        if $(m) && $(implied-value)
        {
            return $(implied-value) ;
        }
        else if $(.option.$(name))
        {
            return $(.option.$(name)) ;
        }    
        else
        {
            return $(default-value) ;
        }    
    }              
}


# Check command-line args as soon as possible. For each option try to load
# module named after option. Is that succeeds, invoke 'process' rule in the
# module. The rule may return "true" to indicate that the regular build process
# should not be attempted.
#
# Options take the general form of: --<name>[=<value>] [<value>]
#
rule process ( )
{
    local ARGV = [ modules.peek : ARGV ] ;
    local BOOST_BUILD_PATH = [ modules.peek : BOOST_BUILD_PATH ] ;

    local dont-build ;
    local args = $(ARGV) ;
    while $(args)
    {
        local arg = [ MATCH ^--(.*) : $(args[1]) ] ;
        while $(args[2-]) && ! $(arg)
        {
            args = $(args[2-]) ;
            arg = [ MATCH ^--(.*) : $(args[1]) ] ;
        }
        args = $(args[2-]) ;

        if $(arg)
        {
            local split = [ MATCH ^(([^-=]+)[^=]*)(=?)(.*)$ : $(arg) ] ;
            local full-name = $(split[1]) ;
            local prefix = $(split[2]) ;
            local values ;

            if $(split[3])
            {
                values = $(split[4]) ;
            }
            if $(args) && ! [ MATCH ^(--).* : $(args[1]) ]
            {
                values += $(args[1]) ;
                args = $(args[2-]) ;
            }

            # Jook in options subdirectories of BOOST_BUILD_PATH for modules
            # matching the full option name and then its prefix.
            local plugin-dir = options ;
            local option-files = [ GLOB $(plugin-dir:D=$(BOOST_BUILD_PATH)) :
                $(full-name).jam $(prefix).jam ] ;

            if $(option-files)
            {
                # Load the file into a module named for the option.
                local f = $(option-files[1]) ;
                local module-name = --$(f:D=:S=) ;
                modules.load $(module-name) : $(f:D=) : $(f:D) ;

                # If there is a process rule, call it with the full option name
                # and its value (if any). If there was no "=" in the option, the
                # value will be empty.
                if process in [ RULENAMES $(module-name) ]
                {
                    dont-build += [ modules.call-in $(module-name) : process
                        --$(full-name) : $(values) ] ;
                }
            }
        }
    }

    return $(dont-build) ;
}