/usr/share/boost-build/src/tools
NameSizeModeActions
doxygen/-0755rm
features/-0755rm
generators/-0755rm
types/-0755rm
xsltproc/-0755rm
acc.jam48000644editdlrm
asciidoctor.jam64800644editdlrm
auto-index.jam83240644editdlrm
bison.jam5890644editdlrm
boostbook-config.jam3890644editdlrm
boostbook.jam240560644editdlrm
borland.jam99920644editdlrm
builtin.jam30370644editdlrm
bzip2.jam80660644editdlrm
cast.jam32370644editdlrm
clang-darwin.jam67130644editdlrm
clang-linux.jam99840644editdlrm
clang-vxworks.jam40260644editdlrm
clang-win.jam60940644editdlrm
clang.jam23100644editdlrm
common.jam316790644editdlrm
como-linux.jam35280644editdlrm
como-win.jam42370644editdlrm
como.jam20630644editdlrm
convert.jam19870644editdlrm
cray.jam411280644editdlrm
cw-config.jam12830644editdlrm
cw.jam95490644editdlrm
cygwin.jam4030644editdlrm
darwin.jam221650644editdlrm
diab.jam43070644editdlrm
dmc.jam60940644editdlrm
docutils.jam34440644editdlrm
doxproc.py366210644editdlrm
doxygen-config.jam3880644editdlrm
doxygen.jam247450644editdlrm
embarcadero.jam214870644editdlrm
emscripten.jam37790644editdlrm
flags.jam45700644editdlrm
fop.jam16930644editdlrm
fortran.jam19890644editdlrm
gcc.jam552880644editdlrm
generate.jam33390644editdlrm
gettext.jam76630644editdlrm
gfortran.jam10080644editdlrm
hpfortran.jam9020644editdlrm
hp_cxx.jam80890644editdlrm
ifort.jam14950644editdlrm
intel-darwin.jam97850644editdlrm
intel-linux.jam91930644editdlrm
intel-vxworks.jam70850644editdlrm
intel-win.jam163960644editdlrm
intel.jam26260644editdlrm
lex.jam5590644editdlrm
libjpeg.jam73620644editdlrm
libpng.jam71040644editdlrm
libtiff.jam72080644editdlrm
link.jam150210644editdlrm
lzma.jam32770644editdlrm
make.jam22660644editdlrm
mc.jam13110644editdlrm
message.jam16670644editdlrm
midl.jam53670644editdlrm
mipspro.jam52910644editdlrm
mpi.jam218260644editdlrm
msvc-config.jam3930644editdlrm
msvc.jam846720644editdlrm
notfile.jam16540644editdlrm
openssl.jam36130644editdlrm
package.jam92810644editdlrm
pathscale.jam66290644editdlrm
pch.jam27190644editdlrm
pgi.jam48790644editdlrm
pkg-config.jam134430644editdlrm
python-config.jam8360644editdlrm
python.jam436790644editdlrm
qcc.jam108360644editdlrm
qt.jam5300644editdlrm
qt3.jam68100644editdlrm
qt4.jam239740644editdlrm
qt5.jam265170644editdlrm
quickbook-config.jam12660644editdlrm
quickbook.jam132770644editdlrm
rc.jam53640644editdlrm
sass.jam57020644editdlrm
saxonhe.jam13290644editdlrm
stage.jam285130644editdlrm
stlport.jam118800644editdlrm
sun.jam80540644editdlrm
symlink.jam43510644editdlrm
testing-aux.jam102380644editdlrm
testing.jam278890644editdlrm
unix.jam58470644editdlrm
vacpp.jam57250644editdlrm
vmsdecc.jam201850644editdlrm
whale.jam32530644editdlrm
xlcpp.jam61210644editdlrm
xlf.jam9000644editdlrm
xsltproc-config.jam8380644editdlrm
xsltproc.jam56030644editdlrm
zlib.jam69760644editdlrm
zstd.jam24460644editdlrm
Edit: /usr/share/boost-build/src/tools/package.jam (9281B)
# Copyright (c) 2005 Vladimir Prus. # Copyright 2006 Rene Rivera. # # 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) # Provides mechanism for installing whole packages into a specific directory # structure. This is opposed to the 'install' rule, that installs a number of # targets to a single directory, and does not care about directory structure at # all. # Example usage: # # package.install boost : # : # : # : # ; # # This will install binaries, libraries and headers to the 'proper' location, # given by command line options --prefix, --exec-prefix, --bindir, --libdir and # --includedir. # # The rule is just a convenient wrapper, avoiding the need to define several # 'install' targets. # # The only install-related feature is . It will apply to # headers only and if present, paths of headers relatively to source root will # be retained after installing. If it is not specified, then "." is assumed, so # relative paths in headers are always preserved. import "class" : new ; import option ; import project ; import feature ; import path ; import property ; import stage ; import targets ; import modules ; import os ; feature.feature install-default-prefix : : free incidental ; class package-paths { import feature ; import modules ; import option ; import os ; import path ; rule __init__ ( default-prefix ) { local explicit-options = [ MATCH --(prefix|bindir|libdir|includedir|datarootdir)=.* : [ modules.peek : ARGV ] ] ; self.has-$(explicit-options) = true ; if prefix in $(explicit-options) { # If --prefix is explicitly specified on the command line, # then we need wipe away any settings of libdir/includir that # is specified via options in config files. option.set bindir : ; option.set libdir : ; option.set includedir : ; option.set datarootdir : ; } handle-path prefix : $(default-prefix) ; handle-path libdir : $(self.prefix)/lib ; handle-path bindir : $(self.prefix)/bin ; handle-path includedir : $(self.prefix)/include ; handle-path datarootdir : $(self.prefix)/share ; } local rule handle-path ( option : default-value ) { local opt = [ option.get $(option) ] ; if $(opt) { opt = [ path.root [ path.make $(opt) ] [ path.pwd ] ] ; } else { opt = $(default-value) ; } self.$(option) = $(opt) ; } rule prefix ( ) { return $(self.prefix) ; } rule libdir ( ) { return $(self.libdir) ; } rule bindir ( ) { return $(self.bindir) ; } rule includedir ( ) { return $(self.includedir) ; } rule datarootdir ( ) { return $(self.datarootdir) ; } rule get ( option ) { if ! $(self.$(option)) { local info = [ modules.peek package : .options.$(option) ] ; local default-value = $(info[1]) ; local relative-to = $(info[2]) ; if $(self.has-$(relative-to)) { option.set $(option) ; self.has-$(option) = true ; } if [ MATCH --$(option)=(.*) : [ modules.peek : ARGV ] ] { self.has-$(option) = true ; } local adjusted-default = [ path.join [ get $(relative-to) ] $(default-value) ] ; handle-path $(option) : $(adjusted-default) ; } return $(self.$(option)) ; } } # Registers an additional path option. The option name # can then be used with a package-paths object. # # default-path is the default path that will be used if # the option is not set explicitly. It will be interpreted # relative to another option. This allows options to be # defined hierarchically with --prefix as the root. # # relative-to should be the name of another option. It defaults # to prefix. # # Example:: # # package.add-path-option cmakedir : cmake : libdir ; # cmakedir = [ $(mypaths).get cmakedir ] ; # defaults to /usr/local/lib/cmake # rule add-path-option ( name : default-path : relative-to ? ) { local value = $(default-path) $(relative-to:E=prefix) ; if $(.options.$(name)) && $(.options.$(name)) != $(value) { import errors ; errors.error Duplicate definition of $(name) ; } .options.$(name) = $(value) ; } # Returns a package-paths object that can be used # to find the various install paths. If requirements # contains then that will be used # as the default prefix, otherwise a platform specific # default prefix will be used. All other properties # in requirements are ignored. # rule paths ( package-name : requirements * ) { local default-prefix = [ feature.get-values : $(requirements) ] ; # Or some likely defaults if neither is given. if ! $(default-prefix) { if [ os.name ] = NT { default-prefix = C:\\$(package-name) ; } else { default-prefix = /usr/local ; } } default-prefix = [ path.make $(default-prefix) ] ; if ! $(.package-paths.$(default-prefix)) { .package-paths.$(default-prefix) = [ new package-paths $(default-prefix) ] ; } return $(.package-paths.$(default-prefix)) ; } rule install ( name package-name ? : requirements * : binaries * : libraries * : headers * ) { package-name ?= $(name) ; # If is not specified, all headers are installed to # prefix/include, no matter what their relative path is. Sometimes that is # what is needed. local install-source-root = [ property.select : $(requirements) ] ; install-source-root = $(install-source-root:G=) ; requirements = [ property.change $(requirements) : ] ; local install-header-subdir = [ property.select : $(requirements) ] ; install-header-subdir = /$(install-header-subdir:G=) ; install-header-subdir ?= "" ; requirements = [ property.change $(requirements) : ] ; # First, figure out all locations. Use the default if no prefix option # given. local paths = [ paths $(package-name) : $(requirements) ] ; # Binaries. local bin-locate = [ $(paths).bindir ] ; # Object code libraries. local lib-locate = [ $(paths).libdir ] ; # Source header files. local include-locate = [ $(paths).includedir ] ; stage.install $(name)-bin : $(binaries) : $(requirements) $(bin-locate) ; alias $(name)-lib : $(name)-lib-shared $(name)-lib-static ; # Since the install location of shared libraries differs on universe # and cygwin, use target alternatives to make different targets. # We should have used indirection conditioanl requirements, but it's # awkward to pass bin-locate and lib-locate from there to another rule. alias $(name)-lib-shared : $(name)-lib-shared-universe ; alias $(name)-lib-shared : $(name)-lib-shared-cygwin : cygwin ; # For shared libraries, we install both explicitly specified one and the # shared libraries that the installed executables depend on. stage.install $(name)-lib-shared-universe : $(binaries) $(libraries) : $(requirements) $(lib-locate) on SHARED_LIB ; stage.install $(name)-lib-shared-cygwin : $(binaries) $(libraries) : $(requirements) $(bin-locate) on SHARED_LIB ; # For static libraries, we do not care about executable dependencies, since # static libraries are already incorporated into them. stage.install $(name)-lib-static : $(libraries) : $(requirements) $(lib-locate) on STATIC_LIB ; stage.install $(name)-headers : $(headers) : $(requirements) $(include-locate)$(install-header-subdir) $(install-source-root) ; alias $(name) : $(name)-bin $(name)-lib $(name)-headers ; local c = [ project.current ] ; modules.call-in [ $(c).project-module ] : explicit $(name) $(name)-bin $(name)-lib $(name)-headers $(name)-lib-shared $(name)-lib-static $(name)-lib-shared-universe $(name)-lib-shared-cygwin ; } rule install-data ( target-name : package-name : data * : requirements * ) { package-name ?= target-name ; local paths = [ paths $(package-name) : $(requirements) ] ; local datadir = [ $(paths).datarootdir ] ; stage.install $(target-name) : $(data) : $(requirements) $(datadir)/$(package-name) ; local c = [ project.current ] ; local project-module = [ $(c).project-module ] ; module $(project-module) { explicit $(1) ; } }