2
0

CMakeLists.txt 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. #[[
  2. Interface libraries for each backend, including their source files and linking requirements.
  3. Every time a new backend gets added or its target name is modified, please update
  4. the list of available backends found in OptionsLists.cmake
  5. ]]
  6. add_library(rmlui_backend_common_headers INTERFACE)
  7. target_include_directories(rmlui_backend_common_headers INTERFACE "${CMAKE_CURRENT_LIST_DIR}")
  8. target_sources(rmlui_backend_common_headers INTERFACE
  9. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend.h"
  10. )
  11. if(RMLUI_BACKEND_SIMULATE_TOUCH)
  12. set(RMLUI_BACKEND_SIMULATE_TOUCH_SUPPORTED
  13. "SDL_GL2"
  14. "SDL_GL3"
  15. "SDL_VK"
  16. "SDL_SDLrenderer"
  17. "SDL_GPU"
  18. )
  19. if(NOT RMLUI_BACKEND IN_LIST RMLUI_BACKEND_SIMULATE_TOUCH_SUPPORTED)
  20. message(WARNING "RMLUI_BACKEND_SIMULATE_TOUCH enabled but not supported on selected backend ${RMLUI_BACKEND}")
  21. else()
  22. target_compile_definitions(rmlui_backend_common_headers INTERFACE "RMLUI_BACKEND_SIMULATE_TOUCH")
  23. endif()
  24. endif()
  25. add_library(rmlui_backend_Win32_GL2 INTERFACE)
  26. target_sources(rmlui_backend_Win32_GL2 INTERFACE
  27. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_Win32.cpp"
  28. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.cpp"
  29. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_Win32_GL2.cpp"
  30. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_Win32.h"
  31. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.h"
  32. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_Windows.h"
  33. )
  34. target_link_libraries(rmlui_backend_Win32_GL2 INTERFACE rmlui_backend_common_headers OpenGL::GL)
  35. add_library(rmlui_backend_Win32_VK INTERFACE)
  36. target_sources(rmlui_backend_Win32_VK INTERFACE
  37. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_Win32.cpp"
  38. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.cpp"
  39. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_Win32_VK.cpp"
  40. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_Win32.h"
  41. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.h"
  42. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_Vulkan.h"
  43. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Vulkan/ShadersCompiledSPV.h"
  44. )
  45. target_link_libraries(rmlui_backend_Win32_VK INTERFACE rmlui_backend_common_headers)
  46. add_library(rmlui_backend_X11_GL2 INTERFACE)
  47. target_sources(rmlui_backend_X11_GL2 INTERFACE
  48. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_X11.cpp"
  49. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.cpp"
  50. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_X11_GL2.cpp"
  51. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_X11.h"
  52. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.h"
  53. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_Xlib.h"
  54. )
  55. # RMLUI_CMAKE_MINIMUM_VERSION_RAISE_NOTICE:
  56. # Once the minimum CMake version is CMake >= 3.14, "${X11_LIBRARIES}" should
  57. # be substituted by "X11:X11" in addition to any of the other imported that might
  58. # be required. More info:
  59. # https://cmake.org/cmake/help/latest/module/FindX11.html
  60. target_link_libraries(rmlui_backend_X11_GL2 INTERFACE rmlui_backend_common_headers OpenGL::GL ${X11_LIBRARIES})
  61. add_library(rmlui_backend_SDL_GL2 INTERFACE)
  62. target_sources(rmlui_backend_SDL_GL2 INTERFACE
  63. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
  64. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.cpp"
  65. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_GL2.cpp"
  66. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
  67. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.h"
  68. )
  69. target_link_libraries(rmlui_backend_SDL_GL2 INTERFACE rmlui_backend_common_headers OpenGL::GL SDL::SDL SDL_image::SDL_image)
  70. add_library(rmlui_backend_SDL_GL3 INTERFACE)
  71. target_sources(rmlui_backend_SDL_GL3 INTERFACE
  72. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
  73. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL3.cpp"
  74. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_GL3.cpp"
  75. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
  76. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL3.h"
  77. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_GL3.h"
  78. )
  79. target_link_libraries(rmlui_backend_SDL_GL3 INTERFACE rmlui_backend_common_headers SDL::SDL SDL_image::SDL_image)
  80. if(UNIX)
  81. # The OpenGL 3 renderer implementation uses dlopen/dlclose
  82. # This is required in some UNIX and UNIX-like operating systems to load shared object files at runtime
  83. target_link_libraries(rmlui_backend_SDL_GL3 INTERFACE ${CMAKE_DL_LIBS})
  84. endif()
  85. if(EMSCRIPTEN)
  86. # Only Emscripten requires linking to OpenGL::GL, for other platforms we use 'glad' as an OpenGL loader.
  87. target_link_libraries(rmlui_backend_SDL_GL3 INTERFACE OpenGL::GL)
  88. endif()
  89. add_library(rmlui_backend_SDL_VK INTERFACE)
  90. target_sources(rmlui_backend_SDL_VK INTERFACE
  91. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
  92. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.cpp"
  93. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_VK.cpp"
  94. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
  95. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.h"
  96. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_Vulkan.h"
  97. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Vulkan/ShadersCompiledSPV.h"
  98. )
  99. target_link_libraries(rmlui_backend_SDL_VK INTERFACE rmlui_backend_common_headers SDL::SDL)
  100. if(UNIX)
  101. # The Vulkan renderer implementation uses dlopen/dlclose
  102. # This is required in some UNIX and UNIX-like operating systems to load shared object files at runtime
  103. target_link_libraries(rmlui_backend_SDL_VK INTERFACE ${CMAKE_DL_LIBS})
  104. endif()
  105. add_library(rmlui_backend_SDL_SDLrenderer INTERFACE)
  106. target_sources(rmlui_backend_SDL_SDLrenderer INTERFACE
  107. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_SDL.cpp"
  108. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
  109. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_SDLrenderer.cpp"
  110. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
  111. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_SDL.h"
  112. )
  113. target_link_libraries(rmlui_backend_SDL_SDLrenderer INTERFACE rmlui_backend_common_headers SDL::SDL SDL_image::SDL_image)
  114. add_library(rmlui_backend_SDL_GPU INTERFACE)
  115. target_sources(rmlui_backend_SDL_GPU INTERFACE
  116. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_SDL_GPU.cpp"
  117. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.cpp"
  118. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SDL_GPU.cpp"
  119. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SDL.h"
  120. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_SDL_GPU.h"
  121. )
  122. target_link_libraries(rmlui_backend_SDL_GPU INTERFACE rmlui_backend_common_headers SDL::SDL SDL_image::SDL_image)
  123. add_library(rmlui_backend_SFML_GL2 INTERFACE)
  124. target_sources(rmlui_backend_SFML_GL2 INTERFACE
  125. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SFML.cpp"
  126. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.cpp"
  127. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_SFML_GL2.cpp"
  128. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_SFML.h"
  129. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.h"
  130. )
  131. target_link_libraries(rmlui_backend_SFML_GL2 INTERFACE
  132. rmlui_backend_common_headers OpenGL::GL SFML::Graphics SFML::Window SFML::System
  133. )
  134. add_library(rmlui_backend_GLFW_GL2 INTERFACE)
  135. target_sources(rmlui_backend_GLFW_GL2 INTERFACE
  136. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
  137. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.cpp"
  138. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_GLFW_GL2.cpp"
  139. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
  140. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL2.h"
  141. )
  142. target_link_libraries(rmlui_backend_GLFW_GL2 INTERFACE rmlui_backend_common_headers OpenGL::GL glfw)
  143. add_library(rmlui_backend_GLFW_GL3 INTERFACE)
  144. target_sources(rmlui_backend_GLFW_GL3 INTERFACE
  145. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
  146. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL3.cpp"
  147. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_GLFW_GL3.cpp"
  148. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
  149. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_GL3.h"
  150. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_GL3.h"
  151. )
  152. target_link_libraries(rmlui_backend_GLFW_GL3 INTERFACE rmlui_backend_common_headers glfw)
  153. if(UNIX)
  154. # The OpenGL 3 renderer implementation uses dlopen/dlclose
  155. # This is required in some UNIX and UNIX-like operating systems to load shared object files at runtime
  156. target_link_libraries(rmlui_backend_GLFW_GL3 INTERFACE ${CMAKE_DL_LIBS})
  157. endif()
  158. add_library(rmlui_backend_GLFW_VK INTERFACE)
  159. target_sources(rmlui_backend_GLFW_VK INTERFACE
  160. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
  161. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.cpp"
  162. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Backend_GLFW_VK.cpp"
  163. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
  164. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Renderer_VK.h"
  165. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Include_Vulkan.h"
  166. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Vulkan/ShadersCompiledSPV.h"
  167. )
  168. target_link_libraries(rmlui_backend_GLFW_VK INTERFACE rmlui_backend_common_headers glfw)
  169. if(UNIX)
  170. # The Vulkan renderer implementation uses dlopen/dlclose
  171. # This is required in some UNIX and UNIX-like operating systems to load shared object files at runtime
  172. target_link_libraries(rmlui_backend_GLFW_VK INTERFACE ${CMAKE_DL_LIBS})
  173. endif()
  174. add_library(rmlui_backend_BackwardCompatible_GLFW_GL2 INTERFACE)
  175. target_sources(rmlui_backend_BackwardCompatible_GLFW_GL2 INTERFACE
  176. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
  177. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
  178. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Renderer_BackwardCompatible_GL2.cpp"
  179. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Renderer_BackwardCompatible_GL2.h"
  180. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Backend_BackwardCompatible_GLFW_GL2.cpp"
  181. )
  182. target_link_libraries(rmlui_backend_BackwardCompatible_GLFW_GL2 INTERFACE rmlui_backend_common_headers OpenGL::GL glfw)
  183. add_library(rmlui_backend_BackwardCompatible_GLFW_GL3 INTERFACE)
  184. target_sources(rmlui_backend_BackwardCompatible_GLFW_GL3 INTERFACE
  185. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.cpp"
  186. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_Platform_GLFW.h"
  187. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Renderer_BackwardCompatible_GL3.cpp"
  188. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Renderer_BackwardCompatible_GL3.h"
  189. "${CMAKE_CURRENT_LIST_DIR}/RmlUi_BackwardCompatible/RmlUi_Backend_BackwardCompatible_GLFW_GL3.cpp"
  190. )
  191. target_link_libraries(rmlui_backend_BackwardCompatible_GLFW_GL3 INTERFACE rmlui_backend_common_headers glfw)
  192. if(UNIX)
  193. # The OpenGL 3 renderer implementation uses dlopen/dlclose
  194. # This is required in some UNIX and UNIX-like operating systems to load shared object files at runtime
  195. target_link_libraries(rmlui_backend_BackwardCompatible_GLFW_GL3 INTERFACE ${CMAKE_DL_LIBS})
  196. endif()
  197. if(RMLUI_IS_ROOT_PROJECT)
  198. install(DIRECTORY "./"
  199. DESTINATION "${CMAKE_INSTALL_DATADIR}/Backends"
  200. )
  201. endif()