# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//testing/test.gni")

declare_args() {
  internal_khronos_glcts_tests = false
}

if (internal_khronos_glcts_tests) {
  glcts_gtf_runfiles =
      [ "//third_party/khronos_glcts/GTF_ES/glsl/GTF/mustpass_es20.run" ]

  copy("glcts_resources") {
    sources = [
      "//third_party/khronos_glcts/cts/data",
    ]
    outputs = [
      "$root_out_dir/khronos_glcts_data/gl_cts/{{source_file_part}}",
    ]
  }

  copy("glcts_gtf_resources") {
    sources = [
                "//third_party/khronos_glcts/GTF_ES/glsl/GTF/GL",
                "//third_party/khronos_glcts/GTF_ES/glsl/GTF/GL2ExtensionTests",
                "//third_party/khronos_glcts/GTF_ES/glsl/GTF/GL2FixedTests",
                "//third_party/khronos_glcts/GTF_ES/glsl/GTF/GL2Tests",
                "//third_party/khronos_glcts/GTF_ES/glsl/GTF/GLCoverage",
              ] + glcts_gtf_runfiles
    outputs = [
      "$root_out_dir/khronos_glcts_data/gl_cts/GTF/{{source_file_part}}",
    ]
  }

  action("generate_khronos_glcts_tests") {
    script = "generate_khronos_glcts_tests.py"
    sources = [ "khronos_glcts_test.h" ] + glcts_gtf_runfiles
    outputs = [
      "$target_gen_dir/khronos_glcts_test_autogen.cc",
    ]
    args = [ "--outdir=" + rebase_path("$target_gen_dir") ] + glcts_gtf_runfiles
  }

  config("defaults_config") {
    defines = [
      "DEQP_TARGET_NAME=\"chrome-gpu-command-buffer\"",
      "DEQP_SUPPORT_GLES2=1",
      "DEQP_SUPPORT_EGL=1",
      "GTF_API=GTF_GLES20",
    ]

    if (is_linux) {
      defines += [ "_XOPEN_SOURCE=500" ]
    }
  }

  config("debase_config") {
    include_dirs = [ "//third_party/khronos_glcts/framework/delibs/debase" ]
  }
  source_set("debase") {
    sources = [
      "//third_party/khronos_glcts/framework/delibs/debase/deDefs.c",
      "//third_party/khronos_glcts/framework/delibs/debase/deDefs.h",
      "//third_party/khronos_glcts/framework/delibs/debase/deFloat16.c",
      "//third_party/khronos_glcts/framework/delibs/debase/deFloat16.h",
      "//third_party/khronos_glcts/framework/delibs/debase/deInt32.c",
      "//third_party/khronos_glcts/framework/delibs/debase/deInt32.h",
      "//third_party/khronos_glcts/framework/delibs/debase/deInt32Test.c",
      "//third_party/khronos_glcts/framework/delibs/debase/deMath.c",
      "//third_party/khronos_glcts/framework/delibs/debase/deMath.h",
      "//third_party/khronos_glcts/framework/delibs/debase/deMemory.c",
      "//third_party/khronos_glcts/framework/delibs/debase/deMemory.h",
      "//third_party/khronos_glcts/framework/delibs/debase/deRandom.c",
      "//third_party/khronos_glcts/framework/delibs/debase/deRandom.h",
      "//third_party/khronos_glcts/framework/delibs/debase/deString.c",
      "//third_party/khronos_glcts/framework/delibs/debase/deString.h",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":debase_config" ]

    if (is_linux) {
      cflags_c = [ "-Wno-implicit-function-declaration" ]
    }
  }

  config("depool_config") {
    include_dirs = [ "//third_party/khronos_glcts/framework/delibs/depool" ]
  }
  source_set("depool") {
    sources = [
      "//third_party/khronos_glcts/framework/delibs/depool/deMemPool.c",
      "//third_party/khronos_glcts/framework/delibs/depool/deMemPool.h",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolArray.c",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolArray.h",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolHash.c",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolHash.h",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolHashArray.c",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolHashArray.h",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolHashSet.c",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolHashSet.h",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolHeap.c",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolHeap.h",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolMultiSet.c",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolMultiSet.h",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolSet.c",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolSet.h",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolStringBuilder.c",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolStringBuilder.h",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolTest.c",
      "//third_party/khronos_glcts/framework/delibs/depool/dePoolTest.h",
    ]

    deps = [
      ":debase",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":depool_config" ]
  }

  config("dethread_config") {
    include_dirs = [ "//third_party/khronos_glcts/framework/delibs/dethread" ]
  }
  source_set("dethread") {
    sources = [
      "//third_party/khronos_glcts/framework/delibs/dethread/deAtomic.c",
      "//third_party/khronos_glcts/framework/delibs/dethread/deAtomic.h",
      "//third_party/khronos_glcts/framework/delibs/dethread/deMutex.h",
      "//third_party/khronos_glcts/framework/delibs/dethread/deSemaphore.h",
      "//third_party/khronos_glcts/framework/delibs/dethread/deThread.h",
      "//third_party/khronos_glcts/framework/delibs/dethread/deThreadLocal.h",
      "//third_party/khronos_glcts/framework/delibs/dethread/deThreadTest.c",
      "//third_party/khronos_glcts/framework/delibs/dethread/deThreadTest.h",
    ]

    deps = [
      ":debase",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":dethread_config" ]

    if (is_linux) {
      sources += [
        "//third_party/khronos_glcts/framework/delibs/dethread/unix/deMutexUnix.c",
        "//third_party/khronos_glcts/framework/delibs/dethread/unix/deSemaphoreUnix.c",
        "//third_party/khronos_glcts/framework/delibs/dethread/unix/deThreadLocalUnix.c",
        "//third_party/khronos_glcts/framework/delibs/dethread/unix/deThreadUnix.c",
      ]
    }
  }

  config("deutil_config") {
    include_dirs = [ "//third_party/khronos_glcts/framework/delibs/deutil" ]
  }
  source_set("deutil") {
    sources = [
      "//third_party/khronos_glcts/framework/delibs/deutil/deClock.c",
      "//third_party/khronos_glcts/framework/delibs/deutil/deClock.h",
      "//third_party/khronos_glcts/framework/delibs/deutil/deCommandLine.c",
      "//third_party/khronos_glcts/framework/delibs/deutil/deCommandLine.h",
      "//third_party/khronos_glcts/framework/delibs/deutil/deDynamicLibrary.c",
      "//third_party/khronos_glcts/framework/delibs/deutil/deDynamicLibrary.h",
      "//third_party/khronos_glcts/framework/delibs/deutil/deFile.c",
      "//third_party/khronos_glcts/framework/delibs/deutil/deFile.h",
      "//third_party/khronos_glcts/framework/delibs/deutil/deProcess.c",
      "//third_party/khronos_glcts/framework/delibs/deutil/deProcess.h",
      "//third_party/khronos_glcts/framework/delibs/deutil/deSocket.c",
      "//third_party/khronos_glcts/framework/delibs/deutil/deSocket.h",
      "//third_party/khronos_glcts/framework/delibs/deutil/deTimer.c",
      "//third_party/khronos_glcts/framework/delibs/deutil/deTimer.h",
      "//third_party/khronos_glcts/framework/delibs/deutil/deTimerTest.c",
      "//third_party/khronos_glcts/framework/delibs/deutil/deTimerTest.h",
    ]

    deps = [
      ":debase",
      ":depool",
      ":dethread",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":deutil_config" ]

    if (is_linux) {
      cflags_c = [ "-Wno-string-conversion" ]
    }
  }

  config("decpp_config") {
    include_dirs = [ "//third_party/khronos_glcts/framework/delibs/decpp" ]
  }
  source_set("decpp") {
    sources = [
      "//third_party/khronos_glcts/framework/delibs/decpp/deBlockBuffer.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deBlockBuffer.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deDefs.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deDefs.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deDirectoryIterator.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deDirectoryIterator.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deDynamicLibrary.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deDynamicLibrary.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deFilePath.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deFilePath.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deMemPool.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deMemPool.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deMutex.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deMutex.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/dePoolArray.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/dePoolArray.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/dePoolString.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/dePoolString.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deRandom.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deRandom.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deRingBuffer.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deRingBuffer.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deSemaphore.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deSemaphore.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deSharedPtr.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deSharedPtr.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deSocket.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deSocket.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deStringUtil.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deStringUtil.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deThread.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deThread.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deThreadSafeRingBuffer.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deThreadSafeRingBuffer.hpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deUniquePtr.cpp",
      "//third_party/khronos_glcts/framework/delibs/decpp/deUniquePtr.hpp",
    ]

    deps = [
      ":debase",
      ":depool",
      ":dethread",
      ":deutil",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":decpp_config" ]

    if (is_linux) {
      configs -= [ "//build/config/gcc:no_exceptions" ]
    }
  }

  group("delibs") {
    public_deps = [
      ":debase",
      ":decpp",
      ":depool",
      ":dethread",
      ":deutil",
    ]
  }

  config("qphelper_config") {
    include_dirs = [ "//third_party/khronos_glcts/framework/qphelper" ]
  }
  source_set("qphelper") {
    sources = [
      "//third_party/khronos_glcts/framework/qphelper/qpCommandLine.c",
      "//third_party/khronos_glcts/framework/qphelper/qpCommandLine.h",
      "//third_party/khronos_glcts/framework/qphelper/qpCrashHandler.c",
      "//third_party/khronos_glcts/framework/qphelper/qpCrashHandler.h",
      "//third_party/khronos_glcts/framework/qphelper/qpDebugOut.c",
      "//third_party/khronos_glcts/framework/qphelper/qpDebugOut.h",
      "//third_party/khronos_glcts/framework/qphelper/qpInfo.c",
      "//third_party/khronos_glcts/framework/qphelper/qpInfo.h",
      "//third_party/khronos_glcts/framework/qphelper/qpTestLog.c",
      "//third_party/khronos_glcts/framework/qphelper/qpTestLog.h",
      "//third_party/khronos_glcts/framework/qphelper/qpWatchDog.c",
      "//third_party/khronos_glcts/framework/qphelper/qpWatchDog.h",
      "//third_party/khronos_glcts/framework/qphelper/qpXmlWriter.c",
      "//third_party/khronos_glcts/framework/qphelper/qpXmlWriter.h",
    ]

    defines = [ "QP_SUPPORT_PNG" ]

    deps = [
      ":delibs",
      "//third_party/libpng:libpng",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":qphelper_config" ]

    if (is_linux) {
      cflags_c = [ "-Wno-string-conversion" ]
    }
  }

  config("tcutil_config") {
    include_dirs = [ "//third_party/khronos_glcts/framework/common" ]
  }
  source_set("tcutil") {
    sources = [
      "//third_party/khronos_glcts/framework/common/tcuApp.cpp",
      "//third_party/khronos_glcts/framework/common/tcuApp.hpp",
      "//third_party/khronos_glcts/framework/common/tcuCommandLine.cpp",
      "//third_party/khronos_glcts/framework/common/tcuCommandLine.hpp",
      "//third_party/khronos_glcts/framework/common/tcuCompressedTexture.cpp",
      "//third_party/khronos_glcts/framework/common/tcuCompressedTexture.hpp",
      "//third_party/khronos_glcts/framework/common/tcuDefs.cpp",
      "//third_party/khronos_glcts/framework/common/tcuDefs.hpp",
      "//third_party/khronos_glcts/framework/common/tcuFloat.hpp",
      "//third_party/khronos_glcts/framework/common/tcuFormatUtil.hpp",
      "//third_party/khronos_glcts/framework/common/tcuFuzzyImageCompare.cpp",
      "//third_party/khronos_glcts/framework/common/tcuFuzzyImageCompare.hpp",
      "//third_party/khronos_glcts/framework/common/tcuImageCompare.cpp",
      "//third_party/khronos_glcts/framework/common/tcuImageCompare.hpp",
      "//third_party/khronos_glcts/framework/common/tcuImageIO.cpp",
      "//third_party/khronos_glcts/framework/common/tcuImageIO.hpp",
      "//third_party/khronos_glcts/framework/common/tcuMatrix.hpp",
      "//third_party/khronos_glcts/framework/common/tcuMatrixUtil.hpp",
      "//third_party/khronos_glcts/framework/common/tcuPixelFormat.hpp",
      "//third_party/khronos_glcts/framework/common/tcuPlatform.cpp",
      "//third_party/khronos_glcts/framework/common/tcuPlatform.hpp",
      "//third_party/khronos_glcts/framework/common/tcuRGBA.cpp",
      "//third_party/khronos_glcts/framework/common/tcuRGBA.hpp",
      "//third_party/khronos_glcts/framework/common/tcuRandomValueIterator.cpp",
      "//third_party/khronos_glcts/framework/common/tcuRandomValueIterator.hpp",
      "//third_party/khronos_glcts/framework/common/tcuRenderTarget.cpp",
      "//third_party/khronos_glcts/framework/common/tcuRenderTarget.hpp",
      "//third_party/khronos_glcts/framework/common/tcuResource.cpp",
      "//third_party/khronos_glcts/framework/common/tcuResource.hpp",
      "//third_party/khronos_glcts/framework/common/tcuStringTemplate.cpp",
      "//third_party/khronos_glcts/framework/common/tcuStringTemplate.hpp",
      "//third_party/khronos_glcts/framework/common/tcuSurface.cpp",
      "//third_party/khronos_glcts/framework/common/tcuSurface.hpp",
      "//third_party/khronos_glcts/framework/common/tcuTestCase.cpp",
      "//third_party/khronos_glcts/framework/common/tcuTestCase.hpp",
      "//third_party/khronos_glcts/framework/common/tcuTestCaseWrapper.cpp",
      "//third_party/khronos_glcts/framework/common/tcuTestCaseWrapper.hpp",
      "//third_party/khronos_glcts/framework/common/tcuTestContext.cpp",
      "//third_party/khronos_glcts/framework/common/tcuTestContext.hpp",
      "//third_party/khronos_glcts/framework/common/tcuTestExecutor.cpp",
      "//third_party/khronos_glcts/framework/common/tcuTestExecutor.hpp",
      "//third_party/khronos_glcts/framework/common/tcuTestLog.cpp",
      "//third_party/khronos_glcts/framework/common/tcuTestLog.hpp",
      "//third_party/khronos_glcts/framework/common/tcuTestPackage.cpp",
      "//third_party/khronos_glcts/framework/common/tcuTestPackage.hpp",
      "//third_party/khronos_glcts/framework/common/tcuTexture.cpp",
      "//third_party/khronos_glcts/framework/common/tcuTexture.hpp",
      "//third_party/khronos_glcts/framework/common/tcuTextureUtil.cpp",
      "//third_party/khronos_glcts/framework/common/tcuTextureUtil.hpp",
      "//third_party/khronos_glcts/framework/common/tcuVector.hpp",
      "//third_party/khronos_glcts/framework/common/tcuVectorType.hpp",
      "//third_party/khronos_glcts/framework/common/tcuVectorUtil.hpp",

      # Not used by anything...
      #"//third_party/khronos_glcts/framework/common/tcuZipResource.cpp",
      #"//third_party/khronos_glcts/framework/common/tcuZipResource.hpp",
    ]

    deps = [
      ":delibs",
      "//third_party/libpng:libpng",
    ]

    public_deps = [
      ":qphelper",
    ]

    include_dirs = [ "//third_party/khronos_glcts/framework/delibs/libpng" ]  #png.hpp

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":tcutil_config" ]

    if (is_linux) {
      configs -= [ "//build/config/gcc:no_exceptions" ]
      cflags_cc = [ "-Wno-int-to-pointer-cast" ]
    }
  }

  config("glwrapper_config") {
    include_dirs = [ "//third_party/khronos_glcts/framework/opengl/wrapper" ]
  }
  source_set("glwrapper") {
    sources = [
      "//third_party/khronos_glcts/framework/opengl/wrapper/glw.h",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwDefs.cpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwDefs.hpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwEnums.hpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwFunctionLoader.hpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwFunctions.cpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwFunctions.hpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwInitES20Direct.cpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwInitES20Direct.hpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwInitFunctions.cpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwInitFunctions.hpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwWrapper.cpp",
      "//third_party/khronos_glcts/framework/opengl/wrapper/glwWrapper.hpp",
    ]

    deps = [
      ":delibs",
      "//gpu/command_buffer/client:gles2_c_lib_nocheck",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":glwrapper_config" ]

    if (is_linux) {
      configs -= [ "//build/config/gcc:no_exceptions" ]
    }
  }

  config("glutil_config") {
    include_dirs = [ "//third_party/khronos_glcts/framework/opengl" ]
  }
  source_set("glutil") {
    sources = [
      "//third_party/khronos_glcts/framework/opengl/gluCallLogWrapper.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluCallLogWrapper.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluContextInfo.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluContextInfo.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluDefs.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluDefs.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluDrawUtil.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluDrawUtil.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluFboRenderContext.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluFboRenderContext.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluPixelTransfer.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluPixelTransfer.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluPlatform.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluProgram.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluProgram.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluRenderContext.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluRenderContext.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluShaderUtil.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluShaderUtil.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluStateReset.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluStateReset.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluStrUtil.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluStrUtil.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluTexture.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluTexture.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluTextureUtil.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluTextureUtil.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluVarType.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluVarType.hpp",
      "//third_party/khronos_glcts/framework/opengl/gluVarTypeUtil.cpp",
      "//third_party/khronos_glcts/framework/opengl/gluVarTypeUtil.hpp",
    ]

    public_deps = [
      ":glwrapper",
    ]

    deps = [
      ":delibs",
      ":tcutil",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":glutil_config" ]

    if (is_linux) {
      configs -= [ "//build/config/gcc:no_exceptions" ]
    }
  }

  config("tcutil_egl_config") {
    include_dirs = [ "//third_party/khronos_glcts/framework/egl" ]
  }
  source_set("tcutil_egl") {
    sources = [
      "//third_party/khronos_glcts/framework/egl/tcuEgl.cpp",
      "//third_party/khronos_glcts/framework/egl/tcuEgl.hpp",
      "//third_party/khronos_glcts/framework/egl/tcuEglCallLogWrapper.cpp",
      "//third_party/khronos_glcts/framework/egl/tcuEglCallLogWrapper.hpp",
      "//third_party/khronos_glcts/framework/egl/tcuEglConfigFilter.cpp",
      "//third_party/khronos_glcts/framework/egl/tcuEglConfigFilter.hpp",
      "//third_party/khronos_glcts/framework/egl/tcuEglConfigInfo.cpp",
      "//third_party/khronos_glcts/framework/egl/tcuEglConfigInfo.hpp",
      "//third_party/khronos_glcts/framework/egl/tcuEglPlatform.cpp",
      "//third_party/khronos_glcts/framework/egl/tcuEglPlatform.hpp",
      "//third_party/khronos_glcts/framework/egl/tcuEglStrUtil.cpp",
      "//third_party/khronos_glcts/framework/egl/tcuEglStrUtil.hpp",
    ]

    deps = [
      ":delibs",
      ":glwrapper",
      ":tcutil",
      "//gpu/gles2_conform_support/egl",
    ]

    include_dirs = [ "//third_party/khronos_glcts/framework/opengl" ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [
      ":tcutil_egl_config",
      "//third_party/khronos:khronos_headers",
    ]

    if (is_linux) {
      configs -= [ "//build/config/gcc:no_exceptions" ]
      cflags_cc = [ "-Wno-int-to-void-pointer-cast" ]
    }
  }

  group("khronos_glcts_framework") {
    public_deps = [
      ":delibs",
      ":glutil",
      ":qphelper",
      ":tcutil",
      ":tcutil_egl",
    ]
  }

  config("glcts_common_config") {
    include_dirs = [ "//third_party/khronos_glcts/cts/common" ]
  }
  source_set("glcts_common") {
    sources = [
      "//third_party/khronos_glcts/cts/common/glcConfigList.cpp",
      "//third_party/khronos_glcts/cts/common/glcConfigList.hpp",
      "//third_party/khronos_glcts/cts/common/glcConfigListCase.cpp",
      "//third_party/khronos_glcts/cts/common/glcConfigListCase.hpp",
      "//third_party/khronos_glcts/cts/common/glcConfigPackage.cpp",
      "//third_party/khronos_glcts/cts/common/glcConfigPackage.hpp",
      "//third_party/khronos_glcts/cts/common/glcContext.cpp",
      "//third_party/khronos_glcts/cts/common/glcContext.hpp",
      "//third_party/khronos_glcts/cts/common/glcFragDepthTests.cpp",
      "//third_party/khronos_glcts/cts/common/glcFragDepthTests.hpp",
      "//third_party/khronos_glcts/cts/common/glcInfoTests.cpp",
      "//third_party/khronos_glcts/cts/common/glcInfoTests.hpp",
      "//third_party/khronos_glcts/cts/common/glcShaderIndexingTests.cpp",
      "//third_party/khronos_glcts/cts/common/glcShaderIndexingTests.hpp",
      "//third_party/khronos_glcts/cts/common/glcShaderIntegerMixTests.cpp",
      "//third_party/khronos_glcts/cts/common/glcShaderIntegerMixTests.hpp",
      "//third_party/khronos_glcts/cts/common/glcShaderLibrary.cpp",
      "//third_party/khronos_glcts/cts/common/glcShaderLibrary.hpp",
      "//third_party/khronos_glcts/cts/common/glcShaderLibraryCase.cpp",
      "//third_party/khronos_glcts/cts/common/glcShaderLibraryCase.hpp",
      "//third_party/khronos_glcts/cts/common/glcShaderLoopTests.cpp",
      "//third_party/khronos_glcts/cts/common/glcShaderLoopTests.hpp",
      "//third_party/khronos_glcts/cts/common/glcShaderRenderCase.cpp",
      "//third_party/khronos_glcts/cts/common/glcShaderRenderCase.hpp",
      "//third_party/khronos_glcts/cts/common/glcShaderStructTests.cpp",
      "//third_party/khronos_glcts/cts/common/glcShaderStructTests.hpp",
      "//third_party/khronos_glcts/cts/common/glcShaderSwitchTests.cpp",
      "//third_party/khronos_glcts/cts/common/glcShaderSwitchTests.hpp",
      "//third_party/khronos_glcts/cts/common/glcTestCase.cpp",
      "//third_party/khronos_glcts/cts/common/glcTestCase.hpp",
      "//third_party/khronos_glcts/cts/common/glcTestCaseWrapper.cpp",
      "//third_party/khronos_glcts/cts/common/glcTestCaseWrapper.hpp",
      "//third_party/khronos_glcts/cts/common/glcTestPackage.cpp",
      "//third_party/khronos_glcts/cts/common/glcTestPackage.hpp",
      "//third_party/khronos_glcts/cts/common/glcTestSubcase.cpp",
      "//third_party/khronos_glcts/cts/common/glcTestSubcase.hpp",
      "//third_party/khronos_glcts/cts/common/glcUniformBlockCase.cpp",
      "//third_party/khronos_glcts/cts/common/glcUniformBlockCase.hpp",
      "//third_party/khronos_glcts/cts/common/glcUniformBlockTests.cpp",
      "//third_party/khronos_glcts/cts/common/glcUniformBlockTests.hpp",
    ]

    deps = [
      ":delibs",
      ":glutil",
      ":tcutil",
      ":tcutil_egl",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":glcts_common_config" ]

    if (is_linux) {
      configs -= [ "//build/config/gcc:no_exceptions" ]
      cflags_cc = [ "-Wno-string-conversion" ]
    }
  }

  config("glcts_gtf_wrapper_config") {
    include_dirs = [ "//third_party/khronos_glcts/cts/gtf" ]
  }
  source_set("glcts_gtf_wrapper") {
    sources = [
      "//third_party/khronos_glcts/cts/gtf/gtfTestContext.cpp",
      "//third_party/khronos_glcts/cts/gtf/gtfTestContext.hpp",
      "//third_party/khronos_glcts/cts/gtf/gtfWrapper.cpp",
      "//third_party/khronos_glcts/cts/gtf/gtfWrapper.h",
    ]

    deps = [
      ":delibs",
      ":glcts_common",
      ":glutil",
      ":tcutil",
      ":tcutil_egl",
    ]

    include_dirs = [ "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source" ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":glcts_gtf_wrapper_config" ]

    if (is_linux) {
      configs -= [ "//build/config/gcc:no_exceptions" ]
    }
  }

  config("gtf_es_config") {
    include_dirs = [ "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source" ]
  }
  source_set("gtf_es") {
    sources = [
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFAttDataGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFDepthRangeParamGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFModelDataGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFPointParamGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFReadPixelsGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFShaderDataGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFShaderTextGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFStateDataGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFTestTextureFloatBase.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFTexDataGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFTexParamGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL/GTFUniDataGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFArguments.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFFileReader.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFLog.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFMemFile.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFModelData.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFPort.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFStringUtils.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTest.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestCompareGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestDriver.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestElement.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestUtil.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFgl.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/MIMG.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/XmlUtils.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/eglu.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/eglut.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/gl2Native.c",

      # Base
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestAttributeGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestBindAllAttributes.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestCreateObjectGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestDetachGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestFixedDataType.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestFramebufferObjects.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetAttachedObjects.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetAttributeLocation.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetBIFD.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetExtensions.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetProgramInfoLog.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetProgramiv.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetShaderInfoLog.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetShaderiv.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetUniform.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestGetVertexAttrib.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestMaxVertexAttrib.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestMultipleShaders.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestRelinkProgram.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestUniform.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestUniformQueryGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexAttribPointer.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexAttributes.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2Tests/GTFGL2TestVertexProgramPointSize.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestGL2Test.c",

      # Build
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestBuildGL.c",

      # Shader load
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestShaderLoadGL.c",

      # Rasterization
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestRasterizationGL.c",

      # Complexity
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestComplexityGL.c",

      # Coverage
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFCoverageDict.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFCoverageGL.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestCoverageGL.c",

      # Fixed-function
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBlend.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferClear.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferColor.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferCorners.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestBufferObjects.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestClip.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestColorRamp.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestCopyTexture.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDepthBufferClear.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDepthBufferFunctions.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDither.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestDivideByZero.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestGets.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestMipmapsInterpolation.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestMipmapsSelection.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPointRasterization.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPointSprites.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestPolygonCull.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestScissor.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneClear.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneCorners.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneFunction.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestStencilPlaneOperation.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTextureEdgeClamp.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTransformViewport.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTriangleRasterization.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestTriangleTiling.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestUserClipPlanes.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestVertexOrder.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedTestViewportClamp.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedUtilg.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2FixedTests/GTFFixedUtilr.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestFixedGL.c",

      # Extensions
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestConditionalQuery.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDataType1010102.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDebug.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepth24.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepth32.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepthTexture.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestDepthTextureCubeMap.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestElementIndexUINT.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFBORenderMipmap.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFragmentPrecisionHigh.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestFramebufferObject.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestMapBuffer.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestOcclusionQuery.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPackedDepthStencil.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPointSizeArray.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestPointSprite.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestReadFormat.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil1.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil4.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestStencil8.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTexture3D.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureCompressionASTCLDR.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureFloat.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureFloatLinear.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestTextureNPOT.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestUtilp.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestVertexArrayObject.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestVertexHalfFloat.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GTFTestExtension.c",

      # ES only.
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestCompressedETC1RGB8Texture.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestCompressedPalettedTexture.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLCreateContext.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLImage.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestEGLImageExternal.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestRGB8RGBA8.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestRequiredInternalformat.c",
      "//third_party/khronos_glcts/GTF_ES/glsl/GTF/Source/GL2ExtensionTests/GTFExtensionTestSurfacelessContext.c",
    ]

    deps = [
      ":debase",
      ":glcts_gtf_wrapper",
      "//third_party/expat",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":gtf_es_config" ]

    if (is_linux) {
      cflags_c = [
        "-Wno-pointer-sign",
        "-Wno-incompatible-pointer-types",
        "-Wno-return-type",
        "-Wno-parentheses-equality",
        "-Wno-tautological-compare",
      ]
    }
  }

  config("glcts_gtf_config") {
    include_dirs = [ "//third_party/khronos_glcts/cts/gtf" ]
  }
  source_set("glcts_gtf") {
    sources = [
      "//third_party/khronos_glcts/cts/gtf/gtfTestCase.cpp",
      "//third_party/khronos_glcts/cts/gtf/gtfTestCase.hpp",
      "//third_party/khronos_glcts/cts/gtf/gtfTestGroup.cpp",
      "//third_party/khronos_glcts/cts/gtf/gtfTestGroup.hpp",
    ]

    deps = [
      ":delibs",
      ":glcts_common",
      ":glcts_gtf_wrapper",
      ":glutil",
      ":gtf_es",
      ":tcutil",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":glcts_gtf_config" ]

    if (is_linux) {
      configs -= [ "//build/config/gcc:no_exceptions" ]
    }
  }

  config("glcts_es2_config") {
    include_dirs = [ "//third_party/khronos_glcts/cts/gles2" ]
  }
  source_set("glcts_es2") {
    sources = [
      "//third_party/khronos_glcts/cts/gles2/es2cTestPackage.cpp",
      "//third_party/khronos_glcts/cts/gles2/es2cTestPackage.hpp",
    ]

    public_deps = [
      ":glcts_common",
    ]

    deps = [
      ":delibs",
      ":glcts_gtf",
      ":glutil",
      ":tcutil",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]

    public_configs = [ ":glcts_es2_config" ]

    if (is_linux) {
      configs -= [ "//build/config/gcc:no_exceptions" ]
    }
  }

  source_set("tcutil_platform_windowless") {
    sources = [
      "native/egl_native_windowless.cc",
    ]

    deps = [
      ":khronos_glcts_framework",
    ]

    configs -= [ "//build/config/compiler:no_rtti" ]
    configs += [ "//build/config/compiler:rtti" ]
  }

  executable("khronos_glcts_test_windowless") {
    sources = [
      "//third_party/khronos_glcts/cts/glcTestPackageEntry.cpp",
      "//third_party/khronos_glcts/cts/glcTestPackageRegistry.cpp",
      "//third_party/khronos_glcts/cts/glcTestPackageRegistry.hpp",
      "native/main.cc",
    ]

    deps = [
      ":glcts_es2",
      ":glcts_gtf_resources",
      ":glcts_resources",
      ":khronos_glcts_framework",
      ":tcutil_platform_windowless",
    ]

    configs += [ ":defaults_config" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]

    if (is_linux) {
      configs -= [ "//build/config/gcc:no_exceptions" ]
    }
  }
}

if (!is_android) {
  test("khronos_glcts_test") {
    sources = [
      "khronos_glcts_test.cc",
      "khronos_glcts_test.h",
    ]

    deps = [
      "//base",
      "//gpu",
      "//testing/gtest",
    ]

    data = [
      "khronos_glcts_test_expectations.txt",
    ]

    if (internal_khronos_glcts_tests) {
      sources += [ "$target_gen_dir/khronos_glcts_test_autogen.cc" ]
      deps += [
        ":generate_khronos_glcts_tests",
        ":khronos_glcts_test_windowless",
      ]
    }
  }
}
