This file is indexed.

/usr/share/boost-build/src/tools/xlcpp.jam is in libboost1.65-tools-dev 1.65.1+dfsg-0ubuntu5.

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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# Copyright Vladimir Prus 2004.
# Copyright Toon Knapen 2004.
# Copyright Catherine Morton 2015.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt
# or copy at http://www.boost.org/LICENSE_1_0.txt)

#
# Boost.Build V2 toolset for the IBM XL C++ compiler
#

import toolset : flags ;
import feature ;
import common ;
import generators ;
import os ;

feature.extend toolset : xlcpp ;
toolset.inherit xlcpp : unix ;
generators.override xlcpp.prebuilt : builtin.prebuilt ;
generators.override xlcpp.searched-lib-generator : searched-lib-generator ;

# Configure the xlcpp toolset
rule init ( version ? : command * : options * )
{
    local condition = [ 
        common.check-init-parameters xlcpp : version $(version) ] ;
              
    command = [ common.get-invocation-command xlcpp : xlC
        : $(command) : "/usr/xlcpp/bin/xlC" ] ;
        
    common.handle-options xlcpp : $(condition) : $(command) : $(options) ;
}

# Declare generators
generators.register-c-compiler xlcpp.compile.c : C : OBJ : <toolset>xlcpp ;
generators.register-c-compiler xlcpp.compile.c++ : CPP : OBJ : <toolset>xlcpp ;

# Allow C++ style comments in C files
flags xlcpp CFLAGS : -qnoxlcompatmacros ;

# Declare flags
flags xlcpp CFLAGS <optimization>off : -qNOOPTimize ;
flags xlcpp CFLAGS <optimization>speed :  ;
flags xlcpp CFLAGS <optimization>space : -O2 -qcompact ;

# Discretionary inlining (not recommended)
flags xlcpp CFLAGS <inlining>off : -qnoinline ;
flags xlcpp CFLAGS <inlining>on : -qinline ;
#flags xlcpp CFLAGS <inlining>full : -qinline ;
flags xlcpp CFLAGS <inlining>full : ;

# Exception handling
flags xlcpp C++FLAGS <exception-handling>off : -qnoeh ;
flags xlcpp C++FLAGS <exception-handling>on : -qeh ;

# Run-time Type Identification
flags xlcpp C++FLAGS <rtti>off : -qnortti ;
flags xlcpp C++FLAGS <rtti>on : -qrtti ;

# Enable 64-bit memory addressing model
flags xlcpp CFLAGS <address-model>64 : -q64 ;
flags xlcpp LINKFLAGS <address-model>64 : -q64 ;
flags xlcpp ARFLAGS <target-os>aix/<address-model>64 : -X 64 ;

# Use absolute path when generating debug information
flags xlcpp CFLAGS <debug-symbols>on : -g -qfullpath ;
flags xlcpp LINKFLAGS <debug-symbols>on : -g -qfullpath ;
flags xlcpp LINKFLAGS <debug-symbols>off : -s ;

if [ os.name ] = AIX
{
    flags xlcpp.compile C++FLAGS : -qfuncsect ;

    # The -bnoipath strips the prepending (relative) path of libraries from
    # the loader section in the target library or executable. Hence, during
    # load-time LIBPATH (identical to LD_LIBRARY_PATH) or a hard-coded
    # -blibpath (*similar* to -lrpath/-lrpath-link) is searched. Without
    # this option, the prepending (relative) path + library name is
    # hard-coded in the loader section, causing *only* this path to be
    # searched during load-time. Note that the AIX linker does not have an
    # -soname equivalent, this is as close as it gets.
    #
    # The above options are definately for AIX 5.x, and most likely also for
    # AIX 4.x and AIX 6.x. For details about the AIX linker see:
    # http://download.boulder.ibm.com/ibmdl/pub/software/dw/aix/es-aix_ll.pdf
    #
    flags xlcpp.link LINKFLAGS <link>shared : -bnoipath ;

    # Run-time linking
    flags xlcpp.link EXE-LINKFLAGS <link>shared : -brtl ;
}
else
{
    # Linux PPC
    flags xlcpp.compile CFLAGS <link>shared : -qpic=large ;
    flags xlcpp FINDLIBS : rt ;
}

# Profiling
flags xlcpp CFLAGS <profiling>on : -pg ;
flags xlcpp LINKFLAGS <profiling>on : -pg ;

flags xlcpp.compile OPTIONS <cflags> ;
flags xlcpp.compile.c++ OPTIONS <cxxflags> ;
flags xlcpp DEFINES <define> ;
flags xlcpp UNDEFS <undef> ;
flags xlcpp HDRS <include> ;
flags xlcpp STDHDRS <sysinclude> ;
flags xlcpp.link OPTIONS <linkflags> ;
flags xlcpp ARFLAGS <arflags> ;

flags xlcpp LIBPATH <library-path> ;
flags xlcpp NEEDLIBS <library-file> ;
flags xlcpp FINDLIBS <find-shared-library> ;
flags xlcpp FINDLIBS <find-static-library> ;

# Select the compiler name according to the threading model.
flags xlcpp VA_C_COMPILER  <threading>single : xlc   ;
flags xlcpp VA_C_COMPILER  <threading>multi : xlc ;
flags xlcpp VA_CXX_COMPILER <threading>single : xlC   ;
flags xlcpp VA_CXX_COMPILER <threading>multi : xlC ;

SPACE = " " ;

flags xlcpp.link.dll HAVE_SONAME <target-os>linux : "" ;

actions xlcpp.link bind NEEDLIBS
{
    $(VA_CXX_COMPILER) $(EXE-LINKFLAGS) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS)
}

actions xlcpp.link.dll bind NEEDLIBS
{
    xlC -G $(LINKFLAGS) -o "$(<[1])" $(HAVE_SONAME)-Wl,-soname$(SPACE)-Wl,$(<[-1]:D=) -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS) 
}

actions xlcpp.compile.c
{
    $(VA_C_COMPILER) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)"
}

actions xlcpp.compile.c++
{
    $(VA_CXX_COMPILER) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)"
}

actions updated together piecemeal xlcpp.archive
{
    ar $(ARFLAGS) ru "$(<)" "$(>)"
}