aboutsummaryrefslogtreecommitdiff
path: root/third_party
diff options
context:
space:
mode:
authordan sinclair <dsinclair@google.com>2019-05-27 20:07:26 -0400
committerGitHub <noreply@github.com>2019-05-27 20:07:26 -0400
commit47dfd3c7f3e337153ee84556a4558b2ede08c3ab (patch)
treee6f18252668b6ed50b18881a0a4634918ba6cdfc /third_party
parentdbfc621216f3771e1ce5b1863f9be5443f3da9a4 (diff)
downloadamber-47dfd3c7f3e337153ee84556a4558b2ede08c3ab.tar.gz
Add HLSL support through DXC (#511)
This Cl adds DXC to the Amber third_party directory and enables using HLSL as the shader language in AmberScript. Fixes #34
Diffstat (limited to 'third_party')
-rw-r--r--third_party/CMakeLists.txt55
1 files changed, 55 insertions, 0 deletions
diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
index a7e6c3d..8b7364a 100644
--- a/third_party/CMakeLists.txt
+++ b/third_party/CMakeLists.txt
@@ -64,3 +64,58 @@ if (${AMBER_ENABLE_SWIFTSHADER})
set(WARNINGS_AS_ERRORS FALSE CACHE BOOL FALSE)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/swiftshader)
endif()
+
+if (${AMBER_ENABLE_DXC})
+ set(DXC_EXTERNAL_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE STRING "" FORCE)
+ set(DXC_SPIRV_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/spirv-headers" CACHE PATH "" FORCE)
+ set(DXC_SPIRV_TOOLS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools" CACHE PATH "" FORCE)
+
+ set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "")
+ set(LLVM_APPEND_VC_REV ON CACHE BOOL "")
+ set(LLVM_DEFAULT_TARGET_TRIPLE "dxil-ms-dx" CACHE STRING "")
+ set(LLVM_ENABLE_EH ON CACHE BOOL "")
+ set(LLVM_ENABLE_RTTI ON CACHE BOOL "")
+ set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "")
+ set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "")
+ set(LLVM_BUILD_TESTS ON CACHE BOOL "")
+ set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "")
+ set(LLVM_INCLUDE_TOOLS ON CACHE BOOL "")
+ set(LLVM_INCLUDE_UTILS OFF CACHE BOOL "")
+ set(LLVM_BUILD_EXAMPLES OFF CACHE BOOL "")
+ set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "")
+ set(LLVM_USE_CRT_DEBUG MTd CACHE STRING "")
+ set(LLVM_USE_CRT_RELEASE MT CACHE STRING "")
+ set(LLVM_USE_CRT_RELWITHDEBINFO MT CACHE STRING "")
+
+ set(LLVM_OPTIMIZED_TABLEGEN OFF CACHE BOOL "")
+ set(LLVM_REQUIRES_EH ON CACHE BOOL "")
+ set(LLVM_REQUIRES_RTTI ON CACHE BOOL "")
+ set(LLVM_TARGETS_TO_BUILD None CACHE STRING "")
+ set(LIBCLANG_BUILD_STATIC ON CACHE BOOL "")
+ set(CLANG_BUILD_EXAMPLES OFF CACHE BOOL "")
+ set(CLANG_CL OFF CACHE BOOL "")
+ set(CLANG_ENABLE_ARCMT OFF CACHE BOOL "")
+ set(CLANG_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "")
+ set(CLANG_INCLUDE_TESTS OFF CACHE BOOL "")
+ set(HLSL_INCLUDE_TESTS OFF CACHE BOOL "")
+ set(ENABLE_SPIRV_CODEGEN ON CACHE BOOL "enable spirv codegen")
+ set(SPIRV_BUILD_TESTS OFF CACHE BOOL "Enable dxc spirv tests")
+
+ set(LLVM_BUILD_STATIC ON CACHE BOOL "")
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
+
+ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/dxc EXCLUDE_FROM_ALL)
+
+ if (MSVC)
+ add_custom_target(dxc-binary ALL
+ DEPENDS "${CMAKE_BINARY_DIR}/third_party/dxc/bin/dxcompiler.dll"
+ COMMENT "dxc-binary custom target")
+
+ ADD_CUSTOM_COMMAND(
+ TARGET dxc-binary
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND}
+ ARGS -E copy ${CMAKE_BINARY_DIR}/third_party/dxc/bin/dxcompiler.dll ${CMAKE_BINARY_DIR}
+ )
+ endif()
+endif()