gdbus_src = gnome.gdbus_codegen('generated-gdbus-no-docbook',
  'data/com.example.Sample.xml',
  interface_prefix : 'com.example.',
  namespace : 'Sample',
  annotations : [
    ['com.example.Hello()', 'org.freedesktop.DBus.Deprecated', 'true']
  ],
)

# check that empty annotations work
gdbus_src2 = gnome.gdbus_codegen(
  'generated-gdbus-no-docbook2',
  'data/com.example.Sample.xml',
  interface_prefix : 'com.example.',
  namespace : 'Sample',
  annotations : [],
)

assert(gdbus_src.length() == 2, 'expected 2 targets')
assert(gdbus_src[0].full_path().endswith('.c'), 'expected 1 c source file')
assert(gdbus_src[1].full_path().endswith('.h'), 'expected 1 c header file')

sample_xml = configure_file(input: 'data/com.example.Sample.xml',
  output: 'com.example.Sample.xml',
  copy: true)

gdbus_src = gnome.gdbus_codegen('generated-gdbus-no-docbook-files-posarg',
  sample_xml,
  interface_prefix : 'com.example.',
  namespace : 'Sample',
  annotations : [
    ['com.example.Hello()', 'org.freedesktop.DBus.Deprecated', 'true']
  ],
)
assert(gdbus_src.length() == 2, 'expected 2 targets')
assert(gdbus_src[0].full_path().endswith('.c'), 'expected 1 c source file')
assert(gdbus_src[1].full_path().endswith('.h'), 'expected 1 c header file')

gdbus_src = gnome.gdbus_codegen('generated-gdbus',
  sources : files('data/com.example.Sample.xml'),
  interface_prefix : 'com.example.',
  namespace : 'Sample',
  annotations : [
    ['com.example.Hello()', 'org.freedesktop.DBus.Deprecated', 'true'],
    ['com.example.Bye()', 'org.freedesktop.DBus.Deprecated', 'true'],
  ],
  docbook : 'generated-gdbus-doc',
  install_header : true,
  install_dir : get_option('includedir')
)
assert(gdbus_src.length() == 3, 'expected 3 targets')
assert(gdbus_src[0].full_path().endswith('.c'), 'expected 1 c source file')
assert(gdbus_src[1].full_path().endswith('.h'), 'expected 1 c header file')

if not pretend_glib_old and glib.version().version_compare('>=2.75.2')
  gdbus_src_docs = gnome.gdbus_codegen('generated-gdbus-docs',
    sources : files('data/com.example.Sample.xml'),
    interface_prefix : 'com.example.',
    namespace : 'Sample',
    docbook : 'generated-gdbus-docs-doc',
    rst : 'generated-gdbus-docs-rst',
    markdown : 'generated-gdbus-docs-md',
  )
  assert(gdbus_src_docs.length() == 5, 'expected 5 targets')
  assert(gdbus_src_docs[0].full_path().endswith('.c'), 'expected 1 c source file')
  assert(gdbus_src_docs[1].full_path().endswith('.h'), 'expected 1 c header file')
  assert('generated-gdbus-docs-doc' in gdbus_src_docs[2].full_path(), 'expected 1 docbook file')
  assert('generated-gdbus-docs-rst' in gdbus_src_docs[3].full_path(), 'expected 1 reStructuredText file')
  assert('generated-gdbus-docs-md' in gdbus_src_docs[4].full_path(), 'expected 1 markdown file')
endif

if not pretend_glib_old and glib.version().version_compare('>=2.51.3')
  includes = []
else
  includes = include_directories('..')
endif

# check that custom targets work
gdbus_xml_ct = custom_target('built xml sources for gdbus',
  output: 'com.example.SampleCustomTarget.xml',
  input: 'data/com.example.Sample.xml',
  command : [copyfile, '@INPUT@', '@OUTPUT@'])

gdbus_src_ct = gnome.gdbus_codegen(
  'generated-gdbus-customtarget-src',
  gdbus_xml_ct,
  interface_prefix : 'com.example.',
  namespace : 'Sample',
  annotations : [],
)
gdbus_src_cti = gnome.gdbus_codegen(
  'generated-gdbus-customtargetindex-src',
  gdbus_xml_ct[0],
  interface_prefix : 'com.example.',
  namespace : 'Sample',
  annotations : [],
)

gdbus_src_gen = gnome.gdbus_codegen(
  'generated-gdbus-generator-src',
  copyfile_gen.process('data/com.example.Sample.xml'),
  interface_prefix : 'com.example.',
  namespace : 'Sample',
  annotations : [],
)

gdbus_exe = executable('gdbus-test', 'gdbusprog.c',
  gdbus_src,
  include_directories : includes,
  dependencies : giounix)

test('gdbus', gdbus_exe)
