/usr/share/boost-build/src/tools/generators
NameSizeModeActions
archive-generator.jam25700644editdlrm
c-compiling-generator.jam22010644editdlrm
dummy-generator.jam5620644editdlrm
lib-generator.jam41810644editdlrm
linking-generator.jam62160644editdlrm
prebuilt-lib-generator.jam8630644editdlrm
searched-lib-generator.jam28040644editdlrm
__init_generators__.jam7470644editdlrm
Edit: /usr/share/boost-build/src/tools/generators/archive-generator.jam (2570B)
# Copyright 2002-2017 Rene Rivera # Copyright 2002-2017 Vladimir Prus # 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) import "class" : new ; import generators ; # The generator class for handling STATIC_LIB creation. # class archive-generator : generator { import generators ; import property-set ; rule __init__ ( id composing ? : source-types + : target-types + : requirements * ) { composing ?= true ; generator.__init__ $(id) $(composing) : $(source-types) : $(target-types) : $(requirements) ; } rule run ( project name ? : property-set : sources + ) { sources += [ $(property-set).get ] ; property-set = [ $(property-set).add-raw link ] ; local result = [ generator.run $(project) $(name) : $(property-set) : $(sources) ] ; # For static linking, if we get a library in source, we can not directly # link to it so we need to cause our dependencies to link to that # library. There are two approaches: # - adding the library to the list of returned targets. # - using the usage requirements. # The problem with the first is: # # lib a1 : : liba1.a ; # lib a2 : a2.cpp a1 : static ; # install dist : a2 ; # # here we will try to install 'a1', even though it is not necessary in # the general case. With the second approach, even indirect dependants # will link to the library, but it should not cause any harm. So, return # all LIB sources together with created targets, so that dependants link # to them. local usage-requirements = link ; if [ $(property-set).get ] = static { for local t in $(sources) { if [ $(t).type ] && [ type.is-derived [ $(t).type ] LIB ] { usage-requirements += $(t) ; } } } return [ generators.add-usage-requirements $(result) : $(usage-requirements) ] ; } } rule register-archiver ( id composing ? : source-types + : target-types + : requirements * ) { generators.register [ new archive-generator $(id) $(composing) : $(source-types) : $(target-types) : $(requirements) ] ; } IMPORT $(__name__) : register-archiver : : generators.register-archiver ;