XenosRecomp/XenosRecomp/CMakeLists.txt
Isaac Marovitz f70589d684
AIR Compilation, Compression, and Packing
Signed-off-by: Isaac Marovitz <isaacryu@icloud.com>
2025-03-25 20:23:25 -04:00

63 lines
1.8 KiB
CMake

project(XenosRecomp)
if (WIN32)
option(XENOS_RECOMP_DXIL "Generate DXIL shader cache" ON)
endif()
if (APPLE)
option(XENOS_RECOMP_AIR "Generate Metal AIR shader cache" ON)
endif()
set(SMOLV_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/smol-v/source")
add_executable(XenosRecomp
constant_table.h
air_compiler.cpp
air_compiler.h
dxc_compiler.cpp
dxc_compiler.h
main.cpp
pch.h
shader.h
shader_code.h
shader_recompiler.cpp
shader_recompiler.h
"${SMOLV_SOURCE_DIR}/smolv.cpp")
target_link_libraries(XenosRecomp PRIVATE
Microsoft::DirectXShaderCompiler
xxHash::xxhash
libzstd_static
fmt::fmt)
target_include_directories(XenosRecomp PRIVATE ${SMOLV_SOURCE_DIR})
target_precompile_headers(XenosRecomp PRIVATE pch.h)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
target_compile_options(XenosRecomp PRIVATE -Wno-switch -Wno-unused-variable -Wno-null-arithmetic -fms-extensions)
include(CheckCXXSymbolExists)
check_cxx_symbol_exists(_LIBCPP_VERSION version LIBCPP)
if(LIBCPP)
# Allows using std::execution
target_compile_options(XenosRecomp PRIVATE -fexperimental-library)
endif()
endif()
if (WIN32)
target_compile_definitions(XenosRecomp PRIVATE _CRT_SECURE_NO_WARNINGS)
add_custom_command(TARGET XenosRecomp POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_RUNTIME_DLLS:XenosRecomp> $<TARGET_FILE_DIR:XenosRecomp>
COMMAND_EXPAND_LISTS
)
endif()
if (XENOS_RECOMP_DXIL)
target_compile_definitions(XenosRecomp PRIVATE XENOS_RECOMP_DXIL)
target_link_libraries(XenosRecomp PRIVATE Microsoft::DXIL)
endif()
if (XENOS_RECOMP_AIR)
target_compile_definitions(XenosRecomp PRIVATE XENOS_RECOMP_AIR)
endif()