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