Home | History | Annotate | Download | only in swiftshader
      1 # Copyright 2016 The SwiftShader Authors. All Rights Reserved.
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #    http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 
     15 import("//build/config/compiler/compiler.gni")
     16 
     17 config("swiftshader_config") {
     18   defines = [ "STRICT_CONFORMANCE" ]  # Disables OpenGL ES 3.0
     19 
     20   if (is_win) {
     21     cflags = [
     22       "/GS",  # Detects some buffer overruns
     23       "/Zc:wchar_t",
     24       "/EHsc",
     25       "/nologo",
     26       "/Gd",  # Default calling convention
     27     ]
     28 
     29     defines += [
     30       "_CRT_SECURE_NO_DEPRECATE",
     31       "NOMINMAX",
     32       "_WINDLL",
     33       "NO_SANITIZE_FUNCTION=",
     34     ]
     35 
     36     if (!is_debug) {
     37       defines += [ "ANGLE_DISABLE_TRACE" ]
     38     }
     39   } else {
     40     cflags = [
     41       "-std=c++11",
     42       "-fno-exceptions",
     43       "-fno-operator-names",
     44     ]
     45 
     46     defines += [
     47       "__STDC_CONSTANT_MACROS",
     48       "__STDC_LIMIT_MACROS",
     49       "NO_SANITIZE_FUNCTION=__attribute__((no_sanitize(\"function\")))",
     50     ]
     51 
     52     if (is_debug) {
     53       cflags += [
     54         "-g",
     55         "-g3",
     56       ]
     57     } else {  # Release
     58       # All Release builds use function/data sections to make the shared libraries smaller
     59       cflags += [
     60         "-ffunction-sections",
     61         "-fdata-sections",
     62         "-fomit-frame-pointer",
     63         "-Os",
     64       ]
     65 
     66       defines += [
     67         "ANGLE_DISABLE_TRACE",
     68         "NDEBUG",
     69       ]
     70     }
     71 
     72     if (target_cpu == "x64") {  # 64 bit version
     73       cflags += [
     74         "-m64",
     75         "-fPIC",
     76         "-march=core2",
     77       ]
     78     } else {  # 32 bit version
     79       cflags += [
     80         "-m32",
     81         "-msse2",
     82         "-march=i686",
     83       ]
     84     }
     85 
     86     if (is_linux) {
     87       ldflags = [
     88         "-Wl,--hash-style=both",
     89         "-Wl,--gc-sections",
     90       ]
     91 
     92       # A bug in the gold linker prevents using ICF on 32-bit (crbug.com/729532)
     93       if (use_gold && target_cpu == "x86") {
     94         ldflags += [ "-Wl,--icf=none" ]
     95       }
     96     }
     97   }
     98 }
     99 
    100 group("swiftshader") {
    101   data_deps = [
    102     "src/OpenGL/libGLESv2:swiftshader_libGLESv2",
    103     "src/OpenGL/libEGL:swiftshader_libEGL",
    104   ]
    105 }
    106 
    107 group("swiftshader_tests") {
    108   testonly = true
    109 
    110   data_deps = [
    111     "tests/unittests:swiftshader_unittests",
    112   ]
    113 }
    114