// Copyright (C) 2017 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package {
    default_applicable_licenses: ["external_wayland_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
// See: http://go/android-license-faq
license {
    name: "external_wayland_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-MIT",
        "legacy_unencumbered",
    ],
    license_text: [
        "COPYING",
    ],
}

cc_defaults {
    name: "wayland_defaults",

    cflags: [
        "-Wall",
        "-Wextra",
        "-g",
        "-Wstrict-prototypes",
        "-Wmissing-prototypes",
        "-fvisibility=hidden",
        "-Wno-cast-qual",
        "-Wno-pointer-arith",
        "-Wno-unused-parameter",
        "-Wno-unused-variable",
    ],
}

filegroup {
    name: "wayland_core_protocol",
    srcs: [
        "protocol/wayland.xml",
    ],
}

// Build wayland_scanner, used to generate code
cc_binary_host {
    name: "wayland_scanner",
    defaults: ["wayland_defaults"],
    srcs: [
        "src/scanner.c",
        "src/wayland-util.c",
    ],
    static_libs: ["libexpat"],
}

// Generate protocol source files used by both client and server (static)
genrule {
    name: "wayland_core_protocol_sources_static",
    cmd: "$(location wayland_scanner) -s private-code < $(in) > $(out)",
    srcs: [":wayland_core_protocol"],
    out: ["wayland-protocol.c"],
    tools: ["wayland_scanner"],
}

// Generate protocol source files used by both client and server (shared)
genrule {
    name: "wayland_core_protocol_sources_shared",
    cmd: "$(location wayland_scanner) -s public-code < $(in) > $(out)",
    srcs: [":wayland_core_protocol"],
    out: ["wayland-protocol.c"],
    tools: ["wayland_scanner"],
}

// Generate protocol header files used by the client
genrule {
    name: "wayland_core_client_protocol_headers",
    cmd: "$(location wayland_scanner) -s client-header < $(in) > $(out)",
    srcs: [":wayland_core_protocol"],
    out: ["wayland-client-protocol.h"],
    tools: ["wayland_scanner"],
}

// Generate protocol header files used by the server
genrule {
    name: "wayland_core_server_protocol_headers",
    cmd: "$(location wayland_scanner) -s server-header < $(in) > $(out)",
    srcs: [":wayland_core_protocol"],
    out: ["wayland-server-protocol.h"],
    tools: ["wayland_scanner"],
}

// Build wayland_client
cc_defaults {
    name: "libwayland_client_defaults",
    defaults: ["wayland_defaults"],
    srcs: [
        "src/connection.c",
        "src/wayland-client.c",
        "src/wayland-os.c",
        "src/wayland-util.c",
    ],
    static_libs: ["libffi"],
    local_include_dirs: ["src"],
    generated_headers: [
        "wayland_core_client_protocol_headers",
    ],
    export_include_dirs: ["src", "egl"],
    export_generated_headers: [
        "wayland_core_client_protocol_headers",
    ],
}
cc_library_static {
    name: "libwayland_client_static",
    vendor_available: true,
    defaults: ["libwayland_client_defaults"],
    generated_sources: ["wayland_core_protocol_sources_static"],
    apex_available: [
        "//apex_available:platform",
        "com.android.virt",
    ],
}
cc_library_host_shared {
    name: "libwayland_client",
    defaults: ["libwayland_client_defaults"],
    generated_sources: ["wayland_core_protocol_sources_shared"],
}

// Build wayland_server
cc_library_static {
    name: "libwayland_server",
    vendor_available: true,
    host_supported: true,
    defaults: ["wayland_defaults"],
    srcs: [
        "src/connection.c",
        "src/wayland-os.c",
        "src/wayland-util.c",
        "src/wayland-server.c",
        "src/wayland-shm.c",
        "src/event-loop.c",
    ],
    generated_sources: ["wayland_core_protocol_sources_static"],
    static_libs: ["libffi"],
    local_include_dirs: ["src"],
    generated_headers: [
        "wayland_core_server_protocol_headers",
    ],
    export_include_dirs: ["src"],
    export_generated_headers: [
        "wayland_core_server_protocol_headers",
    ],
}
