subdir('dep1')

libsources = ['meson-sample.c', 'meson-sample.h']
lib2sources = ['meson-sample2.c', 'meson-sample2.h']

gen_source = custom_target(
    'meson_sample3.h',
    input: 'meson-sample.h',
    output: 'meson-sample3.h',
    command: [find_program('copy.py'), '@INPUT@', '@OUTPUT@'],
    build_by_default: false, # this will force a race condition if one exists
)

girlib = shared_library(
    'gir_lib',
    sources: libsources,
    c_args: '-DMESON_TEST_2',
    dependencies: [gobj, dep1_dep],
    install: true,
)

girlib2 = shared_library('gir_lib2', sources: lib2sources, dependencies: [gobj], install: true)

girexe = executable(
    'girprog',
    sources: 'prog.c',
    c_args: '-DMESON_TEST_2',
    dependencies: [glib, gobj, gir, dep1_dep],
    link_with: girlib,
)

fake_dep = dependency('no-way-this-exists', required: false)

gnome.generate_gir(
    girlib,
    girlib2,
    sources: [libsources, lib2sources, gen_source],
    env: {'CPPFLAGS': '-DMESON_TEST_2'},
    nsversion: '1.0',
    namespace: 'Meson',
    symbol_prefix: 'meson',
    identifier_prefix: 'Meson',
    includes: ['GObject-2.0', 'MesonDep1-1.0'],
    # dep1_dep pulls in dep2_dep for us
    dependencies: [[fake_dep, dep1_dep]],
    install: true,
    build_by_default: true,
)

test('gobject introspection/c', girexe)
gir_paths = ':'.join([girlib.outdir(), dep1lib.outdir(), dep2lib.outdir(), dep3lib.outdir()])
envdata = environment()
envdata.append('GI_TYPELIB_PATH', gir_paths, separator: ':')
envdata.append('LD_LIBRARY_PATH', gir_paths)
if ['windows', 'cygwin'].contains(host_machine.system())
    envdata.append('PATH', gir_paths)
endif
test('gobject introspection/py', find_program('prog.py'), env: envdata)
