diff --git a/Graphics/Archiver/CMakeLists.txt b/Graphics/Archiver/CMakeLists.txt index 6af0f44..2077ff7 100644 --- a/Graphics/Archiver/CMakeLists.txt +++ b/Graphics/Archiver/CMakeLists.txt @@ -88,9 +88,16 @@ PRIVATE ../GraphicsEngineNextGenBase/include ) +if (NOT DILIGENT_NO_GLSLANG) + target_include_directories(Diligent-Archiver-static + PRIVATE + ${spirv-cross-c_INCLUDEDIR} + ) +endif() + target_compile_definitions(Diligent-Archiver-static PRIVATE - DILIGENT_NO_GLSLANG=$>> + DILIGENT_NO_GLSLANG=$ ) if(DEFINED DILIGENT_CORE_COMMIT_HASH) target_compile_definitions(Diligent-Archiver-static PRIVATE DILIGENT_CORE_COMMIT_HASH="${DILIGENT_CORE_COMMIT_HASH}") @@ -121,10 +128,11 @@ if(D3D12_SUPPORTED) endif() if(VULKAN_SUPPORTED) - target_link_libraries(Diligent-Archiver-static PRIVATE Diligent-GraphicsEngineVk-static Vulkan::Headers) + target_link_libraries(Diligent-Archiver-static PRIVATE Diligent-GraphicsEngineVk-static) target_include_directories(Diligent-Archiver-static PRIVATE ../GraphicsEngineVulkan/include + ${vulkan-headers_INCLUDEDIR} ) endif() @@ -135,17 +143,18 @@ if(GL_SUPPORTED OR GLES_SUPPORTED) spirv-cross-core spirv-cross-glsl ) - target_include_directories(Diligent-Archiver-static PRIVATE ../GraphicsEngineOpenGL/include) + target_include_directories(Diligent-Archiver-static PRIVATE ../GraphicsEngineOpenGL/include ${glew_INCLUDE_DIRS}) if(PLATFORM_WIN32) - target_link_libraries(Diligent-Archiver-static PRIVATE GLEW::glew opengl32.lib) + target_link_directories(Diligent-Archiver-static PRIVATE ${glew_LIBRARY_DIRS}) + target_link_libraries(Diligent-Archiver-static PRIVATE ${glew_LIBRARIES}) elseif(PLATFORM_LINUX) find_package(X11 REQUIRED) - find_package(OpenGL REQUIRED) - target_link_libraries(Diligent-Archiver-static PRIVATE GLEW::glew OpenGL::GL X11::X11) + target_link_directories(Diligent-Archiver-static PRIVATE ${glew_LIBRARY_DIRS}) + target_link_libraries(Diligent-Archiver-static PRIVATE ${glew_LIBRARIES} X11::X11) elseif(PLATFORM_MACOS) - find_package(OpenGL REQUIRED) - target_link_libraries(Diligent-Archiver-static PRIVATE GLEW::glew OpenGL::GL) + target_link_directories(Diligent-Archiver-static PRIVATE ${glew_LIBRARY_DIRS}) + target_link_libraries(Diligent-Archiver-static PRIVATE ${glew_LIBRARIES} "-framework OpenGL") elseif(PLATFORM_ANDROID) target_link_libraries(Diligent-Archiver-static PRIVATE GLESv3 EGL) elseif(PLATFORM_EMSCRIPTEN) @@ -176,12 +185,28 @@ if(WEBGPU_SUPPORTED) ) endif() +if (glew_FOUND) + target_link_directories(Diligent-Archiver-shared PRIVATE ${glew_LIBRARY_DIRS}) +endif() + +if(spirv-cross-c_FOUND) + target_link_directories(Diligent-Archiver-shared PRIVATE ${spirv-cross-c_LIBDIR}) +endif() + +if(glslang_FOUND) + target_link_directories(Diligent-Archiver-shared PRIVATE ${glslang_LIBDIR}) +endif() + +if (NOT DILIGENT_NO_GLSLANG) + target_link_directories(Diligent-Archiver-shared PRIVATE ${SPIRV-Tools_LIBDIR}) +endif() + target_link_libraries(Diligent-Archiver-shared PUBLIC Diligent-ArchiverInterface PRIVATE Diligent-BuildSettings - ${WHOLE_ARCHIVE_FLAG} Diligent-Archiver-static ${NO_WHOLE_ARCHIVE_FLAG} + ${WHOLE_ARCHIVE_FLAG} Diligent-Archiver-static ${NO_WHOLE_ARCHIVE_FLAG} $<$>:${SPIRV-Tools_LIBRARIES}> ) if(PLATFORM_WIN32) diff --git a/Graphics/GraphicsEngineD3D11/CMakeLists.txt b/Graphics/GraphicsEngineD3D11/CMakeLists.txt index adef784..75944e8 100644 --- a/Graphics/GraphicsEngineD3D11/CMakeLists.txt +++ b/Graphics/GraphicsEngineD3D11/CMakeLists.txt @@ -136,6 +136,18 @@ PUBLIC Diligent-GraphicsEngineD3D11Interface ) +if(SPIRV-Tools_FOUND) + target_link_directories(Diligent-GraphicsEngineD3D11-shared PRIVATE ${SPIRV-Tools_LIBDIR}) +endif() + +if(spirv-cross-c_FOUND) + target_link_directories(Diligent-GraphicsEngineD3D11-shared PRIVATE ${spirv-cross-c_LIBRARY_DIRS}) +endif() + +if(glslang_FOUND) + target_link_directories(Diligent-GraphicsEngineD3D11-shared PRIVATE ${glslang_LIBDIR}) +endif() + target_link_libraries(Diligent-GraphicsEngineD3D11-shared PRIVATE Diligent-BuildSettings diff --git a/Graphics/GraphicsEngineD3D12/CMakeLists.txt b/Graphics/GraphicsEngineD3D12/CMakeLists.txt index 4b01eff..868e627 100644 --- a/Graphics/GraphicsEngineD3D12/CMakeLists.txt +++ b/Graphics/GraphicsEngineD3D12/CMakeLists.txt @@ -206,6 +206,18 @@ if(NOT ${USE_D3D12_LOADER}) target_link_libraries(Diligent-GraphicsEngineD3D12-static PRIVATE d3d12.lib) endif() +if(SPIRV-Tools_FOUND) + target_link_directories(Diligent-GraphicsEngineD3D12-shared PRIVATE ${SPIRV-Tools_LIBDIR}) +endif() + +if(spirv-cross-c_FOUND) + target_link_directories(Diligent-GraphicsEngineD3D12-shared PRIVATE ${spirv-cross-c_LIBRARY_DIRS}) +endif() + +if(glslang_FOUND) + target_link_directories(Diligent-GraphicsEngineD3D12-shared PRIVATE ${glslang_LIBDIR}) +endif() + target_link_libraries(Diligent-GraphicsEngineD3D12-shared PRIVATE Diligent-BuildSettings diff --git a/Graphics/GraphicsEngineOpenGL/CMakeLists.txt b/Graphics/GraphicsEngineOpenGL/CMakeLists.txt index 839dad7..c544296 100644 --- a/Graphics/GraphicsEngineOpenGL/CMakeLists.txt +++ b/Graphics/GraphicsEngineOpenGL/CMakeLists.txt @@ -175,6 +175,7 @@ endif() target_include_directories(Diligent-GraphicsEngineOpenGL-static PRIVATE include + ${glew_INCLUDE_DIRS} ) set(PRIVATE_DEPENDENCIES @@ -198,16 +199,17 @@ set(PUBLIC_DEPENDENCIES ) if(PLATFORM_WIN32) - set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPENDENCIES} GLEW::glew opengl32.lib) + target_link_directories(Diligent-GraphicsEngineOpenGL-static PRIVATE ${glew_LIBRARY_DIRS}) + set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPENDENCIES} ${glew_LIBRARIES}) elseif(PLATFORM_ANDROID) set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPENDENCIES} GLESv3 EGL) elseif(PLATFORM_LINUX) find_package(X11 REQUIRED) - find_package(OpenGL REQUIRED) - set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPENDENCIES} GLEW::glew OpenGL::GL X11::X11) + target_link_directories(Diligent-GraphicsEngineOpenGL-static PRIVATE ${glew_LIBRARY_DIRS}) + set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPENDENCIES} ${glew_LIBRARIES} X11::X11) elseif(PLATFORM_MACOS) - find_package(OpenGL REQUIRED) - set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPENDENCIES} GLEW::glew OpenGL::GL) + target_link_directories(Diligent-GraphicsEngineOpenGL-static PRIVATE ${glew_LIBRARY_DIRS}) + set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPENDENCIES} ${glew_LIBRARIES} "-framework OpenGL") elseif(PLATFORM_IOS) set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPENDENCIES} ${OPENGLES}) elseif(PLATFORM_EMSCRIPTEN) @@ -264,6 +266,19 @@ PUBLIC ${PUBLIC_DEPENDENCIES} ) +if(SPIRV-Tools_FOUND) + target_link_directories(Diligent-GraphicsEngineOpenGL-shared PRIVATE ${SPIRV-Tools_LIBDIR}) +endif() + +if(spirv-cross-c_FOUND) + target_link_directories(Diligent-GraphicsEngineOpenGL-shared PRIVATE ${spirv-cross-c_LIBRARY_DIRS}) +endif() + +if(glslang_FOUND) + target_link_directories(Diligent-GraphicsEngineOpenGL-shared PRIVATE ${glslang_LIBDIR}) +endif() + +target_link_directories(Diligent-GraphicsEngineOpenGL-shared PRIVATE ${glew_LIBRARY_DIRS}) target_compile_definitions(Diligent-GraphicsEngineOpenGL-shared PUBLIC ENGINE_DLL=1) if(PLATFORM_MACOS) # Silence OpenGL deprecation warnings diff --git a/Graphics/GraphicsEngineVulkan/CMakeLists.txt b/Graphics/GraphicsEngineVulkan/CMakeLists.txt index 9d45358..fb650ee 100644 --- a/Graphics/GraphicsEngineVulkan/CMakeLists.txt +++ b/Graphics/GraphicsEngineVulkan/CMakeLists.txt @@ -164,15 +164,19 @@ endif() target_include_directories(Diligent-GraphicsEngineVk-static PRIVATE include + ${vulkan-headers_INCLUDEDIR} ) +if (SPIRV-Tools_FOUND) + target_include_directories(Diligent-GraphicsEngineVk-static PRIVATE ${SPIRV-Tools_INCLUDEDIR}) +endif() + set(PRIVATE_DEPENDENCIES Diligent-BuildSettings Diligent-Common Diligent-TargetPlatform Diligent-GraphicsEngineNextGenBase Diligent-ShaderTools - Vulkan::Headers ) if (${DILIGENT_NO_HLSL}) @@ -246,9 +250,9 @@ else() endif() if(PLATFORM_WIN32) - list(APPEND PRIVATE_DEPENDENCIES volk::volk_headers) + target_include_directories(Diligent-GraphicsEngineVk-static PRIVATE ${volk_INCLUDEDIR}) elseif(PLATFORM_MACOS) - list(APPEND PRIVATE_DEPENDENCIES volk::volk_headers) + target_include_directories(Diligent-GraphicsEngineVk-static PRIVATE ${volk_INCLUDEDIR}) elseif(PLATFORM_IOS OR PLATFORM_TVOS) find_library(CORE_GRAPHICS CoreGraphics) find_library(METAL_LIBRARY Metal) @@ -258,9 +262,9 @@ elseif(PLATFORM_IOS OR PLATFORM_TVOS) # Note that volk may be defined by external CMake, but we don't use it on iOS/tvOS list(APPEND PRIVATE_DEPENDENCIES ${MOLTENVK_LIBRARY} ${CORE_GRAPHICS} ${METAL_LIBRARY} ${QUARTZ_CORE} ${UI_KIT} ${IO_SURFACE}) elseif(PLATFORM_LINUX) - list(APPEND PRIVATE_DEPENDENCIES volk::volk_headers) + target_include_directories(Diligent-GraphicsEngineVk-static PRIVATE ${volk_INCLUDEDIR}) elseif(PLATFORM_ANDROID) - list(APPEND PRIVATE_DEPENDENCIES volk::volk_headers) + target_include_directories(Diligent-GraphicsEngineVk-static PRIVATE ${volk_INCLUDEDIR}) else() find_library(Vulkan_LIBRARY NAMES vulkan) list(APPEND PRIVATE_DEPENDENCIES ${Vulkan_LIBRARY}) @@ -311,6 +315,19 @@ if (${DILIGENT_NO_GLSLANG}) message("GLSLang is not being built. Vulkan backend will only be able to consume SPIRV byte code.") endif() +if(SPIRV-Tools_FOUND) + target_link_directories(Diligent-GraphicsEngineVk-shared PRIVATE ${SPIRV-Tools_LIBDIR}) + target_link_libraries(Diligent-GraphicsEngineVk-shared PRIVATE SPIRV-Tools-opt SPIRV-Tools) +endif() + +if(spirv-cross-c_FOUND) + target_link_directories(Diligent-GraphicsEngineVk-shared PRIVATE ${spirv-cross-c_LIBRARY_DIRS}) +endif() + +if(glslang_FOUND) + target_link_directories(Diligent-GraphicsEngineVk-shared PRIVATE ${glslang_LIBDIR}) +endif() + target_compile_definitions(Diligent-GraphicsEngineVk-static PRIVATE ${PRIVATE_COMPILE_DEFINITIONS} diff --git a/Graphics/GraphicsTools/CMakeLists.txt b/Graphics/GraphicsTools/CMakeLists.txt index c7f8706..bb9e94a 100644 --- a/Graphics/GraphicsTools/CMakeLists.txt +++ b/Graphics/GraphicsTools/CMakeLists.txt @@ -88,7 +88,7 @@ if(D3D12_SUPPORTED) endif() if(VULKAN_SUPPORTED) - list(APPEND DEPENDENCIES Diligent-GraphicsEngineVkInterface Vulkan::Headers) + list(APPEND DEPENDENCIES Diligent-GraphicsEngineVkInterface) endif() if(D3D12_SUPPORTED OR VULKAN_SUPPORTED) @@ -122,10 +122,15 @@ target_include_directories(Diligent-GraphicsTools PUBLIC interface PRIVATE + ${XXHASH_INCLUDE_DIRS} ../GraphicsEngineD3DBase/include include ) +if(VULKAN_SUPPORTED) + target_include_directories(Diligent-GraphicsTools PRIVATE ${vulkan-headers_INCLUDEDIR}) +endif() + target_link_libraries(Diligent-GraphicsTools PRIVATE Diligent-Common @@ -134,7 +139,7 @@ PRIVATE Diligent-GraphicsAccessories Diligent-ShaderTools Diligent-GraphicsEngine - xxHash::xxhash + ${XXHASH_LIBRARIES} ${DEPENDENCIES} PUBLIC Diligent-GraphicsEngineInterface diff --git a/Graphics/ShaderTools/CMakeLists.txt b/Graphics/ShaderTools/CMakeLists.txt index bf956ea..42bf3be 100644 --- a/Graphics/ShaderTools/CMakeLists.txt +++ b/Graphics/ShaderTools/CMakeLists.txt @@ -102,11 +102,11 @@ if(DILIGENT_USE_SPIRV_TOOLCHAIN) # (e.g. added by external project), but DILIGENT_NO_GLSLANG may still be set if (NOT ${DILIGENT_NO_GLSLANG}) set(USE_GLSLANG TRUE) - if (TARGET SPIRV-Tools-opt) + if (SPIRV-Tools_FOUND) set(USE_SPIRV_TOOLS TRUE) endif() endif() - if (NOT ${DILIGENT_NO_HLSL} AND TARGET SPIRV-Tools-opt) + if (NOT ${DILIGENT_NO_HLSL}) set(USE_SPIRV_TOOLS TRUE) endif() endif() @@ -133,6 +133,10 @@ PUBLIC include PRIVATE ../GraphicsEngine/include + $<$:${spirv-cross-c_INCLUDEDIR}> + $<$:${glslang_INCLUDEDIR}> + $<$:${glslang_INCLUDEDIR}/glslang> + $<$:${SPIRV-Tools_INCLUDEDIR}> ) if (DXC_SUPPORTED) @@ -150,6 +154,12 @@ if (DXC_SUPPORTED) endif() endif() +target_link_directories(Diligent-ShaderTools +PRIVATE + $<$:${spirv-cross-c_LIBDIR}> + $<$:${glslang_LIBDIR}> +) + target_link_libraries(Diligent-ShaderTools PRIVATE Diligent-BuildSettings @@ -171,9 +181,7 @@ if(ENABLE_SPIRV) PRIVATE spirv-cross-core ) - if(SPIRV_CROSS_NAMESPACE_OVERRIDE) - target_compile_definitions(Diligent-ShaderTools PUBLIC DILIGENT_SPIRV_CROSS_NAMESPACE=${SPIRV_CROSS_NAMESPACE_OVERRIDE}) - endif() + target_compile_definitions(Diligent-ShaderTools PUBLIC DILIGENT_SPIRV_CROSS_NAMESPACE=spirv_cross) if (${USE_SPIRV_TOOLS}) target_link_libraries(Diligent-ShaderTools