171 lines
4.1 KiB
CMake
171 lines
4.1 KiB
CMake
# rexui
|
|
|
|
# Core UI sources
|
|
set(REXUI_CORE_SOURCES
|
|
graphics_upload_buffer_pool.cpp
|
|
graphics_util.cpp
|
|
imgui_dialog.cpp
|
|
imgui_drawer.cpp
|
|
immediate_drawer.cpp
|
|
keybinds.cpp
|
|
menu_item.cpp
|
|
presenter.cpp
|
|
renderdoc_api.cpp
|
|
window.cpp
|
|
windowed_app.cpp
|
|
windowed_app_context.cpp
|
|
)
|
|
|
|
# Optional overlay dialogs
|
|
set(REXUI_OVERLAY_SOURCES
|
|
overlay/debug_overlay.cpp
|
|
overlay/console_overlay.cpp
|
|
overlay/install_wizard_overlay.cpp
|
|
overlay/simple_settings_overlay.cpp
|
|
overlay/settings_overlay.cpp
|
|
)
|
|
|
|
# Vulkan UI backend
|
|
set(REXUI_VULKAN_SOURCES
|
|
vulkan/linked_type_descriptor_set_allocator.cpp
|
|
vulkan/single_layout_descriptor_set_pool.cpp
|
|
vulkan/spirv_tools_context.cpp
|
|
vulkan/ui_samplers.cpp
|
|
vulkan/vulkan_device.cpp
|
|
vulkan/vulkan_immediate_drawer.cpp
|
|
vulkan/vulkan_instance.cpp
|
|
vulkan/vulkan_mem_alloc.cpp
|
|
vulkan/vulkan_presenter.cpp
|
|
vulkan/vulkan_provider.cpp
|
|
vulkan/vulkan_submission_tracker.cpp
|
|
vulkan/vulkan_upload_buffer_pool.cpp
|
|
vulkan/vulkan_util.cpp
|
|
)
|
|
|
|
# D3D12 UI backend
|
|
if(REXGLUE_USE_D3D12)
|
|
set(REXUI_D3D12_SOURCES
|
|
d3d12/d3d12_cpu_descriptor_pool.cpp
|
|
d3d12/d3d12_descriptor_heap_pool.cpp
|
|
d3d12/d3d12_immediate_drawer.cpp
|
|
d3d12/d3d12_presenter.cpp
|
|
d3d12/d3d12_provider.cpp
|
|
d3d12/d3d12_submission_tracker.cpp
|
|
d3d12/d3d12_upload_buffer_pool.cpp
|
|
d3d12/d3d12_util.cpp
|
|
)
|
|
endif()
|
|
|
|
# Platform-specific sources
|
|
if(WIN32)
|
|
set(REXUI_PLATFORM_SOURCES
|
|
surface_win.cpp
|
|
window_win.cpp
|
|
windowed_app_context_win.cpp
|
|
)
|
|
elseif(APPLE)
|
|
set(REXUI_PLATFORM_SOURCES
|
|
surface_sdl.cpp
|
|
window_sdl.cpp
|
|
windowed_app_context_sdl.cpp
|
|
)
|
|
else()
|
|
set(REXUI_PLATFORM_SOURCES
|
|
surface_gnulinux.cpp
|
|
window_gtk.cpp
|
|
windowed_app_context_gtk.cpp
|
|
)
|
|
endif()
|
|
|
|
# Combine sources
|
|
set(REXUI_SOURCES
|
|
${REXUI_CORE_SOURCES}
|
|
${REXUI_OVERLAY_SOURCES}
|
|
${REXUI_PLATFORM_SOURCES}
|
|
)
|
|
|
|
if(REXGLUE_USE_VULKAN)
|
|
list(APPEND REXUI_SOURCES ${REXUI_VULKAN_SOURCES})
|
|
endif()
|
|
|
|
if(REXGLUE_USE_D3D12)
|
|
list(APPEND REXUI_SOURCES ${REXUI_D3D12_SOURCES})
|
|
endif()
|
|
|
|
add_library(rexui OBJECT ${REXUI_SOURCES})
|
|
add_library(rex::ui ALIAS rexui)
|
|
|
|
target_include_directories(rexui PUBLIC
|
|
$<BUILD_INTERFACE:${REXGLUE_ROOT}/include>
|
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
|
)
|
|
target_include_directories(rexui PRIVATE
|
|
${REXGLUE_ROOT}/src # For ui/shaders/bytecode includes
|
|
)
|
|
|
|
target_link_libraries(rexui PUBLIC
|
|
rexcore
|
|
renderdoc
|
|
imgui::imgui
|
|
)
|
|
|
|
if(REXGLUE_FIDELITYFX_SOURCE_DIR AND EXISTS "${REXGLUE_FIDELITYFX_SOURCE_DIR}/sdk/include")
|
|
target_include_directories(rexui PRIVATE
|
|
"${REXGLUE_FIDELITYFX_SOURCE_DIR}/sdk/include"
|
|
"${REXGLUE_FIDELITYFX_SOURCE_DIR}/ffx-api/include"
|
|
)
|
|
target_compile_definitions(rexui PRIVATE REX_HAS_FIDELITYFX_SDK=1)
|
|
endif()
|
|
|
|
set(REXUI_HAS_FIDELITYFX_RUNTIME OFF)
|
|
if(TARGET amd_fidelityfx_vk)
|
|
target_link_libraries(rexui PRIVATE amd_fidelityfx_vk)
|
|
set(REXUI_HAS_FIDELITYFX_RUNTIME ON)
|
|
endif()
|
|
if(TARGET amd_fidelityfx_dx12)
|
|
target_link_libraries(rexui PRIVATE amd_fidelityfx_dx12)
|
|
set(REXUI_HAS_FIDELITYFX_RUNTIME ON)
|
|
endif()
|
|
if(REXUI_HAS_FIDELITYFX_RUNTIME)
|
|
target_compile_definitions(rexui PRIVATE REX_HAS_FIDELITYFX_RUNTIME=1)
|
|
endif()
|
|
|
|
if(REXGLUE_USE_VULKAN)
|
|
target_link_libraries(rexui PUBLIC
|
|
volk::volk
|
|
GPUOpen::VulkanMemoryAllocator
|
|
SPIRV-Tools-static
|
|
)
|
|
endif()
|
|
|
|
# Platform-specific dependencies
|
|
if(WIN32)
|
|
target_link_libraries(rexui PUBLIC
|
|
dwmapi
|
|
Shcore
|
|
)
|
|
elseif(APPLE)
|
|
target_link_libraries(rexui PUBLIC SDL3::SDL3)
|
|
else()
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
|
|
pkg_check_modules(X11_XCB REQUIRED x11-xcb)
|
|
|
|
target_include_directories(rexui PRIVATE
|
|
${GTK3_INCLUDE_DIRS}
|
|
${X11_XCB_INCLUDE_DIRS}
|
|
)
|
|
target_link_libraries(rexui PUBLIC
|
|
${GTK3_LIBRARIES}
|
|
${X11_XCB_LIBRARIES}
|
|
)
|
|
endif()
|
|
|
|
# D3D12 backend dependencies
|
|
if(REXGLUE_USE_D3D12)
|
|
target_link_libraries(rexui PUBLIC
|
|
dxgi
|
|
dxguid
|
|
dxc-headers
|
|
)
|
|
endif()
|