gtk_sources = [
  'gstgtkbasesink.c',
  'gstgtksink.c',
  'gstgtkutils.c',
  'gstplugin.c',
  'gtkgstbasewidget.c',
  'gtkgstwidget.c',
]

gtk_defines = []
optional_deps = []

gtk_dep = dependency('gtk+-3.0', required : false)
if gtk_dep.found()
  if build_gstgl and gstgl_dep.found() and gtk_dep.version().version_compare('>=3.15.0')
    have_gtk3_gl_windowing = false

    if x11_dep.found() and gl_dep.found()
      gtk_x11_dep = dependency('gtk+-x11-3.0', required : false)
      if gtk_x11_dep.found()
        optional_deps += gtk_x11_dep
        have_gtk3_gl_windowing = true
      endif
    endif

    if wayland_egl_dep.found() and egl_dep.found()
      gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : false)
      if gtk_wayland_dep.found()
        optional_deps += gtk_wayland_dep
        have_gtk3_gl_windowing = true
      endif
    endif

    if have_gtk3_gl_windowing
      gtk_sources += [
        'gstgtkglsink.c',
        'gtkgstglwidget.c',
      ]
      optional_deps += gstgl_dep
      gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK3_GL']
    endif
  endif

  gstgtk = library('gstgtk',
    gtk_sources,
    c_args : gst_plugins_bad_args + gtk_defines,
    link_args : noseh_link_args,
    include_directories : [configinc],
    dependencies : [gtk_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps,
    install : true,
    install_dir : plugins_install_dir,
  )
endif

