-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
56 lines (52 loc) · 3.14 KB
/
Copy pathCMakeLists.txt
File metadata and controls
56 lines (52 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
project(dxc-bin)
if (CMAKE_OSX_ARCHITECTURES)
set(DXC_ARCHITECTURE ${CMAKE_OSX_ARCHITECTURES})
elseif(CMAKE_SYSTEM_PROCESSOR)
set(DXC_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
else()
set(DXC_ARCHITECTURE ${CMAKE_HOST_SYSTEM_PROCESSOR})
endif()
string(TOLOWER "${DXC_ARCHITECTURE}" DXC_ARCHITECTURE)
message(STATUS "Detected architecture: ${DXC_ARCHITECTURE}")
set(DIRECTX_DXC_INCLUDE "${PROJECT_SOURCE_DIR}/inc")
if (DXC_ARCHITECTURE STREQUAL "x86_64" OR DXC_ARCHITECTURE STREQUAL "amd64")
if (WIN32)
set(DIRECTX_DXC_TOOL "${PROJECT_SOURCE_DIR}/bin/x64/dxc.exe" CACHE INTERNAL "")
set(DIRECTX_DXCOMPILER_LIB "${PROJECT_SOURCE_DIR}/lib/x64/dxcompiler.lib")
set(DIRECTX_DXCOMPILER_DLL "${PROJECT_SOURCE_DIR}/bin/x64/dxcompiler.dll")
set(DIRECTX_DXIL_DLL "${PROJECT_SOURCE_DIR}/bin/x64/dxil.dll")
elseif (APPLE)
set(DIRECTX_DXC_TOOL "DYLD_LIBRARY_PATH=${PROJECT_SOURCE_DIR}/lib/x64" "${PROJECT_SOURCE_DIR}/bin/x64/dxc-macos" CACHE INTERNAL "")
set(DIRECTX_DXCOMPILER_LIB "${PROJECT_SOURCE_DIR}/lib/x64/libdxcompiler.dylib")
else()
set(DIRECTX_DXC_TOOL "LD_LIBRARY_PATH=${PROJECT_SOURCE_DIR}/lib/x64" "${PROJECT_SOURCE_DIR}/bin/x64/dxc-linux" CACHE INTERNAL "")
set(DIRECTX_DXCOMPILER_LIB "${PROJECT_SOURCE_DIR}/lib/x64/libdxcompiler.so")
endif()
elseif (DXC_ARCHITECTURE STREQUAL "arm64" OR DXC_ARCHITECTURE STREQUAL "aarch64")
if (WIN32)
set(DIRECTX_DXC_TOOL "${PROJECT_SOURCE_DIR}/bin/arm64/dxc.exe" CACHE INTERNAL "")
set(DIRECTX_DXCOMPILER_LIB "${PROJECT_SOURCE_DIR}/lib/arm64/dxcompiler.lib")
set(DIRECTX_DXCOMPILER_DLL "${PROJECT_SOURCE_DIR}/bin/arm64/dxcompiler.dll")
set(DIRECTX_DXIL_DLL "${PROJECT_SOURCE_DIR}/bin/arm64/dxil.dll")
elseif (APPLE)
set(DIRECTX_DXC_TOOL "DYLD_LIBRARY_PATH=${PROJECT_SOURCE_DIR}/lib/arm64" "${PROJECT_SOURCE_DIR}/bin/arm64/dxc-macos" CACHE INTERNAL "")
set(DIRECTX_DXCOMPILER_LIB "${PROJECT_SOURCE_DIR}/lib/arm64/libdxcompiler.dylib")
else()
set(DIRECTX_DXC_TOOL "LD_LIBRARY_PATH=${PROJECT_SOURCE_DIR}/lib/arm64" "${PROJECT_SOURCE_DIR}/bin/arm64/dxc-linux" CACHE INTERNAL "")
set(DIRECTX_DXCOMPILER_LIB "${PROJECT_SOURCE_DIR}/lib/arm64/libdxcompiler.so")
endif()
else()
message(FATAL_ERROR "Unsupported architecture '${DXC_ARCHITECTURE}'")
endif()
add_library(Microsoft::DirectXShaderCompiler SHARED IMPORTED GLOBAL)
target_include_directories(Microsoft::DirectXShaderCompiler INTERFACE "${DIRECTX_DXC_INCLUDE}")
if (WIN32)
set_property(TARGET Microsoft::DirectXShaderCompiler PROPERTY IMPORTED_LOCATION "${DIRECTX_DXCOMPILER_DLL}")
set_property(TARGET Microsoft::DirectXShaderCompiler PROPERTY IMPORTED_IMPLIB "${DIRECTX_DXCOMPILER_LIB}")
add_library(Microsoft::DXIL SHARED IMPORTED GLOBAL)
target_include_directories(Microsoft::DXIL INTERFACE "${DIRECTX_DXC_INCLUDE}")
set_property(TARGET Microsoft::DXIL PROPERTY IMPORTED_LOCATION "${DIRECTX_DXIL_DLL}")
set_property(TARGET Microsoft::DXIL PROPERTY IMPORTED_IMPLIB "${DIRECTX_DXCOMPILER_LIB}")
else()
set_property(TARGET Microsoft::DirectXShaderCompiler PROPERTY IMPORTED_LOCATION "${DIRECTX_DXCOMPILER_LIB}")
endif()