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

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

subdir('Channel')
subdir('Chassis')
subdir('Collection')
subdir('Common')
generated_others += custom_target(
    'xyz/openbmc_project/Common__markdown'.underscorify(),
    input: [ '../../../yaml/xyz/openbmc_project/Common.errors.yaml',  ],
    output: [ 'Common.md' ],
    depend_files: sdbusplusplus_depfiles,
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../yaml',
        'xyz/openbmc_project/Common',
    ],
)

subdir('Condition')
subdir('Console')
subdir('Control')
subdir('Dump')
subdir('HardwareIsolation')
generated_others += custom_target(
    'xyz/openbmc_project/HardwareIsolation__markdown'.underscorify(),
    input: [ '../../../yaml/xyz/openbmc_project/HardwareIsolation.errors.yaml',  ],
    output: [ 'HardwareIsolation.md' ],
    depend_files: sdbusplusplus_depfiles,
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../yaml',
        'xyz/openbmc_project/HardwareIsolation',
    ],
)

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

subdir('Ipmi')
subdir('Led')
subdir('Logging')
subdir('MCTP')
subdir('Memory')
subdir('Network')
subdir('Nvme')
subdir('Object')
subdir('ObjectMapper')
generated_others += custom_target(
    'xyz/openbmc_project/ObjectMapper__markdown'.underscorify(),
    input: [ '../../../yaml/xyz/openbmc_project/ObjectMapper.interface.yaml',  ],
    output: [ 'ObjectMapper.md' ],
    depend_files: sdbusplusplus_depfiles,
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../yaml',
        'xyz/openbmc_project/ObjectMapper',
    ],
)

subdir('PFR')
subdir('PLDM')
subdir('ScheduledTime')
generated_others += custom_target(
    'xyz/openbmc_project/ScheduledTime__markdown'.underscorify(),
    input: [ '../../../yaml/xyz/openbmc_project/ScheduledTime.errors.yaml',  ],
    output: [ 'ScheduledTime.md' ],
    depend_files: sdbusplusplus_depfiles,
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../yaml',
        'xyz/openbmc_project/ScheduledTime',
    ],
)

subdir('Sensor')
subdir('Smbios')
subdir('Software')
subdir('State')
subdir('Telemetry')
subdir('Time')
generated_others += custom_target(
    'xyz/openbmc_project/Time__markdown'.underscorify(),
    input: [ '../../../yaml/xyz/openbmc_project/Time.errors.yaml',  ],
    output: [ 'Time.md' ],
    depend_files: sdbusplusplus_depfiles,
    command: [
        sdbuspp_gen_meson_prog, '--command', 'markdown',
        '--output', meson.current_build_dir(),
        '--tool', sdbusplusplus_prog,
        '--directory', meson.current_source_dir() / '../../../yaml',
        'xyz/openbmc_project/Time',
    ],
)

subdir('User')
subdir('VirtualMedia')
