# 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" ]
    configs -= [ "//build/config/compiler:no_exceptions" ]
    configs += [ "//build/config/compiler:exceptions" ]

    public_configs = [ ":decpp_config" ]
  }

  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" ]
    configs -= [ "//build/config/compiler:no_exceptions" ]
    configs += [ "//build/config/compiler:exceptions" ]

    public_configs = [ ":tcutil_config" ]

    if (is_linux) {
      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" ]
    configs -= [ "//build/config/compiler:no_exceptions" ]
    configs += [ "//build/config/compiler:exceptions" ]

    public_configs = [ ":glwrapper_config" ]
  }

  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" ]
    configs -= [ "//build/config/compiler:no_exceptions" ]
    configs += [ "//build/config/compiler:exceptions" ]

    public_configs = [ ":glutil_config" ]
  }

  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" ]
    configs -= [ "//build/config/compiler:no_exceptions" ]
    configs += [ "//build/config/compiler:exceptions" ]

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

    if (is_linux) {
      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" ]
    configs -= [ "//build/config/compiler:no_exceptions" ]
    configs += [ "//build/config/compiler:exceptions" ]

    public_configs = [ ":glcts_common_config" ]

    if (is_linux) {
      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" ]
    configs -= [ "//build/config/compiler:no_exceptions" ]
    configs += [ "//build/config/compiler:exceptions" ]

    public_configs = [ ":glcts_gtf_wrapper_config" ]
  }

  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" ]
    configs -= [ "//build/config/compiler:no_exceptions" ]
    configs += [ "//build/config/compiler:exceptions" ]

    public_configs = [ ":glcts_gtf_config" ]
  }

  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" ]
    configs -= [ "//build/config/compiler:no_exceptions" ]
    configs += [ "//build/config/compiler:exceptions" ]

    public_configs = [ ":glcts_es2_config" ]
  }

  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" ]
    configs -= [ "//build/config/compiler:no_exceptions" ]
    configs += [ "//build/config/compiler: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",
      ]
    }
  }
}
