blob: ee933576cbe77c9d434cf44bbed5aff2414e9f06 [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
Alexis Hetu2c853402017-02-08 15:01:45 -050015declare_args() {
16 # Currently, Subzero is not used by default
17 # LLVM is still the default backend
18 use_swiftshader_with_subzero = false
19}
20
Alexis Hetu91f10e32016-06-07 19:53:42 -040021# Need a separate config to ensure the warnings are added to the end.
Alexis Hetu0ceb7f72017-02-01 11:23:30 -050022config("swiftshader_subzero_common_private_config") {
23 defines = [
24 "ALLOW_DUMP=0",
25 "ALLOW_TIMERS=0",
26 "ALLOW_LLVM_CL=0",
27 "ALLOW_LLVM_IR=0",
28 "ALLOW_LLVM_IR_AS_INPUT=0",
29 "ALLOW_MINIMAL_BUILD=0",
30 "ALLOW_WASM=0",
31 "ICE_THREAD_LOCAL_HACK=0",
32 ]
33
Alexis Hetue2c71542017-02-07 15:47:27 -050034 if (is_win) {
35 defines += [ "SUBZERO_USE_MICROSOFT_ABI" ]
36 }
37
Alexis Hetu0ceb7f72017-02-01 11:23:30 -050038 if (target_cpu == "x64") {
39 defines += [
40 "SZTARGET=X8664",
41 "SUBZERO_TARGET=X8664",
42 ]
43 } else {
44 defines += [
45 "SZTARGET=X8632",
46 "SUBZERO_TARGET=X8632",
47 ]
48 }
49
50 include_dirs = [
51 "../../third_party/pnacl-subzero",
52 "../../third_party/pnacl-subzero/pnacl-llvm/include/",
53 "../../third_party/llvm-subzero/include/",
54 ]
55
56 if (is_win) {
57 include_dirs += [ "../../third_party/llvm-subzero/build/Windows/include/" ]
58 } else if (is_linux) {
59 include_dirs += [ "../../third_party/llvm-subzero/build/Linux/include/" ]
60 } else if (is_mac) {
61 include_dirs += [ "../../third_party/llvm-subzero/build/MacOS/include/" ]
62 }
63}
64
65config("swiftshader_subzero_private_config") {
Alexis Hetu0ceb7f72017-02-01 11:23:30 -050066 cflags = []
67
68 if (is_win) {
69 cflags += [
70 "/wd4005",
71 "/wd4018",
72 "/wd4141",
73 "/wd4146",
74 "/wd4245", # conversion from int to unsigned int (llvm)
75 "/wd4267",
76 "/wd4310",
77 "/wd4334",
78 "/wd4389",
79 "/wd4701",
80 "/wd4702",
81 "/wd4703",
82 "/wd4706",
83 "/wd4800",
84 ]
85
86 if (!is_debug) {
87 cflags += [ "/wd4718" ]
88 }
89
90 if (is_clang) {
91 if (is_debug) {
92 cflags += [ "-Wno-sign-compare" ]
93 }
94 }
95 } else if (is_linux || is_mac) {
96 cflags += [ "-Wno-macro-redefined" ]
97 }
98
99 if (is_clang) {
100 cflags += [ "-Wno-header-hygiene" ]
101 }
102}
103
104config("swiftshader_reactor_with_subzero_private_config") {
Alexis Hetu0ceb7f72017-02-01 11:23:30 -0500105 cflags = []
106
107 if (is_win) {
108 cflags += [
109 "/wd4141",
110 "/wd4146",
111 "/wd4245", # conversion from int to unsigned int (llvm)
112 "/wd4267",
113 "/wd4702",
114 "/wd4800",
115 ]
116
117 if (is_clang) {
118 if (is_debug) {
119 cflags += [ "-Wno-sign-compare" ]
120 }
121 }
122 }
123
124 if (is_clang) {
125 cflags += [ "-Wno-header-hygiene" ]
126 }
127}
128
Alexis Hetu91f10e32016-06-07 19:53:42 -0400129config("swiftshader_reactor_private_config") {
Alexis Hetu03b67af2016-08-31 17:25:40 -0400130 if (is_win) {
131 cflags = [
Alexis Hetud6d10f92016-11-22 13:47:04 -0500132 "/wd4201", # nameless struct/union
133 "/wd4245", # conversion from int to unsigned int (llvm)
Alexis Hetu03b67af2016-08-31 17:25:40 -0400134 ]
Alexis Hetu03b67af2016-08-31 17:25:40 -0400135 } else {
Alexis Hetu91f10e32016-06-07 19:53:42 -0400136 cflags = [
137 "-DLOG_TAG=\"swiftshader_reactor\"",
138 "-Wno-unused-local-typedef",
139 "-msse2",
140 "-D__STDC_CONSTANT_MACROS",
141 "-D__STDC_LIMIT_MACROS",
142 ]
Alexis Hetu91f10e32016-06-07 19:53:42 -0400143 }
144}
145
Alexis Hetubf6169d2017-02-09 11:23:23 -0500146if (use_swiftshader_with_subzero) {
147 source_set("swiftshader_subzero") {
148 subzero_dir = "../../third_party/pnacl-subzero"
149 subzero_llvm_dir = "../../third_party/llvm-subzero"
Alexis Hetu91f10e32016-06-07 19:53:42 -0400150
Alexis Hetubf6169d2017-02-09 11:23:23 -0500151 sources = [
152 "$subzero_dir/src/IceAssembler.cpp",
153 "$subzero_dir/src/IceCfg.cpp",
154 "$subzero_dir/src/IceCfgNode.cpp",
155 "$subzero_dir/src/IceClFlags.cpp",
156 "$subzero_dir/src/IceELFObjectWriter.cpp",
157 "$subzero_dir/src/IceELFSection.cpp",
158 "$subzero_dir/src/IceFixups.cpp",
159 "$subzero_dir/src/IceGlobalContext.cpp",
160 "$subzero_dir/src/IceGlobalInits.cpp",
161 "$subzero_dir/src/IceInst.cpp",
162 "$subzero_dir/src/IceInstrumentation.cpp",
163 "$subzero_dir/src/IceIntrinsics.cpp",
164 "$subzero_dir/src/IceLiveness.cpp",
165 "$subzero_dir/src/IceLoopAnalyzer.cpp",
166 "$subzero_dir/src/IceMangling.cpp",
167 "$subzero_dir/src/IceMemory.cpp",
168 "$subzero_dir/src/IceOperand.cpp",
169 "$subzero_dir/src/IceRNG.cpp",
170 "$subzero_dir/src/IceRangeSpec.cpp",
171 "$subzero_dir/src/IceRegAlloc.cpp",
172 "$subzero_dir/src/IceRevision.cpp",
173 "$subzero_dir/src/IceSwitchLowering.cpp",
174 "$subzero_dir/src/IceTargetLowering.cpp",
175 "$subzero_dir/src/IceTargetLoweringX86.cpp",
176 "$subzero_dir/src/IceThreading.cpp",
177 "$subzero_dir/src/IceTimerTree.cpp",
178 "$subzero_dir/src/IceTypes.cpp",
179 "$subzero_dir/src/IceVariableSplitting.cpp",
180 "$subzero_llvm_dir/lib/Demangle/ItaniumDemangle.cpp",
181 "$subzero_llvm_dir/lib/Support/APInt.cpp",
182 "$subzero_llvm_dir/lib/Support/Atomic.cpp",
183 "$subzero_llvm_dir/lib/Support/CommandLine.cpp",
184 "$subzero_llvm_dir/lib/Support/ConvertUTF.cpp",
185 "$subzero_llvm_dir/lib/Support/ConvertUTFWrapper.cpp",
186 "$subzero_llvm_dir/lib/Support/Debug.cpp",
187 "$subzero_llvm_dir/lib/Support/Errno.cpp",
188 "$subzero_llvm_dir/lib/Support/ErrorHandling.cpp",
189 "$subzero_llvm_dir/lib/Support/FoldingSet.cpp",
190 "$subzero_llvm_dir/lib/Support/Hashing.cpp",
191 "$subzero_llvm_dir/lib/Support/Host.cpp",
192 "$subzero_llvm_dir/lib/Support/ManagedStatic.cpp",
193 "$subzero_llvm_dir/lib/Support/MemoryBuffer.cpp",
194 "$subzero_llvm_dir/lib/Support/Mutex.cpp",
195 "$subzero_llvm_dir/lib/Support/NativeFormatting.cpp",
196 "$subzero_llvm_dir/lib/Support/Path.cpp",
197 "$subzero_llvm_dir/lib/Support/Process.cpp",
198 "$subzero_llvm_dir/lib/Support/Program.cpp",
199 "$subzero_llvm_dir/lib/Support/Regex.cpp",
200 "$subzero_llvm_dir/lib/Support/Signals.cpp",
201 "$subzero_llvm_dir/lib/Support/SmallPtrSet.cpp",
202 "$subzero_llvm_dir/lib/Support/SmallVector.cpp",
203 "$subzero_llvm_dir/lib/Support/StringExtras.cpp",
204 "$subzero_llvm_dir/lib/Support/StringMap.cpp",
205 "$subzero_llvm_dir/lib/Support/StringRef.cpp",
206 "$subzero_llvm_dir/lib/Support/StringSaver.cpp",
207 "$subzero_llvm_dir/lib/Support/TargetParser.cpp",
208 "$subzero_llvm_dir/lib/Support/Threading.cpp",
209 "$subzero_llvm_dir/lib/Support/Timer.cpp",
210 "$subzero_llvm_dir/lib/Support/Triple.cpp",
211 "$subzero_llvm_dir/lib/Support/Twine.cpp",
212 "$subzero_llvm_dir/lib/Support/circular_raw_ostream.cpp",
213 "$subzero_llvm_dir/lib/Support/raw_os_ostream.cpp",
214 "$subzero_llvm_dir/lib/Support/raw_ostream.cpp",
215 "$subzero_llvm_dir/lib/Support/regcomp.c",
216 "$subzero_llvm_dir/lib/Support/regerror.c",
217 "$subzero_llvm_dir/lib/Support/regexec.c",
218 "$subzero_llvm_dir/lib/Support/regfree.c",
219 "$subzero_llvm_dir/lib/Support/regstrlcpy.c",
Alexis Hetu0ceb7f72017-02-01 11:23:30 -0500220 ]
Alexis Hetubf6169d2017-02-09 11:23:23 -0500221
222 if (target_cpu == "x64") {
223 sources += [
224 "$subzero_dir/src/IceInstX8664.cpp",
225 "$subzero_dir/src/IceTargetLoweringX8664.cpp",
226 ]
227 } else {
228 sources += [
229 "$subzero_dir/src/IceInstX8632.cpp",
230 "$subzero_dir/src/IceTargetLoweringX8632.cpp",
231 ]
232 }
233
234 if (is_win) {
235 configs -= [ "//build/config/win:unicode" ]
236 }
237 configs += [
238 ":swiftshader_subzero_common_private_config",
239 ":swiftshader_subzero_private_config",
Alexis Hetu0ceb7f72017-02-01 11:23:30 -0500240 ]
241 }
Alexis Hetud6d10f92016-11-22 13:47:04 -0500242}
Alexis Hetu0ceb7f72017-02-01 11:23:30 -0500243
244source_set("swiftshader_reactor") {
Alexis Hetue2c71542017-02-07 15:47:27 -0500245 deps = [
246 "../OpenGL/common:swiftshader_opengl_common",
247 ]
Alexis Hetu0ceb7f72017-02-01 11:23:30 -0500248
Alexis Hetue2c71542017-02-07 15:47:27 -0500249 sources = [
250 "Routine.cpp",
251 ]
Alexis Hetu0ceb7f72017-02-01 11:23:30 -0500252
Alexis Hetu2c853402017-02-08 15:01:45 -0500253 if (use_swiftshader_with_subzero) {
Alexis Hetu0ceb7f72017-02-01 11:23:30 -0500254 deps += [ ":swiftshader_subzero" ]
255
256 sources += [
257 "Optimizer.cpp",
258 "SubzeroReactor.cpp",
259 ]
260
261 configs += [
262 ":swiftshader_subzero_common_private_config",
263 ":swiftshader_reactor_with_subzero_private_config",
264 ]
265 } else {
266 deps += [ "../../third_party/LLVM:swiftshader_llvm" ]
267
268 sources += [
269 "LLVMReactor.cpp",
270 "LLVMRoutine.cpp",
271 "LLVMRoutineManager.cpp",
272 ]
273
274 configs += [ ":swiftshader_reactor_private_config" ]
275
276 include_dirs = [
277 "..",
278 "../Common",
279 "../../third_party/LLVM/include/",
280 ]
281 }
282
283 if (is_win) {
284 configs -= [ "//build/config/win:unicode" ]
285 }
286}