# -*- coding: utf-8 -*-
#
# michael a.g. aïvázis <michael.aivazis@para-sim.com>
# (c) 1998-2021 all rights reserved


# support
import merlin


# the manager of intermediate and final build products
class PrefixLayout(merlin.protocol, family="merlin.layouts.prefix"):
    """
    The manager of the all build products, both final and intermediate disposables
    """


    # required state
    bin = merlin.properties.path()
    bin.doc = "the location of executables"

    config = merlin.properties.path()
    config.doc = "global package configuration files"

    doc = merlin.properties.path()
    doc.doc = "package documentation"

    etc = merlin.properties.path()
    etc.doc = "host specific files"

    include = merlin.properties.path()
    include.doc = "library header files"

    lib = merlin.properties.path()
    lib.doc = "libraries"

    libexec = merlin.properties.path()
    libexec.doc = "binaries that are meant to be used by other packages"

    share = merlin.properties.path()
    share.doc = "architecture independent package files"

    var = merlin.properties.path()
    var.doc = "runtime files"


    # framework hooks
    @classmethod
    def pyre_default(cls, **kwds):
        """
        Specify the default implementation
        """
        # choose the default implementer
        return merlin.components.fhs


# end of file

[((19, 10, 19, 34), 'merlin.properties.path', 'merlin.properties.path', ({}, {}), '()', False, 'import merlin\n'), ((22, 13, 22, 37), 'merlin.properties.path', 'merlin.properties.path', ({}, {}), '()', False, 'import merlin\n'), ((25, 10, 25, 34), 'merlin.properties.path', 'merlin.properties.path', ({}, {}), '()', False, 'import merlin\n'), ((28, 10, 28, 34), 'merlin.properties.path', 'merlin.properties.path', ({}, {}), '()', False, 'import merlin\n'), ((31, 14, 31, 38), 'merlin.properties.path', 'merlin.properties.path', ({}, {}), '()', False, 'import merlin\n'), ((34, 10, 34, 34), 'merlin.properties.path', 'merlin.properties.path', ({}, {}), '()', False, 'import merlin\n'), ((37, 14, 37, 38), 'merlin.properties.path', 'merlin.properties.path', ({}, {}), '()', False, 'import merlin\n'), ((40, 12, 40, 36), 'merlin.properties.path', 'merlin.properties.path', ({}, {}), '()', False, 'import merlin\n'), ((43, 10, 43, 34), 'merlin.properties.path', 'merlin.properties.path', ({}, {}), '()', False, 'import merlin\n')]