From d68f9b00389bf676b171f250e684486cb2fbd404 Mon Sep 17 00:00:00 2001 From: mtklein Date: Fri, 23 Sep 2016 13:18:41 -0700 Subject: GN: ANGLE Angle's existing GN files only work in Chrome, so I've written a new one. This won't work on Windows, but our GN build doesn't work on Windows anyway. So this CL is an attempt to get a ahead of that curve on ANGLE. It looks large but fairly straightforward. Now working on Linux: $ gn gen angle --args=skia_use_angle=true $ ninja -C angle $ angle/dm --config angle-gl --src gm -w dm-out BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2361983002 Review-Url: https://codereview.chromium.org/2361983002 --- third_party/angle2/BUILD.gn | 115 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 third_party/angle2/BUILD.gn (limited to 'third_party/angle2') diff --git a/third_party/angle2/BUILD.gn b/third_party/angle2/BUILD.gn new file mode 100644 index 0000000000..3ae0f8efe5 --- /dev/null +++ b/third_party/angle2/BUILD.gn @@ -0,0 +1,115 @@ +# 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") { + cflags = [ "-w" ] + defines = [ + "ANGLE_ENABLE_ESSL", + "ANGLE_ENABLE_GLSL", + "GL_GLEXT_PROTOTYPES", + "EGL_EGLEXT_PROTOTYPES", + ] + include_dirs = [ + "$root_gen_dir/angle2", + "$angle_root/include", + "$angle_root/src", + "$angle_root/src/common/third_party/numerics", + ] + + assert(is_linux) # TODO: is_win, of course, maybe is_mac? + if (is_linux) { + defines += [ + "ANGLE_ENABLE_OPENGL", + "ANGLE_USE_X11", + "GL_APICALL=__attribute__((visibility(\"default\")))", + "EGLAPI=__attribute__((visibility(\"default\")))", + ] + } +} + +copy("commit_id") { + sources = [ + "$angle_root/src/commit.h", + ] + outputs = [ + "$root_gen_dir/angle2/id/commit.h", + ] +} + +shared_library("libGLESv2") { + configs += [ ":common" ] + defines = [ "LIBGLESV2_IMPLEMENTATION" ] + deps = [ + ":commit_id", + ] + libs = [] + sources = rebase_path(compiler_gypi.angle_preprocessor_sources + + compiler_gypi.angle_translator_lib_sources + + compiler_gypi.angle_translator_lib_essl_sources + + compiler_gypi.angle_translator_lib_glsl_sources + + gles_gypi.libangle_sources + + gles_gypi.libangle_common_sources + + gles_gypi.libangle_image_util_sources + + gles_gypi.libglesv2_sources, + ".", + "$angle_root/src") + + [ + "$angle_root/src/compiler/translator/ShaderLang.cpp", + "$angle_root/src/compiler/translator/ShaderVars.cpp", + ] + if (!is_win) { + sources -= [ "$angle_root/src/libGLESv2/libGLESv2.def" ] + } + + if (is_linux) { + libs += [ + "X11", + "Xi", + "Xext", + ] + sources += rebase_path(gles_gypi.libangle_gl_sources + + gles_gypi.libangle_gl_glx_sources, + ".", + "$angle_root/src") + + [ "$angle_root/src/third_party/libXNVCtrl/NVCtrl.c" ] + } +} + +shared_library("libEGL") { + configs += [ ":common" ] + 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" ] + } +} -- cgit v1.2.3