Add GN build of DXC
Building dawn_native will build dxcompiler.dll, but it it not yet used.
Bug: dawn:1862
Change-Id: I3d821506657cd522dce8b183d45b44adf10ad232
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/138001
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/.gitignore b/.gitignore
index b048db9..e169065 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,6 +15,8 @@
/third_party/catapult
/third_party/clang-format
/third_party/cpplint
+/third_party/dxc
+/third_party/dxheaders
/third_party/glfw
/third_party/google_benchmark/src
/third_party/googletest
diff --git a/DEPS b/DEPS
index 6e3145b..b246fc4 100644
--- a/DEPS
+++ b/DEPS
@@ -21,7 +21,7 @@
# https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja
'dawn_ninja_version': 'version:2@1.11.1.chromium.6',
'dawn_go_version': 'version:2@1.18.4',
- 'dawn_build_dxc': False,
+ 'dawn_build_dxc': True,
'node_darwin_arm64_sha': '31859fc1fa0994a95f44f09c367d6ff63607cfde',
'node_darwin_x64_sha': '16dfd094763b71988933a31735f9dea966f9abd6',
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 8c1db06..0a9da62 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -119,6 +119,7 @@
"src/dawn/tests/end2end/DepthBiasTests.cpp", # External URL
"src/tint/transform/canonicalize_entry_point_io.cc", # External URL
"test/tint/samples/compute_boids.wgsl", # External URL
+ "third_party/gn/dxc/BUILD.gn", # Third party file
"third_party/khronos/KHR/khrplatform.h", # Third party file
"tools/roll-all", # Branch name
"tools/src/container/key.go", # External URL
diff --git a/build_overrides/build.gni b/build_overrides/build.gni
index 8717867..6f4de05 100644
--- a/build_overrides/build.gni
+++ b/build_overrides/build.gni
@@ -25,6 +25,11 @@
ignore_elf32_limitations = false
}
+# Use C++17 instead of C++20 in MSVC builds
+# TODO(crbug.com/dawn/1881): Fix upstream DXC build on MSVC with C++20 enabled,
+# then remove this flag.
+msvc_use_cxx17 = true
+
# Detect whether we can use the hermetic XCode like in Chromium and do so if
# possible.
if (host_os == "mac" && use_system_xcode == "") {
diff --git a/build_overrides/dawn.gni b/build_overrides/dawn.gni
index 6440625..7cf74ac 100644
--- a/build_overrides/dawn.gni
+++ b/build_overrides/dawn.gni
@@ -23,6 +23,10 @@
# True if Dawn can access build/, testing/ and other Chrome folders.
dawn_has_build = true
+# Whether we allow building DXC. This variable may be used to disable
+# building DXC in Chromium.
+dawn_build_dxc = true
+
# Defaults for these are set again in dawn_overrides_with_defaults.gni so that
# users of Dawn don't have to set dirs if they happen to use the same as Dawn.
@@ -37,6 +41,8 @@
dawn_vulkan_loader_dir = "//third_party/vulkan-deps/vulkan-loader/src"
dawn_vulkan_validation_layers_dir =
"//third_party/vulkan-deps/vulkan-validation-layers/src"
+dawn_dxc_dir = "//third_party/dxc"
+dawn_dxheaders_dir = "//third_party/dxheaders"
# Optional path to a one-liner version file. Default is empty path indicating
# that git should be used to figure out the version.
diff --git a/scripts/dawn_overrides_with_defaults.gni b/scripts/dawn_overrides_with_defaults.gni
index bbe79e1..4e781d6 100644
--- a/scripts/dawn_overrides_with_defaults.gni
+++ b/scripts/dawn_overrides_with_defaults.gni
@@ -28,6 +28,10 @@
dawn_has_build = true
}
+if (!defined(dawn_build_dxc)) {
+ dawn_build_dxc = false
+}
+
if (!defined(dawn_root)) {
dawn_root = get_path_info("..", "abspath")
}
@@ -86,6 +90,14 @@
dawn_abseil_dir = "//third_party/abseil-cpp"
}
+if (!defined(dawn_dxc_dir)) {
+ dawn_dxc_dir = "//third_party/dxc"
+}
+
+if (!defined(dawn_dxheaders_dir)) {
+ dawn_dxheaders_dir = "//third_party/dxheaders"
+}
+
if (!defined(dawn_version_file)) {
dawn_version_file = ""
}
diff --git a/src/dawn/native/BUILD.gn b/src/dawn/native/BUILD.gn
index def99cd..8470083 100644
--- a/src/dawn/native/BUILD.gn
+++ b/src/dawn/native/BUILD.gn
@@ -484,6 +484,9 @@
}
if (dawn_enable_d3d12) {
+ if (is_win && dawn_build_dxc) {
+ deps += [ "$dawn_root/third_party/gn/dxc:dxcompiler" ]
+ }
libs += [ "dxguid.lib" ]
sources += [
"d3d12/BackendD3D12.cpp",
diff --git a/third_party/gn/dxc/BUILD.gn b/third_party/gn/dxc/BUILD.gn
new file mode 100644
index 0000000..dabd776
--- /dev/null
+++ b/third_party/gn/dxc/BUILD.gn
@@ -0,0 +1,2268 @@
+# Copyright 2023 The Dawn Authors
+#
+# 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("../../../scripts/dawn_overrides_with_defaults.gni")
+
+import("//build/config/win/visual_studio_version.gni")
+import("${dawn_root}/scripts/dawn_features.gni")
+
+import("build/add_hlsl_hctgen.gni")
+import("build/built_target_action.gni")
+import("build/cmake_configure_file.gni")
+import("build/generate_version_include.gni")
+import("build/system_binary_action.gni")
+
+dawn_dxc_gn_dir = "$dawn_dxc_dir/../gn"
+llvm_target_triple = "dxil-ms-dx" # Force target triple
+llvm_version_major = 3
+llvm_version_minor = 7
+llvm_version_patch = 0
+llvm_version = "$llvm_version_major.$llvm_version_minor.$llvm_version_patch"
+
+declare_args() {
+ # DXC sometimes asserts on valid HLSL. Set this to true to disable assertions in debug builds.
+ dawn_dxc_disable_asserts_debug = false
+}
+
+if (host_cpu == "x86" || host_cpu == "x64") {
+ native_target = "X86"
+} else {
+ assert(false, "define 'native_target' for host_cpu: $host_cpu")
+}
+
+if (target_cpu == "x64") {
+ if (current_os == "linux") {
+ llvm_current_triple = "x86_64-unknown-linux-gnu"
+ } else if (current_os == "win") {
+ llvm_current_triple = "x86_64-pc-win32"
+ } else {
+ assert(
+ false,
+ "define 'llvm_current_triple' for target_cpu: $target_cpu, target_os: $current_os")
+ }
+} else if (target_cpu == "x86") {
+ if (current_os == "win") {
+ llvm_current_triple = "x86_32-pc-win32"
+ } else {
+ assert(
+ false,
+ "define 'llvm_current_triple' for target_cpu: $target_cpu, target_os: $current_os")
+ }
+} else {
+ assert(
+ false,
+ "define 'llvm_current_triple' for target_cpu: $target_cpu, target_os: $current_os")
+}
+
+#######################################################################
+## CMake config targets
+#######################################################################
+
+cmake_configure_file("config-header") {
+ input = "$dawn_dxc_dir/include/llvm/Config/config.h.cmake"
+ output = "$target_gen_dir/include/llvm/Config/config.h"
+ values = [
+ # TODO(amaiorano): Many of the flags set here are duplicated for the "llvm-config-header" target below.
+ # Factor this out somehow (template?).
+ "LLVM_ENABLE_ABI_BREAKING_CHECKS=1",
+ "LLVM_ENABLE_THREADS=1",
+ "LLVM_HAS_ATOMICS=1",
+ "HAVE_INTTYPES_H=1",
+ "HAVE_STDINT_H=1",
+ "HAVE_UINT64_T=1",
+ "HAVE_U_INT64_T=",
+ "LLVM_BINDIR=",
+ "LLVM_CONFIGTIME=",
+ "LLVM_DATADIR=",
+ "LLVM_DEFAULT_TARGET_TRIPLE=$llvm_target_triple",
+ "LLVM_DOCSDIR=",
+ "LLVM_ETCDIR=",
+ "LLVM_HOST_TRIPLE=$llvm_current_triple",
+ "LLVM_INCLUDEDIR=",
+ "LLVM_INFODIR=",
+ "LLVM_MANDIR=",
+ "LLVM_NATIVE_ARCH=$native_target",
+ "LLVM_NATIVE_ASMPARSER=",
+ "LLVM_NATIVE_ASMPRINTER=",
+ "LLVM_NATIVE_DISASSEMBLER=",
+ "LLVM_NATIVE_TARGET=",
+ "LLVM_NATIVE_TARGETINFO=",
+ "LLVM_NATIVE_TARGETMC=",
+ "LLVM_PREFIX=/usr/local",
+ "LLVM_VERSION_MAJOR=$llvm_version_major",
+ "LLVM_VERSION_MINOR=$llvm_version_minor",
+ "LLVM_VERSION_PATCH=$llvm_version_patch",
+ "PACKAGE_VERSION=${llvm_version}git",
+ "PACKAGE_BUGREPORT=http://llvm.org/bugs/",
+ "PACKAGE_NAME=LLVM",
+ "PACKAGE_STRING=LLVM ${llvm_version}git",
+ "strdup=_strdup",
+ "stricmp=_stricmp",
+ "strtoll=",
+ "strtoull=",
+
+ # TODO(amaiorano): Revisit variables below. Most are just unset for now.
+ "ENABLE_BACKTRACES=1",
+ "ENABLE_CRASH_OVERRIDES=1",
+ "DISABLE_LLVM_DYLIB_ATEXIT=1",
+ "ENABLE_PIC=1",
+ "HAVE_ISATTY=",
+ "LLVM_ENABLE_ZLIB=",
+ "LLVM_USE_INTEL_JITEVENTS=",
+ "LLVM_USE_OPROFILE=",
+ "LINK_POLLY_INTO_TOOLS=",
+ "BUG_REPORT_URL=http://llvm.org/bugs/",
+ "ENABLE_TIMESTAMPS=1",
+ "HAVE____CHKSTK_MS=",
+ "HAVE____CHKSTK=",
+ "HAVE___ALLOCA=",
+ "HAVE___ASHLDI3=",
+ "HAVE___ASHRDI3=",
+ "HAVE___CHKSTK_MS=",
+ "HAVE___CHKSTK=1",
+ "HAVE___CMPDI2=",
+ "HAVE___DIVDI3=",
+ "HAVE___FIXDFDI=",
+ "HAVE___FIXSFDI=",
+ "HAVE___FLOATDIDF=",
+ "HAVE___LSHRDI3=",
+ "HAVE___MAIN=",
+ "HAVE___MODDI3=",
+ "HAVE___UDIVDI3=",
+ "HAVE___UMODDI3=",
+ "HAVE__ALLOCA=",
+ "HAVE__CHSIZE_S=1",
+ "HAVE_BACKTRACE=",
+ "HAVE_CLOSEDIR=",
+ "HAVE_CXXABI_H=",
+ "HAVE_DECL_ARC4RANDOM=",
+ "HAVE_DIA_SDK=",
+ "HAVE_DLERROR=",
+ "HAVE_DLFCN_H=",
+ "HAVE_DLOPEN=",
+ "HAVE_ERRNO_H=1",
+ "HAVE_EXECINFO_H=",
+ "HAVE_FCNTL_H=1",
+ "HAVE_FENV_H=1",
+ "HAVE_FFI_CALL=",
+ "HAVE_FFI_FFI_H=",
+ "HAVE_FFI_H=",
+ "HAVE_FUTIMENS=",
+ "HAVE_GETCWD=",
+ "HAVE_GETRLIMIT=",
+ "HAVE_GETTIMEOFDAY=",
+ "HAVE_INT64_T=1",
+ "HAVE_LIBDL=",
+ "HAVE_LIBEDIT=",
+ "HAVE_LIBPSAPI=",
+ "HAVE_LIBPTHREAD=",
+ "HAVE_LIBSHELL32=",
+ "HAVE_LIBZ=",
+ "HAVE_LIMITS_H=1",
+ "HAVE_LINK_H=",
+ "HAVE_LONGJMP=",
+ "HAVE_MACH_MACH_H=",
+ "HAVE_MACH_O_DYLD_H=",
+ "HAVE_MALLCTL=",
+ "HAVE_MALLINFO2=",
+ "HAVE_MALLOC_H=1",
+ "HAVE_MALLOC_MALLOC_H=",
+ "HAVE_MALLOC_ZONE_STATISTICS=",
+ "HAVE_MKDTEMP=",
+ "HAVE_MKSTEMP=",
+ "HAVE_MKTEMP=",
+ "HAVE_NDIR_H=",
+ "HAVE_OPENDIR=",
+ "HAVE_POSIX_SPAWN=",
+ "HAVE_PREAD=",
+ "HAVE_PTHREAD_RWLOCK_INIT=",
+ "HAVE_RAND48=",
+ "HAVE_READDIR=",
+ "HAVE_REALPATH=",
+ "HAVE_SBRK=",
+ "HAVE_SETENV=",
+ "HAVE_SETJMP=",
+ "HAVE_SETRLIMIT=",
+ "HAVE_SIGLONGJMP=",
+ "HAVE_SIGNAL_H=1",
+ "HAVE_SIGSETJMP=",
+ "HAVE_STRDUP=",
+ "HAVE_STRERROR_R=",
+ "HAVE_STRERROR=1",
+ "HAVE_STRTOLL=1",
+ "HAVE_STRTOQ=",
+ "HAVE_SYS_DIR_H=",
+ "HAVE_SYS_IOCTL_H=",
+
+ "HAVE_SYS_NDIR_H=",
+ "HAVE_SYS_STAT_H=1",
+ "HAVE_SYS_TYPES_H=",
+ "HAVE_SYS_UIO_H=",
+ "HAVE_SYS_WAIT_H=",
+ "HAVE_TERMINFO=",
+ "HAVE_TERMIOS_H=",
+ "HAVE_UTIME_H=",
+ "HAVE_VALGRIND_VALGRIND_H=",
+ "HAVE_WRITEV=",
+ "HAVE_ZLIB_H=",
+ "LTDL_DLOPEN_DEPLIBS=",
+ "LTDL_SHLIB_EXT=.dll",
+ "LTDL_SYSSEARCHPATH=",
+ "RETSIGTYPE=void",
+ "WIN32_ELMCB_PCSTR=PCSTR",
+ ]
+
+ if (is_win) {
+ values += [
+ "HAVE_DECL_STRERROR_S=1",
+ "HAVE_DIRENT_H=",
+ "HAVE_FUTIMES=",
+ "HAVE_GETPAGESIZE=",
+ "HAVE_GETRUSAGE=",
+ "HAVE_MALLINFO=",
+ "HAVE_SYS_MMAN_H=",
+ "HAVE_SYS_PARAM_H=",
+ "HAVE_SYS_RESOURCE_H=",
+ "HAVE_SYS_TIME_H=",
+ "HAVE_UNISTD_H=",
+ "HAVE_PTHREAD_GETSPECIFIC=",
+ "HAVE_PTHREAD_H=",
+ "HAVE_PTHREAD_MUTEX_LOCK=",
+ ]
+ } else if (is_linux) {
+ values += [
+ "HAVE_DECL_STRERROR_S=",
+ "HAVE_DIRENT_H=1",
+ "HAVE_FUTIMES=1",
+ "HAVE_GETPAGESIZE=1",
+ "HAVE_GETRUSAGE=1",
+ "HAVE_MALLINFO=1",
+ "HAVE_SYS_MMAN_H=1",
+ "HAVE_SYS_PARAM_H=1",
+ "HAVE_SYS_RESOURCE_H=1",
+ "HAVE_SYS_TIME_H=1",
+ "HAVE_UNISTD_H=1",
+ "HAVE_PTHREAD_GETSPECIFIC=1",
+ "HAVE_PTHREAD_H=1",
+ "HAVE_PTHREAD_MUTEX_LOCK=1",
+ ]
+ }
+ if (is_win) {
+ values += [
+ "LLVM_ON_UNIX=",
+ "LLVM_ON_WIN32=1",
+ ]
+ } else {
+ values += [
+ "LLVM_ON_UNIX=1",
+ "LLVM_ON_WIN32=",
+ ]
+ }
+}
+
+cmake_configure_file("llvm-config-header") {
+ input = "$dawn_dxc_dir/include/llvm/Config/llvm-config.h.cmake"
+ output = "$target_gen_dir/include/llvm/Config/llvm-config.h"
+ values = [
+ "LLVM_BINDIR=",
+ "LLVM_CONFIGTIME=",
+ "LLVM_DATADIR=",
+ "LLVM_DEFAULT_TARGET_TRIPLE=$llvm_target_triple",
+ "LLVM_DOCSDIR=",
+ "LLVM_ENABLE_ABI_BREAKING_CHECKS=1",
+ "LLVM_ETCDIR=",
+ "LLVM_HAS_ATOMICS=1",
+ "LLVM_HOST_TRIPLE=$llvm_current_triple",
+ "LLVM_INCLUDEDIR=",
+ "LLVM_INFODIR=",
+ "LLVM_MANDIR=",
+ "LLVM_NATIVE_ARCH=$native_target",
+ "LLVM_NATIVE_ASMPARSER=",
+ "LLVM_NATIVE_ASMPRINTER=",
+ "LLVM_NATIVE_DISASSEMBLER=",
+ "LLVM_NATIVE_TARGET=",
+ "LLVM_NATIVE_TARGETINFO=",
+ "LLVM_NATIVE_TARGETMC=",
+ "LLVM_PREFIX=/usr/local",
+ "LLVM_USE_INTEL_JITEVENTS=",
+ "LLVM_USE_OPROFILE=",
+ "LLVM_VERSION_MAJOR=$llvm_version_major",
+ "LLVM_VERSION_MINOR=$llvm_version_minor",
+ "LLVM_VERSION_PATCH=$llvm_version_patch",
+ "PACKAGE_VERSION=${llvm_version}git",
+ "LINK_POLLY_INTO_TOOLS=",
+ "LLVM_ENABLE_THREADS=1",
+ ]
+ if (is_win) {
+ values += [
+ "LLVM_ON_UNIX=",
+ "LLVM_ON_WIN32=1",
+ ]
+ } else {
+ values += [
+ "LLVM_ON_UNIX=1",
+ "LLVM_ON_WIN32=",
+ ]
+ }
+}
+
+cmake_configure_file("DataTypes-header") {
+ input = "$dawn_dxc_dir/include/llvm/Support/DataTypes.h.cmake"
+ output = "$target_gen_dir/include/llvm/Support/DataTypes.h"
+ values = [
+ "HAVE_INTTYPES_H=1",
+ "HAVE_STDINT_H=1",
+ "HAVE_UINT64_T=1",
+ "HAVE_U_INT64_T=",
+ ]
+}
+
+cmake_configure_file("Targets-def") {
+ input = "$dawn_dxc_dir/include/llvm/Config/Targets.def.in"
+ output = "$target_gen_dir/include/llvm/Config/Targets.def"
+ values = [
+ # TODO(amaiorano): Should normally contain list of supported targets,
+ # which I think should be AMDGPU and NVPTX based on LLVM_ALL_TARGETS
+ # in the root CMakeLists.txt, but building with CMake, the generated
+ # TargetsDef.h has no value at all for this...
+ "LLVM_ENUM_TARGETS=",
+ ]
+}
+
+cmake_configure_file("AsmPrinters-def") {
+ input = "$dawn_dxc_dir/include/llvm/Config/AsmPrinters.def.in"
+ output = "$target_gen_dir/include/llvm/Config/AsmPrinters.def"
+ values = [ "LLVM_ENUM_ASM_PRINTERS=" ]
+}
+
+cmake_configure_file("AsmParsers-def") {
+ input = "$dawn_dxc_dir/include/llvm/Config/AsmParsers.def.in"
+ output = "$target_gen_dir/include/llvm/Config/AsmParsers.def"
+ values = [ "LLVM_ENUM_ASM_PARSERS=" ]
+}
+
+cmake_configure_file("Disassemblers-def") {
+ input = "$dawn_dxc_dir/include/llvm/Config/Disassemblers.def.in"
+ output = "$target_gen_dir/include/llvm/Config/Disassemblers.def"
+ values = [ "LLVM_ENUM_DISASSEMBLERS=" ]
+}
+
+cmake_configure_file("SharedLibAffix-h") {
+ input = "$dawn_dxc_dir/lib/DxcSupport/SharedLibAffix.inc"
+ output = "$target_gen_dir/include/dxc/Support/SharedLibAffix.h"
+ values = [
+ "CMAKE_SHARED_LIBRARY_PREFIX=",
+
+ # TODO(amaiorano): .dll for Win32, .so for Linux, .dylib for MacOS?
+ "CMAKE_SHARED_LIBRARY_SUFFIX=.dll",
+ ]
+}
+
+cmake_configure_file("clang-basic-version-inc") {
+ input = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Version.inc.in"
+ output = "$target_gen_dir/tools/clang/include/clang/Basic/Version.inc"
+ values = [
+ "CLANG_VERSION=$llvm_version",
+ "CLANG_VERSION_MAJOR=$llvm_version_major",
+ "CLANG_VERSION_MINOR=$llvm_version_minor",
+ "CLANG_VERSION_PATCHLEVEL=$llvm_version_patch",
+ "CLANG_HAS_VERSION_PATCHLEVEL=0",
+ ]
+}
+
+cmake_configure_file("clang-config-h") {
+ input = "$dawn_dxc_dir/tools/clang/include/clang/Config/config.h.cmake"
+ output = "$target_gen_dir/tools/clang/include/clang/Config/config.h"
+ values = [
+ "BUG_REPORT_URL=http://llvm.org/bugs/",
+ "CLANG_DEFAULT_OPENMP_RUNTIME=libgomp",
+ "CLANG_LIBDIR_SUFFIX=",
+ "CLANG_RESOURCE_DIR=",
+ "C_INCLUDE_DIRS=",
+ "DEFAULT_SYSROOT=",
+ "GCC_INSTALL_PREFIX=",
+ "CLANG_HAVE_LIBXML=",
+ "BACKEND_PACKAGE_STRING=",
+ "HOST_LINK_VERSION=",
+ ]
+}
+
+#######################################################################
+## Common config shared by all targets
+#######################################################################
+
+config("common_config") {
+ warning_flags = []
+ if (is_clang) {
+ warning_flags += [
+ "-Wno-error", # TODO(amaiorano): For now, allow warnings
+ "-Wno-unknown-pragmas",
+ "-Wno-shadow",
+ "-Wno-deprecated-declarations",
+ "-Wno-deprecated-enum-float-conversion",
+ "-Wno-extra-semi",
+ "-Wno-reorder-ctor",
+ "-Wno-implicit-fallthrough",
+ "-Wno-header-hygiene",
+ "-Wno-unused-const-variable",
+ "-Wno-implicit-fallthrough",
+ "-Wno-sign-compare",
+ "-Wno-unused-but-set-variable",
+ "-Wno-unreachable-code-return",
+ "-Wno-unreachable-code-break",
+ "-Wno-unused-function",
+ "-Wno-unused-local-typedef",
+ "-Wno-string-conversion",
+ "-Wno-macro-redefined",
+ "-Wno-unreachable-code",
+ "-Wno-switch",
+ "-Wno-constant-logical-operand",
+ "-Wno-microsoft-exception-spec",
+ "-Wno-inconsistent-missing-override",
+ "-Wno-enum-compare-conditional",
+ "-Wno-rtti",
+ "-Wno-microsoft-extra-qualification",
+ "-Wno-range-loop-bind-reference",
+ "-Wno-pessimizing-move",
+ "-Wno-unused-lambda-capture",
+ "-Wno-bool-conversion",
+ "-Wno-enum-compare",
+ "-Wno-deprecated-copy",
+ "-Wno-unused-variable",
+ "-Wno-microsoft-template",
+ "-Wno-unused-private-field",
+ "-Wno-deprecated-enum-enum-conversion",
+ "-Wno-deprecated-anon-enum-enum-conversion",
+ "-Wno-ambiguous-reversed-operator",
+ ]
+ } else {
+ # MSVC
+ warning_flags += [
+ "/W0", # Suppress most warnings
+ "/wd4267", # conversion from 'size_t' to 'type', possible loss of data
+ "/wd4996", # std::iterator class template (used as a base class to
+ # provide typedefs) is deprecated in C++17
+ ]
+ }
+
+ if (is_win) {
+ cflags_cc = [
+ "/EHsc", # DXC uses exceptions
+ "/Zc:__cplusplus",
+ "/Zc:twoPhase-", # DXC source relies on MSVC's non-conforming
+ # two-phase lookup
+ "/Zc:sizedDealloc-", # Disable sized allocation
+ ]
+
+ cflags_c = [
+ "/EHsc", # DXC uses exceptions
+ ]
+ } else if (is_linux) {
+ cflags_c = []
+
+ cflags_cc = [
+ "-fcxx-exceptions", # DXC uses exceptions
+ "-fms-extensions",
+ "-frtti", # DXC uses RTTI
+ ]
+ }
+
+ cflags_c += warning_flags
+ cflags_cc += warning_flags
+
+ include_dirs = [
+ "$dawn_dxc_dir/include",
+ "$dawn_dxc_dir/tools/clang/include",
+ "$dawn_dxc_dir/tools/clang/tools",
+ "$dawn_dxc_dir/include/llvm/llvm_assert",
+ "${target_gen_dir}/include", # Generated files
+ ]
+
+ defines = []
+ if (is_debug && dawn_dxc_disable_asserts_debug) {
+ defines += [ "NDEBUG" ]
+ }
+}
+
+#######################################################################
+## Support
+#######################################################################
+
+# Target shared by tbl-gen and dxc targets
+static_library("Support") {
+ output_name = "LLVMSupport"
+
+ if (dawn_has_build) {
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [ "//build/config/compiler:no_chromium_code" ]
+ }
+
+ public_configs = [ ":common_config" ]
+
+ public_deps = [
+ ":AsmParsers-def",
+ ":AsmPrinters-def",
+ ":Disassemblers-def",
+ ":Targets-def",
+ ":config-header",
+ ":llvm-config-header",
+ ]
+
+ sources = [
+ "$dawn_dxc_dir/lib/MSSupport/MSFileSystemImpl.cpp",
+ "$dawn_dxc_dir/lib/Support/APFloat.cpp",
+ "$dawn_dxc_dir/lib/Support/APInt.cpp",
+ "$dawn_dxc_dir/lib/Support/APSInt.cpp",
+ "$dawn_dxc_dir/lib/Support/ARMBuildAttrs.cpp",
+ "$dawn_dxc_dir/lib/Support/ARMWinEH.cpp",
+ "$dawn_dxc_dir/lib/Support/Allocator.cpp",
+ "$dawn_dxc_dir/lib/Support/Atomic.cpp",
+ "$dawn_dxc_dir/lib/Support/BlockFrequency.cpp",
+ "$dawn_dxc_dir/lib/Support/BranchProbability.cpp",
+ "$dawn_dxc_dir/lib/Support/COM.cpp",
+ "$dawn_dxc_dir/lib/Support/CommandLine.cpp",
+ "$dawn_dxc_dir/lib/Support/Compression.cpp",
+ "$dawn_dxc_dir/lib/Support/ConvertUTF.c",
+ "$dawn_dxc_dir/lib/Support/ConvertUTFWrapper.cpp",
+ "$dawn_dxc_dir/lib/Support/CrashRecoveryContext.cpp",
+ "$dawn_dxc_dir/lib/Support/DAGDeltaAlgorithm.cpp",
+ "$dawn_dxc_dir/lib/Support/DataExtractor.cpp",
+ "$dawn_dxc_dir/lib/Support/DataStream.cpp",
+ "$dawn_dxc_dir/lib/Support/Debug.cpp",
+ "$dawn_dxc_dir/lib/Support/DeltaAlgorithm.cpp",
+ "$dawn_dxc_dir/lib/Support/Dwarf.cpp",
+ "$dawn_dxc_dir/lib/Support/Errno.cpp",
+ "$dawn_dxc_dir/lib/Support/ErrorHandling.cpp",
+ "$dawn_dxc_dir/lib/Support/FileOutputBuffer.cpp",
+ "$dawn_dxc_dir/lib/Support/FileUtilities.cpp",
+ "$dawn_dxc_dir/lib/Support/FoldingSet.cpp",
+ "$dawn_dxc_dir/lib/Support/FormattedStream.cpp",
+ "$dawn_dxc_dir/lib/Support/GraphWriter.cpp",
+ "$dawn_dxc_dir/lib/Support/Hashing.cpp",
+ "$dawn_dxc_dir/lib/Support/Host.cpp",
+ "$dawn_dxc_dir/lib/Support/IntEqClasses.cpp",
+ "$dawn_dxc_dir/lib/Support/IntervalMap.cpp",
+ "$dawn_dxc_dir/lib/Support/IntrusiveRefCntPtr.cpp",
+ "$dawn_dxc_dir/lib/Support/LEB128.cpp",
+ "$dawn_dxc_dir/lib/Support/LineIterator.cpp",
+ "$dawn_dxc_dir/lib/Support/Locale.cpp",
+ "$dawn_dxc_dir/lib/Support/LockFileManager.cpp",
+ "$dawn_dxc_dir/lib/Support/MD5.cpp",
+ "$dawn_dxc_dir/lib/Support/MSFileSystemBasic.cpp",
+ "$dawn_dxc_dir/lib/Support/ManagedStatic.cpp",
+ "$dawn_dxc_dir/lib/Support/MathExtras.cpp",
+ "$dawn_dxc_dir/lib/Support/Memory.cpp",
+ "$dawn_dxc_dir/lib/Support/MemoryBuffer.cpp",
+ "$dawn_dxc_dir/lib/Support/MemoryObject.cpp",
+ "$dawn_dxc_dir/lib/Support/Mutex.cpp",
+ "$dawn_dxc_dir/lib/Support/Options.cpp",
+ "$dawn_dxc_dir/lib/Support/Path.cpp",
+ "$dawn_dxc_dir/lib/Support/PrettyStackTrace.cpp",
+ "$dawn_dxc_dir/lib/Support/Process.cpp",
+ "$dawn_dxc_dir/lib/Support/Program.cpp",
+ "$dawn_dxc_dir/lib/Support/RWMutex.cpp",
+ "$dawn_dxc_dir/lib/Support/RandomNumberGenerator.cpp",
+ "$dawn_dxc_dir/lib/Support/Regex.cpp",
+ "$dawn_dxc_dir/lib/Support/ScaledNumber.cpp",
+ "$dawn_dxc_dir/lib/Support/SearchForAddressOfSpecialSymbol.cpp",
+ "$dawn_dxc_dir/lib/Support/Signals.cpp",
+ "$dawn_dxc_dir/lib/Support/SmallPtrSet.cpp",
+ "$dawn_dxc_dir/lib/Support/SmallVector.cpp",
+ "$dawn_dxc_dir/lib/Support/SourceMgr.cpp",
+ "$dawn_dxc_dir/lib/Support/SpecialCaseList.cpp",
+ "$dawn_dxc_dir/lib/Support/Statistic.cpp",
+ "$dawn_dxc_dir/lib/Support/StreamingMemoryObject.cpp",
+ "$dawn_dxc_dir/lib/Support/StringExtras.cpp",
+ "$dawn_dxc_dir/lib/Support/StringMap.cpp",
+ "$dawn_dxc_dir/lib/Support/StringPool.cpp",
+ "$dawn_dxc_dir/lib/Support/StringRef.cpp",
+ "$dawn_dxc_dir/lib/Support/StringSaver.cpp",
+ "$dawn_dxc_dir/lib/Support/SystemUtils.cpp",
+ "$dawn_dxc_dir/lib/Support/TargetParser.cpp",
+ "$dawn_dxc_dir/lib/Support/TargetRegistry.cpp",
+ "$dawn_dxc_dir/lib/Support/ThreadLocal.cpp",
+ "$dawn_dxc_dir/lib/Support/Threading.cpp",
+ "$dawn_dxc_dir/lib/Support/TimeProfiler.cpp",
+ "$dawn_dxc_dir/lib/Support/TimeValue.cpp",
+ "$dawn_dxc_dir/lib/Support/Timer.cpp",
+ "$dawn_dxc_dir/lib/Support/ToolOutputFile.cpp",
+ "$dawn_dxc_dir/lib/Support/Triple.cpp",
+ "$dawn_dxc_dir/lib/Support/Twine.cpp",
+ "$dawn_dxc_dir/lib/Support/Unicode.cpp",
+ "$dawn_dxc_dir/lib/Support/Valgrind.cpp",
+ "$dawn_dxc_dir/lib/Support/Watchdog.cpp",
+ "$dawn_dxc_dir/lib/Support/YAMLParser.cpp",
+ "$dawn_dxc_dir/lib/Support/YAMLTraits.cpp",
+ "$dawn_dxc_dir/lib/Support/assert.cpp",
+ "$dawn_dxc_dir/lib/Support/circular_raw_ostream.cpp",
+ "$dawn_dxc_dir/lib/Support/raw_os_ostream.cpp",
+ "$dawn_dxc_dir/lib/Support/raw_ostream.cpp",
+ "$dawn_dxc_dir/lib/Support/regcomp.c",
+ "$dawn_dxc_dir/lib/Support/regerror.c",
+ "$dawn_dxc_dir/lib/Support/regexec.c",
+ "$dawn_dxc_dir/lib/Support/regfree.c",
+ "$dawn_dxc_dir/lib/Support/regmalloc.cpp",
+ "$dawn_dxc_dir/lib/Support/regstrlcpy.c",
+ ]
+}
+
+#######################################################################
+## llvm-tblgen and clang-tblgen executables and templates
+#######################################################################
+
+# Common code for both llvm-tblgen and clang-tblgen
+source_set("TableGen") {
+ public_deps = [ ":Support" ]
+
+ sources = [
+ "$dawn_dxc_dir/lib/TableGen/Error.cpp",
+ "$dawn_dxc_dir/lib/TableGen/Main.cpp",
+ "$dawn_dxc_dir/lib/TableGen/Record.cpp",
+ "$dawn_dxc_dir/lib/TableGen/SetTheory.cpp",
+ "$dawn_dxc_dir/lib/TableGen/StringMatcher.cpp",
+ "$dawn_dxc_dir/lib/TableGen/TGLexer.cpp",
+ "$dawn_dxc_dir/lib/TableGen/TGParser.cpp",
+ "$dawn_dxc_dir/lib/TableGen/TableGenBackend.cpp",
+ ]
+}
+
+executable("llvm-tblgen") {
+ deps = [ ":TableGen" ]
+
+ sources = [
+ "$dawn_dxc_dir/utils/TableGen/AsmMatcherEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/AsmWriterEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/AsmWriterInst.cpp",
+ "$dawn_dxc_dir/utils/TableGen/CTagsEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/CallingConvEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/CodeEmitterGen.cpp",
+ "$dawn_dxc_dir/utils/TableGen/CodeGenDAGPatterns.cpp",
+ "$dawn_dxc_dir/utils/TableGen/CodeGenInstruction.cpp",
+ "$dawn_dxc_dir/utils/TableGen/CodeGenMapTable.cpp",
+ "$dawn_dxc_dir/utils/TableGen/CodeGenRegisters.cpp",
+ "$dawn_dxc_dir/utils/TableGen/CodeGenSchedule.cpp",
+ "$dawn_dxc_dir/utils/TableGen/CodeGenTarget.cpp",
+ "$dawn_dxc_dir/utils/TableGen/DAGISelEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/DAGISelMatcher.cpp",
+ "$dawn_dxc_dir/utils/TableGen/DAGISelMatcherEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/DAGISelMatcherGen.cpp",
+ "$dawn_dxc_dir/utils/TableGen/DAGISelMatcherOpt.cpp",
+ "$dawn_dxc_dir/utils/TableGen/DFAPacketizerEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/DisassemblerEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/FastISelEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/FixedLenDecoderEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/InstrInfoEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/IntrinsicEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/OptParserEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/PseudoLoweringEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/RegisterInfoEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/SubtargetEmitter.cpp",
+ "$dawn_dxc_dir/utils/TableGen/TableGen.cpp",
+ ]
+}
+
+executable("clang-tblgen") {
+ deps = [ ":TableGen" ]
+
+ sources = [
+ "$dawn_dxc_dir/tools/clang/utils/TableGen/ClangASTNodesEmitter.cpp",
+ "$dawn_dxc_dir/tools/clang/utils/TableGen/ClangAttrEmitter.cpp",
+ "$dawn_dxc_dir/tools/clang/utils/TableGen/ClangCommentCommandInfoEmitter.cpp",
+ "$dawn_dxc_dir/tools/clang/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp",
+ "$dawn_dxc_dir/tools/clang/utils/TableGen/ClangCommentHTMLTagsEmitter.cpp",
+ "$dawn_dxc_dir/tools/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp",
+ "$dawn_dxc_dir/tools/clang/utils/TableGen/ClangSACheckersEmitter.cpp",
+ "$dawn_dxc_dir/tools/clang/utils/TableGen/NeonEmitter.cpp",
+ "$dawn_dxc_dir/tools/clang/utils/TableGen/TableGen.cpp",
+ ]
+}
+
+template("tblgen") {
+ assert(defined(invoker.args), "must set 'args'")
+ assert(defined(invoker.td_file), "must set 'td_file")
+ assert(defined(invoker.output_name), "must set 'output_name")
+ assert(defined(invoker.tblgen_target), "must set 'tblgen_target")
+
+ built_target_action(target_name) {
+ td_file = invoker.td_file
+ target = invoker.tblgen_target
+ inputs = [ td_file ]
+
+ # TODO(amaiorano): Maybe targets should provide full path
+ output_file = "$target_gen_dir/" + invoker.output_name
+ depfile = "$output_file.d"
+ td_file = rebase_path(td_file, root_build_dir)
+
+ args = [
+ "-I",
+ rebase_path("${invoker.dawn_dxc_dir}/include", root_build_dir),
+ "-I",
+ get_path_info(td_file, "dir"),
+ "-d",
+ rebase_path(depfile, root_build_dir),
+ "-o",
+ rebase_path(output_file, root_build_dir),
+ td_file,
+ ] + invoker.args
+
+ outputs = [ output_file ]
+ }
+}
+
+template("clang_tablegen") {
+ tblgen(target_name) {
+ forward_variables_from(invoker,
+ [
+ "output_name",
+ "td_file",
+ "visibility",
+ ])
+ args = invoker.args
+ tblgen_target = ":clang-tblgen"
+ }
+}
+
+template("clang_diag_gen") {
+ clang_tablegen("Diagnostic${target_name}Kinds-inc") {
+ forward_variables_from(invoker, "*")
+ args = [
+ "-gen-clang-diags-defs",
+ "-clang-component=${target_name}",
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Diagnostic.td"
+ output_name =
+ "/tools/clang/include/clang/Basic/Diagnostic${target_name}Kinds.inc"
+ }
+}
+
+#######################################################################
+## llvm-tblgen and clang-tblgen targets
+#######################################################################
+
+tblgen("HLSLOptions-inc") {
+ args = [ "-gen-opt-parser-defs" ]
+ td_file = "$dawn_dxc_dir/include/dxc/Support/HLSLOptions.td"
+ output_name = "include/dxc/Support/HLSLOptions.inc"
+ tblgen_target = ":llvm-tblgen"
+}
+
+tblgen("Intrinsics-td") {
+ args = [ "-gen-intrinsic" ]
+ td_file = "$dawn_dxc_dir/include/llvm/IR/Intrinsics.td"
+ output_name = "include/llvm/IR/Intrinsics.gen"
+ tblgen_target = ":llvm-tblgen"
+}
+
+tblgen("clang-Driver-Options-inc") {
+ args = [ "-gen-opt-parser-defs" ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Driver/Options.td"
+ output_name = "tools/clang/include/clang/Driver/Options.inc"
+ tblgen_target = ":llvm-tblgen"
+}
+
+clang_diag_gen("Analysis") {
+}
+clang_diag_gen("AST") {
+}
+clang_diag_gen("Comment") {
+}
+clang_diag_gen("Common") {
+}
+clang_diag_gen("Driver") {
+}
+clang_diag_gen("Frontend") {
+}
+clang_diag_gen("Lex") {
+}
+clang_diag_gen("Parse") {
+}
+clang_diag_gen("Sema") {
+}
+clang_diag_gen("Serialization") {
+}
+clang_tablegen("DiagnosticGroups-inc") {
+ args = [ "-gen-clang-diag-groups" ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Diagnostic.td"
+ output_name = "/tools/clang/include/clang/Basic/DiagnosticGroups.inc"
+}
+clang_tablegen("AttrList-inc") {
+ args = [
+ "-gen-clang-attr-list",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/Basic/AttrList.inc"
+}
+clang_tablegen("AttrHasAttributeImpl-inc") {
+ args = [
+ "-gen-clang-attr-has-attribute-impl",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/Basic/AttrHasAttributeImpl.inc"
+}
+ClangBasicDeps = [
+ ":DiagnosticAnalysisKinds-inc",
+ ":DiagnosticASTKinds-inc",
+ ":DiagnosticCommentKinds-inc",
+ ":DiagnosticCommonKinds-inc",
+ ":DiagnosticDriverKinds-inc",
+ ":DiagnosticFrontendKinds-inc",
+ ":DiagnosticLexKinds-inc",
+ ":DiagnosticParseKinds-inc",
+ ":DiagnosticSemaKinds-inc",
+ ":DiagnosticSerializationKinds-inc",
+ ":DiagnosticGroups-inc",
+ ":AttrList-inc",
+ ":AttrHasAttributeImpl-inc",
+]
+
+clang_tablegen("Attrs-inc") {
+ args = [
+ "-gen-clang-attr-classes",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/AST/Attrs.inc"
+}
+clang_tablegen("AttrImpl-inc") {
+ args = [
+ "-gen-clang-attr-impl",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/AST/AttrImpl.inc"
+}
+clang_tablegen("AttrDump-inc") {
+ args = [
+ "-gen-clang-attr-dump",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/AST/AttrDump.inc"
+}
+clang_tablegen("AttrVisitor-inc") {
+ args = [
+ "-gen-clang-attr-ast-visitor",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/AST/AttrVisitor.inc"
+}
+clang_tablegen("StmtNodes-inc") {
+ args = [ "-gen-clang-stmt-nodes" ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/StmtNodes.td"
+ output_name = "/tools/clang/include/clang/AST/StmtNodes.inc"
+}
+clang_tablegen("DeclNodes-inc") {
+ args = [ "-gen-clang-decl-nodes" ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/DeclNodes.td"
+ output_name = "/tools/clang/include/clang/AST/DeclNodes.inc"
+}
+clang_tablegen("CommentNodes-inc") {
+ args = [ "-gen-clang-comment-nodes" ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/CommentNodes.td"
+ output_name = "/tools/clang/include/clang/AST/CommentNodes.inc"
+}
+clang_tablegen("CommentHTMLTags-inc") {
+ args = [ "-gen-clang-comment-html-tags" ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/AST/CommentHTMLTags.td"
+ output_name = "/tools/clang/include/clang/AST/CommentHTMLTags.inc"
+}
+clang_tablegen("CommentHTMLTagsProperties-inc") {
+ args = [ "-gen-clang-comment-html-tags-properties" ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/AST/CommentHTMLTags.td"
+ output_name = "/tools/clang/include/clang/AST/CommentHTMLTagsProperties.inc"
+}
+clang_tablegen("CommentHTMLNamedCharacterReferences-inc") {
+ args = [ "-gen-clang-comment-html-named-character-references" ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/AST/CommentHTMLNamedCharacterReferences.td"
+ output_name =
+ "/tools/clang/include/clang/AST/CommentHTMLNamedCharacterReferences.inc"
+}
+clang_tablegen("CommentCommandInfo-inc") {
+ args = [ "-gen-clang-comment-command-info" ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/AST/CommentCommands.td"
+ output_name = "/tools/clang/include/clang/AST/CommentCommandInfo.inc"
+}
+clang_tablegen("CommentCommandList-inc") {
+ args = [ "-gen-clang-comment-command-list" ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/AST/CommentCommands.td"
+ output_name = "/tools/clang/include/clang/AST/CommentCommandList.inc"
+}
+ClangASTDeps = [
+ ":Attrs-inc",
+ ":AttrImpl-inc",
+ ":AttrDump-inc",
+ ":AttrVisitor-inc",
+ ":StmtNodes-inc",
+ ":DeclNodes-inc",
+ ":CommentNodes-inc",
+ ":CommentHTMLTags-inc",
+ ":CommentHTMLTagsProperties-inc",
+ ":CommentHTMLNamedCharacterReferences-inc",
+ ":CommentCommandInfo-inc",
+ ":CommentCommandList-inc",
+]
+clang_tablegen("AttrTemplateInstantiate-inc") {
+ args = [
+ "-gen-clang-attr-template-instantiate",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/Sema/AttrTemplateInstantiate.inc"
+}
+clang_tablegen("AttrParsedAttrList-inc") {
+ args = [
+ "-gen-clang-attr-parsed-attr-list",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/Sema/AttrParsedAttrList.inc"
+}
+clang_tablegen("AttrParsedAttrKinds-inc") {
+ args = [
+ "-gen-clang-attr-parsed-attr-kinds",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/Sema/AttrParsedAttrKinds.inc"
+}
+clang_tablegen("AttrSpellingListIndex-inc") {
+ args = [
+ "-gen-clang-attr-spelling-index",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/Sema/AttrSpellingListIndex.inc"
+}
+clang_tablegen("AttrParsedAttrImpl-inc") {
+ args = [
+ "-gen-clang-attr-parsed-attr-impl",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/Sema/AttrParsedAttrImpl.inc"
+}
+ClangSemaDeps = [
+ ":AttrTemplateInstantiate-inc",
+ ":AttrParsedAttrList-inc",
+ ":AttrParsedAttrKinds-inc",
+ ":AttrSpellingListIndex-inc",
+ ":AttrParsedAttrImpl-inc",
+]
+clang_tablegen("AttrParserStringSwitches-inc") {
+ args = [
+ "-gen-clang-attr-parser-string-switches",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/Parse/AttrParserStringSwitches.inc"
+}
+clang_tablegen("AttrPCHRead-inc") {
+ args = [
+ "-gen-clang-attr-pch-read",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/Serialization/AttrPCHRead.inc"
+}
+clang_tablegen("AttrPCHWrite-inc") {
+ args = [
+ "-gen-clang-attr-pch-write",
+ "-I",
+ rebase_path("$dawn_dxc_dir/tools/clang/include", root_build_dir),
+ ]
+ td_file = "$dawn_dxc_dir/tools/clang/include/clang/Basic/Attr.td"
+ output_name = "/tools/clang/include/clang/Serialization/AttrPCHWrite.inc"
+}
+
+#######################################################################
+## dxc generators (gen_version, hlsl_hctgen, etc.)
+#######################################################################
+
+# Generates dxcetw.h used by dxcompiler
+system_binary_action("dxcetw-h") {
+ manifest = "$dawn_dxc_dir/include/dxc/Tracing/dxcetw.man"
+ inputs = [ manifest ]
+ gen_output_dir = "$target_gen_dir/include/dxc/Tracing/dxcetw"
+ outputs = [
+ "$gen_output_dir/dxcetw.h",
+ "$gen_output_dir/dxcetw.rc",
+ "$gen_output_dir/dxcetwTEMP.bin",
+
+ # Note: CMake copies from tmpdxcetw_MSG00001.bin to MSG00001.bin,
+ # but we don't copy, so we get the default output name. Is this okay?
+ "$gen_output_dir/dxcetw_MSG00001.bin",
+ ]
+ args = [
+ "mc",
+ "-r",
+ rebase_path(gen_output_dir, root_build_dir),
+ "-h",
+ rebase_path(gen_output_dir, root_build_dir),
+ "-p",
+ "DxcEtw_",
+ "-um",
+ "-z",
+ "dxcetw",
+ rebase_path(manifest, root_build_dir),
+ ]
+}
+
+generate_version_include("hlsl_dxcversion_autogen") {
+ input_file = "$dawn_dxc_dir/utils/version/version.inc"
+ output_file = "/utils/version/dxcversion.inc"
+}
+
+add_hlsl_hctgen("DxcDisassembler-inc") {
+ mode = "DxcDisassembler"
+ output = "/tools/clang/tools/dxcompiler/DxcDisassembler.inc"
+ build_dir = true
+}
+add_hlsl_hctgen("DxilValidation-inc") {
+ mode = "DxilValidationInc"
+ output = "/include/dxc/HLSL/DxilValidation.inc"
+ build_dir = true
+}
+add_hlsl_hctgen("DxcOptimizer-inc") {
+ mode = "DxcOptimizer"
+ output = "/lib/HLSL/DxcOptimizer.inc"
+ build_dir = true
+}
+add_hlsl_hctgen("DxilValidationImpl-inc") {
+ mode = "DxilValidation"
+ output = "/lib/HLSL/DxilValidationImpl.inc"
+ build_dir = true
+}
+add_hlsl_hctgen("gen_intrin_main_tables_15-h") {
+ mode = "DxilIntrinsicTables"
+ output = "/tools/clang/lib/Sema/gen_intrin_main_tables_15.h"
+ build_dir = true
+}
+add_hlsl_hctgen("DxilPIXPasses-inc") {
+ mode = "DxilPIXPasses"
+ output = "/lib/DxilPIXPasses/DxilPIXPasses.inc"
+ build_dir = true
+}
+
+#######################################################################
+## dxc and dxcompiler
+#######################################################################
+
+# This target contains common code shared by both 'dxc' and 'dxcompiler' targets
+static_library("dxclib") {
+ public_configs = [ ":common_config" ]
+
+ if (dawn_has_build) {
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [ "//build/config/compiler:no_chromium_code" ]
+ }
+ public_deps = [
+ ":DataTypes-header",
+ ":HLSLOptions-inc",
+ ":Intrinsics-td",
+ ":SharedLibAffix-h",
+ ":Support",
+ ]
+ sources = [
+ "$dawn_dxc_dir/lib/DXIL/DxilCBuffer.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilCompType.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilCounters.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilInterpolationMode.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilMetadataHelper.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilModule.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilModuleHelper.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilOperations.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilPDB.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilResource.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilResourceBase.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilResourceBinding.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilResourceProperties.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilSampler.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilSemantic.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilShaderFlags.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilShaderModel.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilSignature.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilSignatureElement.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilSubobject.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilTypeSystem.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilUtil.cpp",
+ "$dawn_dxc_dir/lib/DXIL/DxilUtilDbgInfoAndMisc.cpp",
+ "$dawn_dxc_dir/lib/DxcSupport/FileIOHelper.cpp",
+ "$dawn_dxc_dir/lib/DxcSupport/Global.cpp",
+ "$dawn_dxc_dir/lib/DxcSupport/HLSLOptions.cpp",
+ "$dawn_dxc_dir/lib/DxcSupport/Unicode.cpp",
+ "$dawn_dxc_dir/lib/DxcSupport/WinAdapter.cpp",
+ "$dawn_dxc_dir/lib/DxcSupport/WinFunctions.cpp",
+ "$dawn_dxc_dir/lib/DxcSupport/dxcapi.use.cpp",
+ "$dawn_dxc_dir/lib/DxcSupport/dxcmem.cpp",
+ "$dawn_dxc_dir/lib/DxilContainer/DxcContainerBuilder.cpp",
+ "$dawn_dxc_dir/lib/DxilContainer/DxilContainer.cpp",
+ "$dawn_dxc_dir/lib/DxilContainer/DxilContainerAssembler.cpp",
+ "$dawn_dxc_dir/lib/DxilContainer/DxilContainerReader.cpp",
+ "$dawn_dxc_dir/lib/DxilContainer/DxilRDATBuilder.cpp",
+ "$dawn_dxc_dir/lib/DxilContainer/DxilRuntimeReflection.cpp",
+ "$dawn_dxc_dir/lib/DxilContainer/RDATDxilSubobjects.cpp",
+ "$dawn_dxc_dir/lib/Option/Arg.cpp",
+ "$dawn_dxc_dir/lib/Option/ArgList.cpp",
+ "$dawn_dxc_dir/lib/Option/OptTable.cpp",
+ "$dawn_dxc_dir/lib/Option/Option.cpp",
+ ]
+}
+
+# Template to define a source_set or static_library for dxcompiler sources.
+# Used to split up sources into multiple targets to avoid name collisions.
+template("dxcompiler_sourceset") {
+ assert(defined(invoker.target_type), "must set target_type")
+
+ target(invoker.target_type, target_name) {
+ forward_variables_from(invoker, [ "sources" ])
+
+ public_configs = [ ":common_config" ]
+
+ if (is_win) {
+ # DXC is built with multibyte character set, so it expects Win32 functions to map the ANSI ones, not the UNICODE ones.
+ configs -= [ "//build/config/win:unicode" ]
+ }
+
+ deps = [
+ ":AttrPCHRead-inc",
+ ":AttrPCHWrite-inc",
+ ":AttrParserStringSwitches-inc",
+ ":DxcOptimizer-inc",
+ ":DxilPIXPasses-inc",
+ ":DxilValidation-inc",
+ ":DxilValidationImpl-inc",
+ ":clang-Driver-Options-inc",
+ ":clang-basic-version-inc",
+ ":clang-config-h",
+ ":dxclib",
+ ":gen_intrin_main_tables_15-h",
+ ":hlsl_dxcversion_autogen",
+ ]
+ deps += ClangBasicDeps
+ deps += ClangASTDeps
+ deps += ClangSemaDeps
+
+ include_dirs = [
+ "${target_gen_dir}/utils/version", # hlsl_dxcversion_autogen
+ "${target_gen_dir}/tools/clang/include",
+ "${target_gen_dir}/tools/clang/tools/dxcompiler",
+ "${target_gen_dir}/tools/clang/lib/Sema",
+ "${target_gen_dir}/lib/HLSL",
+ "${target_gen_dir}/lib/DxilPIXPasses",
+ ]
+
+ if (is_linux) {
+ include_dirs += [
+ "$dawn_dxheaders_dir/include/directx",
+ "$dawn_dxheaders_dir/include/wsl/stubs/",
+ ]
+ }
+
+ if (is_win) {
+ deps += [ ":dxcetw-h" ]
+ include_dirs += [
+ "$target_gen_dir/include/dxc/Tracing/dxcetw", # dxcetw-h
+ "$visual_studio_path/DIA SDK/include", # Required for msvc builds
+ ]
+ }
+
+ defines = [
+ "DXC_API_IMPORT=", # Don't import locally defined symbols
+ "CINDEX_LINKAGE=",
+ "LIBCLANG_CC=",
+ "_CINDEX_LIB_",
+ ]
+
+ if (defined(invoker.defines)) {
+ defines += invoker.defines
+ }
+ }
+}
+
+dxcompiler_sourceset("lib_analysis") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/Analysis/AliasAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/AliasAnalysisCounter.cpp",
+ "$dawn_dxc_dir/lib/Analysis/AliasAnalysisEvaluator.cpp",
+ "$dawn_dxc_dir/lib/Analysis/AliasDebugger.cpp",
+ "$dawn_dxc_dir/lib/Analysis/AliasSetTracker.cpp",
+ "$dawn_dxc_dir/lib/Analysis/Analysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/AssumptionCache.cpp",
+ "$dawn_dxc_dir/lib/Analysis/BasicAliasAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/BlockFrequencyInfo.cpp",
+ "$dawn_dxc_dir/lib/Analysis/BlockFrequencyInfoImpl.cpp",
+ "$dawn_dxc_dir/lib/Analysis/BranchProbabilityInfo.cpp",
+ "$dawn_dxc_dir/lib/Analysis/CFG.cpp",
+ "$dawn_dxc_dir/lib/Analysis/CFGPrinter.cpp",
+ "$dawn_dxc_dir/lib/Analysis/CFLAliasAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/CGSCCPassManager.cpp",
+ "$dawn_dxc_dir/lib/Analysis/CaptureTracking.cpp",
+ "$dawn_dxc_dir/lib/Analysis/CodeMetrics.cpp",
+ "$dawn_dxc_dir/lib/Analysis/ConstantFolding.cpp",
+ "$dawn_dxc_dir/lib/Analysis/CostModel.cpp",
+ "$dawn_dxc_dir/lib/Analysis/Delinearization.cpp",
+ "$dawn_dxc_dir/lib/Analysis/DependenceAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/DivergenceAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/DomPrinter.cpp",
+ "$dawn_dxc_dir/lib/Analysis/DominanceFrontier.cpp",
+ "$dawn_dxc_dir/lib/Analysis/DxilConstantFolding.cpp",
+ "$dawn_dxc_dir/lib/Analysis/DxilConstantFoldingExt.cpp",
+ "$dawn_dxc_dir/lib/Analysis/DxilSimplify.cpp",
+ "$dawn_dxc_dir/lib/Analysis/DxilValueCache.cpp",
+ "$dawn_dxc_dir/lib/Analysis/IPA/CallGraph.cpp",
+ "$dawn_dxc_dir/lib/Analysis/IPA/CallGraphSCCPass.cpp",
+ "$dawn_dxc_dir/lib/Analysis/IPA/CallPrinter.cpp",
+ "$dawn_dxc_dir/lib/Analysis/IPA/GlobalsModRef.cpp",
+ "$dawn_dxc_dir/lib/Analysis/IPA/IPA.cpp",
+ "$dawn_dxc_dir/lib/Analysis/IPA/InlineCost.cpp",
+ "$dawn_dxc_dir/lib/Analysis/IVUsers.cpp",
+ "$dawn_dxc_dir/lib/Analysis/InstCount.cpp",
+ "$dawn_dxc_dir/lib/Analysis/InstructionSimplify.cpp",
+ "$dawn_dxc_dir/lib/Analysis/Interval.cpp",
+ "$dawn_dxc_dir/lib/Analysis/IntervalPartition.cpp",
+ "$dawn_dxc_dir/lib/Analysis/IteratedDominanceFrontier.cpp",
+ "$dawn_dxc_dir/lib/Analysis/LazyCallGraph.cpp",
+ "$dawn_dxc_dir/lib/Analysis/LazyValueInfo.cpp",
+ "$dawn_dxc_dir/lib/Analysis/LibCallAliasAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/LibCallSemantics.cpp",
+ "$dawn_dxc_dir/lib/Analysis/Lint.cpp",
+ "$dawn_dxc_dir/lib/Analysis/Loads.cpp",
+ "$dawn_dxc_dir/lib/Analysis/LoopAccessAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/LoopInfo.cpp",
+ "$dawn_dxc_dir/lib/Analysis/LoopPass.cpp",
+ "$dawn_dxc_dir/lib/Analysis/MemDepPrinter.cpp",
+ "$dawn_dxc_dir/lib/Analysis/MemDerefPrinter.cpp",
+ "$dawn_dxc_dir/lib/Analysis/MemoryBuiltins.cpp",
+ "$dawn_dxc_dir/lib/Analysis/MemoryDependenceAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/MemoryLocation.cpp",
+ "$dawn_dxc_dir/lib/Analysis/ModuleDebugInfoPrinter.cpp",
+ "$dawn_dxc_dir/lib/Analysis/NoAliasAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/PHITransAddr.cpp",
+ "$dawn_dxc_dir/lib/Analysis/PostDominators.cpp",
+ "$dawn_dxc_dir/lib/Analysis/PtrUseVisitor.cpp",
+ "$dawn_dxc_dir/lib/Analysis/ReducibilityAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/RegionPass.cpp",
+ "$dawn_dxc_dir/lib/Analysis/ScalarEvolution.cpp",
+ "$dawn_dxc_dir/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/ScalarEvolutionExpander.cpp",
+ "$dawn_dxc_dir/lib/Analysis/ScalarEvolutionNormalization.cpp",
+ "$dawn_dxc_dir/lib/Analysis/ScopedNoAliasAA.cpp",
+ "$dawn_dxc_dir/lib/Analysis/SparsePropagation.cpp",
+ "$dawn_dxc_dir/lib/Analysis/TargetLibraryInfo.cpp",
+ "$dawn_dxc_dir/lib/Analysis/TargetTransformInfo.cpp",
+ "$dawn_dxc_dir/lib/Analysis/Trace.cpp",
+ "$dawn_dxc_dir/lib/Analysis/TypeBasedAliasAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Analysis/ValueTracking.cpp",
+ "$dawn_dxc_dir/lib/Analysis/VectorUtils.cpp",
+ "$dawn_dxc_dir/lib/Analysis/VectorUtils2.cpp",
+ "$dawn_dxc_dir/lib/Analysis/regioninfo.cpp",
+ "$dawn_dxc_dir/lib/Analysis/regionprinter.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_asmparser") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/AsmParser/LLLexer.cpp",
+ "$dawn_dxc_dir/lib/AsmParser/LLParser.cpp",
+ "$dawn_dxc_dir/lib/AsmParser/Parser.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_bitcode") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/Bitcode/Reader/BitcodeReader.cpp",
+ "$dawn_dxc_dir/lib/Bitcode/Reader/BitstreamReader.cpp",
+ "$dawn_dxc_dir/lib/Bitcode/Writer/BitWriter.cpp",
+ "$dawn_dxc_dir/lib/Bitcode/Writer/BitcodeWriter.cpp",
+ "$dawn_dxc_dir/lib/Bitcode/Writer/BitcodeWriterPass.cpp",
+ "$dawn_dxc_dir/lib/Bitcode/Writer/ValueEnumerator.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_dxcbindingtable") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [ "$dawn_dxc_dir/lib/DxcBindingTable/DxcBindingTable.cpp" ]
+}
+dxcompiler_sourceset("lib_dxilcompression") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/DxilCompression/DxilCompression.cpp",
+ "$dawn_dxc_dir/lib/DxilCompression/miniz.c",
+ ]
+}
+dxcompiler_sourceset("lib_dxildia") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ if (is_win) {
+ sources = [
+ "$dawn_dxc_dir/lib/DxilDia/DxcPixCompilationInfo.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxcPixDxilDebugInfo.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxcPixDxilStorage.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxcPixEntrypoints.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxcPixLiveVariables.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxcPixLiveVariables_FragmentIterator.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxcPixTypes.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxcPixVariables.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDia.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaDataSource.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaEnumTables.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaSession.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaSymbolManager.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaTable.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaTableFrameData.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaTableInjectedSources.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaTableInputAssemblyFile.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaTableLineNumbers.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaTableSections.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaTableSegmentMap.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaTableSourceFiles.cpp",
+ "$dawn_dxc_dir/lib/DxilDia/DxilDiaTableSymbols.cpp",
+ ]
+ }
+}
+dxcompiler_sourceset("lib_dxilpixpasses") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilAddPixelHitInstrumentation.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilAnnotateWithVirtualRegister.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilDbgValueToDbgDeclare.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilDebugInstrumentation.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilForceEarlyZ.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilOutputColorBecomesConstant.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilPIXAddTidToAmplificationShaderPayload.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilPIXMeshShaderOutputInstrumentation.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilPIXPasses.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilPIXVirtualRegisters.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilReduceMSAAToSingleSample.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilRemoveDiscards.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/DxilShaderAccessTracking.cpp",
+ "$dawn_dxc_dir/lib/DxilPIXPasses/PixPassHelpers.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_dxilrootsignature") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/DxilRootSignature/DxilRootSignature.cpp",
+ "$dawn_dxc_dir/lib/DxilRootSignature/DxilRootSignatureConvert.cpp",
+ "$dawn_dxc_dir/lib/DxilRootSignature/DxilRootSignatureSerializer.cpp",
+ "$dawn_dxc_dir/lib/DxilRootSignature/DxilRootSignatureValidator.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_hlsl") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/HLSL/ComputeViewIdState.cpp",
+ "$dawn_dxc_dir/lib/HLSL/ComputeViewIdStateBuilder.cpp",
+ "$dawn_dxc_dir/lib/HLSL/ControlDependence.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxcOptimizer.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilCondenseResources.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilContainerReflection.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilConvergent.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilDeleteRedundantDebugValues.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilEliminateOutputDynamicIndexing.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilExpandTrigIntrinsics.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilExportMap.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilGenerationPass.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilLegalizeEvalOperations.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilLegalizeSampleOffsetPass.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilLinker.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilLoopDeletion.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilNoOptLegalize.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilNoops.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilPackSignatureElement.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilPatchShaderRecordBindings.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilPoisonValues.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilPrecisePropagatePass.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilPreparePasses.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilPreserveAllOutputs.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilPromoteResourcePasses.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilRenameResourcesPass.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilSignatureValidation.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilSimpleGVNHoist.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilTargetLowering.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilTargetTransformInfo.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilTranslateRawBuffer.cpp",
+ "$dawn_dxc_dir/lib/HLSL/DxilValidation.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLDeadFunctionElimination.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLExpandStoreIntrinsics.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLLegalizeParameter.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLLowerUDT.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLMatrixBitcastLowerPass.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLMatrixLowerPass.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLMatrixSubscriptUseReplacer.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLMatrixType.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLMetadataPasses.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLModule.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLOperationLower.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLOperationLowerExtension.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLOperations.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLPreprocess.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLResource.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLSignatureLower.cpp",
+ "$dawn_dxc_dir/lib/HLSL/HLUtil.cpp",
+ "$dawn_dxc_dir/lib/HLSL/PauseResumePasses.cpp",
+ "$dawn_dxc_dir/lib/HLSL/WaveSensitivityAnalysis.cpp",
+ ]
+}
+
+dxcompiler_sourceset("lib_irreader") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [ "$dawn_dxc_dir/lib/IRReader/IRReader.cpp" ]
+}
+dxcompiler_sourceset("lib_linker") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [ "$dawn_dxc_dir/lib/Linker/LinkModules.cpp" ]
+}
+dxcompiler_sourceset("lib_mc") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/MC/ConstantPools.cpp",
+ "$dawn_dxc_dir/lib/MC/ELFObjectWriter.cpp",
+ "$dawn_dxc_dir/lib/MC/MCAsmBackend.cpp",
+ "$dawn_dxc_dir/lib/MC/MCAsmInfo.cpp",
+ "$dawn_dxc_dir/lib/MC/MCAsmInfoCOFF.cpp",
+ "$dawn_dxc_dir/lib/MC/MCAsmInfoDarwin.cpp",
+ "$dawn_dxc_dir/lib/MC/MCAsmInfoELF.cpp",
+ "$dawn_dxc_dir/lib/MC/MCAsmStreamer.cpp",
+ "$dawn_dxc_dir/lib/MC/MCAssembler.cpp",
+ "$dawn_dxc_dir/lib/MC/MCCodeEmitter.cpp",
+ "$dawn_dxc_dir/lib/MC/MCCodeGenInfo.cpp",
+ "$dawn_dxc_dir/lib/MC/MCContext.cpp",
+ "$dawn_dxc_dir/lib/MC/MCDwarf.cpp",
+ "$dawn_dxc_dir/lib/MC/MCELFObjectTargetWriter.cpp",
+ "$dawn_dxc_dir/lib/MC/MCELFStreamer.cpp",
+ "$dawn_dxc_dir/lib/MC/MCExpr.cpp",
+ "$dawn_dxc_dir/lib/MC/MCInst.cpp",
+ "$dawn_dxc_dir/lib/MC/MCInstPrinter.cpp",
+ "$dawn_dxc_dir/lib/MC/MCInstrAnalysis.cpp",
+ "$dawn_dxc_dir/lib/MC/MCInstrDesc.cpp",
+ "$dawn_dxc_dir/lib/MC/MCLabel.cpp",
+ "$dawn_dxc_dir/lib/MC/MCLinkerOptimizationHint.cpp",
+ "$dawn_dxc_dir/lib/MC/MCMachOStreamer.cpp",
+ "$dawn_dxc_dir/lib/MC/MCMachObjectTargetWriter.cpp",
+ "$dawn_dxc_dir/lib/MC/MCNullStreamer.cpp",
+ "$dawn_dxc_dir/lib/MC/MCObjectFileInfo.cpp",
+ "$dawn_dxc_dir/lib/MC/MCObjectStreamer.cpp",
+ "$dawn_dxc_dir/lib/MC/MCObjectWriter.cpp",
+ "$dawn_dxc_dir/lib/MC/MCRegisterInfo.cpp",
+ "$dawn_dxc_dir/lib/MC/MCSchedule.cpp",
+ "$dawn_dxc_dir/lib/MC/MCSection.cpp",
+ "$dawn_dxc_dir/lib/MC/MCSectionCOFF.cpp",
+ "$dawn_dxc_dir/lib/MC/MCSectionELF.cpp",
+ "$dawn_dxc_dir/lib/MC/MCSectionMachO.cpp",
+ "$dawn_dxc_dir/lib/MC/MCStreamer.cpp",
+ "$dawn_dxc_dir/lib/MC/MCSubtargetInfo.cpp",
+ "$dawn_dxc_dir/lib/MC/MCSymbol.cpp",
+ "$dawn_dxc_dir/lib/MC/MCSymbolELF.cpp",
+ "$dawn_dxc_dir/lib/MC/MCSymbolizer.cpp",
+ "$dawn_dxc_dir/lib/MC/MCTargetOptions.cpp",
+ "$dawn_dxc_dir/lib/MC/MCValue.cpp",
+ "$dawn_dxc_dir/lib/MC/MCWin64EH.cpp",
+ "$dawn_dxc_dir/lib/MC/MCWinEH.cpp",
+ "$dawn_dxc_dir/lib/MC/MachObjectWriter.cpp",
+ "$dawn_dxc_dir/lib/MC/StringTableBuilder.cpp",
+ "$dawn_dxc_dir/lib/MC/SubtargetFeature.cpp",
+ "$dawn_dxc_dir/lib/MC/WinCOFFObjectWriter.cpp",
+ "$dawn_dxc_dir/lib/MC/WinCOFFStreamer.cpp",
+ "$dawn_dxc_dir/lib/MC/YAML.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_object") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/Object/Archive.cpp",
+ "$dawn_dxc_dir/lib/Object/ArchiveWriter.cpp",
+ "$dawn_dxc_dir/lib/Object/Binary.cpp",
+ "$dawn_dxc_dir/lib/Object/COFFObjectFile.cpp",
+ "$dawn_dxc_dir/lib/Object/COFFYAML.cpp",
+ "$dawn_dxc_dir/lib/Object/ELF.cpp",
+ "$dawn_dxc_dir/lib/Object/ELFObjectFile.cpp",
+ "$dawn_dxc_dir/lib/Object/ELFYAML.cpp",
+ "$dawn_dxc_dir/lib/Object/Error.cpp",
+ "$dawn_dxc_dir/lib/Object/IRObjectFile.cpp",
+ "$dawn_dxc_dir/lib/Object/MachOObjectFile.cpp",
+ "$dawn_dxc_dir/lib/Object/MachOUniversal.cpp",
+ "$dawn_dxc_dir/lib/Object/Object.cpp",
+ "$dawn_dxc_dir/lib/Object/ObjectFile.cpp",
+ "$dawn_dxc_dir/lib/Object/RecordStreamer.cpp",
+ "$dawn_dxc_dir/lib/Object/SymbolSize.cpp",
+ "$dawn_dxc_dir/lib/Object/SymbolicFile.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_passprinters") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [ "$dawn_dxc_dir/lib/PassPrinters/PassPrinters.cpp" ]
+}
+dxcompiler_sourceset("lib_profiledata") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/ProfileData/CoverageMapping.cpp",
+ "$dawn_dxc_dir/lib/ProfileData/CoverageMappingReader.cpp",
+ "$dawn_dxc_dir/lib/ProfileData/CoverageMappingWriter.cpp",
+ "$dawn_dxc_dir/lib/ProfileData/InstrProf.cpp",
+ "$dawn_dxc_dir/lib/ProfileData/InstrProfReader.cpp",
+ "$dawn_dxc_dir/lib/ProfileData/InstrProfWriter.cpp",
+ "$dawn_dxc_dir/lib/ProfileData/SampleProf.cpp",
+ "$dawn_dxc_dir/lib/ProfileData/SampleProfReader.cpp",
+ "$dawn_dxc_dir/lib/ProfileData/SampleProfWriter.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_target") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/Target/Target.cpp",
+ "$dawn_dxc_dir/lib/Target/TargetIntrinsicInfo.cpp",
+ "$dawn_dxc_dir/lib/Target/TargetLoweringObjectFile.cpp",
+ "$dawn_dxc_dir/lib/Target/TargetMachine.cpp",
+ "$dawn_dxc_dir/lib/Target/TargetMachineC.cpp",
+ "$dawn_dxc_dir/lib/Target/TargetRecip.cpp",
+ "$dawn_dxc_dir/lib/Target/TargetSubtargetInfo.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_transforms") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/Transforms/IPO/BarrierNoopPass.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/ConstantMerge.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/DeadArgumentElimination.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/ElimAvailExtern.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/ExtractGV.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/FunctionAttrs.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/GlobalDCE.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/GlobalOpt.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/IPConstantPropagation.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/IPO.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/InlineAlways.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/InlineSimple.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/Inliner.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/Internalize.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/LoopExtractor.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/LowerBitSets.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/MergeFunctions.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/PartialInlining.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/PassManagerBuilder.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/PruneEH.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/StripDeadPrototypes.cpp",
+ "$dawn_dxc_dir/lib/Transforms/IPO/StripSymbols.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineAddSub.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineCalls.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineCasts.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineCompares.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombinePHI.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineSelect.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineShifts.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstCombineVectorOps.cpp",
+ "$dawn_dxc_dir/lib/Transforms/InstCombine/InstructionCombining.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/ADCE.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/BDCE.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/ConstantHoisting.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/ConstantProp.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/DCE.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/DeadStoreElimination.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/DxilConditionalMem2Reg.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/DxilEliminateVector.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/DxilEraseDeadRegion.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/DxilFixConstArrayInitializer.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/DxilLoopUnroll.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/DxilRemoveDeadBlocks.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/DxilRemoveUnstructuredLoopExits.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/EarlyCSE.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/FlattenCFGPass.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/Float2Int.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/GVN.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/HoistConstantArray.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/IndVarSimplify.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/JumpThreading.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LICM.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoadCombine.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoopDeletion.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoopDistribute.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoopIdiomRecognize.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoopInstSimplify.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoopInterchange.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoopRerollPass.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoopRotation.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoopStrengthReduce.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoopUnrollPass.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LoopUnswitch.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LowerAtomic.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/LowerTypePasses.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/MemCpyOptimizer.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/NaryReassociate.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/PartiallyInlineLibCalls.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/PlaceSafepoints.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/Reassociate.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/Reg2Mem.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/Reg2MemHLSL.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/SCCP.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/SROA.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/SampleProfile.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/Scalar.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/ScalarReplAggregates.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/ScalarReplAggregatesHLSL.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/Scalarizer.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/SimplifyCFGPass.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/Sink.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/SpeculativeExecution.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/StructurizeCFG.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Scalar/TailRecursionElimination.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/ASanStackFrameLayout.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/AddDiscriminators.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/BasicBlockUtils.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/BreakCriticalEdges.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/BuildLibCalls.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/BypassSlowDivision.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/CloneFunction.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/CloneModule.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/CmpInstAnalysis.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/CodeExtractor.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/CtorUtils.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/DemoteRegToStack.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/FlattenCFG.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/GlobalStatus.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/InlineFunction.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/InstructionNamer.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/IntegerDivision.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/LCSSA.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/Local.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/LoopSimplify.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/LoopSimplifyId.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/LoopUnroll.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/LoopUnrollRuntime.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/LoopUtils.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/LoopVersioning.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/LowerInvoke.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/LowerSwitch.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/Mem2Reg.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/MetaRenamer.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/ModuleUtils.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/PromoteMemoryToRegister.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/SSAUpdater.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/SimplifyCFG.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/SimplifyIndVar.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/SimplifyInstructions.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/SimplifyLibCalls.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/SymbolRewriter.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/Utils.cpp",
+ "$dawn_dxc_dir/lib/Transforms/Utils/ValueMapper.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_astmatchers") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/ASTMatchers/ASTMatchFinder.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/ASTMatchers/ASTMatchersInternal.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_ast") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/AST/APValue.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ASTConsumer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ASTContext.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ASTContextHLSL.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ASTDiagnostic.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ASTDumper.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ASTImporter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ASTTypeTraits.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/AttrImpl.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/CXXInheritance.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/Comment.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/CommentBriefParser.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/CommentCommandTraits.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/CommentLexer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/CommentParser.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/CommentSema.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/Decl.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/DeclBase.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/DeclCXX.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/DeclFriend.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/DeclGroup.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/DeclObjC.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/DeclOpenMP.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/DeclPrinter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/DeclTemplate.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/DeclarationName.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/Expr.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ExprCXX.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ExprClassification.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ExprConstant.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ExternalASTSource.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/HlslBuiltinTypeDeclBuilder.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/HlslTypes.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/InheritViz.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ItaniumCXXABI.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ItaniumMangle.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/Mangle.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/MicrosoftCXXABI.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/MicrosoftMangle.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/NestedNameSpecifier.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/ParentMap.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/RawCommentList.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/RecordLayout.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/RecordLayoutBuilder.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/SelectorLocationsKind.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/Stmt.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/StmtIterator.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/StmtPrinter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/StmtProfile.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/StmtViz.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/TemplateBase.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/TemplateName.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/Type.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/TypeLoc.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/TypePrinter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/VTTBuilder.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/AST/VTableBuilder.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_analysis") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/AnalysisDeclContext.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/BodyFarm.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/CFG.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/CFGReachabilityAnalysis.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/CFGStmtMap.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/CallGraph.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/CodeInjector.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/Consumed.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/Dominators.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/LiveVariables.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/ObjCNoReturn.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/PostOrderCFGView.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/ProgramPoint.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/PseudoConstantAnalysis.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/ReachableCode.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/ThreadSafety.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/ThreadSafetyCommon.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/ThreadSafetyLogical.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/ThreadSafetyTIL.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Analysis/UninitializedValues.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_basic") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Basic/Attributes.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/Builtins.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/CharInfo.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/Diagnostic.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/DiagnosticIDs.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/DiagnosticOptions.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/FileManager.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/FileSystemStatCache.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/IdentifierTable.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/LangOptions.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/Module.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/ObjCRuntime.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/OpenMPKinds.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/OperatorPrecedence.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/SanitizerBlacklist.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/Sanitizers.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/SourceLocation.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/SourceManager.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/TargetInfo.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/Targets.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/TokenKinds.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/Version.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/VersionTuple.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/VirtualFileSystem.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Basic/Warnings.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_codegen") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/BackendUtil.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGAtomic.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGBlocks.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGBuiltin.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGCUDANV.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGCUDARuntime.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGCXX.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGCXXABI.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGCall.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGClass.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGCleanup.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGDebugInfo.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGDecl.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGDeclCXX.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGException.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGExpr.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGExprAgg.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGExprCXX.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGExprComplex.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGExprConstant.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGExprScalar.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGHLSLMS.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGHLSLMSFinishCodeGen.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGHLSLRootSignature.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGHLSLRuntime.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGLoopInfo.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGObjC.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGStmt.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGStmtOpenMP.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGVTT.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CGVTables.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CodeGenABITypes.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CodeGenAction.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CodeGenFunction.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CodeGenModule.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CodeGenPGO.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CodeGenTBAA.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CodeGenTypes.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/CoverageMappingGen.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/ModuleBuilder.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/SanitizerMetadata.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/CodeGen/TargetInfo.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_driver") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Driver/Action.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/Compilation.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/CrossWindowsToolChain.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/Driver.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/DriverOptions.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/Job.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/MSVCToolChain.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/MinGWToolChain.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/Multilib.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/Phases.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/SanitizerArgs.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/Tool.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/ToolChain.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/ToolChains.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/Tools.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Driver/Types.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_edit") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Edit/Commit.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Edit/EditedSource.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_format") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Format/BreakableToken.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Format/ContinuationIndenter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Format/Format.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Format/FormatToken.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Format/TokenAnnotator.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Format/UnwrappedLineFormatter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Format/UnwrappedLineParser.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Format/WhitespaceManager.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_frontend") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/ASTConsumers.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/ASTMerge.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/ASTUnit.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/CacheTokens.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/ChainedDiagnosticConsumer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/CodeGenOptions.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/CompilerInstance.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/CompilerInvocation.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/CreateInvocationFromCommandLine.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/DependencyFile.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/DependencyGraph.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/DiagnosticRenderer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/FrontendAction.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/FrontendActions.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/FrontendOptions.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/HeaderIncludeGen.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/InitHeaderSearch.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/InitPreprocessor.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/LangStandards.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/LayoutOverrideSource.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/LogDiagnosticPrinter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/ModuleDependencyCollector.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/MultiplexConsumer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/PCHContainerOperations.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/PrintPreprocessedOutput.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/SerializedDiagnosticReader.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/TextDiagnostic.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/TextDiagnosticBuffer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_index") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Index/CommentToXML.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Index/USRGeneration.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_lex") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Lex/HLSLMacroExpander.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/HeaderMap.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/HeaderSearch.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/Lexer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/LiteralSupport.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/MacroArgs.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/MacroInfo.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/ModuleMap.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/PPCaching.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/PPCallbacks.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/PPConditionalDirectiveRecord.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/PPDirectives.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/PPExpressions.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/PPLexerChange.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/PPMacroExpansion.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/PTHLexer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/Pragma.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/PreprocessingRecord.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/Preprocessor.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/PreprocessorLexer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/ScratchBuffer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/TokenConcatenation.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Lex/TokenLexer.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_parse") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Parse/HLSLRootSignature.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseAST.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseDecl.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseDeclCXX.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseExpr.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseExprCXX.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseHLSL.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseInit.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseObjc.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseOpenMP.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParsePragma.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseStmt.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseStmtAsm.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseTemplate.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/ParseTentative.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Parse/Parser.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_rewrite") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Rewrite/DeltaTree.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Rewrite/HTMLRewrite.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Rewrite/RewriteRope.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Rewrite/Rewriter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Rewrite/TokenRewriter.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_sema") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/AttributeList.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/CodeCompleteConsumer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/DeclSpec.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/DelayedDiagnostic.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/IdentifierResolver.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/JumpDiagnostics.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/MultiplexExternalSemaSource.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/Scope.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/ScopeInfo.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/Sema.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaAccess.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaAttr.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaCUDA.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaCXXScopeSpec.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaCast.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaChecking.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaCodeComplete.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaConsumer.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaDXR.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaDecl.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaDeclAttr.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaDeclCXX.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaDeclObjC.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaExceptionSpec.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaExpr.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaExprCXX.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaExprMember.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaExprObjC.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaFixItUtils.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaHLSL.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaInit.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaLambda.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaLookup.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaObjCProperty.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaOpenMP.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaOverload.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaPseudoObject.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaStmt.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaStmtAsm.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaStmtAttr.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaTemplate.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaTemplateDeduction.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaTemplateVariadic.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/SemaType.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Sema/TypeLocBuilder.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_serialization") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/ASTCommon.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/ASTReader.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/ASTReaderDecl.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/ASTReaderStmt.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/ASTWriter.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/ASTWriterDecl.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/ASTWriterStmt.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/GeneratePCH.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/GlobalModuleIndex.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/Module.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Serialization/ModuleManager.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_lib_tooling") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/lib/Tooling/ArgumentsAdjusters.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Tooling/CommonOptionsParser.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Tooling/CompilationDatabase.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Tooling/Core/Replacement.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Tooling/FileMatchTrie.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Tooling/JSONCompilationDatabase.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Tooling/Refactoring.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Tooling/RefactoringCallbacks.cpp",
+ "$dawn_dxc_dir/tools/clang/lib/Tooling/Tooling.cpp",
+ ]
+}
+dxcompiler_sourceset("clang_tools_libclang") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CIndex.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CIndexCXX.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CIndexCodeCompletion.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CIndexDiagnostic.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CIndexHigh.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CIndexInclusionStack.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CIndexUSRs.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CIndexer.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CXComment.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CXCompilationDatabase.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CXCursor.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CXLoadedDiagnostic.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CXSourceLocation.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CXStoredDiagnostic.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CXString.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/CXType.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/IndexBody.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/IndexDecl.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/IndexTypeSourceInfo.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/Indexing.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/IndexingContext.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/dxcisenseimpl.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/libclang/dxcrewriteunused.cpp",
+ ]
+}
+dxcompiler_sourceset("lib_ir") {
+ target_type = "static_library" # Ensure unused globals are stripped
+ sources = [
+ "$dawn_dxc_dir/lib/IR/AsmWriter.cpp",
+ "$dawn_dxc_dir/lib/IR/Attributes.cpp",
+ "$dawn_dxc_dir/lib/IR/AutoUpgrade.cpp",
+ "$dawn_dxc_dir/lib/IR/BasicBlock.cpp",
+ "$dawn_dxc_dir/lib/IR/Comdat.cpp",
+ "$dawn_dxc_dir/lib/IR/ConstantFold.cpp",
+ "$dawn_dxc_dir/lib/IR/ConstantRange.cpp",
+ "$dawn_dxc_dir/lib/IR/Constants.cpp",
+ "$dawn_dxc_dir/lib/IR/Core.cpp",
+ "$dawn_dxc_dir/lib/IR/DIBuilder.cpp",
+ "$dawn_dxc_dir/lib/IR/DataLayout.cpp",
+ "$dawn_dxc_dir/lib/IR/DebugInfo.cpp",
+ "$dawn_dxc_dir/lib/IR/DebugInfoMetadata.cpp",
+ "$dawn_dxc_dir/lib/IR/DebugLoc.cpp",
+ "$dawn_dxc_dir/lib/IR/DiagnosticInfo.cpp",
+ "$dawn_dxc_dir/lib/IR/DiagnosticPrinter.cpp",
+ "$dawn_dxc_dir/lib/IR/Dominators.cpp",
+ "$dawn_dxc_dir/lib/IR/Function.cpp",
+ "$dawn_dxc_dir/lib/IR/GCOV.cpp",
+ "$dawn_dxc_dir/lib/IR/GVMaterializer.cpp",
+ "$dawn_dxc_dir/lib/IR/Globals.cpp",
+ "$dawn_dxc_dir/lib/IR/IRBuilder.cpp",
+ "$dawn_dxc_dir/lib/IR/IRPrintingPasses.cpp",
+ "$dawn_dxc_dir/lib/IR/InlineAsm.cpp",
+ "$dawn_dxc_dir/lib/IR/Instruction.cpp",
+ "$dawn_dxc_dir/lib/IR/Instructions.cpp",
+ "$dawn_dxc_dir/lib/IR/IntrinsicInst.cpp",
+ "$dawn_dxc_dir/lib/IR/LLVMContext.cpp",
+ "$dawn_dxc_dir/lib/IR/LLVMContextImpl.cpp",
+ "$dawn_dxc_dir/lib/IR/LegacyPassManager.cpp",
+ "$dawn_dxc_dir/lib/IR/MDBuilder.cpp",
+ "$dawn_dxc_dir/lib/IR/Mangler.cpp",
+ "$dawn_dxc_dir/lib/IR/Metadata.cpp",
+ "$dawn_dxc_dir/lib/IR/MetadataTracking.cpp",
+ "$dawn_dxc_dir/lib/IR/Module.cpp",
+ "$dawn_dxc_dir/lib/IR/Operator.cpp",
+ "$dawn_dxc_dir/lib/IR/Pass.cpp",
+ "$dawn_dxc_dir/lib/IR/PassManager.cpp",
+ "$dawn_dxc_dir/lib/IR/PassRegistry.cpp",
+ "$dawn_dxc_dir/lib/IR/Statepoint.cpp",
+ "$dawn_dxc_dir/lib/IR/Type.cpp",
+ "$dawn_dxc_dir/lib/IR/TypeFinder.cpp",
+ "$dawn_dxc_dir/lib/IR/Use.cpp",
+ "$dawn_dxc_dir/lib/IR/User.cpp",
+ "$dawn_dxc_dir/lib/IR/Value.cpp",
+ "$dawn_dxc_dir/lib/IR/ValueSymbolTable.cpp",
+ "$dawn_dxc_dir/lib/IR/ValueTypes.cpp",
+ "$dawn_dxc_dir/lib/IR/Verifier.cpp",
+ ]
+}
+
+dxcompiler_sourceset("dxcompiler_sources") {
+ # Use source_set as these are the sources for the dxcompiler target
+ target_type = "source_set"
+
+ sources = [
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/DXCompiler.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxcapi.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxcassembler.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxcdisassembler.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxcfilesystem.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxclibrary.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxclinker.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxcompilerobj.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxcpdbutils.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxcshadersourceinfo.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxcutil.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxcvalidator.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/dxillib.cpp",
+ ]
+}
+
+loadable_module("dxcompiler") {
+ if (dawn_has_build) {
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [ "//build/config/compiler:no_chromium_code" ]
+ }
+
+ deps = [
+ ":DxcDisassembler-inc",
+ ":clang_lib_analysis",
+ ":clang_lib_ast",
+ ":clang_lib_basic",
+ ":clang_lib_codegen",
+ ":clang_lib_driver",
+ ":clang_lib_edit",
+ ":clang_lib_format",
+ ":clang_lib_frontend",
+ ":clang_lib_index",
+ ":clang_lib_lex",
+ ":clang_lib_parse",
+ ":clang_lib_rewrite",
+ ":clang_lib_sema",
+ ":clang_lib_serialization",
+ ":clang_lib_tooling",
+ ":clang_tools_libclang",
+ ":dxcompiler_sources",
+ ":lib_analysis",
+ ":lib_asmparser",
+ ":lib_astmatchers",
+ ":lib_bitcode",
+ ":lib_dxcbindingtable",
+ ":lib_dxilcompression",
+ ":lib_dxildia",
+ ":lib_dxilpixpasses",
+ ":lib_dxilrootsignature",
+ ":lib_hlsl",
+ ":lib_ir",
+ ":lib_irreader",
+ ":lib_linker",
+ ":lib_mc",
+ ":lib_object",
+ ":lib_passprinters",
+ ":lib_profiledata",
+ ":lib_target",
+ ":lib_transforms",
+ ]
+
+ if (is_win) {
+ sources = [ "$dawn_dxc_dir/tools/clang/tools/dxcompiler/DXCompiler.def" ]
+ }
+}
+
+executable("dxc") {
+ if (dawn_has_build) {
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [ "//build/config/compiler:no_chromium_code" ]
+ }
+
+ if (is_win) {
+ # DXC is built with multibyte character set, so it expects Win32 functions to map the ANSI ones, not the UNICODE ones.
+ configs -= [ "//build/config/win:unicode" ]
+ }
+
+ deps = [ ":dxclib" ]
+
+ data_deps = [ ":dxcompiler" ]
+
+ include_dirs = [
+ "$visual_studio_path/DIA SDK/include", # Required for msvc builds
+ ]
+
+ sources = [
+ "$dawn_dxc_dir/tools/clang/tools/dxc/dxcmain.cpp",
+ "$dawn_dxc_dir/tools/clang/tools/dxclib/dxc.cpp",
+ ]
+}
diff --git a/third_party/gn/dxc/build/add_hlsl_hctgen.gni b/third_party/gn/dxc/build/add_hlsl_hctgen.gni
new file mode 100644
index 0000000..a9f43e8
--- /dev/null
+++ b/third_party/gn/dxc/build/add_hlsl_hctgen.gni
@@ -0,0 +1,45 @@
+# Copyright 2023 The Dawn Authors
+#
+# 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.
+
+# See cmake/modules/HCT.cmake
+template("add_hlsl_hctgen") {
+ assert(defined(invoker.mode), "must set 'mode' in $target_name")
+ assert(defined(invoker.output), "must set 'output' in $target_name")
+
+ action(target_name) {
+ if (defined(invoker.build_dir) && invoker.build_dir) {
+ # TODO(amaiorano): See HCT.cmake
+ }
+ if (defined(invoker.code_tag) && invoker.code_tag) {
+ # TODO(amaiorano): See HCT.cmake
+ }
+
+ script = "${invoker.dawn_dxc_dir}/utils/hct/hctgen.py"
+ inputs = [
+ "${invoker.dawn_dxc_dir}/utils/hct/gen_intrin_main.txt",
+ "${invoker.dawn_dxc_dir}/utils/hct/hctdb.py",
+ "${invoker.dawn_dxc_dir}/utils/hct/hctdb_instrhelp.py",
+ ]
+ gen_output = "$target_gen_dir" + invoker.output
+ outputs = [ gen_output ]
+ args = [
+ "--force-lf", # Always?
+ "${invoker.mode}",
+ "--output",
+ rebase_path(gen_output, root_build_dir),
+ ]
+
+ # TODO(amaiorano) Make sure both build_dir and code_tag aren't true
+ }
+}
diff --git a/third_party/gn/dxc/build/built_target_action.gni b/third_party/gn/dxc/build/built_target_action.gni
new file mode 100644
index 0000000..be03b89
--- /dev/null
+++ b/third_party/gn/dxc/build/built_target_action.gni
@@ -0,0 +1,39 @@
+# Copyright 2023 The Dawn Authors
+#
+# 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.
+
+# built_target_action() is like action, except that it runs a built target.
+template("built_target_action") {
+ assert(defined(invoker.target), "must set 'target'")
+ assert(defined(invoker.outputs), "must set 'outputs'")
+ assert(defined(invoker.args), "must set 'args'")
+ assert(!defined(invoker.sources), "use 'inputs' instead of 'sources'")
+
+ action(target_name) {
+ forward_variables_from(invoker,
+ [
+ "depfile",
+ "inputs",
+ "outputs",
+ ])
+
+ exe = get_label_info(invoker.target, "root_out_dir") + "/" +
+ get_label_info(invoker.target, "name")
+ deps = [ invoker.target ]
+ script = "build/run_built_binary.py"
+ args = [
+ "",
+ rebase_path(exe, root_build_dir),
+ ] + invoker.args
+ }
+}
diff --git a/third_party/gn/dxc/build/cmake_configure_file.gni b/third_party/gn/dxc/build/cmake_configure_file.gni
new file mode 100644
index 0000000..ec5f1f1
--- /dev/null
+++ b/third_party/gn/dxc/build/cmake_configure_file.gni
@@ -0,0 +1,35 @@
+# Copyright 2023 The Dawn Authors
+#
+# 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.
+
+# cmake_configure_file implements CMake's 'configure_file':
+# https://cmake.org/cmake/help/latest/command/configure_file.html
+#
+# Unlike CMake, that replaces variables defined in the input file with those
+# currently set in the CMake exceution environment, we must provide the
+# values for each variable explicitly via the 'values' array.
+template("cmake_configure_file") {
+ assert(defined(invoker.input), "must set 'input'")
+ assert(defined(invoker.output), "must set 'output'")
+ assert(defined(invoker.values), "must set 'values'")
+
+ action(target_name) {
+ script = "${invoker.dawn_dxc_gn_dir}/dxc/build/cmake_configure_file.py"
+ sources = [ invoker.input ]
+ outputs = [ invoker.output ]
+ args = [
+ rebase_path(invoker.input, root_build_dir),
+ rebase_path(invoker.output, root_build_dir),
+ ] + invoker.values
+ }
+}
diff --git a/third_party/gn/dxc/build/cmake_configure_file.py b/third_party/gn/dxc/build/cmake_configure_file.py
new file mode 100644
index 0000000..14a03a8
--- /dev/null
+++ b/third_party/gn/dxc/build/cmake_configure_file.py
@@ -0,0 +1,130 @@
+#!/usr/bin/env python3
+
+# Copyright 2023 The Dawn Authors
+#
+# 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.
+
+# This script implements CMake's 'configure_file':
+# https://cmake.org/cmake/help/latest/command/configure_file.html
+
+import os
+import sys
+import re
+
+re_cmake_vars = re.compile(r'\${(\w+)}|@(\w+)@')
+re_cmakedefine_var = re.compile(r'^#cmakedefine (\w+)$')
+re_cmakedefine_var_value = re.compile(r'^#cmakedefine\b\s*(\w+)\s*(.*)')
+re_cmakedefine01_var = re.compile(r'^#cmakedefine01\b\s*(\w+)')
+
+
+def is_cmake_falsy(val):
+ # See https://cmake.org/cmake/help/latest/command/if.html#basic-expressions
+ return val.upper() in [
+ '', '""', '0', 'OFF', 'NO', 'FALSE', 'N', 'IGNORE', 'NOTFOUND'
+ ]
+
+
+def main():
+ input_file = sys.argv[1]
+ output_file = sys.argv[2]
+ values_list = sys.argv[3:]
+
+ # Build dictionary of values
+ values = {}
+ for v in values_list:
+ k, v = v.split('=')
+ if k in values:
+ print(f'Duplicate key found in args: {k}')
+ return -1
+ values[k] = v
+
+ # Make sure all keys are consumed
+ unused_keys = set(values.keys())
+
+ # Use this to look up keys in values so that unused_keys
+ # is automatically updated.
+ def lookup_value(key):
+ r = values[key]
+ unused_keys.discard(key)
+ return r
+
+ fin = open(input_file, 'r')
+
+ output_lines = []
+
+ for line in fin.readlines():
+ # First replace all cmake vars in line with values
+ while True:
+ m = re.search(re_cmake_vars, line)
+ if not m:
+ break
+ var_name = line[m.start():m.end()]
+ key = m.group(1) or m.group(2)
+ if key not in values:
+ print(f"Key '{key}' not found in 'values'")
+ return -1
+ line = line.replace(var_name, lookup_value(key))
+
+ # Handle '#cmakedefine VAR'
+ m = re.search(re_cmakedefine_var, line)
+ if m:
+ var = m.group(1)
+ if is_cmake_falsy(lookup_value(var)):
+ line = f'/* #undef {var} */\n'
+ else:
+ line = f'#define {var}\n'
+ output_lines.append(line)
+ continue
+
+ # Handle '#cmakedefine VAR VAL'
+ m = re.search(re_cmakedefine_var_value, line)
+ if m:
+ var, val = m.group(1), m.group(2)
+ if is_cmake_falsy(lookup_value(var)):
+ line = f'/* #undef {var} */\n'
+ else:
+ line = f'#define {var} {val}\n'
+ output_lines.append(line)
+ continue
+
+ # Handle '#cmakedefine01 VAR'
+ m = re.search(re_cmakedefine01_var, line)
+ if m:
+ var = m.group(1)
+ val = lookup_value(var)
+ out_val = '0' if is_cmake_falsy(val) else '1'
+ line = f'#define {var} {out_val}\n'
+ output_lines.append(line)
+ continue
+
+ output_lines.append(line)
+
+ if len(unused_keys) > 0:
+ print(f'Unused keys in args: {unused_keys}')
+ return -1
+
+ output_text = ''.join(output_lines)
+
+ # Avoid needless incremental rebuilds if the output file exists and hasn't changed
+ if os.path.exists(output_file):
+ with open(output_file, 'r') as fout:
+ if fout.read() == output_text:
+ return 0
+
+ fout = open(output_file, 'w')
+ fout.write(output_text)
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/third_party/gn/dxc/build/generate_version_include.gni b/third_party/gn/dxc/build/generate_version_include.gni
new file mode 100644
index 0000000..d4da05a
--- /dev/null
+++ b/third_party/gn/dxc/build/generate_version_include.gni
@@ -0,0 +1,43 @@
+# Copyright 2023 The Dawn Authors
+#
+# 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.
+
+template("generate_version_include") {
+ assert(defined(invoker.input_file), "must set 'input_file' in $target_name")
+ assert(defined(invoker.output_file), "must set 'output_file' in $target_name")
+
+ if (!defined(invoker.input_file)) {
+ # No input file, generate one
+ assert(false, "Fix gen_version.py so that it outputs to a file")
+ action(target_name) {
+ script = "${dawn_dxc_dir}/utils/version/gen_version.py"
+ outputs = [ "${target_gen_dir}/${invoker.output_file}" ]
+ args = []
+ if (defined(invoker.gen_flags)) {
+ args += invoker.gen_flags
+ }
+ args += [
+ ">", # TODO(amaiorano): This doesn't work. Need a way to route script
+ # output to a file (modify script or create a 'shell_command'
+ # action template)
+ rebase_path(invoker.output_file, root_build_dir),
+ ]
+ }
+ } else {
+ # Input file provided, just copy it
+ copy(target_name) {
+ sources = [ invoker.input_file ]
+ outputs = [ "${target_gen_dir}/${invoker.output_file}" ]
+ }
+ }
+}
diff --git a/third_party/gn/dxc/build/run_built_binary.py b/third_party/gn/dxc/build/run_built_binary.py
new file mode 100644
index 0000000..3b72312
--- /dev/null
+++ b/third_party/gn/dxc/build/run_built_binary.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+
+# Copyright 2023 The Dawn Authors
+#
+# 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 subprocess
+import sys
+
+sys.exit(subprocess.call(['./' + sys.argv[1]] + sys.argv[2:]))
diff --git a/third_party/gn/dxc/build/run_system_binary.py b/third_party/gn/dxc/build/run_system_binary.py
new file mode 100644
index 0000000..ba7249b
--- /dev/null
+++ b/third_party/gn/dxc/build/run_system_binary.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python3
+
+# Copyright 2023 The Dawn Authors
+#
+# 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 subprocess
+import sys
+
+env_file, bin, rest = sys.argv[1], sys.argv[2], sys.argv[3:]
+
+# Read the environment block from the file. This is stored in the format used
+# by CreateProcess. Drop last 2 NULs, one for list terminator, one for
+# trailing vs. separator.
+env_pairs = open(env_file).read()[:-2].split('\0')
+env_dict = dict([item.split('=', 1) for item in env_pairs])
+
+sys.exit(subprocess.call([bin] + rest, env=env_dict, shell=True))
diff --git a/third_party/gn/dxc/build/system_binary_action.gni b/third_party/gn/dxc/build/system_binary_action.gni
new file mode 100644
index 0000000..8b39f2a
--- /dev/null
+++ b/third_party/gn/dxc/build/system_binary_action.gni
@@ -0,0 +1,37 @@
+# Copyright 2023 The Dawn Authors
+#
+# 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.
+
+# system_binary_action() is like action, except that it runs a system binary.
+# The binary can be in PATH or in the build directory environment file (so that
+# executables in the toolchain dirs are picked up).
+template("system_binary_action") {
+ assert(defined(invoker.args), "must set 'args' in $target_name")
+ assert(defined(invoker.outputs), "must set 'outputs' in $target_name")
+ assert(!defined(invoker.sources),
+ "use 'inputs' instead of 'sources' in $target_name")
+
+ action(target_name) {
+ forward_variables_from(invoker,
+ [
+ "inputs",
+ "outputs",
+ ])
+ script = "build/run_system_binary.py"
+ args = [
+ # Pass in the env file saved to the build directory that contains
+ # the VC paths in it.
+ "environment.$current_cpu",
+ ] + invoker.args
+ }
+}