blob: b92633dd83ebb0aad7012624473fd2e70c482640 [file] [log] [blame]
# 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/",
]
}
}