How to use the b2.build.type function in b2

To help you get started, we’ve selected a few b2 examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github vslavik / poedit / deps / boost / tools / build / src / tools / unix.py View on Github external
def set_library_order (manager, sources, prop_set, result):
    used_libraries = []
    deps = prop_set.dependency ()

    sources.extend(d.value for d in deps)
    sources = sequence.unique(sources)

    for l in sources:
        if l.type () and type.is_derived (l.type (), 'LIB'):
            used_libraries.append (l)

    created_libraries = []
    for l in result:
        if l.type () and type.is_derived (l.type (), 'LIB'):
            created_libraries.append (l)

    created_libraries = set.difference (created_libraries, used_libraries)
    set_library_order_aux (created_libraries, used_libraries)
github stan-dev / math / lib / boost_1.69.0 / tools / build / src / tools / types / cpp.py View on Github external
# Copyright David Abrahams 2004. 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)
from b2.build import type as type_


type_.register_type('CPP', ['cpp', 'cxx', 'cc'])
type_.register_type('H', ['h'])
type_.register_type('HPP', ['hpp'], 'H')
type_.register_type('C', ['c'])
github stan-dev / math / lib / boost_1.69.0 / tools / build / src / tools / builtin.py View on Github external
assert isinstance(prop_set, property_set.PropertySet)

        result = property_set.empty ()
        extra = []

        # Add appropriate  usage requirements.
        raw = prop_set.raw ()
        if 'shared' in raw:
            paths = []

            # TODO: is it safe to use the current directory? I think we should use
            # another mechanism to allow this to be run from anywhere.
            pwd = os.getcwd()

            for t in created_targets:
                if type.is_derived(t.type(), 'SHARED_LIB'):
                    paths.append(path.root(path.make(t.path()), pwd))

            extra += replace_grist(paths, '')

        # We need to pass  features that we've got from sources,
        # because if shared library is built, exe which uses it must know paths
        # to other shared libraries this one depends on, to be able to find them
        # all at runtime.

        # Just pass all features in property_set, it's theorically possible
        # that we'll propagate  features explicitly specified by
        # the user, but then the user's to blame for using internal feature.
        values = prop_set.get('')
        extra += replace_grist(values, '')

        if extra:
github stan-dev / math / lib / boost_1.69.0 / tools / build / src / tools / stage.py View on Github external
def symlink(name, project, source, ps):
    a = virtual_target.Action([source], "symlink.ln", ps)
    return virtual_target.FileTarget(name, source.type(), project, a, exact=True)

def relink_file(project, source, ps):
    action = source[0].action()
    cloned_action = virtual_target.clone_action(action, project, "", ps)
    targets = cloned_action.targets()
    # We relink only on Unix, where exe or shared lib is always a single file.
    assert len(targets) == 1
    return targets[0]


# Declare installed version of the EXE type. Generator for this type will cause
# relinking to the new location.
b2.build.type.register('INSTALLED_EXE', [], 'EXE')

class InstalledExeGenerator(generators.Generator):

    def __init__(self):
        generators.Generator.__init__(self, "install-exe", False, ['EXE'], ['INSTALLED_EXE'])

    def run(self, project, name, ps, source):

        need_relink = False;

        if ps.get('os') in ['NT', 'CYGWIN'] or ps.get('target-os') in ['windows', 'cygwin']:
            # Never relink
            pass
        else:
            # See if the dll-path properties are not changed during
            # install. If so, copy, don't relink.
github boostorg / build / src / build / virtual_target.py View on Github external
suffix = ""
    if type:
        suffix = b2.build.type.generated_target_suffix(type, property_set)

    # Handle suffixes for which no leading dot is desired.  Those are
    # specified by enclosing them in <...>.  Needed by python so it
    # can create "_d.so" extensions, for example.
    if get_grist(suffix):
        suffix = ungrist(suffix)
    elif suffix:
        suffix = "." + suffix

    prefix = ""
    if type:
        prefix = b2.build.type.generated_target_prefix(type, property_set)

    if specified_name.startswith(prefix):
        prefix = ""

    if not prefix:
        prefix = ""
    if not suffix:
        suffix = ""
    return prefix + specified_name + suffix
github PDAL / PDAL / boost / tools / build / v2 / tools / builtin.py View on Github external
angle = [g + x for x in angle]
        quoted = [g2 + x for x in quoted]

        all = angle + quoted
        bjam.call("mark-included", target, all)

        engine = get_manager().engine()
        engine.set_target_variable(angle, "SEARCH", get_value(self.includes_))
        engine.set_target_variable(quoted, "SEARCH", [b] + get_value(self.includes_))
        
        # Just propagate current scanner to includes, in a hope
        # that includes do not change scanners. 
        get_manager().scanners().propagate(self, angle + quoted)
        
scanner.register (CScanner, 'include')
type.set_scanner ('CPP', CScanner)
type.set_scanner ('C', CScanner)

# Ported to trunk@47077
class LibGenerator (generators.Generator):
    """ The generator class for libraries (target type LIB). Depending on properties it will
        request building of the approapriate specific type -- SHARED_LIB, STATIC_LIB or 
        SHARED_LIB.
    """

    def __init__(self, id, composing = True, source_types = [], target_types_and_names = ['LIB'], requirements = []):
        generators.Generator.__init__(self, id, composing, source_types, target_types_and_names, requirements)
    
    def run(self, project, name, prop_set, sources):

        # The lib generator is composing, and can be only invoked with
        # explicit name. This check is present in generator.run (and so in
github dennisferron / LikeMagic-GameEngine / Common / boost_1_54_0 / tools / build / v2 / tools / stage.py View on Github external
def include_type(self, type, types_to_include):
        return any(b2.build.type.is_subtype(type, ti) for ti in types_to_include)
github dennisferron / LikeMagic-GameEngine / Common / boost_1_54_0 / tools / build / v2 / build / generators.py View on Github external
def update_cached_information_with_a_new_type(type):

    base_type = b2.build.type.base(type)

    if base_type:
        for g in __vstg_cached_generators:
            if base_type in __viable_source_types_cache.get(g, []):
                __viable_source_types_cache[g].append(type)

        for t in __vst_cached_types:
            if base_type in __viable_source_types_cache.get(t, []):
                __viable_source_types_cache[t].append(type)