OSDN Git Service

Allow Chromium to create an OpenGL ES3 context
[android-x86/external-swiftshader.git] / BUILD.gn
index 318d422..0ef68d9 100644 (file)
--- a/BUILD.gn
+++ b/BUILD.gn
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import("//build/config/compiler/compiler.gni")
+
 config("swiftshader_config") {
-if (is_clang) {
+  defines = []
+
+  if (is_win) {
+    cflags = [
+      "/GS",  # Detects some buffer overruns
+      "/Zc:wchar_t",
+      "/EHsc",
+      "/nologo",
+      "/Gd",  # Default calling convention
+    ]
+
+    defines += [
+      "_CRT_SECURE_NO_DEPRECATE",
+      "NOMINMAX",
+      "_WINDLL",
+      "NO_SANITIZE_FUNCTION=",
+    ]
+
+    if (!is_debug) {
+      defines += [ "ANGLE_DISABLE_TRACE" ]
+    }
+  } else {
     cflags = [
       "-std=c++11",
+      "-fno-exceptions",
+      "-fno-operator-names",
+    ]
+
+    defines += [
+      "__STDC_CONSTANT_MACROS",
+      "__STDC_LIMIT_MACROS",
+      "NO_SANITIZE_FUNCTION=__attribute__((no_sanitize(\"function\")))",
     ]
 
     if (is_debug) {
-        cflags += [
+      cflags += [
         "-g",
+        "-g3",
       ]
-    } else { # Release
+    } else {  # Release
       # All Release builds use function/data sections to make the shared libraries smaller
       cflags += [
         "-ffunction-sections",
         "-fdata-sections",
-        "-Wl",
-        "--gc-sections",
-        "-s",
         "-fomit-frame-pointer",
+        "-Os",
       ]
 
-      # Choose the right Release architecture
-      if (target_cpu == "x64") {
-        cflags += [
-          "-march=core2",
-        ]
-      } else { # 32
-        cflags += [
-          "-march=i686",
-        ]
-      }
+      defines += [
+        "ANGLE_DISABLE_TRACE",
+        "NDEBUG",
+      ]
     }
 
-    if (target_cpu == "x64") { # 64 bit version
+    if (target_cpu == "x64") {  # 64 bit version
       cflags += [
         "-m64",
         "-fPIC",
+        "-march=core2",
       ]
-    } else { # 32 bit version
+    } else {  # 32 bit version
       cflags += [
         "-m32",
+        "-msse2",
+        "-march=i686",
       ]
     }
+
+    if (is_linux) {
+      ldflags = [
+        "-Wl,--hash-style=both",
+        "-Wl,--gc-sections",
+      ]
+
+      # A bug in the gold linker prevents using ICF on 32-bit (crbug.com/729532)
+      if (use_gold && target_cpu == "x86") {
+        ldflags += [ "-Wl,--icf=none" ]
+      }
+    }
   }
 }
 
-component("swiftshader") {
-  configs -= [ "//build/config/compiler:chromium_code" ]
-  configs += [
-    "//build/config/compiler:no_chromium_code",
-    ":swiftshader_config",
+group("swiftshader") {
+  data_deps = [
+    "src/OpenGL/libGLESv2:swiftshader_libGLESv2",
+    "src/OpenGL/libEGL:swiftshader_libEGL",
   ]
+}
 
-  deps = [
-    "src/OpenGL/libEGL:swiftshader_libEGL",
-    "src/OpenGL/libGLESv2:swiftshader_libGLESv2",
+group("swiftshader_tests") {
+  testonly = true
+
+  data_deps = [
+    "tests/unittests:swiftshader_unittests",
   ]
-}
\ No newline at end of file
+}