254 lines
12 KiB
CMake
254 lines
12 KiB
CMake
#[[
|
|
Interface libraries for each backend, including their source files and linking requirements.
|
|
|
|
Every time a new backend gets added or its target name is modified, please update
|
|
the list of available backends found in OptionsLists.cmake
|
|
]]
|
|
|
|
add_library(rmlui_backend_common_headers INTERFACE)
|
|
target_include_directories(rmlui_backend_common_headers INTERFACE "${CMAKE_CURRENT_LIST_DIR}")
|
|
target_sources(rmlui_backend_common_headers INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend.h"
|
|
)
|
|
|
|
if(RMLUI_BACKEND_SIMULATE_TOUCH)
|
|
set(RMLUI_BACKEND_SIMULATE_TOUCH_SUPPORTED
|
|
"SDL_GL2"
|
|
"SDL_GL3"
|
|
"SDL_VK"
|
|
"SDL_SDLrenderer"
|
|
"SDL_GPU"
|
|
)
|
|
if(NOT RMLUI_BACKEND IN_LIST RMLUI_BACKEND_SIMULATE_TOUCH_SUPPORTED)
|
|
message(WARNING "RMLUI_BACKEND_SIMULATE_TOUCH enabled but not supported on selected backend ${RMLUI_BACKEND}")
|
|
else()
|
|
target_compile_definitions(rmlui_backend_common_headers INTERFACE "RMLUI_BACKEND_SIMULATE_TOUCH")
|
|
endif()
|
|
endif()
|
|
|
|
add_library(rmlui_backend_Win32_GL2 INTERFACE)
|
|
target_sources(rmlui_backend_Win32_GL2 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_Win32.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_Win32_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_Win32.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_Windows.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_Win32_GL2 INTERFACE rmlui_backend_common_headers OpenGL::GL)
|
|
|
|
add_library(rmlui_backend_Win32_VK INTERFACE)
|
|
target_sources(rmlui_backend_Win32_VK INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_Win32.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_Win32_VK.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_Win32.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_Vulkan.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Vulkan/ShadersCompiledSPV.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_Win32_VK INTERFACE rmlui_backend_common_headers)
|
|
|
|
add_library(rmlui_backend_Win32_DX12 INTERFACE)
|
|
target_sources(rmlui_backend_Win32_DX12 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_Win32.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_DX12.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_Win32_DX12.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_Win32.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_DX12.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_DirectX_12.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_Win32_DX12 INTERFACE rmlui_backend_common_headers)
|
|
|
|
add_library(rmlui_backend_X11_GL2 INTERFACE)
|
|
target_sources(rmlui_backend_X11_GL2 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_X11.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_X11_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_X11.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_Xlib.h"
|
|
)
|
|
|
|
# RMLUI_CMAKE_MINIMUM_VERSION_RAISE_NOTICE:
|
|
# Once the minimum CMake version is CMake >= 3.14, "${X11_LIBRARIES}" should
|
|
# be substituted by "X11:X11" in addition to any of the other imported that might
|
|
# be required. More info:
|
|
# https://cmake.org/cmake/help/latest/module/FindX11.html
|
|
target_link_libraries(rmlui_backend_X11_GL2 INTERFACE rmlui_backend_common_headers OpenGL::GL ${X11_LIBRARIES})
|
|
|
|
add_library(rmlui_backend_SDL_GL2 INTERFACE)
|
|
target_sources(rmlui_backend_SDL_GL2 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_SDL_GL2 INTERFACE rmlui_backend_common_headers OpenGL::GL SDL::SDL SDL_image::SDL_image)
|
|
|
|
add_library(rmlui_backend_SDL_GL3 INTERFACE)
|
|
target_sources(rmlui_backend_SDL_GL3 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL3.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_GL3.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL3.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_GL3.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_SDL_GL3 INTERFACE rmlui_backend_common_headers SDL::SDL SDL_image::SDL_image)
|
|
if(UNIX)
|
|
# The OpenGL 3 renderer implementation uses dlopen/dlclose
|
|
# This is required in some UNIX and UNIX-like operating systems to load shared object files at runtime
|
|
target_link_libraries(rmlui_backend_SDL_GL3 INTERFACE ${CMAKE_DL_LIBS})
|
|
endif()
|
|
if(EMSCRIPTEN)
|
|
# Only Emscripten requires linking to OpenGL::GL, for other platforms we use 'glad' as an OpenGL loader.
|
|
target_link_libraries(rmlui_backend_SDL_GL3 INTERFACE OpenGL::GL)
|
|
endif()
|
|
|
|
add_library(rmlui_backend_SDL_VK INTERFACE)
|
|
target_sources(rmlui_backend_SDL_VK INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_VK.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_Vulkan.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Vulkan/ShadersCompiledSPV.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_SDL_VK INTERFACE rmlui_backend_common_headers SDL::SDL)
|
|
if(UNIX)
|
|
# The Vulkan renderer implementation uses dlopen/dlclose
|
|
# This is required in some UNIX and UNIX-like operating systems to load shared object files at runtime
|
|
target_link_libraries(rmlui_backend_SDL_VK INTERFACE ${CMAKE_DL_LIBS})
|
|
endif()
|
|
|
|
add_library(rmlui_backend_SDL_DX12 INTERFACE)
|
|
target_sources(rmlui_backend_SDL_DX12 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_DX12.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_DX12.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_DX12.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_DirectX_12.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_SDL_DX12 INTERFACE rmlui_backend_common_headers SDL::SDL SDL_image::SDL_image)
|
|
|
|
add_library(rmlui_backend_SDL_SDLrenderer INTERFACE)
|
|
target_sources(rmlui_backend_SDL_SDLrenderer INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_SDL.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_SDLrenderer.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_SDL.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_SDL_SDLrenderer INTERFACE rmlui_backend_common_headers SDL::SDL SDL_image::SDL_image)
|
|
|
|
add_library(rmlui_backend_SDL_GPU INTERFACE)
|
|
target_sources(rmlui_backend_SDL_GPU INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_SDL_GPU.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_GPU.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_SDL_GPU.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_SDL_GPU INTERFACE rmlui_backend_common_headers SDL::SDL SDL_image::SDL_image)
|
|
|
|
add_library(rmlui_backend_SFML_GL2 INTERFACE)
|
|
target_sources(rmlui_backend_SFML_GL2 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SFML.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SFML_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SFML.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_SFML_GL2 INTERFACE
|
|
rmlui_backend_common_headers OpenGL::GL SFML::Graphics SFML::Window SFML::System
|
|
)
|
|
|
|
add_library(rmlui_backend_GLFW_GL2 INTERFACE)
|
|
target_sources(rmlui_backend_GLFW_GL2 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_GLFW_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_GLFW_GL2 INTERFACE rmlui_backend_common_headers OpenGL::GL glfw)
|
|
|
|
add_library(rmlui_backend_GLFW_GL3 INTERFACE)
|
|
target_sources(rmlui_backend_GLFW_GL3 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL3.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_GLFW_GL3.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL3.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_GL3.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_GLFW_GL3 INTERFACE rmlui_backend_common_headers glfw)
|
|
if(UNIX)
|
|
# The OpenGL 3 renderer implementation uses dlopen/dlclose
|
|
# This is required in some UNIX and UNIX-like operating systems to load shared object files at runtime
|
|
target_link_libraries(rmlui_backend_GLFW_GL3 INTERFACE ${CMAKE_DL_LIBS})
|
|
endif()
|
|
|
|
add_library(rmlui_backend_GLFW_VK INTERFACE)
|
|
target_sources(rmlui_backend_GLFW_VK INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_GLFW_VK.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_Vulkan.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Vulkan/ShadersCompiledSPV.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_GLFW_VK INTERFACE rmlui_backend_common_headers glfw)
|
|
if(UNIX)
|
|
# The Vulkan renderer implementation uses dlopen/dlclose
|
|
# This is required in some UNIX and UNIX-like operating systems to load shared object files at runtime
|
|
target_link_libraries(rmlui_backend_GLFW_VK INTERFACE ${CMAKE_DL_LIBS})
|
|
endif()
|
|
|
|
add_library(rmlui_backend_GLFW_DX12 INTERFACE)
|
|
target_sources(rmlui_backend_GLFW_DX12 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_DX12.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_GLFW_DX12.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_DX12.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_DirectX_12.h"
|
|
)
|
|
target_link_libraries(rmlui_backend_GLFW_DX12 INTERFACE rmlui_backend_common_headers glfw)
|
|
|
|
add_library(rmlui_backend_BackwardCompatible_GLFW_GL2 INTERFACE)
|
|
target_sources(rmlui_backend_BackwardCompatible_GLFW_GL2 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Renderer_BackwardCompatible_GL2.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Renderer_BackwardCompatible_GL2.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Backend_BackwardCompatible_GLFW_GL2.cpp"
|
|
)
|
|
target_link_libraries(rmlui_backend_BackwardCompatible_GLFW_GL2 INTERFACE rmlui_backend_common_headers OpenGL::GL glfw)
|
|
|
|
add_library(rmlui_backend_BackwardCompatible_GLFW_GL3 INTERFACE)
|
|
target_sources(rmlui_backend_BackwardCompatible_GLFW_GL3 INTERFACE
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Renderer_BackwardCompatible_GL3.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Renderer_BackwardCompatible_GL3.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Backend_BackwardCompatible_GLFW_GL3.cpp"
|
|
)
|
|
target_link_libraries(rmlui_backend_BackwardCompatible_GLFW_GL3 INTERFACE rmlui_backend_common_headers glfw)
|
|
if(UNIX)
|
|
# The OpenGL 3 renderer implementation uses dlopen/dlclose
|
|
# This is required in some UNIX and UNIX-like operating systems to load shared object files at runtime
|
|
target_link_libraries(rmlui_backend_BackwardCompatible_GLFW_GL3 INTERFACE ${CMAKE_DL_LIBS})
|
|
endif()
|
|
|
|
if(RMLUI_IS_ROOT_PROJECT)
|
|
install(DIRECTORY "./"
|
|
DESTINATION "${CMAKE_INSTALL_DATADIR}/Backends"
|
|
)
|
|
endif()
|