[Bf-blender-cvs] [a36c1cabce6] master: Vulkan: Changes to CMake config.

Jeroen Bakker noreply at git.blender.org
Mon Jan 30 12:06:34 CET 2023


Commit: a36c1cabce6e3f13f3e46d7064f191aa4a2a731c
Author: Jeroen Bakker
Date:   Mon Jan 30 11:24:06 2023 +0100
Branches: master
https://developer.blender.org/rBa36c1cabce6e3f13f3e46d7064f191aa4a2a731c

Vulkan: Changes to CMake config.

Paths to vulkan libraries, paths and related components were
hardcoded in the platform cmake file. This patch separates
this by using adding CMake modules for Vulkan and ShaderC.

This change has only been applied to the macOs configuration as
that is currently our main platform for development. Other platforms
will be added during the development of the Vulkan back-end.

===================================================================

A	build_files/cmake/Modules/FindShaderC.cmake
A	build_files/cmake/Modules/FindVulkan.cmake
M	build_files/cmake/platform/platform_apple.cmake
M	extern/vulkan_memory_allocator/CMakeLists.txt
M	intern/ghost/CMakeLists.txt
M	source/blender/gpu/CMakeLists.txt
M	source/creator/CMakeLists.txt

===================================================================

diff --git a/build_files/cmake/Modules/FindShaderC.cmake b/build_files/cmake/Modules/FindShaderC.cmake
new file mode 100644
index 00000000000..e38ca137775
--- /dev/null
+++ b/build_files/cmake/Modules/FindShaderC.cmake
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright 2023 Blender Foundation.
+
+# - Find ShaderC libraries
+# Find the ShaderC includes and libraries
+# This module defines
+#  SHADERC_INCLUDE_DIRS, where to find MoltenVK headers, Set when
+#                        SHADERC_INCLUDE_DIR is found.
+#  SHADERC_LIBRARIES, libraries to link against to use ShaderC.
+#  SHADERC_ROOT_DIR, The base directory to search for ShaderC.
+#                    This can also be an environment variable.
+#  SHADERC_FOUND, If false, do not try to use ShaderC.
+#
+
+# If SHADERC_ROOT_DIR was defined in the environment, use it.
+IF(NOT SHADERC_ROOT_DIR AND NOT $ENV{SHADERC_ROOT_DIR} STREQUAL "")
+  SET(SHADERC_ROOT_DIR $ENV{SHADERC_ROOT_DIR})
+ENDIF()
+
+SET(_shaderc_SEARCH_DIRS
+  ${SHADERC_ROOT_DIR}
+)
+
+# FIXME: These finder modules typically don't use LIBDIR,
+# this should be set by `./build_files/cmake/platform/` instead.
+IF(DEFINED LIBDIR)
+  SET(_shaderc_SEARCH_DIRS ${_shaderc_SEARCH_DIRS} ${LIBDIR}/shaderc)
+ENDIF()
+
+FIND_PATH(SHADERC_INCLUDE_DIR
+  NAMES
+    shaderc/shaderc.h
+  HINTS
+    ${_shaderc_SEARCH_DIRS}
+  PATH_SUFFIXES
+    include
+)
+
+FIND_LIBRARY(SHADERC_LIBRARY
+  NAMES
+    shaderc_combined
+  HINTS
+    ${_shaderc_SEARCH_DIRS}
+  PATH_SUFFIXES
+    lib
+)
+
+# handle the QUIETLY and REQUIRED arguments and set SHADERC_FOUND to TRUE if
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ShaderC DEFAULT_MSG SHADERC_LIBRARY SHADERC_INCLUDE_DIR)
+
+IF(SHADERC_FOUND)
+  SET(SHADERC_LIBRARIES ${SHADERC_LIBRARY})
+  SET(SHADERC_INCLUDE_DIRS ${SHADERC_INCLUDE_DIR})
+ENDIF()
+
+MARK_AS_ADVANCED(
+  SHADERC_INCLUDE_DIR
+  SHADERC_LIBRARY
+)
+
+UNSET(_shaderc_SEARCH_DIRS)
diff --git a/build_files/cmake/Modules/FindVulkan.cmake b/build_files/cmake/Modules/FindVulkan.cmake
new file mode 100644
index 00000000000..37da42543db
--- /dev/null
+++ b/build_files/cmake/Modules/FindVulkan.cmake
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright 2023 Blender Foundation.
+
+# - Find Vulkan libraries
+# Find the Vulkan includes and libraries
+# This module defines
+#  VULKAN_INCLUDE_DIRS, where to find Vulkan headers, Set when
+#                       VULKAN_INCLUDE_DIR is found.
+#  VULKAN_LIBRARIES, libraries to link against to use Vulkan.
+#  VULKAN_ROOT_DIR, The base directory to search for Vulkan.
+#                    This can also be an environment variable.
+#  VULKAN_FOUND, If false, do not try to use Vulkan.
+#
+
+# If VULKAN_ROOT_DIR was defined in the environment, use it.
+IF(NOT VULKAN_ROOT_DIR AND NOT $ENV{VULKAN_ROOT_DIR} STREQUAL "")
+  SET(VULKAN_ROOT_DIR $ENV{VULKAN_ROOT_DIR})
+ENDIF()
+
+SET(_vulkan_SEARCH_DIRS
+  ${VULKAN_ROOT_DIR}
+)
+
+# FIXME: These finder modules typically don't use LIBDIR,
+# this should be set by `./build_files/cmake/platform/` instead.
+IF(DEFINED LIBDIR)
+  SET(_vulkan_SEARCH_DIRS ${_vulkan_SEARCH_DIRS} ${LIBDIR}/vulkan)
+ENDIF()
+
+FIND_PATH(VULKAN_INCLUDE_DIR
+  NAMES
+    vulkan/vulkan.h
+  HINTS
+    ${_vulkan_SEARCH_DIRS}
+  PATH_SUFFIXES
+    include
+)
+
+FIND_LIBRARY(VULKAN_LIBRARY
+  NAMES
+    vulkan
+  HINTS
+    ${_vulkan_SEARCH_DIRS}
+  PATH_SUFFIXES
+    lib
+)
+
+# handle the QUIETLY and REQUIRED arguments and set VULKAN_FOUND to TRUE if
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Vulkan DEFAULT_MSG VULKAN_LIBRARY VULKAN_INCLUDE_DIR)
+
+IF(VULKAN_FOUND)
+  SET(VULKAN_LIBRARIES ${VULKAN_LIBRARY})
+  SET(VULKAN_INCLUDE_DIRS ${VULKAN_INCLUDE_DIR})
+ENDIF()
+
+MARK_AS_ADVANCED(
+  VULKAN_INCLUDE_DIR
+  VULKAN_LIBRARY
+)
+
+UNSET(_vulkan_SEARCH_DIRS)
diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
index 09f9d79a6cf..0b7ae0532d8 100644
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -97,22 +97,8 @@ add_bundled_libraries(materialx/lib)
 
 if(WITH_VULKAN_BACKEND)
   find_package(MoltenVK REQUIRED)
-
-  if(EXISTS ${LIBDIR}/vulkan)
-    set(VULKAN_FOUND On)
-    set(VULKAN_ROOT_DIR ${LIBDIR}/vulkan)
-    set(VULKAN_INCLUDE_DIR ${VULKAN_ROOT_DIR}/include)
-    set(VULKAN_LIBRARY ${VULKAN_ROOT_DIR}/lib/libvulkan.dylib)
-    set(SHADERC_ROOT_DIR ${LIBDIR}/shaderc)
-    set(SHADERC_INCLUDE_DIR ${SHADERC_ROOT_DIR}/include)
-    set(SHADERC_LIBRARY ${SHADERC_ROOT_DIR}/lib/libshaderc_combined.a)
-
-    set(VULKAN_INCLUDE_DIRS ${VULKAN_INCLUDE_DIR} ${SHADERC_INCLUDE_DIR} ${MOLTENVK_INCLUDE_DIRS})
-    set(VULKAN_LIBRARIES ${VULKAN_LIBRARY} ${SHADERC_LIBRARY} ${MOLTENVK_LIBRARIES})
-  else()
-    message(WARNING "Vulkan SDK was not found, disabling WITH_VULKAN_BACKEND")
-    set(WITH_VULKAN_BACKEND OFF)
-  endif()
+  find_package(ShaderC REQUIRED)
+  find_package(Vulkan REQUIRED)
 endif()
 
 if(WITH_OPENSUBDIV)
diff --git a/extern/vulkan_memory_allocator/CMakeLists.txt b/extern/vulkan_memory_allocator/CMakeLists.txt
index 0b709e8dda1..666fb824322 100644
--- a/extern/vulkan_memory_allocator/CMakeLists.txt
+++ b/extern/vulkan_memory_allocator/CMakeLists.txt
@@ -7,6 +7,7 @@ set(INC
 
 set(INC_SYS
   ${VULKAN_INCLUDE_DIRS}
+  ${MOLTENVK_INCLUDE_DIRS}
 )
 
 set(SRC
diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt
index ac7dd6ca5cf..3ea91256a3d 100644
--- a/intern/ghost/CMakeLists.txt
+++ b/intern/ghost/CMakeLists.txt
@@ -85,10 +85,12 @@ if(WITH_VULKAN_BACKEND)
 
   list(APPEND INC_SYS
     ${VULKAN_INCLUDE_DIRS}
+    ${MOLTENVK_INCLUDE_DIRS}
   )
 
   list(APPEND LIB
     ${VULKAN_LIBRARIES}
+    ${MOLTENVK_LIBRARIES}
   )
 
   add_definitions(-DWITH_VULKAN_BACKEND)
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index 554ce065edb..68e77ef9a92 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -287,6 +287,8 @@ if(WITH_VULKAN_BACKEND)
   )
   list(APPEND INC_SYS
     ${VULKAN_INCLUDE_DIRS}
+    ${MOLTENVK_INCLUDE_DIRS}
+    ${SHADERC_INCLUDE_DIRS}
   )
   list(APPEND SRC
     ${VULKAN_SRC}
@@ -294,6 +296,8 @@ if(WITH_VULKAN_BACKEND)
 
   list(APPEND LIB
     ${VULKAN_LIBRARIES}
+    ${SHADERC_LIBRARIES}
+    ${MOLTENVK_LIBRARIES}
     extern_vulkan_memory_allocator
   )
   add_definitions(-DWITH_VULKAN_BACKEND)
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index a0816f41724..22b3d197672 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -1373,6 +1373,13 @@ elseif(APPLE)
     )
   endif()
 
+  if(WITH_VULKAN_BACKEND)
+    install(
+      FILES ${VULKAN_LIBRARY} ${MOLTENVK_LIBRARY}
+      DESTINATION ${TARGETDIR_LIB}
+    )
+  endif()
+
   # Python.
   if(WITH_PYTHON AND NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
     # Copy the python libraries into the install directory.



More information about the Bf-blender-cvs mailing list