| # 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("../swiftshader.gni") | |
| declare_args() { | |
| # Currently, Subzero is not used by default | |
| # LLVM is still the default backend | |
| use_swiftshader_with_subzero = is_win || is_linux || is_mac || is_chromeos | |
| } | |
| # Need a separate config to ensure the warnings are added to the end. | |
| config("swiftshader_subzero_common_private_config") { | |
| defines = [ | |
| "ALLOW_DUMP=0", | |
| "ALLOW_TIMERS=0", | |
| "ALLOW_LLVM_CL=0", | |
| "ALLOW_LLVM_IR=0", | |
| "ALLOW_LLVM_IR_AS_INPUT=0", | |
| "ALLOW_MINIMAL_BUILD=0", | |
| "ALLOW_WASM=0", | |
| "ICE_THREAD_LOCAL_HACK=0", | |
| ] | |
| if (is_win) { | |
| defines += [ "SUBZERO_USE_MICROSOFT_ABI" ] | |
| } | |
| if (target_cpu == "x64") { | |
| defines += [ | |
| "SZTARGET=X8664", | |
| "SUBZERO_TARGET=X8664", | |
| ] | |
| } else { | |
| defines += [ | |
| "SZTARGET=X8632", | |
| "SUBZERO_TARGET=X8632", | |
| ] | |
| } | |
| include_dirs = [ | |
| "../../third_party/subzero", | |
| "../../third_party/subzero/pnacl-llvm/include/", | |
| "../../third_party/llvm-subzero/include/", | |
| ] | |
| if (is_win) { | |
| include_dirs += [ "../../third_party/llvm-subzero/build/Windows/include/" ] | |
| } else if (is_linux) { | |
| include_dirs += [ "../../third_party/llvm-subzero/build/Linux/include/" ] | |
| } else if (is_mac) { | |
| include_dirs += [ "../../third_party/llvm-subzero/build/MacOS/include/" ] | |
| } | |
| } | |
| config("swiftshader_subzero_private_config") { | |
| cflags = [] | |
| if (is_win) { | |
| cflags += [ | |
| "/wd4005", | |
| "/wd4018", | |
| "/wd4141", | |
| "/wd4146", | |
| "/wd4245", # conversion from int to unsigned int (llvm) | |
| "/wd4267", | |
| "/wd4291", | |
| "/wd4310", | |
| "/wd4334", | |
| "/wd4389", | |
| "/wd4701", | |
| "/wd4702", | |
| "/wd4703", | |
| "/wd4706", | |
| "/wd4800", | |
| ] | |
| if (!is_debug) { | |
| cflags += [ "/wd4718" ] | |
| } | |
| if (is_clang) { | |
| if (is_debug) { | |
| cflags += [ "-Wno-sign-compare" ] | |
| } | |
| } | |
| } else if (is_linux || is_mac) { | |
| cflags += [ "-Wno-macro-redefined" ] | |
| } | |
| if (is_clang) { | |
| cflags += [ "-Wno-header-hygiene" ] | |
| } | |
| } | |
| config("swiftshader_reactor_with_subzero_private_config") { | |
| cflags = [] | |
| if (is_win) { | |
| cflags += [ | |
| "/wd4141", | |
| "/wd4146", | |
| "/wd4245", # conversion from int to unsigned int (llvm) | |
| "/wd4267", | |
| "/wd4291", | |
| "/wd4309", | |
| "/wd4702", | |
| "/wd4800", | |
| ] | |
| if (use_swiftshader_with_subzero) { | |
| cflags += [ | |
| "/wd4018", # signed/unsigned mismatch (llvm) | |
| "/wd4310", # cast truncates constant value (llvm) | |
| ] | |
| } | |
| if (is_clang) { | |
| if (is_debug) { | |
| cflags += [ "-Wno-sign-compare" ] | |
| } | |
| } | |
| } | |
| if (is_clang) { | |
| cflags += [ "-Wno-header-hygiene" ] | |
| } | |
| } | |
| config("swiftshader_reactor_private_config") { | |
| if (is_win) { | |
| cflags = [ | |
| "/wd4201", # nameless struct/union | |
| "/wd4245", # conversion from int to unsigned int (llvm) | |
| ] | |
| } else { | |
| cflags = [ | |
| "-Wno-unused-local-typedef", | |
| "-msse2", | |
| ] | |
| defines = [ | |
| "__STDC_CONSTANT_MACROS", | |
| "__STDC_LIMIT_MACROS", | |
| ] | |
| } | |
| } | |
| if (use_swiftshader_with_subzero) { | |
| swiftshader_source_set("swiftshader_subzero") { | |
| subzero_dir = "../../third_party/subzero" | |
| subzero_llvm_dir = "../../third_party/llvm-subzero" | |
| sources = [ | |
| "$subzero_dir/src/IceAssembler.cpp", | |
| "$subzero_dir/src/IceCfg.cpp", | |
| "$subzero_dir/src/IceCfgNode.cpp", | |
| "$subzero_dir/src/IceClFlags.cpp", | |
| "$subzero_dir/src/IceELFObjectWriter.cpp", | |
| "$subzero_dir/src/IceELFSection.cpp", | |
| "$subzero_dir/src/IceFixups.cpp", | |
| "$subzero_dir/src/IceGlobalContext.cpp", | |
| "$subzero_dir/src/IceGlobalInits.cpp", | |
| "$subzero_dir/src/IceInst.cpp", | |
| "$subzero_dir/src/IceInstrumentation.cpp", | |
| "$subzero_dir/src/IceIntrinsics.cpp", | |
| "$subzero_dir/src/IceLiveness.cpp", | |
| "$subzero_dir/src/IceLoopAnalyzer.cpp", | |
| "$subzero_dir/src/IceMangling.cpp", | |
| "$subzero_dir/src/IceMemory.cpp", | |
| "$subzero_dir/src/IceOperand.cpp", | |
| "$subzero_dir/src/IceRNG.cpp", | |
| "$subzero_dir/src/IceRangeSpec.cpp", | |
| "$subzero_dir/src/IceRegAlloc.cpp", | |
| "$subzero_dir/src/IceRevision.cpp", | |
| "$subzero_dir/src/IceSwitchLowering.cpp", | |
| "$subzero_dir/src/IceTargetLowering.cpp", | |
| "$subzero_dir/src/IceTargetLoweringX86.cpp", | |
| "$subzero_dir/src/IceThreading.cpp", | |
| "$subzero_dir/src/IceTimerTree.cpp", | |
| "$subzero_dir/src/IceTypes.cpp", | |
| "$subzero_dir/src/IceVariableSplitting.cpp", | |
| "$subzero_llvm_dir/lib/Demangle/ItaniumDemangle.cpp", | |
| "$subzero_llvm_dir/lib/Support/APInt.cpp", | |
| "$subzero_llvm_dir/lib/Support/Atomic.cpp", | |
| "$subzero_llvm_dir/lib/Support/CommandLine.cpp", | |
| "$subzero_llvm_dir/lib/Support/ConvertUTF.cpp", | |
| "$subzero_llvm_dir/lib/Support/ConvertUTFWrapper.cpp", | |
| "$subzero_llvm_dir/lib/Support/Debug.cpp", | |
| "$subzero_llvm_dir/lib/Support/Errno.cpp", | |
| "$subzero_llvm_dir/lib/Support/ErrorHandling.cpp", | |
| "$subzero_llvm_dir/lib/Support/FoldingSet.cpp", | |
| "$subzero_llvm_dir/lib/Support/Hashing.cpp", | |
| "$subzero_llvm_dir/lib/Support/Host.cpp", | |
| "$subzero_llvm_dir/lib/Support/ManagedStatic.cpp", | |
| "$subzero_llvm_dir/lib/Support/MemoryBuffer.cpp", | |
| "$subzero_llvm_dir/lib/Support/Mutex.cpp", | |
| "$subzero_llvm_dir/lib/Support/NativeFormatting.cpp", | |
| "$subzero_llvm_dir/lib/Support/Path.cpp", | |
| "$subzero_llvm_dir/lib/Support/Process.cpp", | |
| "$subzero_llvm_dir/lib/Support/Program.cpp", | |
| "$subzero_llvm_dir/lib/Support/Regex.cpp", | |
| "$subzero_llvm_dir/lib/Support/Signals.cpp", | |
| "$subzero_llvm_dir/lib/Support/SmallPtrSet.cpp", | |
| "$subzero_llvm_dir/lib/Support/SmallVector.cpp", | |
| "$subzero_llvm_dir/lib/Support/StringExtras.cpp", | |
| "$subzero_llvm_dir/lib/Support/StringMap.cpp", | |
| "$subzero_llvm_dir/lib/Support/StringRef.cpp", | |
| "$subzero_llvm_dir/lib/Support/StringSaver.cpp", | |
| "$subzero_llvm_dir/lib/Support/TargetParser.cpp", | |
| "$subzero_llvm_dir/lib/Support/Threading.cpp", | |
| "$subzero_llvm_dir/lib/Support/Timer.cpp", | |
| "$subzero_llvm_dir/lib/Support/Triple.cpp", | |
| "$subzero_llvm_dir/lib/Support/Twine.cpp", | |
| "$subzero_llvm_dir/lib/Support/circular_raw_ostream.cpp", | |
| "$subzero_llvm_dir/lib/Support/raw_os_ostream.cpp", | |
| "$subzero_llvm_dir/lib/Support/raw_ostream.cpp", | |
| "$subzero_llvm_dir/lib/Support/regcomp.c", | |
| "$subzero_llvm_dir/lib/Support/regerror.c", | |
| "$subzero_llvm_dir/lib/Support/regexec.c", | |
| "$subzero_llvm_dir/lib/Support/regfree.c", | |
| "$subzero_llvm_dir/lib/Support/regstrlcpy.c", | |
| ] | |
| if (target_cpu == "x64") { | |
| sources += [ | |
| "$subzero_dir/src/IceInstX8664.cpp", | |
| "$subzero_dir/src/IceTargetLoweringX8664.cpp", | |
| ] | |
| } else { | |
| sources += [ | |
| "$subzero_dir/src/IceInstX8632.cpp", | |
| "$subzero_dir/src/IceTargetLoweringX8632.cpp", | |
| ] | |
| } | |
| configs = [ | |
| ":swiftshader_subzero_common_private_config", | |
| ":swiftshader_subzero_private_config", | |
| ] | |
| } | |
| } | |
| swiftshader_source_set("swiftshader_reactor") { | |
| deps = [ | |
| "../OpenGL/common:swiftshader_opengl_common", | |
| ] | |
| sources = [ | |
| "Routine.cpp", | |
| ] | |
| if (use_swiftshader_with_subzero) { | |
| deps += [ ":swiftshader_subzero" ] | |
| sources += [ | |
| "Optimizer.cpp", | |
| "SubzeroReactor.cpp", | |
| ] | |
| configs = [ | |
| ":swiftshader_subzero_common_private_config", | |
| ":swiftshader_reactor_with_subzero_private_config", | |
| ] | |
| } else { | |
| deps += [ "../../third_party/LLVM:swiftshader_llvm" ] | |
| sources += [ | |
| "LLVMReactor.cpp", | |
| "LLVMRoutine.cpp", | |
| "LLVMRoutineManager.cpp", | |
| ] | |
| configs = [ ":swiftshader_reactor_private_config" ] | |
| include_dirs = [ | |
| "..", | |
| "../Common", | |
| "../../third_party/LLVM/include/", | |
| ] | |
| } | |
| } |