
// This file is derived (manually) from the CMake targets.
// We only consider the targets that dEQP depends on (including transitive
// dependencies). Search for "GLSLANG_LIBRARIES" in dEQP.
//
// dEQP depends on:
// - glslang
//   - OGLCompiler
//   - OSDependent
//   - MachineIndependent
//     - OGLCompiler
//     - OSDependent
//     - GenericCodeGen
// - SPIRV (does not depend on SPIRV-Tools-opt because ENABLE_OPT=0)
//   - MachineIndependent
//     - ...
// - SPVRemapper

package {
    default_applicable_licenses: ["external_deqp-deps_glslang_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.
//
// large-scale-change included anything that looked like it might be a license
// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
//
// Please consider removing redundant or irrelevant files from 'license_text:'.
//
// large-scale-change filtered out the below license kinds as false-positives:
//   SPDX-license-identifier-GPL
//   SPDX-license-identifier-GPL-3.0
// See: http://go/android-license-faq
license {
    name: "external_deqp-deps_glslang_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-BSD",
        "SPDX-license-identifier-MIT",
    ],
    license_text: [
        "LICENSE",
        "LICENSE.txt",
    ],
}

genrule {
    name: "deqp_glslang_gen_build_info_h",
    srcs: ["CHANGES.md", "build_info.h.tmpl"],
    out: ["glslang/build_info.h"],
    cmd: "$(location) $$(dirname $(location CHANGES.md)) -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)",
    tool_files: ["build_info.py"],
}

cc_defaults {
    name: "deqp_glslang_defaults",
    defaults: ["deqp_and_deps_defaults"],
    cppflags: [
        "-Wno-enum-enum-conversion",
        "-Wno-implicit-fallthrough",
        "-Wno-missing-field-initializers",
        "-Wno-unused-variable",
        "-Wno-implicit-int-conversion",
        "-Wno-sign-conversion",
        "-Wno-unused-parameter",
        "-Wno-unused-but-set-variable",
    ],
    export_include_dirs: [
        ".",
    ],
    generated_headers: [
        "deqp_glslang_gen_build_info_h",
    ],
}

cc_library_static {
    name: "deqp_glslang_OSDependent",
    defaults: [
        "deqp_glslang_defaults",
    ],
    export_include_dirs: [
        "glslang/OSDependent",
    ],
    srcs: [
        "glslang/OSDependent/Unix/ossource.cpp",
    ],
}

cc_library_static {
    name: "deqp_glslang_OGLCompiler",
    defaults: [
        "deqp_glslang_defaults",
    ],
    export_include_dirs: [
        "OGLCompilersDLL",
    ],
    srcs: [
        "OGLCompilersDLL/InitializeDll.cpp",
    ],
}

cc_library_static {
    name: "deqp_glslang_MachineIndependent",
    defaults: [
        "deqp_glslang_defaults",
    ],
    export_include_dirs: [
        "glslang/MachineIndependent",
        "glslang/HLSL",
    ],
    srcs: [
//        "glslang/MachineIndependent/glslang.m4",
//        "glslang/MachineIndependent/glslang.y",
        "glslang/MachineIndependent/glslang_tab.cpp",
        "glslang/MachineIndependent/attribute.cpp",
        "glslang/MachineIndependent/Constant.cpp",
        "glslang/MachineIndependent/iomapper.cpp",
        "glslang/MachineIndependent/InfoSink.cpp",
        "glslang/MachineIndependent/Initialize.cpp",
        "glslang/MachineIndependent/IntermTraverse.cpp",
        "glslang/MachineIndependent/Intermediate.cpp",
        "glslang/MachineIndependent/ParseContextBase.cpp",
        "glslang/MachineIndependent/ParseHelper.cpp",
        "glslang/MachineIndependent/PoolAlloc.cpp",
        "glslang/MachineIndependent/RemoveTree.cpp",
        "glslang/MachineIndependent/Scan.cpp",
        "glslang/MachineIndependent/ShaderLang.cpp",
        "glslang/MachineIndependent/SpirvIntrinsics.cpp",
        "glslang/MachineIndependent/SymbolTable.cpp",
        "glslang/MachineIndependent/Versions.cpp",
        "glslang/MachineIndependent/intermOut.cpp",
        "glslang/MachineIndependent/limits.cpp",
        "glslang/MachineIndependent/linkValidate.cpp",
        "glslang/MachineIndependent/parseConst.cpp",
        "glslang/MachineIndependent/reflection.cpp",
        "glslang/MachineIndependent/preprocessor/Pp.cpp",
        "glslang/MachineIndependent/preprocessor/PpAtom.cpp",
        "glslang/MachineIndependent/preprocessor/PpContext.cpp",
        "glslang/MachineIndependent/preprocessor/PpScanner.cpp",
        "glslang/MachineIndependent/preprocessor/PpTokens.cpp",
        "glslang/MachineIndependent/propagateNoContraction.cpp",

        "glslang/HLSL/hlslAttributes.cpp",
        "glslang/HLSL/hlslParseHelper.cpp",
        "glslang/HLSL/hlslScanContext.cpp",
        "glslang/HLSL/hlslOpMap.cpp",
        "glslang/HLSL/hlslTokenStream.cpp",
        "glslang/HLSL/hlslGrammar.cpp",
        "glslang/HLSL/hlslParseables.cpp",
    ],
    static_libs: [
        "deqp_glslang_OGLCompiler",
        "deqp_glslang_OSDependent",
        "deqp_glslang_GenericCodeGen",
    ],
}

cc_library_static {
    name: "deqp_glslang_glslang",
    defaults: [
        "deqp_glslang_defaults",
    ],
    export_include_dirs: [
        "glslang",
    ],
    srcs: [
        "glslang/CInterface/glslang_c_interface.cpp"
    ],
    static_libs: [
        "deqp_glslang_OGLCompiler",
        "deqp_glslang_OSDependent",
        "deqp_glslang_MachineIndependent",
    ],
}

cc_library_static {
    name: "deqp_glslang_SPIRV",
    defaults: [
        "deqp_glslang_defaults",
    ],
    export_include_dirs: [
        "SPIRV",
    ],
    srcs: [
        "SPIRV/GlslangToSpv.cpp",
        "SPIRV/InReadableOrder.cpp",
        "SPIRV/Logger.cpp",
        "SPIRV/SpvBuilder.cpp",
        "SPIRV/SpvPostProcess.cpp",
        "SPIRV/doc.cpp",
        "SPIRV/SpvTools.cpp",
        "SPIRV/disassemble.cpp",
        "SPIRV/CInterface/spirv_c_interface.cpp",
    ],
    static_libs: [
        "deqp_glslang_MachineIndependent",
    ],
}

cc_library_static {
    name: "deqp_glslang_SPVRemapper",
    defaults: [
        "deqp_glslang_defaults",
    ],
    export_include_dirs: [
        "SPIRV",
    ],
    srcs: [
        "SPIRV/SPVRemapper.cpp",
        "SPIRV/doc.cpp",
    ],
}

cc_library_static {
    name: "deqp_glslang_GenericCodeGen",
    defaults: [
        "deqp_glslang_defaults",
    ],
    export_include_dirs: [
        "glslang/GenericCodeGen",
    ],
    srcs: [
        "glslang/GenericCodeGen/CodeGen.cpp",
        "glslang/GenericCodeGen/Link.cpp",
    ],
}
