diff options
Diffstat (limited to 'pkgs/tools/graphics/vulkan-tools/use-nix-moltenvk.patch')
-rw-r--r-- | pkgs/tools/graphics/vulkan-tools/use-nix-moltenvk.patch | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/pkgs/tools/graphics/vulkan-tools/use-nix-moltenvk.patch b/pkgs/tools/graphics/vulkan-tools/use-nix-moltenvk.patch new file mode 100644 index 00000000000..5cbcec6a8a1 --- /dev/null +++ b/pkgs/tools/graphics/vulkan-tools/use-nix-moltenvk.patch @@ -0,0 +1,155 @@ +diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt +index 616fbc96..d2811c8d 100644 +--- a/cube/CMakeLists.txt ++++ b/cube/CMakeLists.txt +@@ -262,14 +262,7 @@ else() + endif() + + if(APPLE) +- # Keep RPATH so fixup_bundle can use it to find libraries +- set_target_properties(vkcube PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE) +- install(TARGETS vkcube BUNDLE DESTINATION "cube") +- # Fix up the library references to be self-contained within the bundle. +- install(CODE " +- include(BundleUtilities) +- fixup_bundle(\${CMAKE_INSTALL_PREFIX}/cube/vkcube.app \"\" \"${Vulkan_LIBRARY_DIR}\") +- ") ++ install(TARGETS vkcube BUNDLE DESTINATION "Applications") + else() + install(TARGETS vkcube RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + endif() +@@ -309,14 +302,7 @@ else() + endif() + + if(APPLE) +- # Keep RPATH so fixup_bundle can use it to find libraries +- set_target_properties(vkcubepp PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE) +- install(TARGETS vkcubepp BUNDLE DESTINATION "cube") +- # Fix up the library references to be self-contained within the bundle. +- install(CODE " +- include(BundleUtilities) +- fixup_bundle(\${CMAKE_INSTALL_PREFIX}/cube/vkcubepp.app \"\" \"${Vulkan_LIBRARY_DIR}\") +- ") ++ install(TARGETS vkcubepp BUNDLE DESTINATION "Applications") + else() + install(TARGETS vkcubepp RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + endif() +diff --git a/cube/macOS/cube/cube.cmake b/cube/macOS/cube/cube.cmake +index 9b823f95..238c3e67 100644 +--- a/cube/macOS/cube/cube.cmake ++++ b/cube/macOS/cube/cube.cmake +@@ -72,12 +69,14 @@ set_source_files_properties("${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json" + # Copy the MoltenVK lib into the bundle. + if(${CMAKE_GENERATOR} MATCHES "^Xcode.*") + add_custom_command(TARGET vkcube POST_BUILD +- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/dylib/macOS/libMoltenVK.dylib" ++ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/vkcube.app/Contents/Frameworks ++ COMMAND ${CMAKE_COMMAND} -E create_symlink "${MOLTENVK_DIR}/lib/libMoltenVK.dylib" + ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/vkcube.app/Contents/Frameworks/libMoltenVK.dylib + DEPENDS vulkan) + else() + add_custom_command(TARGET vkcube POST_BUILD +- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/dylib/macOS/libMoltenVK.dylib" ++ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/vkcube.app/Contents/Frameworks ++ COMMAND ${CMAKE_COMMAND} -E create_symlink "${MOLTENVK_DIR}/lib/libMoltenVK.dylib" + ${CMAKE_CURRENT_BINARY_DIR}/vkcube.app/Contents/Frameworks/libMoltenVK.dylib + DEPENDS vulkan) + endif() +diff --git a/cube/macOS/cubepp/cubepp.cmake b/cube/macOS/cubepp/cubepp.cmake +index eae4de3c..0acd18f9 100644 +--- a/cube/macOS/cubepp/cubepp.cmake ++++ b/cube/macOS/cubepp/cubepp.cmake +@@ -74,12 +71,14 @@ set_source_files_properties("${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json" + # Copy the MoltenVK lib into the bundle. + if(${CMAKE_GENERATOR} MATCHES "^Xcode.*") + add_custom_command(TARGET vkcubepp POST_BUILD +- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/dylib/macOS/libMoltenVK.dylib" ++ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/vkcubepp.app/Contents/Frameworks ++ COMMAND ${CMAKE_COMMAND} -E create_symlink "${MOLTENVK_DIR}/lib/libMoltenVK.dylib" + ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/vkcubepp.app/Contents/Frameworks/libMoltenVK.dylib + DEPENDS vulkan) + else() + add_custom_command(TARGET vkcubepp POST_BUILD +- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/dylib/macOS/libMoltenVK.dylib" ++ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/vkcubepp.app/Contents/Frameworks ++ COMMAND ${CMAKE_COMMAND} -E create_symlink "${MOLTENVK_DIR}/lib/libMoltenVK.dylib" + ${CMAKE_CURRENT_BINARY_DIR}/vkcubepp.app/Contents/Frameworks/libMoltenVK.dylib + DEPENDS vulkan) + endif() +diff --git a/mac_common.cmake b/mac_common.cmake +index bad3c414..b498906d 100644 +--- a/mac_common.cmake ++++ b/mac_common.cmake +@@ -23,9 +23,8 @@ set(MOLTENVK_DIR ${MOLTENVK_REPO_ROOT}) + # MoltenVK JSON File + + execute_process(COMMAND mkdir -p ${CMAKE_BINARY_DIR}/staging-json) +-execute_process(COMMAND sed -e "/\"library_path\":/s$:[[:space:]]*\"[[:space:]]*[\\.\\/]*$: \"..\\/..\\/..\\/Frameworks\\/$" +- ${MOLTENVK_DIR}/MoltenVK/icd/MoltenVK_icd.json +- OUTPUT_FILE ${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json) ++execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${MOLTENVK_DIR}/MoltenVK_icd.json ++ ${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json) + + # ~~~ + # Modify the ICD JSON file to adjust the library path. +@@ -36,10 +35,9 @@ execute_process(COMMAND sed -e "/\"library_path\":/s$:[[:space:]]*\"[[:space:]]* + # ~~~ + add_custom_target(MoltenVK_icd-staging-json ALL + COMMAND mkdir -p ${CMAKE_BINARY_DIR}/staging-json +- COMMAND sed -e "/\"library_path\":/s$:[[:space:]]*\"[[:space:]]*[\\.\\/]*$: \"..\\/..\\/..\\/Frameworks\\/$" +- ${MOLTENVK_DIR}/MoltenVK/icd/MoltenVK_icd.json > ${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json +- VERBATIM +- DEPENDS "${MOLTENVK_DIR}/MoltenVK/icd/MoltenVK_icd.json") ++ COMMAND ${CMAKE_COMMAND} -E create_symlink ${MOLTENVK_DIR}/MoltenVK_icd.json ++ ${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json ++ DEPENDS "${MOLTENVK_DIR}/MoltenVK_icd.json") + set_source_files_properties(${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json PROPERTIES GENERATED TRUE) + + find_library(COCOA NAMES Cocoa) +diff --git a/vulkaninfo/CMakeLists.txt b/vulkaninfo/CMakeLists.txt +index fb236a5b..3c8270d4 100644 +--- a/vulkaninfo/CMakeLists.txt ++++ b/vulkaninfo/CMakeLists.txt +@@ -139,9 +139,4 @@ elseif(APPLE) + add_definitions(-DVK_USE_PLATFORM_MACOS_MVK -DVK_USE_PLATFORM_METAL_EXT) + endif() + +-if(APPLE) +- install(TARGETS vulkaninfo RUNTIME DESTINATION "vulkaninfo") +-else() +- install(TARGETS vulkaninfo RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +-endif() +- ++install(TARGETS vulkaninfo RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +diff --git a/vulkaninfo/macOS/vulkaninfo.cmake b/vulkaninfo/macOS/vulkaninfo.cmake +index 9614530e..56af3b89 100644 +--- a/vulkaninfo/macOS/vulkaninfo.cmake ++++ b/vulkaninfo/macOS/vulkaninfo.cmake +@@ -48,26 +48,4 @@ set_source_files_properties(${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json + MACOSX_PACKAGE_LOCATION + "Resources/vulkan/icd.d") + +-# Xcode projects need some extra help with what would be install steps. +-if(${CMAKE_GENERATOR} MATCHES "^Xcode.*") +- add_custom_command(TARGET vulkaninfo-bundle POST_BUILD +- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/dylib/macOS/libMoltenVK.dylib" +- ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/vulkaninfo.app/Contents/Frameworks/libMoltenVK.dylib +- DEPENDS vulkan) +-else() +- add_custom_command(TARGET vulkaninfo-bundle POST_BUILD +- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/dylib/macOS/libMoltenVK.dylib" +- ${CMAKE_CURRENT_BINARY_DIR}/vulkaninfo.app/Contents/Frameworks/libMoltenVK.dylib +- DEPENDS vulkan) +-endif() +- +-# Keep RPATH so fixup_bundle can use it to find libraries +-set_target_properties(vulkaninfo-bundle PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE) +-install(TARGETS vulkaninfo-bundle BUNDLE DESTINATION "vulkaninfo") +-# Fix up the library search path in the executable to find (loader) libraries in the bundle. When fixup_bundle() is passed a bundle +-# in the first argument, it looks at the Info.plist file to determine the BundleExecutable. In this case, the executable is a +-# script, which can't be fixed up. Instead pass it the explicit name of the executable. +-install(CODE " +- include(BundleUtilities) +- fixup_bundle(\${CMAKE_INSTALL_PREFIX}/vulkaninfo/vulkaninfo.app/Contents/MacOS/vulkaninfo \"\" \"${Vulkan_LIBRARY_DIR}\") +- ") ++install(TARGETS vulkaninfo-bundle BUNDLE DESTINATION "Applications") |