singe/thirdparty/SDL_shadercross/cmake/FindDirectXShaderCompiler.cmake

60 lines
3.2 KiB
CMake

set(required_vars)
if(WIN32)
find_path(DirectXShaderCompiler_INCLUDE_PATH NAMES "dxcapi.h" PATH_SUFFIXES "inc" "windows/inc" HINTS ${DirectXShaderCompiler_ROOT})
if(SDL_CPU_ARM64)
set(extra_bin_suffix "bin/arm64" "windows/bin/arm64")
set(extra_lib_suffix "lib/arm64" "windows/lib/arm64")
elseif(SDL_CPU_X86)
set(extra_bin_suffix "bin/x86" "windows/bin/x86")
set(extra_lib_suffix "lib/x86" "windows/lib/x86")
elseif(SDL_CPU_X64)
set(extra_bin_suffix "bin/x64" "windows/bin/x64")
set(extra_lib_suffix "lib/x64" "windows/lib/x64")
endif()
find_file(DirectXShaderCompiler_dxcompiler_BINARY NAMES "dxcompiler.dll" PATH_SUFFIXES "bin" ${extra_bin_suffix} HINTS ${DirectXShaderCompiler_ROOT})
find_library(DirectXShaderCompiler_dxcompiler_LIBRARY NAMES "dxcompiler" "dxcompiler.lib" PATH_SUFFIXES "lib" ${extra_lib_suffix} HINTS ${DirectXShaderCompiler_ROOT})
find_file(DirectXShaderCompiler_dxil_BINARY NAMES "dxil.dll" PATH_SUFFIXES "bin" ${extra_bin_suffix} HINTS ${DirectXShaderCompiler_ROOT})
set(required_vars
DirectXShaderCompiler_INCLUDE_PATH
DirectXShaderCompiler_dxcompiler_BINARY
DirectXShaderCompiler_dxcompiler_LIBRARY
DirectXShaderCompiler_dxil_BINARY
)
else()
find_path(DirectXShaderCompiler_INCLUDE_PATH NAMES "dxcapi.h" PATH_SUFFIXES "include" "include/dxc" "linux/include" "linux/include/dxc" HINTS ${DirectXShaderCompiler_ROOT})
find_library(DirectXShaderCompiler_dxcompiler_LIBRARY NAMES "dxcompiler" PATH_SUFFIXES "lib" "linux/lib" HINTS ${DirectXShaderCompiler_ROOT})
find_library(DirectXShaderCompiler_dxil_LIBRARY NAMES "dxil" PATH_SUFFIXES "lib" "linux/lib" HINTS ${DirectXShaderCompiler_ROOT})
set(required_vars
DirectXShaderCompiler_INCLUDE_PATH
DirectXShaderCompiler_dxcompiler_LIBRARY
DirectXShaderCompiler_dxil_LIBRARY
)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(DirectXShaderCompiler
REQUIRED_VARS ${required_vars}
)
if(DirectXShaderCompiler_FOUND)
if(NOT TARGET DirectXShaderCompiler::dxcompiler)
add_library(DirectXShaderCompiler::dxcompiler IMPORTED SHARED)
set_property(TARGET DirectXShaderCompiler::dxcompiler PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${DirectXShaderCompiler_INCLUDE_PATH}")
if(WIN32)
set_property(TARGET DirectXShaderCompiler::dxcompiler PROPERTY IMPORTED_LOCATION "${DirectXShaderCompiler_dxcompiler_BINARY}")
set_property(TARGET DirectXShaderCompiler::dxcompiler PROPERTY IMPORTED_IMPLIB "${DirectXShaderCompiler_dxcompiler_LIBRARY}")
else()
set_property(TARGET DirectXShaderCompiler::dxcompiler PROPERTY IMPORTED_LOCATION "${DirectXShaderCompiler_dxcompiler_LIBRARY}")
endif()
endif()
if(NOT TARGET DirectXShaderCompiler::dxil)
add_library(DirectXShaderCompiler::dxil IMPORTED SHARED)
if(WIN32)
set_property(TARGET DirectXShaderCompiler::dxil PROPERTY IMPORTED_LOCATION "${DirectXShaderCompiler_dxil_BINARY}")
else()
set_property(TARGET DirectXShaderCompiler::dxil PROPERTY IMPORTED_LOCATION "${DirectXShaderCompiler_dxil_LIBRARY}")
endif()
endif()
endif()