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