blob: 72c21f5ddd6d7140ee2f9e311d9c2bd182375458 [file] [log] [blame]
# Copyright 2023 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.
%$%generated_file_comment
import("../../src/swiftshader.gni")
# Need a separate config to ensure the warnings are added to the end.
config("swiftshader_llvm_private_config") {
cflags = [
"-DBLAKE3_NO_AVX512",
"-DBLAKE3_NO_AVX2",
"-DBLAKE3_NO_SSE41",
"-DBLAKE3_NO_SSE2",
"-DBLAKE3_USE_NEON=0",
]
if (is_win) {
cflags += [
"/wd4005",
"/wd4018",
"/wd4065",
"/wd4141",
"/wd4146",
"/wd4244",
"/wd4245",
"/wd4267",
"/wd4310",
"/wd4319",
"/wd4334",
"/wd4389",
"/wd4624",
"/wd4701",
"/wd4702",
"/wd4703",
"/wd4706",
"/wd4800",
"/wd4805",
"/wd4828",
]
if (!is_debug) {
cflags += [ "/wd4324" ]
}
if (is_clang) {
cflags += [
"-Wno-format",
"-Wno-sign-compare",
"-Wno-macro-redefined",
]
}
}
if (is_fuchsia) {
# Ignore #warning for unimplemented features in Process.inc.
cflags += [ "-Wno-cpp" ]
}
if (is_clang) {
cflags += [
"-Wno-attributes",
"-Wno-bitwise-instead-of-logical",
"-Wno-deprecated-anon-enum-enum-conversion",
"-Wno-deprecated-declarations",
"-Wno-deprecated-pragma",
"-Wno-deprecated-enum-enum-conversion",
"-Wno-enum-compare",
"-Wno-header-hygiene",
"-Wno-range-loop-bind-reference",
"-Wno-unused-function",
"-Wno-unused-local-typedef",
"-Wno-unused-private-field",
"-Wno-unused-result",
"-Wno-unused-variable",
]
}
defines = [
"__STDC_CONSTANT_MACROS",
"__STDC_LIMIT_MACROS",
]
}
llvm_include_dirs = [
"llvm/include/",
"llvm/lib/Target/AArch64/",
"llvm/lib/Target/ARM/",
"llvm/lib/Target/Mips/",
"llvm/lib/Target/PowerPC/",
"llvm/lib/Target/RISCV/",
"llvm/lib/Target/X86/",
"configs/common/include/",
"configs/common/lib/ExecutionEngine/JITLink/",
"configs/common/lib/IR/",
"configs/common/lib/Target/AArch64/",
"configs/common/lib/Target/ARM/",
"configs/common/lib/Target/Mips/",
"configs/common/lib/Target/PowerPC/",
"configs/common/lib/Target/RISCV/",
"configs/common/lib/Target/X86/",
"configs/common/lib/Transforms/InstCombine/",
]
if (is_linux || is_chromeos) {
llvm_include_dirs += [ "configs/linux/include/" ]
} else if (is_fuchsia) {
llvm_include_dirs += [ "configs/fuchsia/include/" ]
} else if (is_win) {
llvm_include_dirs += [ "configs/windows/include/" ]
} else if (is_android) {
llvm_include_dirs += [ "configs/android/include/" ]
} else if (is_mac) {
llvm_include_dirs += [ "configs/darwin/include/" ]
} else {
assert(false, "llvm-10.0 not configured for target platform")
}
template("swiftshader_llvm_source_set") {
swiftshader_source_set(target_name) {
configs = [ ":swiftshader_llvm_private_config" ]
include_dirs = llvm_include_dirs
forward_variables_from(invoker, "*", [ "configs" ])
if (defined(invoker.configs)) {
configs += invoker.configs
}
}
}
swiftshader_llvm_source_set("swiftshader_llvm") {
# This class is declared on all platforms but only used on ARM. UBSanVPtr
# builds require that all declared classes have a definition even if they're
# not used.
if (is_ubsan_vptr) {
sources = [
"llvm/lib/MC/MCWasmObjectTargetWriter.cpp",
"llvm/lib/MC/MCXCOFFObjectTargetWriter.cpp",
"llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp",
"llvm/lib/Target/TargetIntrinsicInfo.cpp",
]
}
deps = [
%$%llvm_deps
]
if (current_cpu == "arm64") {
deps += [ ":swiftshader_llvm_aarch64" ]
} else if (current_cpu == "arm") {
deps += [ ":swiftshader_llvm_arm" ]
} else if (current_cpu == "mipsel" || current_cpu == "mips64el") {
deps += [ ":swiftshader_llvm_mips" ]
} else if (current_cpu == "ppc64") {
deps += [ ":swiftshader_llvm_ppc" ]
} else if (current_cpu == "riscv64") {
deps += [ ":swiftshader_llvm_riscv64" ]
} else if (current_cpu == "x86" || current_cpu == "x64") {
deps += [ ":swiftshader_llvm_x86" ]
} else {
assert(false, "Unsupported current_cpu")
}
if ((current_cpu != current_cpu &&
(current_cpu == "x86" || current_cpu == "x64")) ||
# Windows ARM64 does cross compilation on Windows x64 host, and requires native
# x86 target.
(is_win && current_cpu == "arm64")) {
deps += [ ":swiftshader_llvm_x86" ]
}
}
# This source_set would contain all source files, except that GN doesn't allow for duplicate source
# file names, even if they are in different subdirectories. Because of this, some files are
# split out into their own source_set.
%$%llvm_source_sets
swiftshader_llvm_source_set("swiftshader_llvm_aarch64") {
sources = [
%$%files_AArch64
]
}
swiftshader_llvm_source_set("swiftshader_llvm_arm") {
sources = [
%$%files_ARM
]
# When is_ubsan_vptr is true, this file is added to swiftshader_llvm instead.
if (!is_ubsan_vptr) {
sources += [ "llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp" ]
}
}
swiftshader_llvm_source_set("swiftshader_llvm_mips") {
sources = [
%$%files_Mips
]
}
swiftshader_llvm_source_set("swiftshader_llvm_ppc") {
sources = [
%$%files_PowerPC
]
}
swiftshader_llvm_source_set("swiftshader_llvm_x86") {
sources = [
%$%files_x86
]
}
swiftshader_llvm_source_set("swiftshader_llvm_riscv64") {
sources = [
%$%files_RISCV
]
}