wayland_protocols_dir = wayland_protocols.get_pkgconfig_variable('pkgdatadir')
wayland_scanner_bin   = wayland_scanner.get_pkgconfig_variable('wayland_scanner')

protocols_server = [
  wayland_protocols_dir / 'stable/xdg-shell/xdg-shell.xml',
  'kiwmi-ipc.xml',
  'wlr-layer-shell-unstable-v1.xml',
]

protocols_server_src = []
protocols_server_inc = []

foreach protocol : protocols_server
  protocols_server_src += custom_target(
    protocol.underscorify() + '_server_c',
    input: protocol,
    output: '@BASENAME@-protocol.c',
    command: [wayland_scanner_bin, 'private-code', '@INPUT@', '@OUTPUT@'],
  )

  protocols_server_inc += custom_target(
    protocol.underscorify() + '_server_h',
    input: protocol,
    output: '@BASENAME@-protocol.h',
    command: [wayland_scanner_bin, 'server-header', '@INPUT@', '@OUTPUT@'],
  )
endforeach

protocols_server_lib = static_library(
  'protocols_server',
  [protocols_server_src, protocols_server_inc],
)

protocols_server = declare_dependency(
  link_with: protocols_server_lib,
  sources: protocols_server_inc,
)

protocols_client = [
  'kiwmi-ipc.xml',
]

protocols_client_src = []
protocols_client_inc = []

foreach protocol : protocols_client
  protocols_client_src += custom_target(
    protocol.underscorify() + '_client_c',
    input: protocol,
    output: '@BASENAME@-client-protocol.c',
    command: [wayland_scanner_bin, 'private-code', '@INPUT@', '@OUTPUT@'],
  )

  protocols_client_inc += custom_target(
    protocol.underscorify() + '_client_h',
    input: protocol,
    output: '@BASENAME@-client-protocol.h',
    command: [wayland_scanner_bin, 'client-header', '@INPUT@', '@OUTPUT@'],
  )
endforeach

protocols_client_lib = static_library(
  'protocols_client',
  [protocols_client_src, protocols_client_inc],
)

protocols_client = declare_dependency(
  link_with: protocols_client_lib,
  sources: protocols_client_inc,
)