# Generated file; do not modify.
subdir('Activation')
generated_others += custom_target(
    'xyz/openbmc_project/Software/Activation__markdown'.underscorify(),
    input: [ meson.project_source_root() / 'xyz/openbmc_project/Software/Activation.interface.yaml',  ],
    output: [ 'Activation.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.project_source_root(),
        'xyz/openbmc_project/Software/Activation',
    ],
    build_by_default: true,
)

subdir('ActivationBlocksTransition')
generated_others += custom_target(
    'xyz/openbmc_project/Software/ActivationBlocksTransition__markdown'.underscorify(),
    input: [ meson.project_source_root() / 'xyz/openbmc_project/Software/ActivationBlocksTransition.interface.yaml',  ],
    output: [ 'ActivationBlocksTransition.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.project_source_root(),
        'xyz/openbmc_project/Software/ActivationBlocksTransition',
    ],
    build_by_default: true,
)

subdir('ActivationProgress')
generated_others += custom_target(
    'xyz/openbmc_project/Software/ActivationProgress__markdown'.underscorify(),
    input: [ meson.project_source_root() / 'xyz/openbmc_project/Software/ActivationProgress.interface.yaml',  ],
    output: [ 'ActivationProgress.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.project_source_root(),
        'xyz/openbmc_project/Software/ActivationProgress',
    ],
    build_by_default: true,
)

subdir('ApplyOptions')
generated_others += custom_target(
    'xyz/openbmc_project/Software/ApplyOptions__markdown'.underscorify(),
    input: [ meson.project_source_root() / 'xyz/openbmc_project/Software/ApplyOptions.interface.yaml',  ],
    output: [ 'ApplyOptions.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.project_source_root(),
        'xyz/openbmc_project/Software/ApplyOptions',
    ],
    build_by_default: true,
)

subdir('ApplyTime')
generated_others += custom_target(
    'xyz/openbmc_project/Software/ApplyTime__markdown'.underscorify(),
    input: [ meson.project_source_root() / 'xyz/openbmc_project/Software/ApplyTime.interface.yaml',  ],
    output: [ 'ApplyTime.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.project_source_root(),
        'xyz/openbmc_project/Software/ApplyTime',
    ],
    build_by_default: true,
)

subdir('ExtendedVersion')
generated_others += custom_target(
    'xyz/openbmc_project/Software/ExtendedVersion__markdown'.underscorify(),
    input: [ meson.project_source_root() / 'xyz/openbmc_project/Software/ExtendedVersion.interface.yaml',  ],
    output: [ 'ExtendedVersion.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.project_source_root(),
        'xyz/openbmc_project/Software/ExtendedVersion',
    ],
    build_by_default: true,
)

subdir('RedundancyPriority')
generated_others += custom_target(
    'xyz/openbmc_project/Software/RedundancyPriority__markdown'.underscorify(),
    input: [ meson.project_source_root() / 'xyz/openbmc_project/Software/RedundancyPriority.interface.yaml',  ],
    output: [ 'RedundancyPriority.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.project_source_root(),
        'xyz/openbmc_project/Software/RedundancyPriority',
    ],
    build_by_default: true,
)

subdir('RequestedRedundancyPriority')
generated_others += custom_target(
    'xyz/openbmc_project/Software/RequestedRedundancyPriority__markdown'.underscorify(),
    input: [ meson.project_source_root() / 'xyz/openbmc_project/Software/RequestedRedundancyPriority.interface.yaml',  ],
    output: [ 'RequestedRedundancyPriority.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.project_source_root(),
        'xyz/openbmc_project/Software/RequestedRedundancyPriority',
    ],
    build_by_default: true,
)

subdir('Version')
generated_others += custom_target(
    'xyz/openbmc_project/Software/Version__markdown'.underscorify(),
    input: [ meson.project_source_root() / 'xyz/openbmc_project/Software/Version.errors.yaml', meson.project_source_root() / 'xyz/openbmc_project/Software/Version.interface.yaml',  ],
    output: [ 'Version.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.project_source_root(),
        'xyz/openbmc_project/Software/Version',
    ],
    build_by_default: true,
)

