| # Copyright 2016 Google Inc. |
| # |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| declare_args() { |
| } |
| |
| angle_root = "../externals/angle2" |
| |
| import("$angle_root/src/compiler.gni") |
| import("$angle_root/src/libGLESv2.gni") |
| import("../third_party.gni") |
| |
| third_party("angle2") { |
| public_include_dirs = [ "$angle_root/include" ] |
| deps = [ |
| ":libEGL", |
| ":libGLESv2", |
| ] |
| } |
| |
| config("common") { |
| defines = [ |
| "ANGLE_ENABLE_ESSL", |
| "ANGLE_ENABLE_GLSL", |
| "ANGLE_ENABLE_HLSL", |
| "ANGLE_ENABLE_OPENGL", |
| "EGL_EGLEXT_PROTOTYPES", |
| "GL_GLEXT_PROTOTYPES", |
| ] |
| include_dirs = [ |
| "$root_gen_dir/angle2", |
| "$angle_root/include", |
| "$angle_root/src", |
| "$angle_root/src/common/third_party/base", |
| "$angle_root/src/third_party/khronos", |
| ] |
| cflags_cc = [] |
| assert(is_linux || is_win) # TODO: is_mac? |
| if (is_linux) { |
| defines += [ |
| "ANGLE_USE_X11", |
| "GL_APICALL=__attribute__((visibility(\"default\")))", |
| "GL_API=__attribute__((visibility(\"default\")))", |
| "EGLAPI=__attribute__((visibility(\"default\")))", |
| ] |
| cflags_cc += [ "-std=c++14" ] |
| } else if (is_win) { |
| defines += [ |
| "ANGLE_ENABLE_D3D11", |
| "ANGLE_ENABLE_D3D9", |
| "GL_APICALL=", |
| "GL_API=", |
| "EGLAPI=", |
| ] |
| |
| # Allow noexcept, even though we build without exceptions |
| cflags_cc += [ "/wd4577" ] |
| |
| # Warnings are just noise if we're not maintaining the code. |
| if (is_win) { |
| cflags = [ "/w" ] |
| } else { |
| cflags = [ "-w" ] |
| } |
| } |
| } |
| |
| commit_id_output_file = "$root_gen_dir/angle2/commit.h" |
| action("commit_id") { |
| script = "$angle_root/src/commit_id.py" |
| outputs = [ commit_id_output_file ] |
| |
| # Add ANGLE git as a dependency if it is available. |
| angle_git_is_present = |
| exec_script("$angle_root/src/commit_id.py", [ "check" ], "value") == 1 |
| if (angle_git_is_present) { |
| # commit id should depend on angle's HEAD revision |
| inputs = [ "$angle_root/.git/HEAD" ] |
| } |
| |
| args = [ |
| "gen", |
| rebase_path(commit_id_output_file, root_build_dir), |
| ] |
| } |
| |
| shared_library("libGLESv2") { |
| configs += [ ":common" ] |
| configs -= [ "//gn:warnings" ] |
| defines = [ |
| "LIBANGLE_IMPLEMENTATION", |
| "LIBGLESV2_IMPLEMENTATION", |
| ] |
| deps = [ |
| ":commit_id", |
| "../zlib:compression_utils_portable", |
| ] |
| libs = [] |
| sources = |
| rebase_path( |
| angle_preprocessor_sources + angle_translator_sources + |
| angle_translator_essl_sources + angle_translator_glsl_sources + |
| angle_translator_hlsl_sources + libangle_sources + |
| libangle_gpu_info_util_sources + libangle_headers + |
| libangle_common_sources + libangle_image_util_sources + |
| libglesv2_sources + libangle_gl_sources + |
| angle_system_utils_sources + xxhash_sources, |
| ".", |
| angle_root) + [ "$angle_root/src/libANGLE/FrameCapture_mock.cpp" ] |
| if (is_win) { |
| sources += [ "$angle_root/src/libGLESv2/libGLESv2_autogen.def" ] |
| } |
| if (is_linux) { |
| libs += [ |
| "X11", |
| "Xi", |
| "Xext", |
| ] |
| defines += [ "GPU_INFO_USE_X11" ] |
| sources += |
| rebase_path( |
| libangle_gl_glx_sources + libangle_gl_egl_sources + |
| libangle_gpu_info_util_linux_sources + |
| libangle_gpu_info_util_x11_sources + libangle_gl_egl_dl_sources, |
| ".", |
| angle_root) + [ "$angle_root/src/third_party/libXNVCtrl/NVCtrl.c" ] |
| } else if (is_win) { |
| defines += [ |
| # TODO: ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES |
| ] |
| sources += |
| rebase_path(libangle_gl_wgl_sources + libangle_d3d_shared_sources + |
| libangle_d3d9_sources + libangle_d3d11_sources + |
| libangle_d3d11_win32_sources + |
| libangle_gpu_info_util_win_sources, |
| ".", |
| angle_root) |
| libs += [ |
| "d3d9.lib", |
| "dxgi.lib", |
| "dxguid.lib", |
| "gdi32.lib", |
| "user32.lib", |
| ] |
| deps += [ |
| # TODO: copy_compiler_dll? |
| ] |
| } |
| } |
| |
| shared_library("libEGL") { |
| configs += [ ":common" ] |
| configs -= [ "//gn:warnings" ] |
| defines = [ "LIBEGL_IMPLEMENTATION" ] |
| deps = [ ":libGLESv2" ] |
| sources = rebase_path(libegl_sources, ".", angle_root) |
| if (is_win) { |
| sources += [ "$angle_root/src/libEGL/libEGL.def" ] |
| } |
| } |