# Copyright 2016 The SwiftShader Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("//build/config/c++/c++.gni") import("//build/config/compiler/compiler.gni") config("swiftshader_config") { defines = [] if (is_win) { cflags = [ "/GS", # Detects some buffer overruns "/Zc:wchar_t", "/EHs-c-", # Disable C++ exceptions "/nologo", "/Gd", # Default calling convention ] if (!use_custom_libcxx) { # Disable EH usage in STL headers. # libc++ uses a predefined macro to control whether to use exceptions, so # defining this macro is unnecessary. Defining _HAS_EXCEPTIONS to 0 also # breaks libc++ because it depends on MSVC headers that only provide # certain declarations if _HAS_EXCEPTIONS is 1. defines += [ "_HAS_EXCEPTIONS=0", ] } 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 += [ "-g", "-g3", ] } else { # Release # All Release builds use function/data sections to make the shared libraries smaller cflags += [ "-ffunction-sections", "-fdata-sections", "-fomit-frame-pointer", "-Os", ] defines += [ "ANGLE_DISABLE_TRACE", "NDEBUG", ] } if (target_cpu == "x64") { # 64 bit version cflags += [ "-m64", "-fPIC", "-march=x86-64", "-mtune=generic", ] } else { # 32 bit version cflags += [ "-m32", "-msse2", "-mfpmath=sse", "-march=pentium4", "-mtune=generic", ] } 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" ] } } } } source_set("vertex_routine_fuzzer") { sources = [ "tests/fuzzers/VertexRoutineFuzzer.cpp" ] if (is_win) { cflags = [ "/wd4201", # nameless struct/union "/wd4065", # switch statement contains 'default' but no 'case' labels "/wd5030", # attribute is not recognized ] } include_dirs = [ "src/", ] deps = [ "src/OpenGL/libGLESv2:swiftshader_libGLESv2_static", ] } group("swiftshader") { data_deps = [ "src/OpenGL/libGLESv2:swiftshader_libGLESv2", "src/OpenGL/libEGL:swiftshader_libEGL", ] } group("swiftshader_tests") { testonly = true data_deps = [ "tests/unittests:swiftshader_unittests", ] }