blob: 46c980470e62672d8590121c1b9de8664a6b9842 [file] [log] [blame]
# 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" ]
}
}