Edit

kc3-lang/angle/BUILD.gn

Branch :

  • Show log

    Commit

  • Author : Cooper Partin
    Date : 2015-06-16 15:03:14
    Hash : 75da1974
    Message : Changed d3d11 desktop renderer to use d3d9 debug annotation interfaces. The D3D11 renderer must choose the D3D9 debug annotator because the D3D11 interface method ID3DUserDefinedAnnotation::GetStatus on desktop builds doesn't work with the Graphics Diagnostics tools in Visual Studio 2013. The D3D9 annotator works properly for both D3D11 and D3D9. Incorrect status reporting can cause ANGLE to log unnecessary debug events. Change-Id: I9a31c63cbc506904eb39577826fc4df8d503f03a Reviewed-on: https://chromium-review.googlesource.com/278162 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cooper Partin <coopp@microsoft.com> Tested-by: Cooper Partin <coopp@microsoft.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • BUILD.gn
  • # Copyright 2014 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 the use_x11 variable
    import("//build/config/ui.gni")
    
    gles_gypi = exec_script(
      "//build/gypi_to_gn.py",
      [ rebase_path("src/libGLESv2.gypi") ],
      "scope",
      [ "src/libGLESv2.gypi" ])
    
    compiler_gypi = exec_script(
      "//build/gypi_to_gn.py",
      [ rebase_path("src/compiler.gypi") ],
      "scope",
      [ "src/compiler.gypi" ])
    
    # This config is exported to dependent targets (and also applied to internal
    # ones).
    config("external_config") {
      include_dirs = [
        "include",
      ]
    }
    
    # This config is applied to internal Angle targets (not pushed to dependents).
    config("internal_config") {
      include_dirs = [
        "include",
        "src",
      ]
    }
    
    angle_enable_d3d9 = false
    angle_enable_d3d11 = false
    angle_enable_gl = false
    
    if (is_win) {
      angle_enable_d3d9 = true
      angle_enable_d3d11 = true
      angle_enable_gl = true
    
      import("//build/config/win/visual_studio_version.gni")
      copy("copy_compiler_dll") {
        sources = [ "$windows_sdk_path/Redist/D3D/$target_cpu/d3dcompiler_47.dll" ]
        outputs = [ "$root_build_dir/d3dcompiler_47.dll" ]
      }
    } # is_win
    
    if (is_linux) {
      angle_enable_gl = true
    }
    
    angle_enable_hlsl = false
    
    if (angle_enable_d3d9 || angle_enable_d3d11) {
      angle_enable_hlsl = true
    }
    
    component("translator") {
      sources = [
        "src/compiler/translator/ShaderLang.cpp",
        "src/compiler/translator/ShaderVars.cpp",
      ]
    
      defines = [ "ANGLE_TRANSLATOR_IMPLEMENTATION" ]
    
      if (angle_enable_hlsl) {
        sources += rebase_path(compiler_gypi.angle_translator_lib_hlsl_sources, ".", "src")
        defines += [ "ANGLE_ENABLE_HLSL" ]
      }
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
        "//build/config/compiler:no_chromium_code",
      ]
    
      public_deps = [
        ":translator_lib",
      ]
    }
    
    # Holds the shared includes so we only need to list them once.
    source_set("includes") {
      sources = [
        "include/EGL/egl.h",
        "include/EGL/eglext.h",
        "include/EGL/eglplatform.h",
        "include/GLES2/gl2.h",
        "include/GLES2/gl2ext.h",
        "include/GLES2/gl2platform.h",
        "include/GLES3/gl3.h",
        "include/GLES3/gl3ext.h",
        "include/GLES3/gl3platform.h",
        "include/GLSLANG/ShaderLang.h",
        "include/KHR/khrplatform.h",
      ]
    }
    
    static_library("preprocessor") {
      sources = rebase_path(compiler_gypi.angle_preprocessor_sources, ".", "src")
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
        "//build/config/compiler:no_chromium_code",
      ]
    }
    
    config("translator_static_config") {
      defines = [ "ANGLE_TRANSLATOR_STATIC" ]
    }
    
    config("debug_annotations_config") {
      if (is_debug) {
        defines = [
          "ANGLE_ENABLE_DEBUG_ANNOTATIONS",
        ]
      }
    }
    
    static_library("angle_common") {
      sources = rebase_path(gles_gypi.libangle_common_sources, ".", "src")
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
        ":debug_annotations_config",
        "//build/config/compiler:no_chromium_code",
      ]
    }
    
    static_library("translator_lib") {
      sources = rebase_path(compiler_gypi.angle_translator_lib_sources, ".", "src")
    
      if (angle_enable_hlsl) {
        sources += rebase_path(compiler_gypi.angle_translator_lib_hlsl_sources, ".", "src")
        defines = [ "ANGLE_ENABLE_HLSL" ]
      }
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
        ":translator_static_config",
        "//build/config/compiler:no_chromium_code",
      ]
      public_configs = [ ":external_config" ]
    
      deps = [
        ":includes",
        ":preprocessor",
      ]
    
      public_deps = [
        ":angle_common",
      ]
    }
    
    static_library("translator_static") {
      sources = [
        "src/compiler/translator/ShaderLang.cpp",
        "src/compiler/translator/ShaderVars.cpp",
      ]
    
      if (angle_enable_hlsl) {
        defines = [ "ANGLE_ENABLE_HLSL" ]
      }
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
        "//build/config/compiler:no_chromium_code",
      ]
      public_configs = [ ":translator_static_config" ]
    
      public_deps = [
        ":translator_lib",
      ]
    }
    
    config("commit_id_config") {
      include_dirs = [ "$root_gen_dir/angle" ]
    }
    
    action("commit_id") {
      script = "src/commit_id.py"
    
      output_file = "$root_gen_dir/angle/id/commit.h"
      outputs = [ output_file ]
    
      args = [
        "gen",
        rebase_path(".", root_build_dir),
        rebase_path(output_file, root_build_dir),
      ]
    
      public_configs = [ ":commit_id_config" ]
    }
    
    config("libANGLE_config") {
      cflags = []
      defines = []
      if (angle_enable_d3d9) {
        defines += [ "ANGLE_ENABLE_D3D9" ]
      }
      if (angle_enable_d3d11) {
        defines += [ "ANGLE_ENABLE_D3D11" ]
      }
      if (angle_enable_gl) {
        defines += [ "ANGLE_ENABLE_OPENGL" ]
      }
      if (use_x11) {
        defines += [ "ANGLE_USE_X11" ]
      }
      defines += [
        "GL_APICALL=",
        "GL_GLEXT_PROTOTYPES=",
        "EGLAPI=",
      ]
      if (is_win) {
        cflags += [ "/wd4530" ]  # C++ exception handler used, but unwind semantics are not enabled.
      }
    }
    
    static_library("libANGLE") {
      sources = rebase_path(gles_gypi.libangle_sources, ".", "src")
    
      include_dirs = []
      libs = []
      defines = [
        "LIBANGLE_IMPLEMENTATION",
      ]
    
      # Shared D3D sources.
      if (angle_enable_d3d9 || angle_enable_d3d11) {
        sources += rebase_path(gles_gypi.libangle_d3d_shared_sources, ".", "src")
    
        defines += [
          "ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ " +
            "\"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }",
        ]
      }
    
      if (angle_enable_d3d9) {
        sources += rebase_path(gles_gypi.libangle_d3d9_sources, ".", "src")
        libs += [ "d3d9.lib" ]
      }
    
      if (angle_enable_d3d11) {
        sources += rebase_path(gles_gypi.libangle_d3d11_sources, ".", "src")
        sources += rebase_path(gles_gypi.libangle_d3d11_win32_sources, ".", "src")
        libs += [ "dxguid.lib" ]
      }
    
      if (angle_enable_gl) {
        sources += rebase_path(gles_gypi.libangle_gl_sources, ".", "src")
        include_dirs += [ "src/third_party/khronos" ]
    
        if (is_win) {
          sources += rebase_path(gles_gypi.libangle_gl_wgl_sources, ".", "src")
        }
        if (use_x11) {
          sources += rebase_path(gles_gypi.libangle_gl_glx_sources, ".", "src")
          libs += [ "X11" ]
        }
      }
    
      if (is_debug) {
        defines += [
          "ANGLE_GENERATE_SHADER_DEBUG_INFO",
        ]
      }
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":commit_id_config",
        ":debug_annotations_config",
        ":libANGLE_config",
        ":internal_config",
        "//build/config/compiler:no_chromium_code",
      ]
    
      deps = [
        ":commit_id",
        ":includes",
        ":translator_static",
        ":angle_common",
      ]
    
      if (is_win) {
        deps += [ ":copy_compiler_dll" ]
      }
    }
    
    shared_library("libGLESv2") {
      sources = rebase_path(gles_gypi.libglesv2_sources, ".", "src")
    
      if (is_win) {
        ldflags = [ "/DEF:" +
                    rebase_path("src/libGLESv2/libGLESv2.def", root_build_dir) ]
      }
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
        ":commit_id_config",
        ":debug_annotations_config",
        ":libANGLE_config",
        "//build/config/compiler:no_chromium_code",
      ]
    
      defines = [
        "LIBGLESV2_IMPLEMENTATION",
      ]
    
      deps = [
        ":includes",
        ":libANGLE",
      ]
    }
    
    shared_library("libEGL") {
      sources = rebase_path(gles_gypi.libegl_sources, ".", "src")
    
      if (is_win) {
        ldflags = [ "/DEF:" +
                    rebase_path("src/libEGL/libEGL.def", root_build_dir) ]
      }
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
        ":commit_id_config",
        ":libANGLE_config",
        "//build/config/compiler:no_chromium_code",
      ]
    
      defines = [
        "LIBEGL_IMPLEMENTATION",
      ]
    
      deps = [
        ":includes",
        ":libGLESv2",
      ]
    }