Files
LookingGlass/client/renderers/EGL/CMakeLists.txt
Geoffrey McRae 57f18d7e80 [client] windows: add native clang-cl build
Build the Windows client against the MSVC ABI while retaining clang
language support. Use vcpkg for ANGLE and libsamplerate, and build
MsQuic with its bundled static OpenSSL.
2026-11-06 14:40:25 +11:00

119 lines
2.7 KiB
CMake

cmake_minimum_required(VERSION 3.10)
project(renderer_EGL LANGUAGES C CXX)
include(MakeObject)
function(build_shaders header_dir)
file(GLOB headers "${header_dir}/*.h")
set(EGL_SHADER_PROCESSED)
set(include_dir "${CMAKE_CURRENT_SOURCE_DIR}/${header_dir}")
foreach(shader ${ARGN})
set(out_f "${CMAKE_CURRENT_BINARY_DIR}/${shader}")
add_custom_command(
OUTPUT "${out_f}"
COMMAND "${CMAKE_COMMAND}"
"-DLG_MAKE_OBJECT_ACTION=PREPROCESS"
"-DLG_MAKE_OBJECT_INPUT=${CMAKE_CURRENT_SOURCE_DIR}/${shader}"
"-DLG_MAKE_OBJECT_OUTPUT=${out_f}"
"-DLG_MAKE_OBJECT_INCLUDE_DIR=${include_dir}"
-P "${LG_MAKE_OBJECT_SCRIPT}"
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${shader}"
DEPENDS ${headers} "${LG_MAKE_OBJECT_SCRIPT}"
COMMENT "Preprocessing shader ${shader}"
VERBATIM
)
endforeach()
set(CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
make_object(
EGL_SHADER
${ARGN}
)
set(EGL_SHADER_OBJS "${EGL_SHADER_OBJS}" PARENT_SCOPE)
set(EGL_SHADER_INCS "${EGL_SHADER_INCS}" PARENT_SCOPE)
endfunction()
build_shaders(
shader
shader/desktop.vert
shader/desktop_rgb.frag
shader/cursor.vert
shader/cursor_rgb.frag
shader/cursor_mono.frag
shader/damage.vert
shader/damage.frag
shader/hdr_overlay.vert
shader/hdr_overlay.frag
shader/hdr_compose.vert
shader/hdr_compose.frag
shader/basic.vert
shader/hdr_decode.frag
shader/convert_24bit.frag
shader/ffx_cas.frag
shader/ffx_fsr1_easu.frag
shader/ffx_fsr1_rcas.frag
shader/downscale.frag
shader/downscale_lanczos2.frag
shader/downscale_linear.frag
)
make_defines(
"${CMAKE_CURRENT_SOURCE_DIR}/shader/desktop_rgb.frag"
"${CMAKE_CURRENT_BINARY_DIR}/shader/desktop_rgb.def.h"
)
set(RENDERER_EGL_SOURCES
egl.c
egldebug.c
state.c
shader.c
texture_util.c
texture.c
texture_buffer.c
texture_external.c
texture_framebuffer.c
model.c
desktop.c
desktop_rects.c
cursor.c
damage.c
hdr_overlay.c
hdr_compose.c
framebuffer.c
effect.c
postprocess.c
postprocess_order.c
ffx.c
filter_glsl.c
filter_24bit.c
filter_hdr.c
filter_ffx_cas.c
filter_ffx_fsr1.c
filter_downscale.c
${EGL_SHADER_OBJS}
"${CMAKE_CURRENT_BINARY_DIR}/shader/desktop_rgb.def.h"
)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
list(APPEND RENDERER_EGL_SOURCES texture_dmabuf.c)
else()
list(APPEND RENDERER_EGL_SOURCES texture_dmabuf_stub.c)
endif()
add_library(renderer_EGL STATIC ${RENDERER_EGL_SOURCES})
target_compile_definitions(renderer_EGL PRIVATE CIMGUI_DEFINE_ENUMS_AND_STRUCTS=1 IMGUI_IMPL_OPENGL_ES3)
target_link_libraries(renderer_EGL
lg_egl_provider
lg_common
lg_gui
)
target_include_directories(renderer_EGL
PRIVATE
src
${EGL_SHADER_INCS}
)