| # 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 | |
| ] | |
| } |