# Generated file; do not modify.
subdir('Boot')
subdir('CFMLimit')
generated_others += custom_target(
    'xyz/openbmc_project/Control/CFMLimit__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/CFMLimit.interface.yaml',  ],
    output: [ 'CFMLimit.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/CFMLimit',
    ],
)

subdir('ChassisCapabilities')
generated_others += custom_target(
    'xyz/openbmc_project/Control/ChassisCapabilities__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/ChassisCapabilities.interface.yaml',  ],
    output: [ 'ChassisCapabilities.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/ChassisCapabilities',
    ],
)

subdir('Device')
generated_others += custom_target(
    'xyz/openbmc_project/Control/Device__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/Device.errors.yaml',  ],
    output: [ 'Device.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/Device',
    ],
)

subdir('FanPwm')
generated_others += custom_target(
    'xyz/openbmc_project/Control/FanPwm__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/FanPwm.interface.yaml',  ],
    output: [ 'FanPwm.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/FanPwm',
    ],
)

subdir('FanRedundancy')
generated_others += custom_target(
    'xyz/openbmc_project/Control/FanRedundancy__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/FanRedundancy.interface.yaml',  ],
    output: [ 'FanRedundancy.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/FanRedundancy',
    ],
)

subdir('FanSpeed')
generated_others += custom_target(
    'xyz/openbmc_project/Control/FanSpeed__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/FanSpeed.interface.yaml',  ],
    output: [ 'FanSpeed.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/FanSpeed',
    ],
)

subdir('FieldMode')
generated_others += custom_target(
    'xyz/openbmc_project/Control/FieldMode__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/FieldMode.interface.yaml',  ],
    output: [ 'FieldMode.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/FieldMode',
    ],
)

subdir('Host')
generated_others += custom_target(
    'xyz/openbmc_project/Control/Host__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/Host.interface.yaml',  ],
    output: [ 'Host.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/Host',
    ],
)

subdir('MinimumShipLevel')
generated_others += custom_target(
    'xyz/openbmc_project/Control/MinimumShipLevel__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/MinimumShipLevel.interface.yaml',  ],
    output: [ 'MinimumShipLevel.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/MinimumShipLevel',
    ],
)

subdir('Mode')
generated_others += custom_target(
    'xyz/openbmc_project/Control/Mode__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/Mode.interface.yaml',  ],
    output: [ 'Mode.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/Mode',
    ],
)

subdir('Power')
subdir('PowerSupplyAttributes')
generated_others += custom_target(
    'xyz/openbmc_project/Control/PowerSupplyAttributes__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/PowerSupplyAttributes.interface.yaml',  ],
    output: [ 'PowerSupplyAttributes.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/PowerSupplyAttributes',
    ],
)

subdir('PowerSupplyRedundancy')
generated_others += custom_target(
    'xyz/openbmc_project/Control/PowerSupplyRedundancy__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/PowerSupplyRedundancy.interface.yaml',  ],
    output: [ 'PowerSupplyRedundancy.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/PowerSupplyRedundancy',
    ],
)

subdir('Processor')
subdir('Security')
subdir('Service')
subdir('TPM')
subdir('ThermalMode')
generated_others += custom_target(
    'xyz/openbmc_project/Control/ThermalMode__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/ThermalMode.interface.yaml',  ],
    output: [ 'ThermalMode.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/ThermalMode',
    ],
)

subdir('VoltageRegulatorControl')
generated_others += custom_target(
    'xyz/openbmc_project/Control/VoltageRegulatorControl__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/VoltageRegulatorControl.interface.yaml',  ],
    output: [ 'VoltageRegulatorControl.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/VoltageRegulatorControl',
    ],
)

subdir('VoltageRegulatorMode')
generated_others += custom_target(
    'xyz/openbmc_project/Control/VoltageRegulatorMode__markdown'.underscorify(),
    input: [ '../../../../xyz/openbmc_project/Control/VoltageRegulatorMode.interface.yaml',  ],
    output: [ 'VoltageRegulatorMode.md' ],
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../..',
        'xyz/openbmc_project/Control/VoltageRegulatorMode',
    ],
)

