// 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.

// Build and use the "wayland_protocol_codegen" extension.
bootstrap_go_package {
    name: "soong-wayland-protocol-codegen",
    pkgPath: "android/soong/external/wayland-protocol",
    deps: [
        "blueprint",
        "blueprint-proptools",
        "soong-android",
        "soong-genrule",
    ],
    srcs: [
        "wayland_protocol_codegen.go",
    ],
    pluginFor: ["soong_build"],
}

filegroup {
    name: "wayland_extension_protocols",
    srcs: [
        "freedesktop.org/**/*.xml",
        "chromium.org/**/*.xml",
    ],
}

// Generate protocol source files used by both client and server
wayland_protocol_codegen {
    name: "wayland_extension_protocol_sources",
    cmd: "$(location wayland_scanner) code < $(in) > $(out)",
    suffix: ".c",
    srcs: [":wayland_extension_protocols"],
    tools: ["wayland_scanner"],
}

// Generate protocol header files used by the client
wayland_protocol_codegen {
    name: "wayland_extension_client_protocol_headers",
    cmd: "$(location wayland_scanner) client-header < $(in) > $(out)",
    suffix: "-client-protocol.h",
    srcs: [":wayland_extension_protocols"],
    tools: ["wayland_scanner"],
}

// Generate a library with the protocol files, configured to export the client
// header files
cc_library_static {
    name: "libwayland_extension_client_protocols",
    vendor_available: true,
    cflags: [
        "-Wall",
        "-Wextra",
        "-Werror",
        "-g",
        "-fvisibility=hidden"
    ],
    static_libs: ["libwayland_client"],
    generated_sources: ["wayland_extension_protocol_sources"],
    generated_headers: ["wayland_extension_client_protocol_headers"],
    export_generated_headers: ["wayland_extension_client_protocol_headers"],
}

subdirs = ["flinger_headers"]
