fix-top-cmakelist.diff 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. diff --git a/CMakeLists.txt b/CMakeLists.txt
  2. index d6a9bb2..7b2690c 100644
  3. --- a/CMakeLists.txt
  4. +++ b/CMakeLists.txt
  5. @@ -1,6 +1,46 @@
  6. cmake_minimum_required (VERSION 3.6)
  7. include(BuildUtils.cmake)
  8. +include(DiligentCoreBuildUtils.cmake)
  9. +
  10. +add_library(Diligent-PublicBuildSettings INTERFACE)
  11. +if(PLATFORM_WIN32)
  12. + set(GL_SUPPORTED TRUE CACHE INTERNAL "OpenGL is supported on Win32 platform")
  13. + set(VULKAN_SUPPORTED TRUE CACHE INTERNAL "Vulkan is supported on Win32 platform")
  14. + set(WEBGPU_SUPPORTED TRUE CACHE INTERNAL "WebGPU is supported on Win32 platform")
  15. + set(ARCHIVER_SUPPORTED TRUE CACHE INTERNAL "Archiver is supported on Win32 platform")
  16. + target_compile_definitions(Diligent-PublicBuildSettings INTERFACE PLATFORM_WIN32=1)
  17. +elseif(PLATFORM_UNIVERSAL_WINDOWS)
  18. + set(ARCHIVER_SUPPORTED TRUE CACHE INTERNAL "Archiver is supported on Universal Windows platform")
  19. + target_compile_definitions(Diligent-PublicBuildSettings INTERFACE PLATFORM_UNIVERSAL_WINDOWS=1)
  20. +elseif(PLATFORM_ANDROID)
  21. + set(GLES_SUPPORTED TRUE CACHE INTERNAL "OpenGLES is supported on Android platform")
  22. + set(VULKAN_SUPPORTED TRUE CACHE INTERNAL "Vulkan is supported on Android platform")
  23. + set(ARCHIVER_SUPPORTED TRUE CACHE INTERNAL "Archiver is supported on Android platform")
  24. + target_compile_definitions(Diligent-PublicBuildSettings INTERFACE PLATFORM_ANDROID=1)
  25. +elseif(PLATFORM_LINUX)
  26. + set(GL_SUPPORTED TRUE CACHE INTERNAL "OpenGL is supported on Linux platform")
  27. + set(VULKAN_SUPPORTED TRUE CACHE INTERNAL "Vulkan is supported on Linux platform")
  28. + set(ARCHIVER_SUPPORTED TRUE CACHE INTERNAL "Archiver is supported on Linux platform")
  29. + target_compile_definitions(Diligent-PublicBuildSettings INTERFACE PLATFORM_LINUX=1)
  30. +elseif(PLATFORM_MACOS)
  31. + set(GL_SUPPORTED TRUE CACHE INTERNAL "OpenGL is supported on MacOS platform")
  32. + set(VULKAN_SUPPORTED TRUE CACHE INTERNAL "Vulkan is enabled through MoltenVK on MacOS platform")
  33. + set(ARCHIVER_SUPPORTED TRUE CACHE INTERNAL "Archiver is supported on MacOS platform")
  34. + target_compile_definitions(Diligent-PublicBuildSettings INTERFACE PLATFORM_MACOS=1 PLATFORM_APPLE=1)
  35. +elseif(PLATFORM_IOS)
  36. + set(GLES_SUPPORTED TRUE CACHE INTERNAL "OpenGLES is supported on iOS platform")
  37. + target_compile_definitions(Diligent-PublicBuildSettings INTERFACE PLATFORM_IOS=1 PLATFORM_APPLE=1)
  38. +elseif(PLATFORM_TVOS)
  39. + target_compile_definitions(Diligent-PublicBuildSettings INTERFACE PLATFORM_TVOS=1 PLATFORM_APPLE=1)
  40. +elseif(PLATFORM_WEB)
  41. + set(GLES_SUPPORTED TRUE CACHE INTERNAL "OpenGLES is supported on Web platform")
  42. + set(WEBGPU_SUPPORTED TRUE CACHE INTERNAL "WebGPU is supported on Web platform")
  43. + set(ARCHIVER_SUPPORTED TRUE CACHE INTERNAL "Archiver is supported on Web platform")
  44. + target_compile_definitions(Diligent-PublicBuildSettings INTERFACE PLATFORM_WEB=1 PLATFORM_EMSCRIPTEN=1)
  45. +else()
  46. + message(FATAL_ERROR "No PLATFORM_XXX variable defined. Make sure that 'DiligentCore' folder is processed first")
  47. +endif()
  48. set_property(GLOBAL PROPERTY USE_FOLDERS ON)
  49. @@ -17,10 +57,17 @@ if(PLATFORM_WIN32 OR PLATFORM_UNIVERSAL_WINDOWS OR PLATFORM_LINUX OR PLATFORM_MA
  50. else()
  51. set(DILIGENT_INSTALL_FX OFF)
  52. endif()
  53. +include(FindPkgConfig)
  54. +pkg_check_modules(diligentcore REQUIRED diligentcore)
  55. +pkg_check_modules(diligenttools REQUIRED diligenttools)
  56. +pkg_check_modules(imgui REQUIRED imgui)
  57. +target_link_directories(DiligentFX PUBLIC ${diligentcore_LIBDIR} ${diligenttools_LIBDIR})
  58. target_link_libraries(DiligentFX
  59. PRIVATE
  60. + Diligent-PublicBuildSettings
  61. Diligent-BuildSettings
  62. + ${imgui_LINK_LIBRARIES}
  63. PUBLIC
  64. Diligent-GraphicsEngine
  65. Diligent-GraphicsTools
  66. @@ -29,7 +76,8 @@ PUBLIC
  67. Diligent-Imgui
  68. )
  69. -if (TARGET Diligent-HLSL2GLSLConverterLib)
  70. +if (GL_SUPPORTED OR GLES_SUPPORTED OR VULKAN_SUPPORTED)
  71. + message(STATUS "Building with HLSL2GLSL_CONVERTER_SUPPORTED=1")
  72. target_link_libraries(DiligentFX PRIVATE Diligent-HLSL2GLSLConverterLib)
  73. target_compile_definitions(DiligentFX PRIVATE HLSL2GLSL_CONVERTER_SUPPORTED=1)
  74. endif()
  75. @@ -39,6 +87,9 @@ set_common_target_properties(DiligentFX)
  76. target_include_directories(DiligentFX
  77. PUBLIC
  78. .
  79. + ${diligentcore_INCLUDEDIR}
  80. + ${diligenttools_INCLUDEDIR}
  81. + ${imgui_INCLUDEDIR}
  82. )
  83. add_subdirectory(Utilities)
  84. @@ -50,7 +101,6 @@ if(DILIGENT_USD_PATH)
  85. add_subdirectory(Hydrogent)
  86. endif()
  87. -add_subdirectory(Tests)
  88. get_target_property(SOURCE DiligentFX SOURCES)
  89. @@ -86,35 +136,35 @@ source_group("generated" FILES
  90. ${SHADERS_INC_LIST}
  91. )
  92. -if(DILIGENT_INSTALL_FX)
  93. +if(1)
  94. install(TARGETS DiligentFX
  95. - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/${DILIGENT_FX_DIR}/$<CONFIG>"
  96. - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/${DILIGENT_FX_DIR}/$<CONFIG>"
  97. - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/${DILIGENT_FX_DIR}/$<CONFIG>"
  98. + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
  99. + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
  100. + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
  101. )
  102. - install(DIRECTORY PostProcess/EpipolarLightScattering/interface
  103. - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${DILIGENT_FX_DIR}/PostProcess/EpipolarLightScattering"
  104. + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/PostProcess/EpipolarLightScattering/interface"
  105. + DESTINATION "include/DiligentFX/PostProcess/EpipolarLightScattering"
  106. )
  107. - install(DIRECTORY PostProcess/TemporalAntiAliasing/interface
  108. - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${DILIGENT_FX_DIR}/PostProcess/TemporalAntiAliasing"
  109. + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/PostProcess/TemporalAntiAliasing/interface"
  110. + DESTINATION "include/DiligentFX/PostProcess/TemporalAntiAliasing"
  111. )
  112. - install(DIRECTORY PostProcess/ScreenSpaceReflection/interface
  113. - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${DILIGENT_FX_DIR}/PostProcess/ScreenSpaceReflection"
  114. + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/PostProcess/ScreenSpaceReflection/interface"
  115. + DESTINATION "include/DiligentFX/PostProcess/ScreenSpaceReflection"
  116. )
  117. - install(DIRECTORY PostProcess/ScreenSpaceAmbientOcclusion/interface
  118. - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${DILIGENT_FX_DIR}/PostProcess/ScreenSpaceAmbientOcclusion"
  119. + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/PostProcess/ScreenSpaceAmbientOcclusion/interface"
  120. + DESTINATION "include/DiligentFX/PostProcess/ScreenSpaceAmbientOcclusion"
  121. )
  122. - install(DIRECTORY PostProcess/Bloom/interface
  123. - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${DILIGENT_FX_DIR}/PostProcess/Bloom"
  124. + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/PostProcess/Bloom/interface"
  125. + DESTINATION "include/DiligentFX/PostProcess/Bloom"
  126. )
  127. - install(DIRECTORY Components/interface
  128. - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${DILIGENT_FX_DIR}/Components"
  129. + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/Components/interface"
  130. + DESTINATION "include/DiligentFX/Components"
  131. )
  132. - install(DIRECTORY PBR/interface
  133. - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${DILIGENT_FX_DIR}/PBR"
  134. + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/PBR/interface"
  135. + DESTINATION "include/DiligentFX/PBR"
  136. )
  137. install(DIRECTORY Shaders
  138. - DESTINATION "."
  139. + DESTINATION "include/DiligentFX"
  140. FILES_MATCHING PATTERN "public/*.*"
  141. PATTERN "private" EXCLUDE
  142. )
  143. @@ -125,4 +175,3 @@ set_target_properties(DiligentFX PROPERTIES
  144. )
  145. # Create a custom target to run source code formatting validation command
  146. -add_format_validation_target(DiligentFX "${CMAKE_CURRENT_SOURCE_DIR}" DiligentFX)