# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

config("wayland_config") {
  include_dirs = [
    "include/src",
    "include/protocol",
    "src/src",
  ]
}

source_set("wayland_util") {
  sources = [
    "src/src/wayland-util.c",
    "src/src/wayland-util.h",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  public_configs = [ ":wayland_config" ]
}

source_set("wayland_private") {
  sources = [
    "src/src/connection.c",
    "src/src/wayland-os.c",
    "src/src/wayland-os.h",
    "src/src/wayland-private.h",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//build/config/linux:libffi",
    ":wayland_config",
  ]
}

source_set("wayland_protocol") {
  sources = [
    "protocol/wayland-protocol.c",
  ]

  deps = [
    ":wayland_util",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  public_configs = [ ":wayland_config" ]
}

source_set("wayland_server") {
  sources = [
    "include/protocol/wayland-server-protocol.h",
    "src/src/event-loop.c",
    "src/src/wayland-server.c",
    "src/src/wayland-shm.c",
  ]

  deps = [
    ":wayland_private",
    ":wayland_protocol",
    ":wayland_util",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//build/config/linux:libffi",
  ]

  public_configs = [ ":wayland_config" ]
}

source_set("wayland_client") {
  sources = [
    "include/protocol/wayland-client-protocol.h",
    "src/src/wayland-client.c",
  ]

  deps = [
    ":wayland_private",
    ":wayland_protocol",
    ":wayland_util",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//build/config/linux:libffi",
  ]

  public_configs = [ ":wayland_config" ]
}
