gfx/angle/BUILD.gn
author Wes Kocher <wkocher@mozilla.com>
Fri, 18 Sep 2015 13:01:25 -0700
changeset 297636 9244da13f5e871e49c066a796f9cf28239a8200e
parent 256576 2be92aa6910208e5aa27f0c02e0fdd93c78d5836
child 300261 56db457aef33a889004f51a6211f174aa12cca2d
permissions -rw-r--r--
Backed out 8 changesets (bug 1201796, bug 1196066) for mulet gij(28) failures CLOSED TREE Backed out changeset 159d5d2946d3 (bug 1201796) Backed out changeset 958988218976 (bug 1201796) Backed out changeset 494e7553d641 (bug 1201796) Backed out changeset d58149411b7d (bug 1201796) Backed out changeset 35bd769b49f8 (bug 1196066) Backed out changeset e4f3d4279b4c (bug 1196066) Backed out changeset ca467297fa07 (bug 1196066) Backed out changeset b4851ce6637d (bug 1196066)

# 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",
    "src/compiler/translator/ShaderVars.cpp",
  ]

  defines = [ "ANGLE_TRANSLATOR_IMPLEMENTATION" ]

  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" ]
}

static_library("translator_lib") {
  sources = rebase_path(compiler_gypi.angle_translator_lib_sources, ".", "src")

  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",
  ]
}

static_library("translator_static") {
  sources = [
    "src/compiler/translator/ShaderLang.cpp",
    "src/compiler/translator/ShaderVars.cpp",
  ]

  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" ]
}

if (is_win) {
  angle_enable_d3d9 = true
  angle_enable_d3d11 = true

  shared_library("libGLESv2") {
    sources = rebase_path(gles_gypi.angle_libangle_sources, ".", "src")
    sources += [
      "src/libGLESv2/libGLESv2.cpp",
      "src/libGLESv2/libGLESv2.def",
      "src/libGLESv2/libGLESv2.rc",
    ]

    defines = [
      "ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ " +
        "\"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }",
      "GL_APICALL=",
      "GL_GLEXT_PROTOTYPES=",
      "EGLAPI=",
    ]
    libs = []

    # Windows-specific sources.
    sources += rebase_path(gles_gypi.angle_libangle_win_sources, ".", "src")

    # 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")

    defines = [
      "GL_APICALL=",
      "GL_GLEXT_PROTOTYPES=",
      "EGLAPI=",
    ]

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

    if (is_debug) {
      defines += [
        "ANGLE_ENABLE_PERF",
        "ANGLE_GENERATE_SHADER_DEBUG_INFO"
      ]
    }

    include_dirs = [ "src/libGLESv2" ]
    libs = [ "d3d9.lib" ]

    deps = [
      ":commit_id",
      ":includes",
      ":libGLESv2",
    ]
  }
}  # is_win