Skip to content

Commit

Permalink
macOS: Support non-system level Vulkan SDK installs, with fallback to…
Browse files Browse the repository at this point in the history
… MoltenVK library
  • Loading branch information
SRSaunders committed Apr 27, 2024
1 parent 73a7109 commit d041ac6
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,32 @@ ELSEIF(LINUX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_XCB_KHR")
ENDIF(USE_D2D_WSI)
ELSEIF(APPLE)
IF (CMAKE_GENERATOR MATCHES "Xcode")
# Suppress regeneration for Xcode since environment variables will be lost if not set in Xcode locations/custom paths
set(CMAKE_SUPPRESS_REGENERATION ON)
set(CMAKE_XCODE_GENERATE_SCHEME ON)
IF (Vulkan_FOUND)
# If the Vulkan loader was found and its environment variables are defined, make them available within Xcode schemes
IF (DEFINED ENV{VK_ADD_LAYER_PATH})
set(CMAKE_XCODE_SCHEME_ENVIRONMENT "VK_ADD_LAYER_PATH=$ENV{VK_ADD_LAYER_PATH}")
ENDIF()
IF (DEFINED ENV{VK_ICD_FILENAMES})
set(CMAKE_XCODE_SCHEME_ENVIRONMENT "${CMAKE_XCODE_SCHEME_ENVIRONMENT};VK_ICD_FILENAMES=$ENV{VK_ICD_FILENAMES}")
ENDIF()
IF (DEFINED ENV{VK_DRIVER_FILES})
set(CMAKE_XCODE_SCHEME_ENVIRONMENT "${CMAKE_XCODE_SCHEME_ENVIRONMENT};VK_DRIVER_FILES=$ENV{VK_DRIVER_FILES}")
ENDIF()
ENDIF()
ENDIF()
IF (NOT Vulkan_FOUND)
# If the Vulkan loader was not found, then look for libMoltenVK.dylib in the Vulkan SDK and legacy MoltenVK locations
set(CMAKE_FIND_FRAMEWORK NEVER)
find_library(Vulkan_LIBRARY NAMES MoltenVK HINTS "$ENV{VULKAN_SDK}/lib" "$ENV{VULKAN_SDK}/dylib/macos" REQUIRED)
IF (Vulkan_LIBRARY)
set(Vulkan_FOUND ON)
MESSAGE(STATUS "Using MoltenVK Vulkan Portability library")
ENDIF()
ENDIF()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_METAL_EXT -DVK_EXAMPLE_XCODE_GENERATED")
# Todo : android?
ENDIF(WIN32)
Expand Down

0 comments on commit d041ac6

Please sign in to comment.