diff --git a/CMakeLists.txt b/CMakeLists.txt index 42664571b..e0f0533e3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -411,13 +411,15 @@ if (APPLE) endif() find_library(AVFOUNDATION_LIBRARY AVFoundation REQUIRED) find_library(IOSURFACE_LIBRARY IOSurface REQUIRED) - set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${AVFOUNDATION_LIBRARY} ${IOSURFACE_LIBRARY} ${MOLTENVK_LIBRARY}) + set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${AVFOUNDATION_LIBRARY} ${IOSURFACE_LIBRARY}) if (ENABLE_VULKAN AND NOT ENABLE_LIBRETRO) - if (NOT USE_SYSTEM_MOLTENVK) + if (USE_SYSTEM_MOLTENVK) + find_library(MOLTENVK_LIBRARY MoltenVK REQUIRED) + else() download_moltenvk() endif() - find_library(MOLTENVK_LIBRARY MoltenVK REQUIRED) + message(STATUS "Using MoltenVK at ${MOLTENVK_LIBRARY}.") set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} ${MOLTENVK_LIBRARY}) endif() diff --git a/CMakeModules/DownloadExternals.cmake b/CMakeModules/DownloadExternals.cmake index a76d95ae1..2ac55ca35 100644 --- a/CMakeModules/DownloadExternals.cmake +++ b/CMakeModules/DownloadExternals.cmake @@ -172,9 +172,11 @@ endfunction() function(download_moltenvk) if (IOS) - set(MOLTENVK_PLATFORM "static/MoltenVK.xcframework/ios-arm64") + set(platform "static/MoltenVK.xcframework/ios-arm64") + set(lib libMoltenVK.a) else() - set(MOLTENVK_PLATFORM "dynamic/dylib/macOS") + set(platform "dynamic/dylib/macOS") + set(lib libMoltenVK.dylib) endif() set(MOLTENVK_DIR "${CMAKE_BINARY_DIR}/externals/MoltenVK") @@ -189,9 +191,9 @@ function(download_moltenvk) WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") endif() - # Add the MoltenVK library path to the prefix so find_library can locate it. - list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/${MOLTENVK_PLATFORM}") - set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) + # Forcefully set the MoltenVK library in cache so find_library calls don't override it + set(MOLTENVK_LIBRARY "${MOLTENVK_DIR}/MoltenVK/${platform}/${lib}") + return(PROPAGATE MOLTENVK_LIBRARY) endfunction() function(get_external_prefix lib_name prefix_var)