# 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("../third_party.gni") third_party("angle2") { public_include_dirs = [ "$angle_root/include" ] deps = [ ":libEGL", ":libGLESv2", ] } compiler_gypi = exec_script("//gn/gypi_to_gn.py", [ rebase_path("$angle_root/src/compiler.gypi") ], "scope", []) gles_gypi = exec_script("//gn/gypi_to_gn.py", [ rebase_path("$angle_root/src/libGLESv2.gypi") ], "scope", []) 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" ] if (is_clang) { # utilities.cpp includes an 'unsigned long' <= UINT_MAX check cflags_cc += [ "-Wno-tautological-constant-compare" ] } } } copy("commit_id") { sources = [ "$angle_root/src/commit.h", ] outputs = [ "$root_gen_dir/angle2/id/commit.h", ] } shared_library("libGLESv2") { configs += [ ":common" ] configs -= [ "//gn:warnings" ] defines = [ "LIBANGLE_IMPLEMENTATION", "LIBGLESV2_IMPLEMENTATION", ] deps = [ ":commit_id", ] libs = [] sources = rebase_path( compiler_gypi.angle_preprocessor_sources + compiler_gypi.angle_translator_sources + compiler_gypi.angle_translator_essl_sources + compiler_gypi.angle_translator_glsl_sources + compiler_gypi.angle_translator_hlsl_sources + gles_gypi.libangle_sources + gles_gypi.libangle_common_sources + gles_gypi.libangle_image_util_sources + gles_gypi.libglesv2_sources + gles_gypi.libangle_gl_sources, ".", "$angle_root/src") if (is_win) { sources += [ "$angle_root/src/libGLESv2/libGLESv2_autogen.def" ] } if (is_linux) { libs += [ "X11", "Xi", "Xext", ] sources += rebase_path(gles_gypi.libangle_gl_glx_sources + gles_gypi.libangle_common_linux_sources, ".", "$angle_root/src") + [ "$angle_root/src/third_party/libXNVCtrl/NVCtrl.c" ] } else if (is_win) { defines += [ # TODO: ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES ] sources += rebase_path(gles_gypi.libangle_gl_wgl_sources + gles_gypi.libangle_d3d_shared_sources + gles_gypi.libangle_d3d9_sources + gles_gypi.libangle_d3d11_sources + gles_gypi.libangle_d3d11_win32_sources + gles_gypi.libangle_common_win_sources, ".", "$angle_root/src") libs += [ "d3d9.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(gles_gypi.libegl_sources, ".", "$angle_root/src") if (is_win) { sources += [ "$angle_root/src/libEGL/libEGL.def" ] } }