blob: d218425b75c3de67248def50361e65f0fda0b0d5 [file] [log] [blame]
Alexis Hetu91f10e32016-06-07 19:53:42 -04001# 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
Peter Collingbourne8e67eb92018-01-24 18:42:02 -080015import("//build/config/c++/c++.gni")
Nicolas Capensd51e2162017-06-05 13:59:55 -040016import("//build/config/compiler/compiler.gni")
17
Alexis Hetu91f10e32016-06-07 19:53:42 -040018config("swiftshader_config") {
Alexis Hetu0def1022017-08-16 17:15:48 -040019 defines = []
Alexis Hetu2ddef882017-03-14 15:11:15 -040020
Alexis Hetu03b67af2016-08-31 17:25:40 -040021 if (is_win) {
22 cflags = [
Alexis Hetud6d10f92016-11-22 13:47:04 -050023 "/GS", # Detects some buffer overruns
Alexis Hetu03b67af2016-08-31 17:25:40 -040024 "/Zc:wchar_t",
Reid Klecknerd19db3d2017-11-29 10:45:53 -080025 "/EHs-c-", # Disable C++ exceptions
Alexis Hetu03b67af2016-08-31 17:25:40 -040026 "/nologo",
Alexis Hetud6d10f92016-11-22 13:47:04 -050027 "/Gd", # Default calling convention
Alexis Hetu2ddef882017-03-14 15:11:15 -040028 ]
29
Peter Collingbourne8e67eb92018-01-24 18:42:02 -080030 if (!use_custom_libcxx) {
31 # Disable EH usage in STL headers.
32 # libc++ uses a predefined macro to control whether to use exceptions, so
33 # defining this macro is unnecessary. Defining _HAS_EXCEPTIONS to 0 also
34 # breaks libc++ because it depends on MSVC headers that only provide
35 # certain declarations if _HAS_EXCEPTIONS is 1.
36 defines += [
37 "_HAS_EXCEPTIONS=0",
38 ]
39 }
40
Alexis Hetu2ddef882017-03-14 15:11:15 -040041 defines += [
42 "_CRT_SECURE_NO_DEPRECATE",
43 "NOMINMAX",
44 "_WINDLL",
Nicolas Capens506cc5e2017-07-24 11:30:55 -040045 "NO_SANITIZE_FUNCTION=",
Alexis Hetu03b67af2016-08-31 17:25:40 -040046 ]
Alexis Hetuc55dd842017-08-08 08:31:13 -040047
Robert Liaoe8d42ae2017-08-14 10:51:58 -070048 if (!is_debug) {
Alexis Hetuc55dd842017-08-08 08:31:13 -040049 defines += [ "ANGLE_DISABLE_TRACE" ]
50 }
Alexis Hetu03b67af2016-08-31 17:25:40 -040051 } else {
Alexis Hetua11d03e2017-01-27 11:38:59 -050052 cflags = [
53 "-std=c++11",
Alexis Hetu2c0546d2017-05-24 11:16:26 -040054 "-fno-exceptions",
Alexis Hetua11d03e2017-01-27 11:38:59 -050055 "-fno-operator-names",
Alexis Hetu2ddef882017-03-14 15:11:15 -040056 ]
57
58 defines += [
59 "__STDC_CONSTANT_MACROS",
60 "__STDC_LIMIT_MACROS",
Nicolas Capens506cc5e2017-07-24 11:30:55 -040061 "NO_SANITIZE_FUNCTION=__attribute__((no_sanitize(\"function\")))",
Alexis Hetua11d03e2017-01-27 11:38:59 -050062 ]
Alexis Hetu91f10e32016-06-07 19:53:42 -040063
Alexis Hetuc55dd842017-08-08 08:31:13 -040064 if (is_debug) {
65 cflags += [
66 "-g",
67 "-g3",
68 ]
69 } else { # Release
70 # All Release builds use function/data sections to make the shared libraries smaller
71 cflags += [
72 "-ffunction-sections",
73 "-fdata-sections",
74 "-fomit-frame-pointer",
75 "-Os",
76 ]
77
78 defines += [
79 "ANGLE_DISABLE_TRACE",
80 "NDEBUG",
81 ]
82 }
83
Alexis Hetud6d10f92016-11-22 13:47:04 -050084 if (target_cpu == "x64") { # 64 bit version
Alexis Hetu91f10e32016-06-07 19:53:42 -040085 cflags += [
86 "-m64",
87 "-fPIC",
Nicolas Capens0424edc2018-01-03 14:06:30 -050088 "-march=x86-64",
89 "-mtune=generic",
Alexis Hetu91f10e32016-06-07 19:53:42 -040090 ]
Stephen Lanhamfe796492018-09-07 11:59:54 -070091 } else if (target_cpu == "x86") { # 32 bit version
Alexis Hetua11d03e2017-01-27 11:38:59 -050092 cflags += [
93 "-m32",
94 "-msse2",
Nicolas Capens0424edc2018-01-03 14:06:30 -050095 "-mfpmath=sse",
96 "-march=pentium4",
97 "-mtune=generic",
Alexis Hetua11d03e2017-01-27 11:38:59 -050098 ]
Alexis Hetu91f10e32016-06-07 19:53:42 -040099 }
Alexis Hetua11d03e2017-01-27 11:38:59 -0500100
Alexis Hetub1031c82017-01-30 13:46:08 -0500101 if (is_linux) {
102 ldflags = [
103 "-Wl,--hash-style=both",
104 "-Wl,--gc-sections",
105 ]
Alexis Hetu9441b072017-08-02 08:40:37 -0400106
Nicolas Capens0f7d4272017-06-05 13:24:09 -0400107 # A bug in the gold linker prevents using ICF on 32-bit (crbug.com/729532)
108 if (use_gold && target_cpu == "x86") {
Alexis Hetu9441b072017-08-02 08:40:37 -0400109 ldflags += [ "-Wl,--icf=none" ]
Nicolas Capens0f7d4272017-06-05 13:24:09 -0400110 }
Alexis Hetub1031c82017-01-30 13:46:08 -0500111 }
Alexis Hetu91f10e32016-06-07 19:53:42 -0400112 }
113}
114
Corentin Wallez57eb0632017-10-24 15:17:18 -0400115source_set("vertex_routine_fuzzer") {
116 sources = [
117 "tests/fuzzers/VertexRoutineFuzzer.cpp"
118 ]
Corentin Wallez6e27fea2017-10-27 13:40:18 -0400119 if (is_win) {
120 cflags = [
121 "/wd4201", # nameless struct/union
122 "/wd4065", # switch statement contains 'default' but no 'case' labels
123 "/wd5030", # attribute is not recognized
124 ]
125 }
Corentin Wallez57eb0632017-10-24 15:17:18 -0400126 include_dirs = [
127 "src/",
128 ]
129 deps = [
130 "src/OpenGL/libGLESv2:swiftshader_libGLESv2_static",
131 ]
132}
133
Alexis Hetu68f564d2016-07-06 17:43:22 -0400134group("swiftshader") {
Alexis Hetu996663b2016-09-21 13:47:42 -0400135 data_deps = [
136 "src/OpenGL/libGLESv2:swiftshader_libGLESv2",
137 "src/OpenGL/libEGL:swiftshader_libEGL",
138 ]
Alexis Hetua6e99c02016-11-16 13:53:57 -0500139}
140
141group("swiftshader_tests") {
142 testonly = true
143
144 data_deps = [
145 "tests/unittests:swiftshader_unittests",
146 ]
Alexis Hetud6d10f92016-11-22 13:47:04 -0500147}