Commit 0ceb7f7d by Alexis Hetu Committed by Alexis Hétu

Adding Subzero to Chromium on Windows

Modified the BUILD.gn files in order to be able to easily switch between Subzero and LLVM back ends. Note that Subzero compilation should already work on Linux, as soon as the Wheezy to Jessie update lands. For now, only Windows will build Subzero. Also removed linux hack from libEGL build file. Change-Id: Ic584b604496c4b4f745b05d72a752f056495055b Reviewed-on: https://swiftshader-review.googlesource.com/8630Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent f96aa0d7
...@@ -13,6 +13,111 @@ ...@@ -13,6 +13,111 @@
# limitations under the License. # limitations under the License.
# Need a separate config to ensure the warnings are added to the end. # 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 (target_cpu == "x64") {
defines += [
"SZTARGET=X8664",
"SUBZERO_TARGET=X8664",
]
} else {
defines += [
"SZTARGET=X8632",
"SUBZERO_TARGET=X8632",
]
}
include_dirs = [
"../../third_party/pnacl-subzero",
"../../third_party/pnacl-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_cc = [ "--sysroot=/" ] #FIXME
cflags = []
if (is_win) {
cflags += [
"/wd4005",
"/wd4018",
"/wd4141",
"/wd4146",
"/wd4245", # conversion from int to unsigned int (llvm)
"/wd4267",
"/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_cc = [ "--sysroot=/" ] #FIXME
cflags = []
if (is_win) {
cflags += [
"/wd4141",
"/wd4146",
"/wd4245", # conversion from int to unsigned int (llvm)
"/wd4267",
"/wd4702",
"/wd4800",
]
if (is_clang) {
if (is_debug) {
cflags += [ "-Wno-sign-compare" ]
}
}
}
if (is_clang) {
cflags += [ "-Wno-header-hygiene" ]
}
}
config("swiftshader_reactor_private_config") { config("swiftshader_reactor_private_config") {
if (is_win) { if (is_win) {
cflags = [ cflags = [
...@@ -30,28 +135,142 @@ config("swiftshader_reactor_private_config") { ...@@ -30,28 +135,142 @@ config("swiftshader_reactor_private_config") {
} }
} }
source_set("swiftshader_reactor") { source_set("swiftshader_subzero") {
deps = [ subzero_dir = "../../third_party/pnacl-subzero"
"../../third_party/LLVM:swiftshader_llvm", subzero_llvm_dir = "../../third_party/llvm-subzero"
"../OpenGL/common:swiftshader_opengl_common",
]
sources = [ sources = [
"LLVMReactor.cpp", "$subzero_dir/src/IceAssembler.cpp",
"LLVMRoutine.cpp", "$subzero_dir/src/IceCfg.cpp",
"LLVMRoutineManager.cpp", "$subzero_dir/src/IceCfgNode.cpp",
"Routine.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",
]
}
if (is_win) { if (is_win) {
configs -= [ "//build/config/win:unicode" ] configs -= [ "//build/config/win:unicode" ]
} }
configs += [
":swiftshader_subzero_common_private_config",
":swiftshader_subzero_private_config",
]
}
configs += [ ":swiftshader_reactor_private_config" ] source_set("swiftshader_reactor") {
deps = [ "../OpenGL/common:swiftshader_opengl_common" ]
include_dirs = [ sources = [ "Routine.cpp" ]
"..",
"../Common", # Currently, Subzero will only be used on Windows
"../../third_party/LLVM/include/", # LLVM will be used on Linux and MacOS
] use_subzero = is_win
if(use_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/",
]
}
if (is_win) {
configs -= [ "//build/config/win:unicode" ]
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment