Edit

kc3-lang/angle/BUILD.gn

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2015-01-14 14:31:02
    Hash : 562e81bb
    Message : Fix Linux build, and update BUILD.gn. Re-re-land with fixes for Linux and Android. We were getting multiply defined symbol errors on Linux for some stuff in the common sources. Switch to using a static lib target for the common sources, and also sync BUILD.gn with the latest gyp. BUG=angle:773 Change-Id: Ia2d52978a167c532e5e76cb711de589855eff44e Reviewed-on: https://chromium-review.googlesource.com/240553 Tested-by: Jamie Madill <jmadill@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.
    
    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",
      ]
    }
    
    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("angle_common") {
      sources = rebase_path(gles_gypi.libangle_common_sources, ".", "src")
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":internal_config",
      ]
    }
    
    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",
      ]
    
      public_deps = [
        ":angle_common",
      ]
    }
    
    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" ]
    }
    
    angle_enable_d3d9 = false
    angle_enable_d3d11 = false
    
    if (is_win) {
      angle_enable_d3d9 = true
      angle_enable_d3d11 = true
    
      import("//build/config/win/visual_studio_version.gni")
      copy("copy_compiler_dll") {
        sources = [ "$windows_sdk_path/Redist/D3D/$cpu_arch/d3dcompiler_47.dll" ]
        outputs = [ "$root_build_dir/d3dcompiler_47.dll" ]
      }
    
    }  # is_win
    
    config("libANGLE_config") {
      defines = []
      if (angle_enable_d3d9) {
        defines += [ "ANGLE_ENABLE_D3D9" ]
      }
      if (angle_enable_d3d11) {
        defines += [ "ANGLE_ENABLE_D3D11" ]
      }
      defines += [
        "GL_APICALL=",
        "GL_GLEXT_PROTOTYPES=",
        "EGLAPI=",
      ]
    }
    
    static_library("libANGLE") {
      sources = rebase_path(gles_gypi.libangle_sources, ".", "src")
    
      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 (is_debug) {
        defines += [
          "ANGLE_GENERATE_SHADER_DEBUG_INFO",
          "ANGLE_ENABLE_DEBUG_ANNOTATIONS",
        ]
      }
    
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [
        ":commit_id_config",
        ":libANGLE_config",
        ":internal_config",
        "//build/config/compiler:no_chromium_code",
      ]
    
      deps = [
        ":commit_id",
        ":includes",
        ":translator",
        ":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",
        ":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",
      ]
    }