package(
    default_visibility = ["//visibility:public"],
)

# Description:
#
# Khronos reference front-end for GLSL and ESSL, and sample SPIR-V generator.

licenses(["notice"])

exports_files(["LICENSE"])

COMMON_COPTS = select({
    "@bazel_tools//src/conditions:windows": [""],
    "//conditions:default": [
        "-Wall",
        "-Wuninitialized",
        "-Wunused",
        "-Wunused-local-typedefs",
        "-Wunused-parameter",
        "-Wunused-value",
        "-Wunused-variable",
        "-Wno-reorder",
        "-std=c++11",
        "-fvisibility=hidden",
        "-fvisibility-inlines-hidden",
        "-fno-exceptions",
        "-fno-rtti",
    ],
})

cc_library(
    name = "glslang",
    srcs = glob(
        [
            "glslang/GenericCodeGen/*.cpp",
            "glslang/MachineIndependent/*.cpp",
            "glslang/MachineIndependent/preprocessor/*.cpp",
            "hlsl/*.cpp",
        ],
        exclude = [
            "glslang/MachineIndependent/pch.cpp",
            "glslang/MachineIndependent/pch.h",
            "hlsl/pch.cpp",
            "hlsl/pch.h",
        ],
    ) + [
        "OGLCompilersDLL/InitializeDll.cpp",
    ] + select({
        "@bazel_tools//src/conditions:windows":
            ["glslang/OSDependent/Windows/ossource.cpp"],
        "//conditions:default":
            ["glslang/OSDependent/Unix/ossource.cpp"],
    }),
    hdrs = glob([
        "glslang/Include/*.h",
        "glslang/MachineIndependent/*.h",
        "glslang/MachineIndependent/preprocessor/*.h",
        "hlsl/*.h",
    ]) + [
        "OGLCompilersDLL/InitializeDll.h",
        "StandAlone/DirStackFileIncluder.h",
        "glslang/OSDependent/osinclude.h",
        "glslang/Public/ShaderLang.h",
    ],
    copts = COMMON_COPTS,
    defines = [
        "AMD_EXTENSIONS",
        "ENABLE_HLSL=0",
        "ENABLE_OPT=0",
        "NV_EXTENSIONS",
    ],
    linkopts = select({
        "@bazel_tools//src/conditions:windows": [""],
        "//conditions:default": ["-lm", "-lpthread"],
    }),
    linkstatic = 1,
)

genrule(
    name = "export_spirv_headers",
    srcs = [
        "SPIRV/GLSL.ext.AMD.h",
        "SPIRV/GLSL.ext.EXT.h",
        "SPIRV/GLSL.ext.KHR.h",
        "SPIRV/GLSL.ext.NV.h",
        "SPIRV/GLSL.std.450.h",
        "SPIRV/NonSemanticDebugPrintf.h",
        "SPIRV/spirv.hpp",
    ],
    outs = [
        "include/SPIRV/GLSL.ext.AMD.h",
        "include/SPIRV/GLSL.ext.EXT.h",
        "include/SPIRV/GLSL.ext.KHR.h",
        "include/SPIRV/GLSL.ext.NV.h",
        "include/SPIRV/GLSL.std.450.h",
        "include/SPIRV/NonSemanticDebugPrintf.h",
        "include/SPIRV/spirv.hpp",
    ],
    cmd = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/",
)

cc_library(
    name = "SPIRV_headers",
    hdrs = [":export_spirv_headers"],
    copts = COMMON_COPTS,
    includes = [
        "include",
        "include/SPIRV",
    ],
    linkstatic = 1,
)

cc_library(
    name = "SPIRV",
    srcs = glob(
        ["SPIRV/*.cpp"],
        exclude = [
            "SPIRV/SpvTools.cpp",
        ],
    ),
    hdrs = [
        "SPIRV/GlslangToSpv.h",
        "SPIRV/Logger.h",
        "SPIRV/SPVRemapper.h",
        "SPIRV/SpvBuilder.h",
        "SPIRV/SpvTools.h",
        "SPIRV/bitutils.h",
        "SPIRV/disassemble.h",
        "SPIRV/doc.h",
        "SPIRV/hex_float.h",
        "SPIRV/spvIR.h",
    ],
    copts = COMMON_COPTS,
    includes = ["SPIRV"],
    linkopts = select({
        "@bazel_tools//src/conditions:windows": [""],
        "//conditions:default": ["-lm"],
    }),
    linkstatic = 1,
    deps = [
        ":SPIRV_headers",
        ":glslang",
    ],
)

cc_library(
    name = "glslang-default-resource-limits",
    srcs = ["StandAlone/ResourceLimits.cpp"],
    hdrs = ["StandAlone/ResourceLimits.h"],
    copts = COMMON_COPTS,
    linkstatic = 1,
    deps = [":glslang"],
)

cc_binary(
    name = "glslangValidator",
    srcs = [
        "StandAlone/StandAlone.cpp",
        "StandAlone/Worklist.h",
    ],
    copts = COMMON_COPTS,
    deps = [
        ":SPIRV",
        ":glslang",
        ":glslang-default-resource-limits",
    ],
)

cc_binary(
    name = "spirv-remap",
    srcs = ["StandAlone/spirv-remap.cpp"],
    copts = COMMON_COPTS,
    deps = [
        ":SPIRV",
        ":glslang",
        ":glslang-default-resource-limits",
    ],
)

filegroup(
    name = "test_files",
    srcs = glob(
        ["Test/**"],
        exclude = [
            "Test/bump",
            "Test/glslangValidator",
            "Test/runtests",
        ],
    ),
)

cc_library(
    name = "glslang_test_lib",
    testonly = 1,
    srcs = [
        "gtests/HexFloat.cpp",
        "gtests/Initializer.h",
        "gtests/Settings.cpp",
        "gtests/Settings.h",
        "gtests/TestFixture.cpp",
        "gtests/TestFixture.h",
        "gtests/main.cpp",
    ],
    copts = COMMON_COPTS,
    data = [":test_files"],
    defines = select({
        # Unfortunately we can't use $(location) in cc_library at the moment.
        # See https://github.com/bazelbuild/bazel/issues/1023
        # So we'll specify the path manually.
        "@bazel_tools//src/conditions:windows":
            ["GLSLANG_TEST_DIRECTORY='\"../../../../../Test\"'"],
        "//conditions:default":
            ["GLSLANG_TEST_DIRECTORY='\"Test\"'"],
    }),
    linkstatic = 1,
    deps = [
        ":SPIRV",
        ":glslang",
        ":glslang-default-resource-limits",
        "@com_google_googletest//:gtest",
    ],
)

GLSLANG_TESTS = glob(
    ["gtests/*.FromFile.cpp"],
    # Since we are not building the SPIRV-Tools dependency, the following tests
    # cannot be performed.
    exclude = [
        "gtests/Hlsl.FromFile.cpp",
        "gtests/Spv.FromFile.cpp",
    ],
)

[cc_test(
    name = test_file.replace("gtests/", "").replace(".FromFile.cpp", "") + "_test",
    srcs = [test_file],
    copts = COMMON_COPTS,
    data = [
        ":test_files",
    ],
    deps = [
        ":SPIRV",
        ":glslang",
        ":glslang_test_lib",
    ],
) for test_file in GLSLANG_TESTS]
