Home | History | Annotate | Download | only in angle2
      1 # Copyright 2016 Google Inc.
      2 #
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 declare_args() {
      7 }
      8 
      9 angle_root = "../externals/angle2"
     10 
     11 import("../third_party.gni")
     12 import("$angle_root/src/compiler.gni")
     13 import("$angle_root/src/libGLESv2.gni")
     14 
     15 third_party("angle2") {
     16   public_include_dirs = [ "$angle_root/include" ]
     17   deps = [
     18     ":libEGL",
     19     ":libGLESv2",
     20   ]
     21 }
     22 
     23 config("common") {
     24   defines = [
     25     "ANGLE_ENABLE_ESSL",
     26     "ANGLE_ENABLE_GLSL",
     27     "ANGLE_ENABLE_HLSL",
     28     "ANGLE_ENABLE_OPENGL",
     29     "EGL_EGLEXT_PROTOTYPES",
     30     "GL_GLEXT_PROTOTYPES",
     31   ]
     32   include_dirs = [
     33     "$root_gen_dir/angle2",
     34     "$angle_root/include",
     35     "$angle_root/src",
     36     "$angle_root/src/common/third_party/base",
     37     "$angle_root/src/third_party/khronos",
     38   ]
     39   cflags_cc = []
     40   assert(is_linux || is_win)  # TODO: is_mac?
     41   if (is_linux) {
     42     defines += [
     43       "ANGLE_USE_X11",
     44       "GL_APICALL=__attribute__((visibility(\"default\")))",
     45       "GL_API=__attribute__((visibility(\"default\")))",
     46       "EGLAPI=__attribute__((visibility(\"default\")))",
     47     ]
     48     cflags_cc += [ "-std=c++14" ]
     49   } else if (is_win) {
     50     defines += [
     51       "ANGLE_ENABLE_D3D11",
     52       "ANGLE_ENABLE_D3D9",
     53       "GL_APICALL=",
     54       "GL_API=",
     55       "EGLAPI=",
     56     ]
     57 
     58     # Allow noexcept, even though we build without exceptions
     59     cflags_cc += [ "/wd4577" ]
     60     if (is_clang) {
     61       # utilities.cpp includes an 'unsigned long' <= UINT_MAX check
     62       cflags_cc += [ "-Wno-tautological-constant-compare" ]
     63     }
     64   }
     65 }
     66 
     67 copy("commit_id") {
     68   sources = [
     69     "$angle_root/src/commit.h",
     70   ]
     71   outputs = [
     72     "$root_gen_dir/angle2/id/commit.h",
     73   ]
     74 }
     75 
     76 shared_library("libGLESv2") {
     77   configs += [ ":common" ]
     78   configs -= [ "//gn:warnings" ]
     79   defines = [
     80     "LIBANGLE_IMPLEMENTATION",
     81     "LIBGLESV2_IMPLEMENTATION",
     82   ]
     83   deps = [
     84     ":commit_id",
     85   ]
     86   libs = []
     87   sources = rebase_path(
     88           angle_preprocessor_sources + angle_translator_sources +
     89               angle_translator_essl_sources + angle_translator_glsl_sources +
     90               angle_translator_hlsl_sources + libangle_sources +
     91               libangle_common_sources + libangle_image_util_sources +
     92               libglesv2_sources + libangle_gl_sources +
     93               angle_system_utils_sources,
     94           ".",
     95           angle_root)
     96   if (is_win) {
     97     sources += [ "$angle_root/src/libGLESv2/libGLESv2_autogen.def" ]
     98   }
     99   if (is_linux) {
    100     libs += [
    101       "X11",
    102       "Xi",
    103       "Xext",
    104     ]
    105     sources += rebase_path(libangle_gl_glx_sources, ".", angle_root) +
    106                [ "$angle_root/src/third_party/libXNVCtrl/NVCtrl.c" ]
    107   } else if (is_win) {
    108     defines += [
    109       # TODO: ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES
    110     ]
    111     sources +=
    112         rebase_path(libangle_gl_wgl_sources + libangle_d3d_shared_sources +
    113                         libangle_d3d9_sources + libangle_d3d11_sources +
    114                         libangle_d3d11_win32_sources,
    115                     ".",
    116                     angle_root)
    117     libs += [
    118       "d3d9.lib",
    119       "dxguid.lib",
    120       "gdi32.lib",
    121       "user32.lib",
    122     ]
    123     deps += [
    124       # TODO: copy_compiler_dll?
    125     ]
    126   }
    127 }
    128 
    129 shared_library("libEGL") {
    130   configs += [ ":common" ]
    131   configs -= [ "//gn:warnings" ]
    132   defines = [ "LIBEGL_IMPLEMENTATION" ]
    133   deps = [
    134     ":libGLESv2",
    135   ]
    136   sources = rebase_path(libegl_sources, ".", angle_root)
    137   if (is_win) {
    138     sources += [ "$angle_root/src/libEGL/libEGL.def" ]
    139   }
    140 }
    141