# Generated file; do not modify.
subdir('Activation')
generated_others += custom_target(
    'xyz/openbmc_project/Software/Activation__markdown'.underscorify(),
    input: [ '../../../../yaml/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.current_source_dir() / '../../../../yaml',
        'xyz/openbmc_project/Software/Activation',
    ],
)

subdir('ActivationBlocksTransition')
generated_others += custom_target(
    'xyz/openbmc_project/Software/ActivationBlocksTransition__markdown'.underscorify(),
    input: [ '../../../../yaml/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.current_source_dir() / '../../../../yaml',
        'xyz/openbmc_project/Software/ActivationBlocksTransition',
    ],
)

subdir('ActivationProgress')
generated_others += custom_target(
    'xyz/openbmc_project/Software/ActivationProgress__markdown'.underscorify(),
    input: [ '../../../../yaml/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.current_source_dir() / '../../../../yaml',
        'xyz/openbmc_project/Software/ActivationProgress',
    ],
)

subdir('ApplyOptions')
generated_others += custom_target(
    'xyz/openbmc_project/Software/ApplyOptions__markdown'.underscorify(),
    input: [ '../../../../yaml/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.current_source_dir() / '../../../../yaml',
        'xyz/openbmc_project/Software/ApplyOptions',
    ],
)

subdir('ApplyTime')
generated_others += custom_target(
    'xyz/openbmc_project/Software/ApplyTime__markdown'.underscorify(),
    input: [ '../../../../yaml/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.current_source_dir() / '../../../../yaml',
        'xyz/openbmc_project/Software/ApplyTime',
    ],
)

subdir('ExtendedVersion')
generated_others += custom_target(
    'xyz/openbmc_project/Software/ExtendedVersion__markdown'.underscorify(),
    input: [ '../../../../yaml/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.current_source_dir() / '../../../../yaml',
        'xyz/openbmc_project/Software/ExtendedVersion',
    ],
)

subdir('RedundancyPriority')
generated_others += custom_target(
    'xyz/openbmc_project/Software/RedundancyPriority__markdown'.underscorify(),
    input: [ '../../../../yaml/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.current_source_dir() / '../../../../yaml',
        'xyz/openbmc_project/Software/RedundancyPriority',
    ],
)

subdir('RequestedRedundancyPriority')
generated_others += custom_target(
    'xyz/openbmc_project/Software/RequestedRedundancyPriority__markdown'.underscorify(),
    input: [ '../../../../yaml/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.current_source_dir() / '../../../../yaml',
        'xyz/openbmc_project/Software/RequestedRedundancyPriority',
    ],
)

subdir('Version')
generated_others += custom_target(
    'xyz/openbmc_project/Software/Version__markdown'.underscorify(),
    input: [ '../../../../yaml/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.current_source_dir() / '../../../../yaml',
        'xyz/openbmc_project/Software/Version',
    ],
)

