# 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/LoongArch/", "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/LoongArch/", "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 (is_debug) { deps += [ ":swiftshader_llvm_debug" ] } if (current_cpu == "arm64") { deps += [ ":swiftshader_llvm_aarch64" ] } else if (current_cpu == "arm") { deps += [ ":swiftshader_llvm_arm" ] } else if (current_cpu == "loong64") { deps += [ ":swiftshader_llvm_loongarch64" ] } 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_debug") { sources = [ %$%files_llvm_debug ] } 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_loongarch64") { sources = [ %$%files_LoongArch ] } 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 ] }