Edit

kc3-lang/angle/BUILD.gn

Branch :

  • Show log

    Commit

  • Author : Brett Wilson
    Date : 2014-07-22 17:00:17
    Hash : 2f5469c2
    Message : Export include directories to dependents in GN. Translator headers that are included by dependent code (example: ShaderLang.h) expect to be able to include files from "includes" (example: "KHR/khrplatform.h"). This automatically applies this include path to dependent targets. Change-Id: I6990f66132562f142a6cdf8b8c434d2dbaad1c98 Reviewed-on: https://chromium-review.googlesource.com/209452 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Brett Wilson <brettw@chromium.org> Reviewed-by: Geoff Lang <geofflang@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.
    
    if (is_win) {
      # Only needed on Windows.
      gles_gypi = exec_script(
          "//build/gypi_to_gn.py",
          [ rebase_path("src/libGLESv2.gypi") ],
          "scope",
          [ "src/libGLESv2.gypi" ])
    
      egl_gypi = exec_script(
          "//build/gypi_to_gn.py",
          [ rebase_path("src/libEGL.gypi") ],
          "scope",
          [ "src/libEGL.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",
      ]
    }
    
    component("translator") {
      sources = [
        "src/compiler/translator/ShaderLang.cpp",
      ]
    
      defines = [ "ANGLE_TRANSLATOR_IMPLEMENTATION" ]
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
        "//build/config/compiler:no_chromium_code",
      ]
    
      deps = [
        ":translator_lib",
      ]
      forward_dependent_configs_from = [ ":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",
      ]
    }
    
    static_library("translator_lib") {
      sources = rebase_path(compiler_gypi.angle_translator_lib_sources, ".", "src")
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
        "//build/config/compiler:no_chromium_code",
      ]
      direct_dependent_configs = [ ":external_config" ]
    
      deps = [
        ":includes",
        ":preprocessor",
      ]
    }
    
    config("translator_static_config") {
      defines = [ "ANGLE_TRANSLATOR_STATIC" ]
    }
    
    static_library("translator_static") {
      sources = [
        "src/compiler/translator/ShaderLang.cpp",
      ]
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
        "//build/config/compiler:no_chromium_code",
      ]
      direct_dependent_configs = [ ":translator_static_config" ]
    
      deps = [
        ":translator_lib",
      ]
      forward_dependent_configs_from = [ ":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),
      ]
    
      direct_dependent_configs = [ ":commit_id_config" ]
    }
    
    if (is_win) {
      angle_enable_d3d9 = true
      angle_enable_d3d11 = true
    
      shared_library("libGLESv2") {
        sources = rebase_path(gles_gypi.angle_libglesv2_sources, ".", "src")
    
        defines = [
          "ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ " +
            "TEXT(\"d3dcompiler_46.dll\"), TEXT(\"d3dcompiler_43.dll\") }",
          "GL_APICALL=",
          "GL_GLEXT_PROTOTYPES=",
          "EGLAPI=",
        ]
        libs = []
    
        # Shared D3dD sources.
        if (angle_enable_d3d9 || angle_enable_d3d11) {
          sources += rebase_path(gles_gypi.angle_d3d_shared_sources, ".", "src")
        }
    
        if (angle_enable_d3d9) {
          sources += rebase_path(gles_gypi.angle_d3d9_sources, ".", "src")
          defines += [ "ANGLE_ENABLE_D3D9" ]
          libs += [ "d3d9.lib" ]
        }
    
        if (angle_enable_d3d11) {
          sources += rebase_path(gles_gypi.angle_d3d11_sources, ".", "src")
          defines += [ "ANGLE_ENABLE_D3D11" ]
          libs += [ "dxguid.lib" ]
        }
    
        if (is_debug) {
          defines += [ "ANGLE_ENABLE_PERF" ]
          libs += [ "d3d9.lib" ]
        }
    
        configs -= [ "//build/config/compiler:chromium_code" ]
        configs += [
          ":internal_config",
          "//build/config/compiler:no_chromium_code",
        ]
    
        include_dirs = [ "src/libGLESv2" ]
    
        deps = [
          ":commit_id",
          ":includes",
          ":translator",
          #":copy_compiler_dll",  TODO(GYP)
        ]
      }
    
      shared_library("libEGL") {
        sources = rebase_path(egl_gypi.angle_libegl_sources, ".", "src")
    
        configs -= [ "//build/config/compiler:chromium_code" ]
        configs += [
          ":internal_config",
          "//build/config/compiler:no_chromium_code",
        ]
    
        if (is_debug) {
          defines = [ "ANGLE_ENABLE_PERF" ]
        }
    
        include_dirs = [ "src/libGLESv2" ]
        libs = [ "d3d9.lib" ]
    
        deps = [
          ":commit_id",
          ":includes",
          ":libGLESv2",
        ]
      }
    }  # is_win